{"version":3,"mappings":"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","names":["top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","node","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","state","name","style","attributes","value","effect","_ref2","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","item","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","width","height","getLayoutRect","contains","parent","child","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","v","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","key","toPaddingObject","padding","arrow","_state$modifiersData$","options","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","target","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","data","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","result","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","debounce","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","elementMap","Data","instanceMap","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","match","id","toType","object","getUID","prefix","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","getElement","isVisible","elementIsVisible","closedDetails","summary","isDisabled","findShadowRoot","root","noop","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","isRTL","defineJQueryPlugin","plugin","$","JQUERY_NO_CONFLICT","execute","possibleCallback","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","event","hydrateObj","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","events","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","handlers","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","obj","meta","normalizeData","normalizeDataKey","chr","Manipulator","bsKeys","pureKey","Config$1","config","jsonConfig","configTypes","expectedTypes","valueType","VERSION","BaseComponent","Config","propertyName","isAnimated","getSelector","hrefAttribute","sel","SelectorEngine","parents","ancestor","previous","focusables","el","enableDismissTrigger","component","method","clickEvent","NAME$f","DATA_KEY$a","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$8","Alert","NAME$e","DATA_KEY$9","EVENT_KEY$a","DATA_API_KEY$6","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE$5","EVENT_CLICK_DATA_API$6","Button","button","NAME$d","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default$c","DefaultType$c","Swipe","absDeltaX","direction","NAME$c","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default$b","DefaultType$b","Carousel","items","activeIndex","img","swipeConfig","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","eventName","isCycling","directionalClassName","orderClassName","completeCallBack","carousel","slideIndex","carousels","NAME$b","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","toggleList","elem","filterElement","foundElement","activeChildren","activeInstance","dimension","complete","scrollSize","trigger","children","selected","triggerArray","isOpen","_config","NAME$a","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","ESCAPE_KEY$2","TAB_KEY$1","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","RIGHT_MOUSE_BUTTON","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","Default$9","DefaultType$9","Dropdown","relatedTarget","Popper","referenceElement","popperConfig","Popper.createPopper","parentDropdown","isEnd","popperData","defaultBsPopperConfig","openToggles","toggle","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","NAME$9","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","DefaultType$8","Backdrop","backdrop","NAME$8","DATA_KEY$5","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default$7","DefaultType$7","FocusTrap","trapElement","elements","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","documentWidth","calculatedValue","styleProperty","scrollbarWidth","manipulationCallBack","actualValue","callBack","NAME$7","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$2","ESCAPE_KEY$1","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","OPEN_SELECTOR$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$2","Default$6","DefaultType$6","Modal","modalBody","transitionComplete","event2","isModalOverflowing","initialOverflowY","isBodyOverflowing","showEvent","alreadyOpen","NAME$6","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","ESCAPE_KEY","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_TOGGLE$1","Default$5","DefaultType$5","Offcanvas","completeCallback","clickCallback","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","attributeRegex","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","elementName","attributeList","allowedAttributes","NAME$5","Default$4","DefaultType$4","DefaultContentType","TemplateFactory","content","templateWrapper","text","template","extraClass","arg","templateElement","NAME$4","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_MODAL","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE$2","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_INSERTED","EVENT_CLICK$1","EVENT_FOCUSIN$1","EVENT_FOCUSOUT$1","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","Default$3","DefaultType$3","Tooltip","isInTheDom","tip","container","tipId","attachment","triggers","eventIn","eventOut","title","timeout","dataAttributes","dataAttribute","NAME$3","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","NAME$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","section","observableSection","entries","targetElement","entry","activate","parentScrollTop","userScrollsDown","entryIsLowerThanPrevious","targetLinks","anchor","listGroup","activeNodes","spy","NAME$1","DATA_KEY$1","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","innerElem","active","hideEvent","relatedElem","nextActiveElement","isActive","outerElem","open","className","NAME","DATA_KEY","EVENT_KEY","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","Default","Toast","isInteracting","bootstrap","prototype","submitter","validateSubmitter","form","raise","errorConstructor","message","submittersByForm","findSubmitterFromClickTarget","candidate","clickCaptured","prototypeOfSubmitEvent","FrameLoadingStyle","_FrameElement","__publicField","frameLoadingStyleFromString","_a","_b","FrameElement","drive","activateScriptElement","createdScriptElement","cspNonce","getCspNonce","copyElementAttributes","destinationElement","sourceElement","createDocumentFragment","dispatch","cancelable","detail","cancelEvent","nextRepaint","nextEventLoopTick","nextAnimationFrame","nextMicrotask","parseHTMLDocument","unindent","strings","values","lines","interpolate","indent","line","string","uuid","_","getAttribute","hasAttribute","markAsBusy","clearBusyState","waitForLoad","timeoutInMilliseconds","onComplete","getHistoryMethodForAction","action","isAction","getVisitAction","getMetaElement","getMetaContent","nonce","setMetaContent","findClosestRecursively","elementIsFocusable","queryAutofocusableElement","elementOrDocumentFragment","around","reader","before","after","doesNotTargetIFrame","findLinkFromClickTarget","getLocationForLink","link","expandURL","delay","timeoutId","_submitter","__privateAdd","__privateGet","__privateSet","forms","locatable","getAnchor","url","anchorMatch","getAction$1","getExtension","getLastPathComponent","isPrefixedBy","baseURL","getPrefix","locationIsVisitable","location","rootLocation","getRequestURL","toCacheKey","urlsAreEqual","getPathComponents","addTrailingSlash","FetchResponse$1","response","LimitedSet","maxSize","oldestValue","recentRequests","nativeFetch","fetchWithTurboHeaders","modifiedHeaders","requestUID","fetchMethodFromString","FetchMethod","fetchEnctypeFromString","encoding","FetchEnctype","_resolveRequestPromise","_FetchRequest_instances","allowRequestToBeIntercepted_fn","willDelegateErrorHandling_fn","FetchRequest$1","delegate","requestBody","enctype","_value","buildResourceAndBody","fetchBody","fetchMethod","fetchOptions","__privateMethod","error","fetchResponse","FetchResponse","isSafe","mimeType","requestInterception","resource","searchParams","entriesExcludingFiles","mergeIntoURLSearchParams","AppearanceObserver","lastEntry","StreamMessage","fragment","importStreamElements","streamElement","inertScriptElement","PREFETCH_DELAY","_prefetchTimeout","_prefetched","PrefetchCache","request","ttl","cacheTtl","prefetchCache","FormSubmissionState","FormSubmission","formElement","mustRedirect","getMethod","getAction","getFormAction","buildFormData","getEnctype","FetchRequest","initialized","requesting","confirmationMessage","stopping","stopped","token","getCookieValue","_request","responseSucceededWithoutRedirect","input","formData","cookieName","cookie","formElementAction","formAction","Snapshot","queryPermanentElementsAll","getPermanentElementById","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","FormSubmitObserver","eventTarget","submissionDoesNotDismissDialog","submissionDoesNotTargetIFrame","_resolveRenderPromise","_resolveInterceptionPromise","View","renderer","isPreview","shouldRender","willRender","shouldInvalidate","renderInterception","reason","FrameView","LinkInterceptor","_event","LinkClickObserver","FormLinkClickObserver","originalEvent","type","turboFrame","turboAction","turboConfirm","Bardo","bardo","permanentElement","placeholder","createPlaceholderForPermanentElement","clone","_activeElement","Renderer","currentSnapshot","newSnapshot","reject","currentElement","newElement","FrameRenderer","destinationRange","frameElement","sourceRange","renderElement","block","readScrollLogicalPosition","behavior","readScrollBehavior","activatedScriptElement","Idiomorph","EMPTY_SET","defaults","noOp","elt","morph","oldNode","newContent","parseContent","normalizedContent","normalizeContent","ctx","createMorphContext","morphNormalizedContent","normalizedNewContent","oldHead","newHead","promises","handleHeadElement","morphChildren","bestMatch","findBestNodeMatch","previousSibling","nextSibling","morphedNode","morphOldNodeTo","insertSiblings","ignoreValueOfActiveElement","possibleActiveElement","isSoftMatch","syncNodeFrom","newParent","oldParent","nextNewChild","insertionPoint","newChild","removeIdsFromConsideration","isIdSetMatch","idSetMatch","findIdSetMatch","removeNodesBetween","softMatch","findSoftMatch","tempNode","removeNode","ignoreAttribute","attr","to","updateType","from","fromAttributes","toAttributes","fromAttribute","toAttribute","syncInputValue","syncBooleanAttribute","ignoreUpdate","fromValue","toValue","newHeadTag","currentHead","added","removed","preserved","nodesToAppend","headMergeStyle","srcToNewHeadNodes","newHeadChild","currentHeadElt","inNewContent","isReAppended","isPreserved","newNode","newElt","promise","_resolve","removedElement","mergeDefaults","finalConfig","createIdMap","node1","node2","getIdIntersectionCount","startInclusive","endExclusive","newChildPotentialIdCount","potentialMatch","otherMatchCount","potentialSoftMatch","siblingSoftMatchCount","parser","contentWithSvgsRemoved","htmlElement","dummyParent","stack","bestElement","score","newScore","scoreElement","isIdInConsideration","idIsWithinNode","targetNode","idSet","sourceSet","matchCount","populateIdMapForNode","idMap","nodeParent","idElements","oldContent","morphElements","callbacks","DefaultIdiomorphCallbacks","_beforeNodeMorphed","beforeNodeMorphed","mutationType","MorphingFrameRenderer","_ProgressBar","ProgressBar","HeadSnapshot","elementIsNoscript","elementWithoutNonce","outerHTML","details","elementType","elementIsTracked","matchedType","tracked","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","tagName","PageSnapshot","head","headSnapshot","clonedElement","selectElements","clonedSelectElements","source","option","clonedPasswordInput","_viewTransitionStarted","_lastOperation","ViewTransitioner","useViewTransition","render","TimingMetric","VisitState","SystemStatusCode","Direction","Visit","restorationIdentifier","historyChanged","referrer","snapshotHTML","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","actionForHistory","statusCode","isSuccessful","responseHTML","_response","redirected","_error","scrollPosition","metric","BrowserAdapter","session","visit","_visit","_formSubmission","CacheObserver","_FrameRedirector_instances","shouldSubmit_fn","shouldRedirect_fn","findFrameElement_fn","FrameRedirector","_location","frame","History","turbo","restorationIndex","additionalData","restorationData","_prefetchedLink","_enable","_tryToPrefetchRequest","_cancelRequestIfObsolete","_cancelPrefetchRequest","_tryToUsePrefetchedRequest","_LinkPrefetchObserver_instances","cacheTtl_get","isPrefetchable_fn","LinkPrefetchObserver","fetchRequest","cached","turboFrameTarget","unfetchableLink","linkToTheSamePage","linkOptsOut","nonSafeLink","eventPrevented","turboPrefetchParent","turboMethod","isUJS","_Navigator_instances","getActionForFormSubmission_fn","getDefaultAction_fn","Navigator","formSubmission","visitOptions","currentAnchor","isRestorationToTop","oldURL","newURL","PageStage","PageObserver","readyState","ScrollObserver","StreamMessageRenderer","getPermanentElementMapForFragment","withAutofocusFromFragment","withPreservedFocus","permanentElementsInDocument","permanentElementInDocument","elementInStream","generatedID","turboStreams","elementWithAutofocus","firstAutofocusableElementInStreams","willAutofocusId","elementToAutofocus","activeElementBeforeRender","activeElementAfterRender","restoreFocusTo","elementToFocus","nodeListOfStreamElements","_started","StreamObserver","fetchResponseFromEvent","fetchResponseIsStream","ErrorRenderer","replaceableElement","parentNode","_PageRenderer_instances","setLanguage_fn","PageRenderer","mergedHeadElements","newStylesheetElements","loadingElements","newHeadElements","elementList","lang","MorphingPageRenderer","canRefreshFrame","SnapshotCache","size","PageView","rendererClass","cachedSnapshot","_preloadAll","Preloader","snapshotCache","_Cache_instances","setCacheControl_fn","Cache","_pageRefreshDebouncePeriod","Session","adapter","requestId","isUnsafe","isStream","frameTarget","extendURLWithDeprecatedProperties","_snapshot","_isPreview","renderMethod","ev","newBody","timing","submitterIsNavigatable","withinFrame","deprecatedLocationPropertyDescriptors","cache","navigator$1","registerAdapter","connectStreamSource","disconnectStreamSource","renderStreamMessage","clearCache","setProgressBarDelay","setConfirmMethod","confirmMethod","setFormMode","mode","Turbo","TurboFrameMissingError","_currentFetchRequest","_resolveVisitPromise","_connected","_hasBeenLoaded","_ignoredAttributes","_shouldMorphFrame","_FrameController_instances","loadSourceURL_fn","loadFrameResponse_fn","visit_fn","navigateFrame_fn","handleUnvisitableFrameResponse_fn","willHandleFrameMissingFromResponse_fn","handleFrameMissingFromResponse_fn","throwFrameMissingError_fn","visitResponse_fn","formActionIsVisitable_fn","shouldInterceptNavigation_fn","isIgnoringChangesTo_fn","ignoringChangesToAttribute_fn","withCurrentNavigationElement_fn","FrameController","_fetchResponse","refresh","src","document","newFrame","_renderMethod","_newElement","pageSnapshot","activateElement","sourceURL","newFrameElement","wrapped","getFrameElementById","currentURL","StreamActions","e","_StreamElement_instances","raise_fn","_StreamElement","c","existingChildren","newChildrenIds","actionFunction","StreamElement","StreamSourceElement","consumer","getConsumer","setConsumer","createConsumer","newConsumer","__vitePreload","subscribeTo","channel","mixin","subscriptions","walk","camel","TurboCableStreamSourceElement","signed_stream_name","snakeize","encodeMethodIntoRequestBody","isBodyInit","determineFetchMethod","formMethod","determineFormMethod","overrideMethod","DOCUMENT_FRAGMENT_NODE","morphAttrs","fromNode","toNode","toNodeAttrs","attrName","attrNamespaceURI","attrValue","fromNodeAttrs","d","range","NS_XHTML","doc","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","createFragmentFromTemplate","str","createFragmentFromRange","createFragmentFromWrap","toElement","compareNodeNames","fromEl","toEl","fromNodeName","toNodeName","fromCodeStart","toCodeStart","createElementNS","namespaceURI","moveChildren","curChild","nextChild","syncBooleanAttrProp","specialElHandlers","parentName","newValue","firstChild","oldValue","selectedIndex","optgroup","nodeName","ELEMENT_NODE","DOCUMENT_FRAGMENT_NODE$1","TEXT_NODE","COMMENT_NODE","defaultGetNodeKey","morphdomFactory","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","skipFromChildren","addChild","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","walkDiscardedChildNodes","skipKeyedNodes","indexTree","handleNodeAdded","unmatchedFromEl","morphEl","cleanupFromEl","curFromNodeChild","curFromNodeKey","fromNextSibling","toElKey","skipFrom","curToNodeChild","curToNodeKey","toNextSibling","matchingFromEl","outer","curFromNodeType","isCompatible","onBeforeNodeAddedResult","specialElHandler","morphedNodeType","toNodeType","elToRemove","morphdom","initialize$1","streamActions","camelize","char","capitalize","dasherize","tokenize","typecast","Utils","add_css_class","classes","remove_attribute","remove_css_class","set_attribute","toggle_attribute","force","toggleForce","set_dataset_attribute","set_property","set_style","set_styles","styles","set_value","toggle_css_class","replace_css_class","registerAttributesActions","reload","scroll_into_view","alignToTop","inline","set_focus","set_title","titleElement","registerBrowserActions","console_log","level","console_table","columns","registerDebugActions","invoke","registerDeprecatedActions","CookieStringBuilder","cookieString","streamElementAttribute","cookieKey","isBooleanAttribute","cookieValue","cookieKeyPair","set_cookie","set_cookie_item","cookieStringBuilder","registerDocumentActions","graft","inner_html","insert_adjacent_html","insert_adjacent_text","outer_html","set_meta","text_content","registerDOMActions","dispatch_event","registerEventsActions","reset_form","registerFormActions","push_state","replace_state","history_back","history_forward","history_go","delta","registerHistoryActions","PERMITTED_ATTRIBUTES","createNotification","notification","permission","registerNotificationActions","storage","clear_storage","set_storage_item","remove_storage_item","registerStorageActions","Proxy","redirect_to","turbo_clear_cache","registerTurboActions","turbo_progress_bar_set_value","turbo_progress_bar_show","turbo_progress_bar_hide","registerTurboProgressBarActions","turbo_frame_reload","turbo_frame_set_src","registerTurboFrameActions","register$1","Actions","initialize","register","toast","TurboPower","EventListener","eventOptions","binding","extendedEvent","extendEvent","leftIndex","rightIndex","stopImmediatePropagation","Dispatcher","application","eventListener","listeners","clearEventListeners","eventListenerMap","cacheKey","parts","defaultActionDescriptorFilters","descriptorPattern","parseActionDescriptorString","descriptorString","matches","keyFilter","parseEventTarget","parseEventOptions","eventTargetName","stringifyEventTarget","namespaceCamelize","isSomething","hasProperty","allModifiers","Action","descriptor","schema","getDefaultEventNameForElement","eventFilter","filters","standardFilter","params","pattern","ctrl","alt","shift","defaultEventNames","Binding","actionEvent","actionDescriptorFilters","controller","passes","filter","currentTarget","identifier","ElementObserver","mutations","mutation","nodes","tree","processor","AttributeObserver","add","fetch","del","prune","Multimap","set","_values","SelectorObserver","selectors","_attributeName","matchedBefore","StringMapObserver","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","tokenString","parseTokenString","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","writer","rawValue","rawOldValue","changedMethodName","changedMethod","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","readInheritableStaticArrayValues","constructor","ancestors","getAncestorsForConstructor","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","definition","OutletObserver","outletName","observer","_selector","outlet","hasOutlet","hasOutletController","_element","selectorObserver","attributeObserver","dependencies","module","identifiers","Context","scope","functionName","methodName","bless","shadow","getBlessedProperties","properties","shadowConstructor","extend","shadowProperties","getShadowProperties","blessedProperties","blessing","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","extendWithReflect","extended","testReflectExtension","blessDefinition","Module","ClassMap","DataMap","Guide","logger","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","targets","targetDescriptor","revisedAttributeName","OutletSet","controllerElement","outletNames","outlets","controllerAttribute","Scope","ScopeObserver","scopesByIdentifier","referenceCount","Router","contexts","afterLoad","defaultSchema","objectFromEntries","array","memo","k","Application","domReady","controllerConstructor","rest","ClassPropertiesBlessing","classDefinition","propertiesForClassDefinition","OutletPropertiesBlessing","outletDefinition","propertiesForOutletDefinition","getOutletController","getControllerAndEnsureConnectedScope","outletController","camelizedName","outletElement","TargetPropertiesBlessing","targetDefinition","propertiesForTargetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","propertiesForValueDefinitionPair","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","payload","typeObject","hasType","hasDefault","fullObject","onlyType","onlyDefault","typeFromObject","typeFromDefaultValue","propertyPath","parseValueTypeDefinition","typeFromConstant","defaultValueForDefinition","defaultValuesByType","constantFromType","readers","writers","writeString","writeJSON","Controller","_identifier","_application","bs_modal_controller","camera_controller","mediaStream","RequestInterceptor","interceptor","getCookie","cookies","compact","metaContent","stringEntriesFromFormData","mergeEntries","requestInterceptor","headers","baseHeaders","originalQuery","requestQuery","query","bodyIsAString","get","put","clickable_element_controller","clipboard_controller","dom_manipulations_controller","objectExtend","deep","isUnextendable","extenders","extender","isCloneable","base","val","$parcel$interopDefault","$4040acfd8584338d$export$2e2bcd8739ae039","$fd6031f88dce2e32$exports","$4ca367182776f80b$var$defaultOptions","files","xhr","chunk","file","done","messageElement","$3ed269f2f0fb224b$export$2e2bcd8739ae039","span","resizeMethod","info","srcRatio","trgRatio","removeFileEvent","removeLink","dataUrl","thumbnailElement","progress","bytesSent","$4ca367182776f80b$export$2e2bcd8739ae039","status","setupHiddenFileInput","containsFiles","noPropagation","efct","clickableElement","totalUploadProgress","totalBytesSent","totalBytes","n","existingFallback","fieldsString","fields","getFallback","fallback","elementListeners","listener","selectedSize","selectedUnit","units","unit","cutoff","$3ed269f2f0fb224b$var$__guard__","directory","path","dirReader","errorHandler","$3ed269f2f0fb224b$var$__guardMethod__","o","readEntries","$3ed269f2f0fb224b$var$without","cancelIfNecessary","canvas","resizeMimeType","resizedDataURL","$3ed269f2f0fb224b$var$ExifRestore","fixOrientation","fileReader","mockFile","imageUrl","crossOrigin","resizeThumbnail","onDone","thumbnail","loadExif","orientation","resizeInfo","$3ed269f2f0fb224b$var$drawImageIOSFix","parallelUploads","processingLength","queuedFiles","groupedFiles","groupedFile","groupedFile1","transformedFiles","transformedFile","handleNextChunk","chunkIndex","dataBlock","allFinished","dataBlocks","progressObj","$ewBKy$justextend","headerName","headerValue","additionalParams","doneCounter","inputName","inputType","responseText","r","elementOptions","$3ed269f2f0fb224b$var$camelize","dropzones","checkElements","dropzone","capableBrowser","dataURI","byteString","mimeString","ab","ia","asc","rejectedItem","div","els","question","accepted","rejected","acceptedFiles","baseMimeType","validType","$3ed269f2f0fb224b$var$detectVerticalSquash","ih","sy","ey","py","ratio","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","origFileBase64","resizedFileBase64","rawImage","segments","image","exifArray","newImageArray","seg","imageData","buf","separatePoint","mae","ato","rawImageArray","endPoint","transform","dropzone_controller","Dropzone","turboStreamResponse","filter_controller","checkbox","searchValue","row","label","HOOKS","err","givenDate","date","week1","english","nth","s","pad","number","int","bool","wait","_this","arrayify","toggleClass","createElement","tag","clearNode","findParent","condition","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","getEventTarget","doNothing","monthToStr","monthNumber","shorthand","locale","revFormat","dateObj","monthName","hour","day","amPM","shortMonth","seconds","unixSeconds","weekNum","weekNumber","year","ISODate","minutes","month","unixMillSeconds","tokenRegex","formats","createDateFormatter","_c","l10n","_d","isMobile","frmt","overrideLocale","arr","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","format","datestr","ops","matchIndex","regexStr","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts","ts1","ts2","calculateSecondsSinceMidnight","hours","parseSeconds","secondsSinceMidnight","duration","getDefaultHours","minHour","minMinutes","minSeconds","maxHr","maxMinutes","_loop_1","args_1","__assign","t","p","__spreadArrays","il","j","jl","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","self","flatpickr","English","bind","setHoursFromDate","positionCalendar","changeMonth","changeYear","clear","close","onMouseOver","createDay","destroy","isEnabled","jumpToDate","updateValue","redraw","setDate","setupHelperFunctions","yr","init","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","setCalendarWidth","isSafari","getClosestActiveElement","bindToInstance","daysWidth","updateTime","defaultDate","timeWrapper","prevValue","setHoursFromInputs","ampm2military","military2ampm","limitMinHours","limitMaxHours","minBound","maxBound","currentTime","maxTime","minTime","setHours","onYearInput","triggerChange","setupMobile","debouncedResize","onResize","onKeyDown","documentClick","onMonthNavClick","selectDate","selText","timeIncrement","onBlur","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","incrementNumInput","inputElem","createEvent","buildMonthNav","buildWeeks","weekWrapper","weekNumbers","buildWeekdays","buildDays","buildTime","customAppend","_dayNumber","dateIsEnabled","dayElement","isDateSelected","isDateInRange","focusOnDayElem","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","focusOnDay","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","daysInMonth","days","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","buildMonth","monthNavFragment","monthElement","selectedMonth","yearInput","yearElement","currentMonth","buildMonths","updateNavigationCurrentMonth","separator","hourInput","minuteInput","secondInput","updateWeekdays","firstDayOfWeek","weekdays","isOffset","triggerChangeEvent","toInitial","isCalendarElem","eventTarget_1","isCalendarElement","lostFocus","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","parsed","valueChanged","getDateStr","allowInput","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","elems","cellClass","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","hoverableCells","dayElem","timestamp","outOfRange","positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","dates","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","minMaxTimeSetter","hook","pluginConf","getInputElem","customPositionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","isCenter","isRight","rightMost","centerMost","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","centerStyle","editableSheet","sheet","createStyleSheet","isSelectable","selectedDate","shouldChangeMonth","single","CALLBACKS","updatePositionElement","setSelectedDate","inputDate","rule","preloadedDate","hooks","specificFormat","dObj","isPrevMonth","isNextMonth","isKeyDown","step","curValue","isHourElem","isMinuteElem","_flatpickr","nodeList","instances","global","factory","exports","this","fp","German","de","flatpickr_controller","ownKeys","_objectSpread2","_defineProperty","_toPrimitive","_toPropertyKey","_typeof","_classCallCheck","Constructor","_defineProperties","props","_createClass","protoProps","staticProps","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","arr2","IS_BROWSER","WINDOW","IS_TOUCH_DEVICE","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_TOUCH_START","EVENT_TOUCH_MOVE","EVENT_TOUCH_END","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_READY","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","MIN_CONTAINER_WIDTH","MIN_CONTAINER_HEIGHT","DEFAULTS","TEMPLATE","isNaN","isNumber","isPositiveNumber","isUndefined","isObject","hasOwnProperty","isPlainObject","_constructor","isFunction","slice","toArray","forEach","assign","REGEXP_DECIMALS","normalizeDecimalNumber","times","REGEXP_SUFFIX","setStyle","hasClass","addClass","removeClass","REGEXP_CAMEL_CASE","toParamCase","getData","setData","removeData","REGEXP_SPACES","onceSupported","supported","once","removeListener","addListener","_handler","_element$listeners","_len2","_key2","dispatchEvent","getOffset","box","REGEXP_ORIGINS","isCrossOriginURL","addTimestamp","getTransforms","rotate","translateX","translateY","getMaxZoomRatio","pointers","pointers2","maxRatio","pointer","pointerId","pointer2","x1","y1","x2","y2","z1","z2","getPointer","endOnly","pageX","pageY","getPointersCenter","count","startX","startY","getAdjustedSizes","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","getRotatedSizes","degree","arc","sinArc","cosArc","newWidth","newHeight","getSourceCanvas","_ref6","_ref7","_ref8","imageAspectRatio","imageNaturalWidth","imageNaturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","naturalWidth","naturalHeight","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","maxSizes","minSizes","destMaxSizes","destMinSizes","destWidth","destHeight","param","fromCharCode","getStringFromCharCode","dataView","REGEXP_DATA_URL_HEAD","dataURLToArrayBuffer","dataURL","base64","binary","arrayBuffer","uint8","arrayBufferToDataURL","chunks","chunkSize","resetAndGetOrientation","littleEndian","app1Start","ifdStart","exifIDCode","tiffOffset","endianness","firstIFDOffset","_length","parseOrientation","cropper","containerData","viewMode","rotated","canvasWidth","canvasHeight","canvasData","sizeLimited","positionLimited","cropBoxData","cropped","minCanvasWidth","minCanvasHeight","_getAdjustedSizes","newCanvasLeft","newCanvasTop","changed","transformed","_getRotatedSizes","autoCropArea","limited","minCropBoxWidth","minCropBoxHeight","maxCropBoxWidth","maxCropBoxHeight","preview","previews","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","ratioX","ratioY","buttons","touch","change","minLeft","minTop","renderable","methods","hasSameSize","_this$canvasData","_originalEvent","pivot","_scaleX","_scaleY","rounded","widthChanged","heightChanged","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","sourceWidth","sourceHeight","srcX","srcY","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","scale","dragBox","face","croppable","movable","AnotherCropper","Cropper","_parseOrientation","crossOriginUrl","_this2","isIOSWebKit","sizingImage","cropBox","image_cropper_controller","blob","l","u","f","w","h","g","O","locale_control_controller","swal","currentUrl","__defProp","__defNormalProp","_adapter","_lastMessageId","_pendingMessages","_pendingCallbacks","_Bridge_instances","savePendingMessage_fn","sendPendingMessages_fn","Bridge","messageId","__privateWrapper","BridgeElement","disabled","userAgent","isHotwireNativeApp","BridgeComponent","bridgePlatform","webBridge","base_url_controller","getMetaValue","createMetaTag","metaTag","setFullPageReloadOnNextNavigation","setCookie","expires","cookieArray","isIosApp","isAndroidApp","isMobileApp","mobileAppPlatform","mobileAppVersion","mobileAppUniqueDeviceId","bridge_controller","callbackReason","composeEventName","eventPrefix","composedName","composed","isElementInViewport","windowHeight","windowWidth","vertInView","horInView","defaultOptions$5","useClickOutside","composableController","onlyVisible","onEvent","clickOutsideEvent","observe","unobserve","controllerDisconnect","DebounceController","ThrottleController","nav_bar_controller","PERMISSIONS","permissions_controller","sanitizedPermission","granted","__webpack_modules__","__unused_webpack___webpack_module__","__webpack_exports__","__webpack_require__","__WEBPACK_DEFAULT_EXPORT__","Rive","_scriptDir","moduleArg","aa","ea","fa","ha","ja","ka","B","D","M","H","ba","T","ca","ra","la","q","F","G","A","I","J","K","X","Q","da","R","Yb","Zb","Ga","Ha","sa","ta","$b","ac","za","qd","bc","rd","ma","na","oa","pa","qa","ua","va","wa","xa","ya","Aa","Ba","z","Ca","C","E","Da","Ea","L","N","Fa","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","$a","db","bb","cb","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","P","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Lb","Kb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","Ub","Wb","S","Xb","cc","ec","dc","fc","gc","hc","jc","ic","kc","lc","mc","nc","oc","pc","U","qc","V","rc","sc","tc","uc","vc","W","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Y","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","jd","kd","ld","md","Z","nd","od","pd","sd","td","ud","vd","wd","xd","yd","zd","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Od","Nd","Pd","Qd","Rd","Sd","Td","Ud","Xd","Vd","Wd","Yd","Zd","$d","__unused_webpack_module","_Animation__WEBPACK_IMPORTED_MODULE_0__","Animation","animation","artboard","runtime","playing","time","mix","_sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__","_registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__","registerTouchInteractions","getClientCoordinates","isTouchScrollEnabled","stateMachines","rive","fit","alignment","layoutScaleFactor","_prevEventType","_syntheticEventsActive","processEventCallback","boundingRect","clientX","clientY","canvasX","canvasY","forwardMatrix","invertedMatrix","canvasCoordinatesVector","transformedVector","transformedX","transformedY","stateMachines_1","stateMachine","stateMachines_2","stateMachines_3","stateMachines_4","BLANK_URL","sanitizeUrl","invalidProtocolRegex","htmlEntitiesRegex","htmlCtrlEntityRegex","ctrlCharactersRegex","urlSchemeRegex","relativeFirstCharacters","isRelativeUrlWithoutProtocol","decodeHtmlCharacters","removedNullByte","dec","sanitizedUrl","urlSchemeParseResults","urlScheme","__webpack_module_cache__","moduleId","cachedModule","prop","Alignment","EventType","Fit","Layout","LoopType","RiveEventType","RiveFile","RuntimeLoader","StateMachineInput","StateMachineInputType","Testing","decodeAudio","decodeFont","decodeImage","_rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__","package_json__WEBPACK_IMPORTED_MODULE_1__","_animation__WEBPACK_IMPORTED_MODULE_2__","_utils__WEBPACK_IMPORTED_MODULE_3__","__extends","extendStatics","__","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","__generator","verb","op","RiveError","_super","resolveErrorMessage","_e","_f","_g","minX","minY","maxX","maxY","errorDetails","backupJsdelivrUrl","errorMessage","runtimeInput","StateMachine","names","Animator","eventManager","animations","animatables","fireEvent","mapToStringArray","instancedAnimationNames","instancedMachineNames","aIndex","mIndex","anim","newAnimation","sm","newStateMachine","instancedStateMachineNames","forScrubbing","removedNames","animationsToRemove","machinesToRemove","curr","instancedName","statesChanged","EventManager","currentListener","TaskQueueManager","task","SystemAudioStatus","AudioManager","_clickListener","audioManager","FakeResizeObserver","MyResizeObserver","ObjectObservers","observed","observers","loader","loadRiveFile","hasZeroSize","toggledDisplay","buffer","riveFile","autoplay","useOffscreenRenderer","startingAnimationNames","startingStateMachineNames","riveListenerOptions","activeStateMachines","touchScrollEnabledOption","artboardName","animationNames","stateMachineNames","error_1","msg","rootArtboard","instanceNames","onSecond","elapsedTime","activeAnimations","first","activeAnimations_1","activeStateMachines_1","numEventsReported","event_1","newAnchorTag","_layout","textRunName","textRun","textRunValue","artBoardName","layout","customDevicePixelRatio","scaleFactor","textName","run","fpsCallback","riveContents","artboardContents","name_1","inputContents","req","res","bytes","button_controller","eyes_controller","inputs","file_controller","enumerableOnly","symbols","sym","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","on","off","getParentOrHost","closest","includeCTX","R_SPACE","matrix","selfOnly","appliedTransforms","matrixFn","find","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","Sortable","lastChild","last","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","dst","isRectEqual","rect1","rect2","_throttleTimeout","throttle","ms","cancelThrottle","scrollBy","Polymer","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","repaint","plugins","PluginManager","sortable","eventNameGlobal","pluginName","modified","eventProperties","modifiedValue","rootEl","targetEl","cloneEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","group","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","originalTarget","_saveInputCheckedState","criteria","dragStartFn","_disableDraggable","_nextTick","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","_onMove","capture","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","sibling","dragIndex","moveVector","_unsilent","_cancelNextTick","_globalDragOver","_generateId","useAnimation","store","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","sum","idx","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","speed","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","Remove","parentSortable","sortable_controller","submit_form_controller","theme_controller","newTheme","toast_handler_controller","forEvents","MicroEvent","fct","event_array","MicroPlugin","Interface","queue","arrayToPattern","chars","maxValueLength","sequencePattern","hasDuplicates","prev_char_count","prev_pattern","setToPattern","escape_regex","longest","unicodeLength","allSubstrings","subresult","tmp","code_points","accent_pat","unicode_map","multi_char_reg","max_char_length","latin_convert","latin_condensed","latin","unicode","convert_pat","_code_points","generateMap","normalize","asciifold","_asciifold","code_point_min","code_point_max","folded","generateSets","unicode_sets","addMatching","to_add","folded_set","patt","multi_char","multi_char_patt","mapSequence","min_replacement","chars_replaced","substringsToPattern","sub_pat","sequencesToPattern","sequences","all","sequence","seq","inSequences","needle_seq","needle_parts","part","needle_part","Sequence","last_piece","last_part","last_substr","clone_last_len","getPattern","match_str","overlapping","added_types","new_seq","old_seq","getAttr","getAttrNesting","scoreValue","weight","pos","propToArray","iterate","cmp","Sifter","settings","respect_word_boundaries","weights","words","field_regex","word","field_match","field","search","token_count","field_count","getAttrFn","scoreObject","implicit_score","sort_flds","get_field","fld","sort_fld","optsUser","fn_score","fn_sort","hash_key","get_hash","escape_html","loadDebounce","debounce_events","types","event_args","getSelection","preventDefault","stop","addEvent","key_name","getId","existing_id","addSlashes","append","getDom","isHtmlString","tpl","escapeQuery","dom_el","event_name","applyCSS","addClasses","elmts","norm_classes","classesArray","castAsArray","cls","removeClasses","_classes","parentMatch","getTail","isEmptyObject","nodeIndex","amongst","setAttr","attrs","replaceNode","replacement","highlight","highlightText","spannode","middlebit","middleclone","highlightChildren","highlightRecursive","removeHighlight","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_BACKSPACE","KEY_DELETE","KEY_TAB","IS_MAC","KEY_SHORTCUT","getSettings","settings_user","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","settings_element","init_select","optionsMap","group_count","$order","readData","json","addOption","option_data","addGroup","optgroup_data","init_textbox","data_raw","opt","instance_i","TomSelect","input_arg","user_settings","dir","computedStyle","control","dropdown","dropdown_content","inputMode","control_input","focus_node","passive_event","listboxId","control_id","label_click","label_id","classes_plugins","target_match","doc_mousedown","win_scroll","optgroups","templates","escape","get_settings","pastedText","splitInput","piece","character","constants.KEY_TAB","constants.KEY_A","constants.KEY_SHORTCUT","constants.KEY_ESC","constants.KEY_DOWN","constants.KEY_UP","prev","constants.KEY_RETURN","constants.KEY_LEFT","constants.KEY_RIGHT","constants.KEY_BACKSPACE","constants.KEY_DELETE","wasFocused","deactivate","classList","silent","begin","swap","last_active","height_menu","height_item","activeItems","calculateScore","hashed","triggerDropdown","has_create_option","active_group","create","groups","groups_order","same_query","results","active_option","show_dropdown","getGroupFragment","group_order_i","order_group","group_fragment","opt_value","opt_hash","option_el","self_optgroup","group_order","group_heading","group_options","header","group_html","tok","add_template","active_index","user_created","dat","hashed_id","item_new","index_item","value_old","value_new","data_old","option_new","boundFilter","last_item","wasFull","caret","created","isFull","isLocked","wrap_classList","empty_option","AddSelected","has_selected","reuse_opt","setTextboxValue","selection","tail","rm_items","rm_item","adjacent","new_pos","lock","isReadOnly","revertSettings","templateName","when","new_fn","orig_method","result_new","userOptions","orig_onOptionSelect","cbOptions","UpdateChecked","toCheck","UpdateCheckbox","orig_render_option","rendered","insertAfter","referenceNode","_referenceNode$parent","insertBefore","_referenceNode$parent2","isBefore","_newNode","orig_lock","orig_unlock","drag_item","orig_render_item","mousedown","dragStart","dragOver","moveitem","dragLeave","targetitem","dragitem","dragend","_drag_item","close_link","orig_onBlur","test_input","transfer_styles","style_name","orig_deleteSelection","orig_keydown","close_button","orig_canLoad","orig_clearActiveOption","orig_loadCallback","pagination","loading_more","load_more_opt","default_values","selectable","canLoadMore","clearFilter","next_url","first_option","change_listener","checkbox_options","clear_button","drag_drop","dropdown_header","caret_position","dropdown_input","input_autogrow","no_backspace_delete","no_active_items","optgroup_columns","remove_button","restore_on_backspace","virtual_scroll","tom_select_controller","CONTROLLER_FILENAME_REGEX","registerControllers","controllerModules","definitionsFromGlob","definitionFromEntry","controllerModule","identifierForGlobKey","logicalName","controllers","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","__vite_glob_0_15","__vite_glob_0_16","__vite_glob_0_17","__vite_glob_0_18","__vite_glob_0_19","__vite_glob_0_20","__vite_glob_0_21"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,60,61,62,63,68,71,72,73,74,75,79,80,83,84,85,86,87,88,89,90,91,93,95,97,101,104,108,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,144],"sources":["../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper-lite.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/bootstrap/dist/js/bootstrap.esm.js","../../../app/javascript/init/bootstrap.js","../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","../../../node_modules/turbo_power/dist/turbo_power.js","../../../app/javascript/turbo/cache_cleanup.js","../../../app/javascript/lib/toast.js","../../../app/javascript/turbo/custom_stream_actions.js","../../../app/javascript/turbo/turbo.js","../../../node_modules/@hotwired/stimulus/dist/stimulus.js","../../../app/javascript/controllers/bs_modal_controller.js","../../../app/javascript/controllers/camera_controller.js","../../../node_modules/@rails/request.js/src/fetch_response.js","../../../node_modules/@rails/request.js/src/request_interceptor.js","../../../node_modules/@rails/request.js/src/lib/utils.js","../../../node_modules/@rails/request.js/src/fetch_request.js","../../../node_modules/@rails/request.js/src/verbs.js","../../../app/javascript/controllers/clickable_element_controller.js","../../../app/javascript/controllers/clipboard_controller.js","../../../app/javascript/controllers/dom_manipulations_controller.js","../../../node_modules/just-extend/index.esm.js","../../../node_modules/dropzone/dist/dropzone.mjs","../../../app/javascript/controllers/dropzone_controller.js","../../../app/javascript/controllers/filter_controller.js","../../../node_modules/flatpickr/dist/esm/types/options.js","../../../node_modules/flatpickr/dist/esm/l10n/default.js","../../../node_modules/flatpickr/dist/esm/utils/index.js","../../../node_modules/flatpickr/dist/esm/utils/dom.js","../../../node_modules/flatpickr/dist/esm/utils/formatting.js","../../../node_modules/flatpickr/dist/esm/utils/dates.js","../../../node_modules/flatpickr/dist/esm/utils/polyfills.js","../../../node_modules/flatpickr/dist/esm/index.js","../../../node_modules/flatpickr/dist/l10n/de.js","../../../app/javascript/controllers/flatpickr_controller.js","../../../node_modules/cropperjs/dist/cropper.esm.js","../../../app/javascript/controllers/image_cropper_controller.js","../../../node_modules/sweetalert/dist/sweetalert.min.js","../../../app/javascript/controllers/locale_control_controller.js","../../../node_modules/@hotwired/hotwire-native-bridge/dist/hotwire-native-bridge.js","../../../app/javascript/controllers/native/base_url_controller.js","../../../app/javascript/lib/utils.js","../../../app/javascript/controllers/native/bridge_controller.js","../../../node_modules/stimulus-use/dist/index.js","../../../app/javascript/controllers/native/nav_bar_controller.js","../../../app/javascript/controllers/native/permissions_controller.js","../../../node_modules/@rive-app/canvas/rive.js","../../../app/javascript/controllers/rive/button_controller.js","../../../app/javascript/controllers/rive/eyes_controller.js","../../../app/javascript/controllers/rive/file_controller.js","../../../node_modules/sortablejs/modular/sortable.esm.js","../../../app/javascript/controllers/sortable_controller.js","../../../app/javascript/controllers/submit_form_controller.js","../../../app/javascript/controllers/theme_controller.js","../../../app/javascript/controllers/toast_handler_controller.js","../../../node_modules/tom-select/dist/esm/contrib/microevent.js","../../../node_modules/tom-select/dist/esm/contrib/microplugin.js","../../../node_modules/@orchidjs/unicode-variants/dist/esm/regex.js","../../../node_modules/@orchidjs/unicode-variants/dist/esm/strings.js","../../../node_modules/@orchidjs/unicode-variants/dist/esm/index.js","../../../node_modules/@orchidjs/sifter/dist/esm/utils.js","../../../node_modules/@orchidjs/sifter/dist/esm/sifter.js","../../../node_modules/tom-select/dist/esm/utils.js","../../../node_modules/tom-select/dist/esm/vanilla.js","../../../node_modules/tom-select/dist/esm/contrib/highlight.js","../../../node_modules/tom-select/dist/esm/constants.js","../../../node_modules/tom-select/dist/esm/defaults.js","../../../node_modules/tom-select/dist/esm/getSettings.js","../../../node_modules/tom-select/dist/esm/tom-select.js","../../../node_modules/tom-select/dist/esm/plugins/change_listener/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/checkbox_options/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/clear_button/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/drag_drop/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/dropdown_header/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/caret_position/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/dropdown_input/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/input_autogrow/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/no_backspace_delete/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/no_active_items/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/optgroup_columns/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/remove_button/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/restore_on_backspace/plugin.js","../../../node_modules/tom-select/dist/esm/plugins/virtual_scroll/plugin.js","../../../node_modules/tom-select/dist/esm/tom-select.complete.js","../../../app/javascript/controllers/tom_select_controller.js","../../../app/javascript/controllers/application.js","../../../node_modules/stimulus-vite-helpers/dist/index.js","../../../app/javascript/controllers/index.js"],"sourcesContent":["export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\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\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\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 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\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 dd: [],\n div: [],\n dl: [],\n dt: [],\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// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\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 if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME$1;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n const children = this._getChildren().filter(element => !isDisabled(element));\n let nextActiveElement;\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n this._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n hide() {\n if (!this.isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n super.dispose();\n }\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","import * as bootstrap from \"bootstrap\";\nwindow.bootstrap = bootstrap;\n","/*!\nTurbo 8.0.12\nCopyright © 2024 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form ||\n raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return candidate?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return\n\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target)\n }\n }\n });\n})();\n\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * <turbo-frame id=\"messages\">\n * <a href=\"/messages/expanded\">\n * Show all expanded messages in this frame.\n * </a>\n *\n * <form action=\"/messages\">\n * Show response from this form within this frame.\n * </form>\n * </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n static delegateConstructor = undefined\n\n loaded = Promise.resolve()\n\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"]\n }\n\n constructor() {\n super();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n\n connectedCallback() {\n this.delegate.connect();\n }\n\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n\n reload() {\n return this.delegate.sourceURLReloaded()\n }\n\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else if (name == \"disabled\") {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\")\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\")\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n get shouldReloadWithMorph() {\n return this.src && this.refresh === \"morph\"\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\n}\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy\n default:\n return FrameLoadingStyle.eager\n }\n}\n\nconst drive = {\n enabled: true,\n progressBarDelay: 500,\n unvisitableExtensions: new Set(\n [\n \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n \".xls\", \".xlsx\", \".xml\", \".zip\"\n ]\n )\n};\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getCspNonce();\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction cancelEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value\n }, \"\")\n}\n\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\"\n } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 15).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction getCspNonce() {\n const element = getMetaElement(\"csp-nonce\");\n\n if (element) {\n const { nonce, content } = element;\n return nonce == \"\" ? content : nonce\n }\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nconst submitter = {\n \"aria-disabled\": {\n beforeSubmit: submitter => {\n submitter.setAttribute(\"aria-disabled\", \"true\");\n submitter.addEventListener(\"click\", cancelEvent);\n },\n\n afterSubmit: submitter => {\n submitter.removeAttribute(\"aria-disabled\");\n submitter.removeEventListener(\"click\", cancelEvent);\n }\n },\n\n \"disabled\": {\n beforeSubmit: submitter => submitter.disabled = true,\n afterSubmit: submitter => submitter.disabled = false\n }\n};\n\nclass Config {\n #submitter = null\n\n constructor(config) {\n Object.assign(this, config);\n }\n\n get submitter() {\n return this.#submitter\n }\n\n set submitter(value) {\n this.#submitter = submitter[value] || value;\n }\n}\n\nconst forms = new Config({\n mode: \"on\",\n submitter: \"disabled\"\n});\n\nconst config = {\n drive,\n forms\n};\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\n }\n\n header(name) {\n return this.response.headers.get(name)\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return nativeFetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get\n case \"post\":\n return FetchMethod.post\n case \"put\":\n return FetchMethod.put\n case \"patch\":\n return FetchMethod.patch\n case \"delete\":\n return FetchMethod.delete\n }\n}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.#willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n\n async #allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.#resolveRequestPromise\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\n\n #willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error }\n });\n\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n #prefetchTimeout = null\n #prefetched = null\n\n get(url) {\n if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n return this.#prefetched.request\n }\n }\n\n setLater(url, request, ttl) {\n this.clear();\n\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.set(url, request, ttl);\n this.#prefetchTimeout = null;\n }, PREFETCH_DELAY);\n }\n\n set(url, request, ttl) {\n this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n }\n\n clear() {\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n this.#prefetched = null;\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const confirmMethod = typeof config.forms.confirm === \"function\" ?\n config.forms.confirm :\n FormSubmission.confirmMethod;\n\n const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\n }\n\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n }\n\n get snapshot() {\n return new Snapshot(this.element)\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n }\n\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element\n}\n\nclass Renderer {\n #activeElement = null\n\n static renderElement(currentElement, newElement) {\n // Abstract method\n }\n\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = this.constructor.renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\n// base IIFE to define idiomorph\nvar Idiomorph = (function () {\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n let EMPTY_SET = new Set();\n\n // default configuration values, updatable by users now\n let defaults = {\n morphStyle: \"outerHTML\",\n callbacks : {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n\n },\n head: {\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n }\n };\n\n //=============================================================================\n // Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n //=============================================================================\n function morph(oldNode, newContent, config = {}) {\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n let normalizedContent = normalizeContent(newContent);\n\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n }\n\n function morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch?.previousSibling;\n let nextSibling = bestMatch?.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return []\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n }\n\n\n /**\n * @param possibleActiveElement\n * @param ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;\n }\n\n /**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n function morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ; else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return oldNode;\n\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return oldNode;\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n morphChildren(newContent, oldNode, ctx);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n }\n\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n function morphChildren(newParent, oldParent, ctx) {\n\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n }\n\n //=============================================================================\n // Attribute Syncing Code\n //=============================================================================\n\n /**\n * @param attr {String} the attribute to be mutated\n * @param to {Element} the element that is going to be updated\n * @param updateType {(\"update\"|\"remove\")}\n * @param ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, to, updateType, ctx) {\n if(attr === 'value' && ctx.ignoreActiveValue && to === document.activeElement){\n return true;\n }\n return ctx.callbacks.beforeAttributeUpdated(attr, to, updateType) === false;\n }\n\n /**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n * @param ctx the merge context\n */\n function syncNodeFrom(from, to, ctx) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (ignoreAttribute(fromAttribute.name, to, 'update', ctx)) {\n continue;\n }\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = toAttributes.length - 1; 0 <= i; i--) {\n const toAttribute = toAttributes[i];\n if (ignoreAttribute(toAttribute.name, to, 'remove', ctx)) {\n continue;\n }\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n if (!ignoreValueOfActiveElement(to, ctx)) {\n // sync input values\n syncInputValue(from, to, ctx);\n }\n }\n\n /**\n * @param from {Element} element to sync the value from\n * @param to {Element} element to sync the value to\n * @param attributeName {String} the attribute name\n * @param ctx the merge context\n */\n function syncBooleanAttribute(from, to, attributeName, ctx) {\n if (from[attributeName] !== to[attributeName]) {\n let ignoreUpdate = ignoreAttribute(attributeName, to, 'update', ctx);\n if (!ignoreUpdate) {\n to[attributeName] = from[attributeName];\n }\n if (from[attributeName]) {\n if (!ignoreUpdate) {\n to.setAttribute(attributeName, from[attributeName]);\n }\n } else {\n if (!ignoreAttribute(attributeName, to, 'remove', ctx)) {\n to.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param from {Element} the element to sync the input value from\n * @param to {Element} the element to sync the input value to\n * @param ctx the merge context\n */\n function syncInputValue(from, to, ctx) {\n if (from instanceof HTMLInputElement &&\n to instanceof HTMLInputElement &&\n from.type !== 'file') {\n\n let fromValue = from.value;\n let toValue = to.value;\n\n // sync boolean attributes\n syncBooleanAttribute(from, to, 'checked', ctx);\n syncBooleanAttribute(from, to, 'disabled', ctx);\n\n if (!from.hasAttribute('value')) {\n if (!ignoreAttribute('value', to, 'remove', ctx)) {\n to.value = '';\n to.removeAttribute('value');\n }\n } else if (fromValue !== toValue) {\n if (!ignoreAttribute('value', to, 'update', ctx)) {\n to.setAttribute('value', fromValue);\n to.value = fromValue;\n }\n }\n } else if (from instanceof HTMLOptionElement) {\n syncBooleanAttribute(from, to, 'selected', ctx);\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (ignoreAttribute('value', to, 'update', ctx)) {\n return;\n }\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n }\n\n //=============================================================================\n // the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n //=============================================================================\n function handleHeadElement(newHeadTag, currentHead, ctx) {\n\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {added: added, kept: preserved, removed: removed});\n return promises;\n }\n\n function noOp() {\n }\n\n /*\n Deep merges the config object and the Idiomoroph.defaults object to\n produce a final configuration object\n */\n function mergeDefaults(config) {\n let finalConfig = {};\n // copy top level stuff into final config\n Object.assign(finalConfig, defaults);\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = {};\n Object.assign(finalConfig.callbacks, defaults.callbacks);\n Object.assign(finalConfig.callbacks, config.callbacks);\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = {};\n Object.assign(finalConfig.head, defaults.head);\n Object.assign(finalConfig.head, config.head);\n return finalConfig;\n }\n\n function createMorphContext(oldNode, newContent, config) {\n config = mergeDefaults(config);\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n ignoreActiveValue: config.ignoreActiveValue,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: config.callbacks,\n head: config.head\n }\n }\n\n function isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n }\n\n function isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName\n }\n\n function removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential id match\n // for the newChild. We stop if we find a potential id match for the new child OR\n // if the number of potential id matches we are discarding is greater than the\n // potential id matches for the new child\n //=============================================================================\n function findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential soft match\n // for the newChild. We stop if we find a potential soft match for the new child OR\n // if we find a potential id match in the old parents children OR if we find two\n // potential soft matches for the next two pieces of new content\n //=============================================================================\n function findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n }\n\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim, '');\n\n // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n let content = parser.parseFromString(newContent, \"text/html\");\n // if it is a full HTML document, return the document itself as the parent container\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n let htmlElement = content.firstChild;\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n let responseDoc = parser.parseFromString(\"<body><template>\" + newContent + \"</template></body>\", \"text/html\");\n let content = responseDoc.body.querySelector('template').content;\n content.generatedByIdiomorph = true;\n return content\n }\n }\n\n function normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n const dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement('div');\n dummyParent.append(newContent);\n return dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement('div');\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n }\n\n function insertSiblings(previousSibling, morphedNode, nextSibling) {\n let stack = [];\n let added = [];\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n while (stack.length > 0) {\n let node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n added.push(morphedNode);\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n nextSibling = nextSibling.nextSibling;\n }\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n return added;\n }\n\n function findBestNodeMatch(newContent, oldNode, ctx) {\n let currentElement;\n currentElement = newContent.firstChild;\n let bestElement = currentElement;\n let score = 0;\n while (currentElement) {\n let newScore = scoreElement(currentElement, oldNode, ctx);\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n currentElement = currentElement.nextSibling;\n }\n return bestElement;\n }\n\n function scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n return 0;\n }\n\n function removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n }\n\n //=============================================================================\n // ID Set Functions\n //=============================================================================\n\n function isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n }\n\n function idIsWithinNode(ctx, id, targetNode) {\n let idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n }\n\n function removeIdsFromConsideration(ctx, node) {\n let idSet = ctx.idMap.get(node) || EMPTY_SET;\n for (const id of idSet) {\n ctx.deadIds.add(id);\n }\n }\n\n function getIdIntersectionCount(ctx, node1, node2) {\n let sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n let matchCount = 0;\n for (const id of sourceSet) {\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, id) && idIsWithinNode(ctx, id, node2)) {\n ++matchCount;\n }\n }\n return matchCount;\n }\n\n /**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map<Node, Set<String>>} idMap\n */\n function populateIdMapForNode(node, idMap) {\n let nodeParent = node.parentElement;\n // find all elements with an id property\n let idElements = node.querySelectorAll('[id]');\n for (const elt of idElements) {\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current !== nodeParent && current != null) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n }\n\n /**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map<Node, Set<String>>} a map of nodes to id sets for the\n */\n function createIdMap(oldContent, newContent) {\n let idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n }\n\n //=============================================================================\n // This is what ends up becoming the Idiomorph global object\n //=============================================================================\n return {\n morph,\n defaults\n }\n })();\n\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n Idiomorph.morph(currentElement, newElement, {\n ...options,\n callbacks: new DefaultIdiomorphCallbacks(callbacks)\n });\n}\n\nfunction morphChildren(currentElement, newElement) {\n morphElements(currentElement, newElement.children, {\n morphStyle: \"innerHTML\"\n });\n}\n\nclass DefaultIdiomorphCallbacks {\n #beforeNodeMorphed\n\n constructor({ beforeNodeMorphed } = {}) {\n this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n }\n\n beforeNodeAdded = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n beforeNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n beforeAttributeUpdated = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", {\n cancelable: true,\n target,\n detail: { attributeName, mutationType }\n });\n\n return !event.defaultPrevented\n }\n\n beforeNodeRemoved = (node) => {\n return this.beforeNodeMorphed(node)\n }\n\n afterNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n dispatch(\"turbo:morph-element\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n }\n }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n static renderElement(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n morphChildren(currentElement, newElement);\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n}\n\nclass ProgressBar {\n static animationDuration = 300 /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `\n }\n\n hiding = false\n value = 0\n visible = false\n\n constructor() {\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n }\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n const cspNonce = getCspNonce();\n if (cspNonce) {\n element.nonce = cspNonce;\n }\n return element\n }\n\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element\n }\n}\n\nclass HeadSnapshot extends Snapshot {\n detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details =\n outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return {\n ...result,\n [outerHTML]: {\n ...details,\n elements: [...details.elements, element]\n }\n }\n }, {})\n\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\")\n }\n\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n }\n\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n }\n\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element)\n }\n\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements]\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)]\n } else {\n return result\n }\n }, [])\n }\n\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null\n }\n\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const {\n elements: [element]\n } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result\n }, undefined | undefined)\n }\n}\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\"\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\"\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element\n}\n\nclass PageSnapshot extends Snapshot {\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html))\n }\n\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument)\n }\n\n static fromDocument({ documentElement, body, head }) {\n return new this(documentElement, body, new HeadSnapshot(head))\n }\n\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n\n clone() {\n const clonedElement = this.element.cloneNode(true);\n\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n }\n\n get lang() {\n return this.documentElement.getAttribute(\"lang\")\n }\n\n get headElement() {\n return this.headSnapshot.element\n }\n\n get rootLocation() {\n const root = this.getSetting(\"root\") ?? \"/\";\n return expandURL(root)\n }\n\n get cacheControlValue() {\n return this.getSetting(\"cache-control\")\n }\n\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\"\n }\n\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\"\n }\n\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\"\n }\n\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n }\n\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\"\n }\n\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\"\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`)\n }\n}\n\nclass ViewTransitioner {\n #viewTransitionStarted = false\n #lastOperation = Promise.resolve()\n\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n this.#viewTransitionStarted = true;\n this.#lastOperation = this.#lastOperation.then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n this.#lastOperation = this.#lastOperation.then(render);\n }\n\n return this.#lastOperation\n }\n\n get viewTransitionsAvailable() {\n return document.startViewTransition\n }\n}\n\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\n\nconst Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nclass Visit {\n identifier = uuid() // Required by turbo-ios\n timingMetrics = {}\n\n followedRedirect = false\n historyChanged = false\n scrolled = false\n shouldCacheSnapshot = true\n acceptsStreamResponse = false\n snapshotCached = false\n state = VisitState.initialized\n viewTransitioner = new ViewTransitioner()\n\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n const {\n action,\n historyChanged,\n referrer,\n snapshot,\n snapshotHTML,\n response,\n visitCachedSnapshot,\n willRender,\n updateHistory,\n shouldCacheSnapshot,\n acceptsStreamResponse,\n direction\n } = {\n ...defaultOptions,\n ...options\n };\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.isPageRefresh = this.view.isPageRefresh(this);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n this.direction = direction || Direction[action];\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get history() {\n return this.delegate.history\n }\n\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n }\n\n get silent() {\n return this.isSamePage\n }\n\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.adapter.visitCompleted(this);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.delegate.visitCompleted(this);\n }\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot\n }\n }\n }\n\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML)\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null\n }\n\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage || this.isPageRefresh) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n\n await this.renderPageSnapshot(snapshot, isPreview);\n\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n\n followRedirect() {\n if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted() {\n this.startRequest();\n }\n\n requestPreventedHandlingResponse(_request, _response) {}\n\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true\n }\n }\n\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true\n }\n }\n\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics() {\n return { ...this.timingMetrics }\n }\n\n // Private\n\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n }\n\n hasPreloadedResponse() {\n return typeof this.response == \"object\"\n }\n\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot()\n } else {\n return this.willRender\n }\n }\n\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame =\n document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n progressBar = new ProgressBar()\n\n constructor(session) {\n this.session = session;\n }\n\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n })\n default:\n return visit.loadResponse()\n }\n }\n\n visitRequestFinished(_visit) {}\n\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n pageInvalidated(reason) {\n this.reload(reason);\n }\n\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n\n showProgressBar = () => {\n this.progressBar.show();\n }\n\n reload(reason) {\n dispatch(\"turbo:reload\", { detail: reason });\n\n window.location.href = this.location?.toString() || window.location.href;\n }\n\n get navigator() {\n return this.session.navigator\n }\n}\n\nclass CacheObserver {\n selector = \"[data-turbo-temporary]\"\n deprecatedSelector = \"[data-turbo-cache=false]\"\n\n started = false\n\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n removeTemporaryElements = (_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n }\n\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n }\n\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\n `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n );\n }\n\n return [...elements]\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldRedirect(element)\n }\n\n linkClickIntercepted(element, url, event) {\n const frame = this.#findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return (\n element.closest(\"turbo-frame\") == null &&\n this.#shouldSubmit(element, submitter) &&\n this.#shouldRedirect(element, submitter)\n )\n }\n\n formSubmitted(element, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n\n #shouldSubmit(form, submitter) {\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL(meta?.content ?? \"/\");\n\n return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n }\n\n #shouldRedirect(element, submitter) {\n const isNavigatable =\n element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n const frame = this.#findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false\n } else {\n return false\n }\n }\n\n #findFrameElement(element, submitter) {\n const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame\n }\n }\n }\n}\n\nclass History {\n location\n restorationIdentifier = uuid()\n restorationData = {}\n started = false\n pageLoaded = false\n currentIndex = 0\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n\n update(method, location, restorationIdentifier = uuid()) {\n if (method === history.pushState) ++this.currentIndex;\n\n const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {}\n }\n\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = {\n ...restorationData,\n ...additionalData\n };\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n\n // Event handlers\n\n onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier, restorationIndex } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n this.currentIndex = restorationIndex;\n }\n }\n }\n\n onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n }\n\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded()\n }\n\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\"\n }\n}\n\nclass LinkPrefetchObserver {\n started = false\n #prefetchedLink = null\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (this.started) return\n\n if (this.eventTarget.readyState === \"loading\") {\n this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n } else {\n this.#enable();\n }\n }\n\n stop() {\n if (!this.started) return\n\n this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = false;\n }\n\n #enable = () => {\n this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = true;\n }\n\n #tryToPrefetchRequest = (event) => {\n if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n const target = event.target;\n const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n if (isLink && this.#isPrefetchable(target)) {\n const link = target;\n const location = getLocationForLink(link);\n\n if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n this.#prefetchedLink = link;\n\n const fetchRequest = new FetchRequest(\n this,\n FetchMethod.get,\n location,\n new URLSearchParams(),\n target\n );\n\n prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n }\n }\n }\n\n #cancelRequestIfObsolete = (event) => {\n if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n }\n\n #cancelPrefetchRequest = () => {\n prefetchCache.clear();\n this.#prefetchedLink = null;\n }\n\n #tryToUsePrefetchedRequest = (event) => {\n if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n const cached = prefetchCache.get(event.detail.url.toString());\n\n if (cached) {\n // User clicked link, use cache response\n event.detail.fetchRequest = cached;\n }\n\n prefetchCache.clear();\n }\n }\n\n prepareRequest(request) {\n const link = request.target;\n\n request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n const turboFrame = link.closest(\"turbo-frame\");\n const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n }\n }\n\n // Fetch request interface\n\n requestSucceededWithResponse() {}\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n get #cacheTtl() {\n return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n }\n\n #isPrefetchable(link) {\n const href = link.getAttribute(\"href\");\n\n if (!href) return false\n\n if (unfetchableLink(link)) return false\n if (linkToTheSamePage(link)) return false\n if (linkOptsOut(link)) return false\n if (nonSafeLink(link)) return false\n if (eventPrevented(link)) return false\n\n return true\n }\n}\n\nconst unfetchableLink = (link) => {\n return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n return false\n};\n\nconst nonSafeLink = (link) => {\n const turboMethod = link.getAttribute(\"data-turbo-method\");\n if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n if (isUJS(link)) return true\n if (link.hasAttribute(\"data-turbo-confirm\")) return true\n if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n return false\n};\n\nconst isUJS = (link) => {\n return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n return event.defaultPrevented\n};\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n referrer: this.location,\n ...options\n });\n this.currentVisit.start();\n }\n\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n this.formSubmission.start();\n }\n\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get rootLocation() {\n return this.view.snapshot.rootLocation\n }\n\n get history() {\n return this.delegate.history\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n const { statusCode, redirected } = fetchResponse;\n const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if(!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n delete this.currentVisit;\n }\n\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n\n return (\n action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n )\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n #getActionForFormSubmission(formSubmission, fetchResponse) {\n const { submitter, formElement } = formSubmission;\n return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n }\n\n #getDefaultAction(fetchResponse) {\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n return sameLocationRedirect ? \"replace\" : \"advance\"\n }\n}\n\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nclass PageObserver {\n stage = PageStage.initial\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n\n interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n }\n\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n\n pageWillUnload = () => {\n this.delegate.pageWillUnload();\n }\n\n get readyState() {\n return document.readyState\n }\n}\n\nclass ScrollObserver {\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n\n onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n }\n\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n\n leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n\n return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n await nextRepaint();\n\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\n\nasync function withPreservedFocus(callback) {\n const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n if (elementWithAutofocus) return elementWithAutofocus\n }\n\n return null\n}\n\nclass StreamObserver {\n sources = new Set()\n #started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.#started) {\n this.#started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n stop() {\n if (this.#started) {\n this.#started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n streamSourceIsConnected(source) {\n return this.sources.has(source)\n }\n\n inspectFetchResponse = (event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n }\n\n receiveMessageEvent = (event) => {\n if (this.#started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n }\n\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\n\nfunction fetchResponseFromEvent(event) {\n const fetchResponse = event.detail?.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse\n }\n}\n\nfunction fetchResponseIsStream(response) {\n const contentType = response.contentType ?? \"\";\n return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n\n documentElement.replaceChild(newElement, body);\n }\n\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n\n get newHead() {\n return this.newSnapshot.headSnapshot.element\n }\n\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\")\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n }\n\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n }\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n }\n }\n }\n\n async prepareToRender() {\n this.#setLanguage();\n await this.mergeHead();\n }\n\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot\n }\n\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n #setLanguage() {\n const { documentElement } = this.currentSnapshot;\n const { lang } = this.newSnapshot;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n }\n\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n\n await mergedHeadElements;\n await newStylesheetElements;\n\n if (this.willRender) {\n this.removeUnusedDynamicStylesheetElements();\n }\n }\n\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n }\n\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n\n document.head.appendChild(element);\n }\n\n await Promise.all(loadingElements);\n }\n\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n\n removeUnusedDynamicStylesheetElements() {\n for (const element of this.unusedDynamicStylesheetElements) {\n document.head.removeChild(element);\n }\n }\n\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n return false\n }\n\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n\n get unusedDynamicStylesheetElements() {\n return this.oldHeadStylesheetElements.filter((element) => {\n return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n })\n }\n\n get oldHeadStylesheetElements() {\n return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n }\n\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements\n }\n\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements\n }\n\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\")\n }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n static renderElement(currentElement, newElement) {\n morphElements(currentElement, newElement, {\n callbacks: {\n beforeNodeMorphed: element => !canRefreshFrame(element)\n }\n });\n\n for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n if (canRefreshFrame(frame)) frame.reload();\n }\n\n dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n get shouldAutofocus() {\n return false\n }\n}\n\nfunction canRefreshFrame(frame) {\n return frame instanceof FrameElement &&\n frame.src &&\n frame.refresh === \"morph\" &&\n !frame.closest(\"[data-turbo-permanent]\")\n}\n\nclass SnapshotCache {\n keys = []\n snapshots = {}\n\n constructor(size) {\n this.size = size;\n }\n\n has(location) {\n return toCacheKey(location) in this.snapshots\n }\n\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot\n }\n }\n\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot\n }\n\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)]\n }\n\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n snapshotCache = new SnapshotCache(10)\n lastRenderedLocation = new URL(location.href)\n forceReloaded = false\n\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n }\n\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit?.changeHistory();\n }\n\n return this.render(renderer)\n }\n\n renderError(snapshot, visit) {\n visit?.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer)\n }\n\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot\n }\n }\n\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location)\n }\n\n isPageRefresh(visit) {\n return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n }\n\n shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n }\n\n get snapshot() {\n return PageSnapshot.fromElement(this.element)\n }\n}\n\nclass Preloader {\n selector = \"a[data-turbo-preload]\"\n\n constructor(delegate, snapshotCache) {\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n\n stop() {\n document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n }\n\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n }\n\n async preloadURL(link) {\n const location = new URL(link.href);\n\n if (this.snapshotCache.has(location)) {\n return\n }\n\n const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n await fetchRequest.perform();\n }\n\n // Fetch request delegate\n\n prepareRequest(fetchRequest) {\n fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n }\n\n async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n try {\n const responseHTML = await fetchResponse.responseHTML;\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n this.snapshotCache.put(fetchRequest.url, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n #preloadAll = () => {\n this.preloadOnLoadLinksForView(document.body);\n }\n}\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n\n clear() {\n this.session.clearCache();\n }\n\n resetCacheControl() {\n this.#setCacheControl(\"\");\n }\n\n exemptPageFromCache() {\n this.#setCacheControl(\"no-cache\");\n }\n\n exemptPageFromPreview() {\n this.#setCacheControl(\"no-preview\");\n }\n\n #setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nclass Session {\n navigator = new Navigator(this)\n history = new History(this)\n view = new PageView(this, document.documentElement)\n adapter = new BrowserAdapter(this)\n\n pageObserver = new PageObserver(this)\n cacheObserver = new CacheObserver()\n linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n linkClickObserver = new LinkClickObserver(this, window)\n formSubmitObserver = new FormSubmitObserver(this, document)\n scrollObserver = new ScrollObserver(this)\n streamObserver = new StreamObserver(this)\n formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n frameRedirector = new FrameRedirector(this, document.documentElement)\n streamMessageRenderer = new StreamMessageRenderer()\n cache = new Cache(this)\n\n enabled = true\n started = false\n #pageRefreshDebouncePeriod = 150\n\n constructor(recentRequests) {\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n this.debouncedRefresh = this.refresh;\n this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n }\n\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkPrefetchObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkPrefetchObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.preloader.stop();\n this.started = false;\n }\n }\n\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n const action = options.action || getVisitAction(frameElement);\n\n frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n frameElement.src = location.toString();\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest && !this.navigator.currentVisit) {\n this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n }\n }\n\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n\n clearCache() {\n this.view.clearSnapshotCache();\n }\n\n setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n );\n\n this.progressBarDelay = delay;\n }\n\n set progressBarDelay(delay) {\n config.drive.progressBarDelay = delay;\n }\n\n get progressBarDelay() {\n return config.drive.progressBarDelay\n }\n\n set drive(value) {\n config.drive.enabled = value;\n }\n\n get drive() {\n return config.drive.enabled\n }\n\n set formMode(value) {\n config.forms.mode = value;\n }\n\n get formMode() {\n return config.forms.mode\n }\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n get pageRefreshDebouncePeriod() {\n return this.#pageRefreshDebouncePeriod\n }\n\n set pageRefreshDebouncePeriod(value) {\n this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n this.#pageRefreshDebouncePeriod = value;\n }\n\n // Preloader delegate\n\n shouldPreloadLink(element) {\n const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n const isStream = element.hasAttribute(\"data-turbo-stream\");\n const frameTarget = element.getAttribute(\"data-turbo-frame\");\n const frame = frameTarget == \"_top\" ?\n null :\n document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false\n } else {\n const location = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n\n submittedFormLinkToLocation() {}\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation)\n )\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event)\n )\n }\n\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n }\n\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n\n visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action)\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return (\n this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n )\n }\n\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n if (!this.navigator.currentVisit?.silent) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(renderMethod);\n }\n\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented\n }\n\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented\n }\n\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true\n })\n }\n\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true\n })\n }\n\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\")\n }\n\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: { newBody, ...options },\n cancelable: true\n })\n }\n\n notifyApplicationAfterRender(renderMethod) {\n return dispatch(\"turbo:render\", { detail: { renderMethod } })\n }\n\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing }\n })\n }\n\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(\n new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n })\n );\n }\n\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame })\n }\n\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true\n })\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (config.forms.mode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (config.forms.mode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form)\n }\n }\n }\n\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (config.drive.enabled || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\"\n } else {\n return true\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\"\n } else {\n return false\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\"\n }\n\n get snapshot() {\n return this.view.snapshot\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString()\n }\n }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\n \"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n console.warn(\n \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n console.warn(\n \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.mode = mode;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetchWithTurboHeaders,\n config: config,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n #currentFetchRequest = null\n #resolveVisitPromise = () => {}\n #connected = false\n #hasBeenLoaded = false\n #ignoredAttributes = new Set()\n #shouldMorphFrame = false\n action = null\n\n constructor(element) {\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n\n // Frame delegate\n\n connect() {\n if (!this.#connected) {\n this.#connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.#loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n\n disconnect() {\n if (this.#connected) {\n this.#connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLChanged() {\n if (this.#isIgnoringChangesTo(\"src\")) return\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLReloaded() {\n const { refresh, src } = this.element;\n\n this.#shouldMorphFrame = src && refresh === \"morph\";\n\n this.element.removeAttribute(\"complete\");\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded\n }\n\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.#loadSourceURL();\n }\n }\n\n async #loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.#visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.#hasBeenLoaded = true;\n }\n }\n\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n\n if (pageSnapshot.isVisitable) {\n await this.#loadFrameResponse(fetchResponse, document);\n } else {\n await this.#handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.#shouldMorphFrame = false;\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n this.#loadSourceURL();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return this.#shouldInterceptNavigation(link)\n }\n\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.#findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldInterceptNavigation(element)\n }\n\n linkClickIntercepted(element, location) {\n this.#navigateFrame(element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n }\n\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n\n requestPreventedHandlingResponse(_request, _response) {\n this.#resolveVisitPromise();\n }\n\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n requestErrored(request, error) {\n console.error(error);\n this.#resolveVisitPromise();\n }\n\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.#findFrameElement(formElement));\n }\n\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.#findFrameElement(formElement));\n }\n\n // View delegate\n\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: { newFrame, ...options },\n cancelable: true\n });\n\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n\n visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n\n delete this.previousFrameElement;\n }\n\n // Private\n\n async #loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n this.#handleFrameMissingFromResponse(fetchResponse);\n }\n }\n\n async #visit(url) {\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n this.#currentFetchRequest?.cancel();\n this.#currentFetchRequest = request;\n\n return new Promise((resolve) => {\n this.#resolveVisitPromise = () => {\n this.#resolveVisitPromise = () => {};\n this.#currentFetchRequest = null;\n resolve();\n };\n request.perform();\n })\n }\n\n #navigateFrame(element, url, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n this.#withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n\n proposeVisitIfNavigatedWithAction(frame, action = null) {\n this.action = action;\n\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n\n frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = await fetchResponse.responseHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n\n if (this.action) options.action = this.action;\n\n session.visit(frame.src, options);\n }\n };\n }\n }\n\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n\n async #handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(\n `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n );\n\n await this.#visitResponse(fetchResponse.response);\n }\n\n #willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n\n const response = fetchResponse.response;\n const visit = async (url, options) => {\n if (url instanceof Response) {\n this.#visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true\n });\n\n return !event.defaultPrevented\n }\n\n #handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.#throwFrameMissingError(fetchResponse);\n }\n\n #throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message)\n }\n\n async #visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n\n return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n }\n\n #findFrameElement(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return getFrameElementById(id) ?? this.element\n }\n\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element\n }\n\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element)\n }\n } catch (error) {\n console.error(error);\n return new FrameElement()\n }\n\n return null\n }\n\n #formActionIsVisitable(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return locationIsVisitable(expandURL(action), this.rootLocation)\n }\n\n #shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n return false\n }\n\n if (!this.enabled || id == \"_top\") {\n return false\n }\n\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled\n }\n }\n\n if (!session.elementIsNavigatable(element)) {\n return false\n }\n\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false\n }\n\n return true\n }\n\n // Computed properties\n\n get id() {\n return this.element.id\n }\n\n get enabled() {\n return !this.element.disabled\n }\n\n get sourceURL() {\n if (this.element.src) {\n return this.element.src\n }\n }\n\n set sourceURL(sourceURL) {\n this.#ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL ?? null;\n });\n }\n\n get loadingStyle() {\n return this.element.loading\n }\n\n get isLoading() {\n return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n }\n\n get complete() {\n return this.element.hasAttribute(\"complete\")\n }\n\n set complete(value) {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n }\n\n get isActive() {\n return this.element.isActive && this.#connected\n }\n\n get rootLocation() {\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = meta?.content ?? \"/\";\n return expandURL(root)\n }\n\n #isIgnoringChangesTo(attributeName) {\n return this.#ignoredAttributes.has(attributeName)\n }\n\n #ignoringChangesToAttribute(attributeName, callback) {\n this.#ignoredAttributes.add(attributeName);\n callback();\n this.#ignoredAttributes.delete(attributeName);\n }\n\n #withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\n\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element\n }\n }\n}\n\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n },\n\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n\n before() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n },\n\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n\n replace() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphElements(targetElement, this.templateContent);\n } else {\n targetElement.replaceWith(this.templateContent);\n }\n });\n },\n\n update() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphChildren(targetElement, this.templateContent);\n } else {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n }\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n * <turbo-stream action=\"append\" target=\"dom_id\">\n * <template>\n * Content to append to target designated with the dom_id.\n * </template>\n * </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n\n async connectedCallback() {\n try {\n await this.render();\n } catch (error) {\n console.error(error);\n } finally {\n this.disconnect();\n }\n }\n\n async render() {\n return (this.renderPromise ??= (async () => {\n const event = this.beforeRenderEvent;\n\n if (this.dispatchEvent(event)) {\n await nextRepaint();\n await event.detail.render(this);\n }\n })())\n }\n\n disconnect() {\n try {\n this.remove();\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n /**\n * Removes duplicate children (by ID)\n */\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n\n /**\n * Gets the list of duplicate children (i.e. those with the same ID)\n */\n get duplicateChildren() {\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n }\n\n /**\n * Gets the action function to be performed.\n */\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction\n }\n this.#raise(\"unknown action\");\n }\n this.#raise(\"action attribute is missing\");\n }\n\n /**\n * Gets the target elements which the template will be rendered to.\n */\n get targetElements() {\n if (this.target) {\n return this.targetElementsById\n } else if (this.targets) {\n return this.targetElementsByQuery\n } else {\n this.#raise(\"target or targets attribute is missing\");\n }\n }\n\n /**\n * Gets the contents of the main `<template>`.\n */\n get templateContent() {\n return this.templateElement.content.cloneNode(true)\n }\n\n /**\n * Gets the main `<template>` used for rendering\n */\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild\n }\n this.#raise(\"first child element must be a <template> element\");\n }\n\n /**\n * Gets the current action.\n */\n get action() {\n return this.getAttribute(\"action\")\n }\n\n /**\n * Gets the current target (an element ID) to which the result will\n * be rendered.\n */\n get target() {\n return this.getAttribute(\"target\")\n }\n\n /**\n * Gets the current \"targets\" selector (a CSS selector)\n */\n get targets() {\n return this.getAttribute(\"targets\")\n }\n\n /**\n * Reads the request-id attribute\n */\n get requestId() {\n return this.getAttribute(\"request-id\")\n }\n\n #raise(message) {\n throw new Error(`${this.description}: ${message}`)\n }\n\n get description() {\n return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n }\n\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: { newStream: this, render: StreamElement.renderElement }\n })\n }\n\n get targetElementsById() {\n const element = this.ownerDocument?.getElementById(this.target);\n\n if (element !== null) {\n return [element]\n } else {\n return []\n }\n }\n\n get targetElementsByQuery() {\n const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements)\n } else {\n return []\n }\n }\n}\n\nclass StreamSourceElement extends HTMLElement {\n streamSource = null\n\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n connectStreamSource(this.streamSource);\n }\n\n disconnectedCallback() {\n if (this.streamSource) {\n this.streamSource.close();\n\n disconnectStreamSource(this.streamSource);\n }\n }\n\n get src() {\n return this.getAttribute(\"src\") || \"\"\n }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n let element = document.currentScript;\n if (!element) return\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(\n unindent`\n You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n Load your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n ——\n Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n `,\n element.outerHTML\n )\n }\n\n element = element.parentElement;\n }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n","let consumer\n\nexport async function getConsumer() {\n return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n const { subscriptions } = await getConsumer()\n return subscriptions.create(channel, mixin)\n}\n","// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (obj instanceof Date || obj instanceof RegExp) return obj;\n if (Array.isArray(obj)) return obj.map(walk);\n return Object.keys(obj).reduce(function (acc, key) {\n var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n return '_' + x.toLowerCase();\n });\n acc[camel] = walk(obj[key]);\n return acc;\n }, {});\n};","import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\n async connectedCallback() {\n connectStreamSource(this)\n this.subscription = await subscribeTo(this.channel, {\n received: this.dispatchMessageEvent.bind(this),\n connected: this.subscriptionConnected.bind(this),\n disconnected: this.subscriptionDisconnected.bind(this)\n })\n }\n\n disconnectedCallback() {\n disconnectStreamSource(this)\n if (this.subscription) this.subscription.unsubscribe()\n this.subscriptionDisconnected()\n }\n\n attributeChangedCallback() {\n if (this.subscription) {\n this.disconnectedCallback()\n this.connectedCallback()\n }\n }\n\n dispatchMessageEvent(data) {\n const event = new MessageEvent(\"message\", { data })\n return this.dispatchEvent(event)\n }\n\n subscriptionConnected() {\n this.setAttribute(\"connected\", \"\")\n }\n\n subscriptionDisconnected() {\n this.removeAttribute(\"connected\")\n }\n\n get channel() {\n const channel = this.getAttribute(\"channel\")\n const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n","export function encodeMethodIntoRequestBody(event) {\n if (event.target instanceof HTMLFormElement) {\n const { target: form, detail: { fetchOptions } } = event\n\n form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n const method = determineFetchMethod(submitter, body, form)\n\n if (!/get/i.test(method)) {\n if (/post/i.test(method)) {\n body.delete(\"_method\")\n } else {\n body.set(\"_method\", method)\n }\n\n fetchOptions.method = \"post\"\n }\n }, { once: true })\n }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n const formMethod = determineFormMethod(submitter)\n const overrideMethod = body.get(\"_method\")\n const method = form.getAttribute(\"method\") || \"get\"\n\n if (typeof formMethod == \"string\") {\n return formMethod\n } else if (typeof overrideMethod == \"string\") {\n return overrideMethod\n } else {\n return method\n }\n}\n\nfunction determineFormMethod(submitter) {\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n // for formmethod if the button does not have name or value attributes\n // set, which is the default. This means that if you use <%= f.button\n // formmethod: :delete %>, it will generate a <button name=\"_method\"\n // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n // is already _method, it's value attribute already contains the desired\n // method.\n if (submitter.name === '_method') {\n return submitter.value\n } else if (submitter.hasAttribute(\"formmethod\")) {\n return submitter.formMethod\n } else {\n return null\n }\n } else {\n return null\n }\n}\n\nfunction isBodyInit(body) {\n return body instanceof FormData || body instanceof URLSearchParams\n}\n","import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n","/*\n * TurboPower 0.7.0\n */\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n if (fromValue !== attrValue) {\n if (attr.prefix === \"xmlns\") {\n attrName = attr.name;\n // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range;\n\n // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = \"http://www.w3.org/1999/xhtml\";\n\nvar doc = typeof document === \"undefined\" ? undefined : document;\n\nvar HAS_TEMPLATE_SUPPORT = !!doc && \"content\" in doc.createElement(\"template\");\n\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && \"createContextualFragment\" in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement(\"template\");\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement(\"body\");\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */ function toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n // createContextualFragment doesn't support\n // <template> support not available in IE\n return createFragmentFromTemplate(str);\n } else if (HAS_RANGE_SUPPORT) {\n return createFragmentFromRange(str);\n }\n return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n * nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */ function compareNodeNames(fromEl, toEl) {\n var fromNodeName = fromEl.nodeName;\n var toNodeName = toEl.nodeName;\n var fromCodeStart, toCodeStart;\n if (fromNodeName === toNodeName) {\n return true;\n }\n fromCodeStart = fromNodeName.charCodeAt(0);\n toCodeStart = toNodeName.charCodeAt(0);\n // If the target element is a virtual DOM node or SVG node then we may\n // need to normalize the tag name before comparing. Normal HTML elements that are\n // in the \"http://www.w3.org/1999/xhtml\"\n // are converted to upper case\n if (fromCodeStart <= 90 && toCodeStart >= 97) {\n // from is upper and to is lower\n return fromNodeName === toNodeName.toUpperCase();\n } else if (toCodeStart <= 90 && fromCodeStart >= 97) {\n // to is upper and from is lower\n return toNodeName === fromNodeName.toUpperCase();\n } else {\n return false;\n }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */ function createElementNS(name, namespaceURI) {\n return !namespaceURI || namespaceURI === NS_XHTML ? doc.createElement(name) : doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */ function moveChildren(fromEl, toEl) {\n var curChild = fromEl.firstChild;\n while (curChild) {\n var nextChild = curChild.nextSibling;\n toEl.appendChild(curChild);\n curChild = nextChild;\n }\n return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n if (fromEl[name] !== toEl[name]) {\n fromEl[name] = toEl[name];\n if (fromEl[name]) {\n fromEl.setAttribute(name, \"\");\n } else {\n fromEl.removeAttribute(name);\n }\n }\n}\n\nvar specialElHandlers = {\n OPTION: function(fromEl, toEl) {\n var parentNode = fromEl.parentNode;\n if (parentNode) {\n var parentName = parentNode.nodeName.toUpperCase();\n if (parentName === \"OPTGROUP\") {\n parentNode = parentNode.parentNode;\n parentName = parentNode && parentNode.nodeName.toUpperCase();\n }\n if (parentName === \"SELECT\" && !parentNode.hasAttribute(\"multiple\")) {\n if (fromEl.hasAttribute(\"selected\") && !toEl.selected) {\n // Workaround for MS Edge bug where the 'selected' attribute can only be\n // removed if set to a non-empty value:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n fromEl.setAttribute(\"selected\", \"selected\");\n fromEl.removeAttribute(\"selected\");\n }\n // We have to reset select element's selectedIndex to -1, otherwise setting\n // fromEl.selected using the syncBooleanAttrProp below has no effect.\n // The correct selectedIndex will be set in the SELECT special handler below.\n parentNode.selectedIndex = -1;\n }\n }\n syncBooleanAttrProp(fromEl, toEl, \"selected\");\n },\n /**\n * The \"value\" attribute is special for the <input> element since it sets\n * the initial value. Changing the \"value\" attribute without changing the\n * \"value\" property will have no effect since it is only used to the set the\n * initial value. Similar for the \"checked\" attribute, and \"disabled\".\n */\n INPUT: function(fromEl, toEl) {\n syncBooleanAttrProp(fromEl, toEl, \"checked\");\n syncBooleanAttrProp(fromEl, toEl, \"disabled\");\n if (fromEl.value !== toEl.value) {\n fromEl.value = toEl.value;\n }\n if (!toEl.hasAttribute(\"value\")) {\n fromEl.removeAttribute(\"value\");\n }\n },\n TEXTAREA: function(fromEl, toEl) {\n var newValue = toEl.value;\n if (fromEl.value !== newValue) {\n fromEl.value = newValue;\n }\n var firstChild = fromEl.firstChild;\n if (firstChild) {\n // Needed for IE. Apparently IE sets the placeholder as the\n // node value and vise versa. This ignores an empty update.\n var oldValue = firstChild.nodeValue;\n if (oldValue == newValue || !newValue && oldValue == fromEl.placeholder) {\n return;\n }\n firstChild.nodeValue = newValue;\n }\n },\n SELECT: function(fromEl, toEl) {\n if (!toEl.hasAttribute(\"multiple\")) {\n var selectedIndex = -1;\n var i = 0;\n // We have to loop through children of fromEl, not toEl since nodes can be moved\n // from toEl to fromEl directly when morphing.\n // At the time this special handler is invoked, all children have already been morphed\n // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n var curChild = fromEl.firstChild;\n var optgroup;\n var nodeName;\n while (curChild) {\n nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n if (nodeName === \"OPTGROUP\") {\n optgroup = curChild;\n curChild = optgroup.firstChild;\n } else {\n if (nodeName === \"OPTION\") {\n if (curChild.hasAttribute(\"selected\")) {\n selectedIndex = i;\n break;\n }\n i++;\n }\n curChild = curChild.nextSibling;\n if (!curChild && optgroup) {\n curChild = optgroup.nextSibling;\n optgroup = null;\n }\n }\n }\n fromEl.selectedIndex = selectedIndex;\n }\n }\n};\n\nvar ELEMENT_NODE = 1;\n\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\n\nvar TEXT_NODE = 3;\n\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n if (node) {\n return node.getAttribute && node.getAttribute(\"id\") || node.id;\n }\n}\n\nfunction morphdomFactory(morphAttrs) {\n return function morphdom(fromNode, toNode, options) {\n if (!options) {\n options = {};\n }\n if (typeof toNode === \"string\") {\n if (fromNode.nodeName === \"#document\" || fromNode.nodeName === \"HTML\" || fromNode.nodeName === \"BODY\") {\n var toNodeHtml = toNode;\n toNode = doc.createElement(\"html\");\n toNode.innerHTML = toNodeHtml;\n } else {\n toNode = toElement(toNode);\n }\n } else if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n toNode = toNode.firstElementChild;\n }\n var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n var onNodeAdded = options.onNodeAdded || noop;\n var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n var onElUpdated = options.onElUpdated || noop;\n var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n var onNodeDiscarded = options.onNodeDiscarded || noop;\n var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n var skipFromChildren = options.skipFromChildren || noop;\n var addChild = options.addChild || function(parent, child) {\n return parent.appendChild(child);\n };\n var childrenOnly = options.childrenOnly === true;\n // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n var fromNodesLookup = Object.create(null);\n var keyedRemovalList = [];\n function addKeyedRemoval(key) {\n keyedRemovalList.push(key);\n }\n function walkDiscardedChildNodes(node, skipKeyedNodes) {\n if (node.nodeType === ELEMENT_NODE) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = undefined;\n if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n // If we are skipping keyed nodes then we add the key\n // to a list so that it can be handled at the very end.\n addKeyedRemoval(key);\n } else {\n // Only report the node as discarded if it is not keyed. We do this because\n // at the end we loop through all keyed elements that were unmatched\n // and then discard them in one final pass.\n onNodeDiscarded(curChild);\n if (curChild.firstChild) {\n walkDiscardedChildNodes(curChild, skipKeyedNodes);\n }\n }\n curChild = curChild.nextSibling;\n }\n }\n }\n /**\n * Removes a DOM node out of the original DOM\n *\n * @param {Node} node The node to remove\n * @param {Node} parentNode The nodes parent\n * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n * @return {undefined}\n */ function removeNode(node, parentNode, skipKeyedNodes) {\n if (onBeforeNodeDiscarded(node) === false) {\n return;\n }\n if (parentNode) {\n parentNode.removeChild(node);\n }\n onNodeDiscarded(node);\n walkDiscardedChildNodes(node, skipKeyedNodes);\n }\n // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n // function indexTree(root) {\n // var treeWalker = document.createTreeWalker(\n // root,\n // NodeFilter.SHOW_ELEMENT);\n \n // var el;\n // while((el = treeWalker.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n \n // function indexTree(node) {\n // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n // var el;\n // while((el = nodeIterator.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n function indexTree(node) {\n if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = getNodeKey(curChild);\n if (key) {\n fromNodesLookup[key] = curChild;\n }\n // Walk recursively\n indexTree(curChild);\n curChild = curChild.nextSibling;\n }\n }\n }\n indexTree(fromNode);\n function handleNodeAdded(el) {\n onNodeAdded(el);\n var curChild = el.firstChild;\n while (curChild) {\n var nextSibling = curChild.nextSibling;\n var key = getNodeKey(curChild);\n if (key) {\n var unmatchedFromEl = fromNodesLookup[key];\n // if we find a duplicate #id node in cache, replace `el` with cache value\n // and morph it to the child node.\n if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n morphEl(unmatchedFromEl, curChild);\n } else {\n handleNodeAdded(curChild);\n }\n } else {\n // recursively call for curChild and it's children to see if we find something in\n // fromNodesLookup\n handleNodeAdded(curChild);\n }\n curChild = nextSibling;\n }\n }\n function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n // We have processed all of the \"to nodes\". If curFromNodeChild is\n // non-null then we still have some from nodes left over that need\n // to be removed\n while (curFromNodeChild) {\n var fromNextSibling = curFromNodeChild.nextSibling;\n if (curFromNodeKey = getNodeKey(curFromNodeChild)) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n }\n function morphEl(fromEl, toEl, childrenOnly) {\n var toElKey = getNodeKey(toEl);\n if (toElKey) {\n // If an element with an ID is being morphed then it will be in the final\n // DOM so clear it out of the saved elements collection\n delete fromNodesLookup[toElKey];\n }\n if (!childrenOnly) {\n // optional\n if (onBeforeElUpdated(fromEl, toEl) === false) {\n return;\n }\n // update attributes on original DOM element first\n morphAttrs(fromEl, toEl);\n // optional\n onElUpdated(fromEl);\n if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n return;\n }\n }\n if (fromEl.nodeName !== \"TEXTAREA\") {\n morphChildren(fromEl, toEl);\n } else {\n specialElHandlers.TEXTAREA(fromEl, toEl);\n }\n }\n function morphChildren(fromEl, toEl) {\n var skipFrom = skipFromChildren(fromEl);\n var curToNodeChild = toEl.firstChild;\n var curFromNodeChild = fromEl.firstChild;\n var curToNodeKey;\n var curFromNodeKey;\n var fromNextSibling;\n var toNextSibling;\n var matchingFromEl;\n // walk the children\n outer: while (curToNodeChild) {\n toNextSibling = curToNodeChild.nextSibling;\n curToNodeKey = getNodeKey(curToNodeChild);\n // walk the fromNode children all the way through\n while (!skipFrom && curFromNodeChild) {\n fromNextSibling = curFromNodeChild.nextSibling;\n if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n curFromNodeKey = getNodeKey(curFromNodeChild);\n var curFromNodeType = curFromNodeChild.nodeType;\n // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n var isCompatible = undefined;\n if (curFromNodeType === curToNodeChild.nodeType) {\n if (curFromNodeType === ELEMENT_NODE) {\n // Both nodes being compared are Element nodes\n if (curToNodeKey) {\n // The target node has a key so we want to match it up with the correct element\n // in the original DOM tree\n if (curToNodeKey !== curFromNodeKey) {\n // The current element in the original DOM tree does not have a matching key so\n // let's check our lookup to see if there is a matching element in the original\n // DOM tree\n if (matchingFromEl = fromNodesLookup[curToNodeKey]) {\n if (fromNextSibling === matchingFromEl) {\n // Special case for single element removals. To avoid removing the original\n // DOM node out of the tree (since that can break CSS transitions, etc.),\n // we will instead discard the current node and wait until the next\n // iteration to properly match up the keyed target element with its matching\n // element in the original tree\n isCompatible = false;\n } else {\n // We found a matching keyed element somewhere in the original DOM tree.\n // Let's move the original DOM node into the current position and morph\n // it.\n // NOTE: We use insertBefore instead of replaceChild because we want to go through\n // the `removeNode()` function for the node that is being discarded so that\n // all lifecycle hooks are correctly invoked\n fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n // fromNextSibling = curFromNodeChild.nextSibling;\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = matchingFromEl;\n }\n } else {\n // The nodes are not compatible since the \"to\" node has a key and there\n // is no matching keyed node in the source tree\n isCompatible = false;\n }\n }\n } else if (curFromNodeKey) {\n // The original has a key\n isCompatible = false;\n }\n isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n if (isCompatible) {\n // We found compatible DOM elements so transform\n // the current \"from\" node to match the current\n // target DOM node.\n // MORPH\n morphEl(curFromNodeChild, curToNodeChild);\n }\n } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n // Both nodes being compared are Text or Comment nodes\n isCompatible = true;\n // Simply update nodeValue on the original node to\n // change the text value\n if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n }\n }\n }\n if (isCompatible) {\n // Advance both the \"to\" child and the \"from\" child since we found a match\n // Nothing else to do as we already recursively called morphChildren above\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n // No compatible match so remove the old node from the DOM and continue trying to find a\n // match in the original DOM. However, we only do this if the from node is not keyed\n // since it is possible that a keyed node might match up with a node somewhere else in the\n // target tree and we don't want to discard it just yet since it still might find a\n // home in the final DOM tree. After everything is done we will remove any keyed nodes\n // that didn't find a home\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n // END: while(curFromNodeChild) {}\n // If we got this far then we did not find a candidate match for\n // our \"to node\" and we exhausted all of the children \"from\"\n // nodes.\n if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n // MORPH\n addChild(fromEl, matchingFromEl);\n morphEl(matchingFromEl, curToNodeChild);\n } else {\n var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n if (onBeforeNodeAddedResult !== false) {\n if (onBeforeNodeAddedResult) {\n curToNodeChild = onBeforeNodeAddedResult;\n }\n if (curToNodeChild.actualize) {\n curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n }\n addChild(fromEl, curToNodeChild);\n handleNodeAdded(curToNodeChild);\n }\n }\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n }\n cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n var specialElHandler = specialElHandlers[fromEl.nodeName];\n if (specialElHandler) {\n specialElHandler(fromEl, toEl);\n }\n }\n // END: morphChildren(...)\n var morphedNode = fromNode;\n var morphedNodeType = morphedNode.nodeType;\n var toNodeType = toNode.nodeType;\n if (!childrenOnly) {\n // Handle the case where we are given two DOM nodes that are not\n // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n if (morphedNodeType === ELEMENT_NODE) {\n if (toNodeType === ELEMENT_NODE) {\n if (!compareNodeNames(fromNode, toNode)) {\n onNodeDiscarded(fromNode);\n morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n }\n } else {\n // Going from an element node to a text node\n morphedNode = toNode;\n }\n } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) {\n // Text or comment node\n if (toNodeType === morphedNodeType) {\n if (morphedNode.nodeValue !== toNode.nodeValue) {\n morphedNode.nodeValue = toNode.nodeValue;\n }\n return morphedNode;\n } else {\n // Text node to something else\n morphedNode = toNode;\n }\n }\n }\n if (morphedNode === toNode) {\n // The \"to node\" was not compatible with the \"from node\" so we had to\n // toss out the \"from node\" and use the \"to node\"\n onNodeDiscarded(fromNode);\n } else {\n if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n return;\n }\n morphEl(morphedNode, toNode, childrenOnly);\n // We now need to loop over any keyed nodes that might need to be\n // removed. We only do the removal if we know that the keyed node\n // never found a match. When a keyed node is matched up we remove\n // it out of fromNodesLookup and we use fromNodesLookup to determine\n // if a keyed node has been matched up or not\n if (keyedRemovalList) {\n for (var i = 0, len = keyedRemovalList.length; i < len; i++) {\n var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n if (elToRemove) {\n removeNode(elToRemove, elToRemove.parentNode, false);\n }\n }\n }\n }\n if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n if (morphedNode.actualize) {\n morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n }\n // If we had to swap out the from node with a new node because the old\n // node was not compatible with the target node then we need to\n // replace the old DOM node in the original DOM tree. This is only\n // possible if the original DOM node was part of a DOM tree which\n // we know is the case if it has a parent node.\n fromNode.parentNode.replaceChild(morphedNode, fromNode);\n }\n return morphedNode;\n };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\n\n/*\n * TurboMorph 0.2.0\n */ function morph() {\n const options = {\n childrenOnly: this.hasAttribute(\"children-only\")\n };\n this.targetElements.forEach((element => {\n morphdom(element, options.childrenOnly ? this.templateContent : this.templateElement.innerHTML, options);\n }));\n}\n\nconst initialize$1 = streamActions => {\n streamActions.morph = morph;\n};\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, ((_, char) => char.toUpperCase()));\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, ((_, char) => `-${char.toLowerCase()}`));\n}\n\nfunction tokenize(value) {\n return value ? value.match(/[^\\s]+/g) || [] : [];\n}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n}\n\nvar Utils = Object.freeze({\n __proto__: null,\n camelize: camelize,\n capitalize: capitalize,\n dasherize: dasherize,\n tokenize: tokenize,\n typecast: typecast\n});\n\nfunction add_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => element.classList.add(...classes)));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"add_css_class\"`);\n }\n}\n\nfunction remove_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n if (attribute) {\n this.targetElements.forEach((element => element.removeAttribute(attribute)));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"remove_attribute\"`);\n }\n}\n\nfunction remove_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => element.classList.remove(...classes)));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"remove_css_class\"`);\n }\n}\n\nfunction set_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n const value = this.getAttribute(\"value\") || \"\";\n if (attribute) {\n this.targetElements.forEach((element => element.setAttribute(attribute, value)));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_attribute\"`);\n }\n}\n\nfunction toggle_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n const force = this.getAttribute(\"force\");\n if (!attribute) {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"toggle_attribute\"`);\n return;\n }\n const toggleForce = force === null ? undefined : force.toLowerCase() === \"true\";\n this.targetElements.forEach((element => {\n element.toggleAttribute(attribute, toggleForce);\n }));\n}\n\nfunction set_dataset_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n const value = this.getAttribute(\"value\") || \"\";\n if (attribute) {\n this.targetElements.forEach((element => element.dataset[camelize(attribute)] = value));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_dataset_attribute\"`);\n }\n}\n\nfunction set_property() {\n const name = this.getAttribute(\"name\");\n const value = typecast(this.getAttribute(\"value\") || \"\");\n if (name) {\n this.targetElements.forEach((element => element[name] = value));\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_property\"`);\n }\n}\n\nfunction set_style() {\n const name = this.getAttribute(\"name\");\n const value = this.getAttribute(\"value\") || \"\";\n if (name) {\n this.targetElements.forEach((element => element.style[name] = value));\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_style\"`);\n }\n}\n\nfunction set_styles() {\n const styles = this.getAttribute(\"styles\") || \"\";\n this.targetElements.forEach((element => element.setAttribute(\"style\", styles)));\n}\n\nfunction set_value() {\n const value = this.getAttribute(\"value\") || \"\";\n this.targetElements.forEach((element => element.value = value));\n}\n\nfunction toggle_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => {\n classes.forEach((className => element.classList.toggle(className)));\n }));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"toggle_css_class\"`);\n }\n}\n\nfunction replace_css_class() {\n const from = this.getAttribute(\"from\") || \"\";\n const to = this.getAttribute(\"to\") || \"\";\n if (from && to) {\n this.targetElements.forEach((element => {\n const wasReplaced = element.classList.replace(from, to);\n if (!wasReplaced) {\n console.warn(`[TurboPower] The \"${from}\" CSS class provided in the \"from\" attribute for the \"replace_css_class\" action was not found on the target element. No replacements made.`, element);\n }\n }));\n } else {\n console.warn(`[TurboPower] no \"from\" or \"to\" class provided for Turbo Streams operation \"replace_css_class\"`);\n }\n}\n\nfunction registerAttributesActions(streamActions) {\n streamActions.add_css_class = add_css_class;\n streamActions.remove_css_class = remove_css_class;\n streamActions.remove_attribute = remove_attribute;\n streamActions.set_attribute = set_attribute;\n streamActions.toggle_attribute = toggle_attribute;\n streamActions.set_dataset_attribute = set_dataset_attribute;\n streamActions.set_property = set_property;\n streamActions.set_style = set_style;\n streamActions.set_styles = set_styles;\n streamActions.set_value = set_value;\n streamActions.toggle_css_class = toggle_css_class;\n streamActions.replace_css_class = replace_css_class;\n}\n\nfunction reload() {\n window.location.reload();\n}\n\nfunction scroll_into_view() {\n const alignToTop = this.getAttribute(\"align-to-top\");\n const block = this.getAttribute(\"block\");\n const inline = this.getAttribute(\"inline\");\n const behavior = this.getAttribute(\"behavior\");\n if (alignToTop) {\n this.targetElements.forEach((element => element.scrollIntoView(alignToTop === \"true\")));\n } else if (block || inline || behavior) {\n const options = {};\n if (block) options.block = block;\n if (inline) options.inline = inline;\n if (behavior) options.behavior = behavior;\n this.targetElements.forEach((element => element.scrollIntoView(options)));\n } else {\n this.targetElements.forEach((element => element.scrollIntoView()));\n }\n}\n\nfunction set_focus() {\n this.targetElements.forEach((element => element.focus()));\n}\n\nfunction set_title() {\n const title = this.getAttribute(\"title\") || \"\";\n let titleElement = document.head.querySelector(\"title\");\n if (!titleElement) {\n titleElement = document.createElement(\"title\");\n document.head.appendChild(titleElement);\n }\n titleElement.textContent = title;\n}\n\nfunction registerBrowserActions(streamActions) {\n streamActions.reload = reload;\n streamActions.scroll_into_view = scroll_into_view;\n streamActions.set_focus = set_focus;\n streamActions.set_title = set_title;\n}\n\nfunction console_log() {\n const message = this.getAttribute(\"message\");\n const level = this.getAttribute(\"level\") || \"log\";\n console[level](message);\n}\n\nfunction console_table() {\n const data = JSON.parse(this.getAttribute(\"data\") || \"[]\");\n const columns = JSON.parse(this.getAttribute(\"columns\") || \"[]\");\n console.table(data, columns);\n}\n\nfunction registerDebugActions(streamActions) {\n streamActions.console_log = console_log;\n streamActions.console_table = console_table;\n}\n\nfunction invoke() {\n console.warn(\"[TurboPower] The `invoke` Turbo Stream Action was removed from TurboPower. If you'd like to continue using this action please use the successor library instead. Read more here: https://github.com/hopsoft/turbo_boost-streams\");\n}\n\nfunction registerDeprecatedActions(streamActions) {\n if (!streamActions.invoke) {\n streamActions.invoke = invoke;\n }\n}\n\nclass CookieStringBuilder {\n constructor(streamElement) {\n this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING = [ [ \"domain\", \"Domain\", false ], [ \"path\", \"Path\", false ], [ \"expires\", \"Expires\", false ], [ \"max-age\", \"Max-Age\", false ], [ \"http-only\", \"HttpOnly\", true ], [ \"secure\", \"Secure\", true ], [ \"same-site\", \"SameSite\", false ] ];\n this.streamElement = streamElement;\n }\n build() {\n let cookieString = `${this.streamElement.getAttribute(\"name\")}=${this.streamElement.getAttribute(\"value\")}`;\n this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING.forEach((([streamElementAttribute, cookieKey, isBooleanAttribute]) => {\n const cookieValue = this.streamElement.getAttribute(streamElementAttribute);\n if (cookieValue !== null) {\n const cookieKeyPair = isBooleanAttribute ? cookieKey : `${cookieKey}=${cookieValue}`;\n cookieString = `${cookieString}; ${cookieKeyPair}`;\n }\n }));\n return cookieString;\n }\n}\n\nfunction set_cookie() {\n const cookie = this.getAttribute(\"cookie\") || \"\";\n document.cookie = cookie;\n}\n\nfunction set_cookie_item() {\n const cookieStringBuilder = new CookieStringBuilder(this);\n document.cookie = cookieStringBuilder.build();\n}\n\nfunction registerDocumentActions(streamActions) {\n streamActions.set_cookie = set_cookie;\n streamActions.set_cookie_item = set_cookie_item;\n}\n\nfunction graft() {\n const selector = this.getAttribute(\"parent\");\n if (selector) {\n const parent = document.querySelector(selector);\n if (parent) {\n this.targetElements.forEach((element => parent.appendChild(element)));\n } else {\n console.error(`[TurboPower] couldn't find parent element using selector \"${selector}\" for Turbo Streams operation \"graft\"`);\n }\n } else {\n console.error(`[TurboPower] no \"parent\" selector provided for Turbo Streams operation \"graft\"`);\n }\n}\n\nfunction inner_html() {\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.innerHTML = html));\n}\n\nfunction insert_adjacent_html() {\n const position = this.getAttribute(\"position\") || \"beforebegin\";\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.insertAdjacentHTML(position, html)));\n}\n\nfunction insert_adjacent_text() {\n const position = this.getAttribute(\"position\") || \"beforebegin\";\n const message = this.getAttribute(\"text\") || \"\";\n this.targetElements.forEach((element => element.insertAdjacentText(position, message)));\n}\n\nfunction outer_html() {\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.outerHTML = html));\n}\n\nfunction set_meta() {\n const name = this.getAttribute(\"name\");\n const content = this.getAttribute(\"content\") || \"\";\n if (name) {\n let meta = document.head.querySelector(`meta[name='${name}']`);\n if (!meta) {\n meta = document.createElement(\"meta\");\n meta.name = name;\n document.head.appendChild(meta);\n }\n meta.content = content;\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_meta\"`);\n }\n}\n\nfunction text_content() {\n const text = this.getAttribute(\"text\") || \"\";\n this.targetElements.forEach((element => element.textContent = text));\n}\n\nfunction registerDOMActions(streamActions) {\n streamActions.graft = graft;\n streamActions.inner_html = inner_html;\n streamActions.insert_adjacent_html = insert_adjacent_html;\n streamActions.insert_adjacent_text = insert_adjacent_text;\n streamActions.outer_html = outer_html;\n streamActions.text_content = text_content;\n streamActions.set_meta = set_meta;\n}\n\nfunction dispatch_event() {\n const name = this.getAttribute(\"name\");\n let template = null;\n try {\n template = this.templateContent.textContent;\n } catch (e) {}\n try {\n const detail = template ? JSON.parse(template) : {};\n if (name) {\n const options = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n const event = new CustomEvent(name, options);\n this.targetElements.forEach((element => element.dispatchEvent(event)));\n } else {\n console.warn(`[TurboPower] no \"name\" provided for Turbo Streams operation \"dispatch_event\"`);\n }\n } catch (error) {\n console.error(`[TurboPower] error proccessing provided \"detail\" in \"<template>\" (\"${template}\") for Turbo Streams operation \"dispatch_event\".`, `Error: \"${error.message}\"`);\n }\n}\n\nfunction registerEventsActions(streamActions) {\n streamActions.dispatch_event = dispatch_event;\n}\n\nfunction reset_form() {\n this.targetElements.forEach((form => form.reset()));\n}\n\nfunction registerFormActions(streamActions) {\n streamActions.reset_form = reset_form;\n}\n\nfunction push_state() {\n const url = this.getAttribute(\"url\");\n const state = this.getAttribute(\"state\");\n const title = this.getAttribute(\"title\") || \"\";\n window.history.pushState(state, title, url);\n}\n\nfunction replace_state() {\n const url = this.getAttribute(\"url\");\n const state = this.getAttribute(\"state\");\n const title = this.getAttribute(\"title\") || \"\";\n window.history.replaceState(state, title, url);\n}\n\nfunction history_back() {\n window.history.back();\n}\n\nfunction history_forward() {\n window.history.forward();\n}\n\nfunction history_go() {\n const delta = Number(this.getAttribute(\"delta\")) || 0;\n window.history.go(delta);\n}\n\nfunction registerHistoryActions(streamActions) {\n streamActions.push_state = push_state;\n streamActions.replace_state = replace_state;\n streamActions.history_back = history_back;\n streamActions.history_go = history_go;\n}\n\nconst PERMITTED_ATTRIBUTES = [ \"dir\", \"lang\", \"badge\", \"body\", \"tag\", \"icon\", \"image\", \"data\", \"vibrate\", \"renotify\", \"require-interaction\", \"actions\", \"silent\" ];\n\nconst createNotification = streamElement => {\n const title = streamElement.getAttribute(\"title\") || \"\";\n const attributes = Array.from(streamElement.attributes).filter((attribute => PERMITTED_ATTRIBUTES.includes(attribute.name))).map((attribute => [ camelize(attribute.name), typecast(attribute.value) ]));\n const options = Object.fromEntries(attributes);\n new Notification(title, options);\n};\n\nfunction notification() {\n if (!window.Notification) {\n alert(\"This browser does not support desktop notification\");\n } else if (Notification.permission === \"granted\") {\n createNotification(this);\n } else if (Notification.permission !== \"denied\") {\n Notification.requestPermission().then((permission => {\n if (permission === \"granted\") {\n createNotification(this);\n }\n }));\n }\n}\n\nfunction registerNotificationActions(streamActions) {\n streamActions.notification = notification;\n}\n\nfunction storage(type) {\n return type === \"session\" ? window.sessionStorage : window.localStorage;\n}\n\nfunction clear_storage() {\n const type = this.getAttribute(\"type\");\n storage(type).clear();\n}\n\nfunction set_storage_item() {\n const key = this.getAttribute(\"key\");\n const value = this.getAttribute(\"value\") || \"\";\n const type = this.getAttribute(\"type\");\n if (key) {\n storage(type).setItem(key, value);\n } else {\n console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"set_storage_item\"`);\n }\n}\n\nfunction remove_storage_item() {\n const key = this.getAttribute(\"key\");\n const type = this.getAttribute(\"type\");\n if (key) {\n storage(type).removeItem(key);\n } else {\n console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"remove_storage_item\"`);\n }\n}\n\nfunction registerStorageActions(streamActions) {\n streamActions.clear_storage = clear_storage;\n streamActions.set_storage_item = set_storage_item;\n streamActions.remove_storage_item = remove_storage_item;\n}\n\nvar Proxy = {\n get location() {\n return window.TurboPowerLocation || window.location;\n }\n};\n\nfunction redirect_to() {\n const url = this.getAttribute(\"url\") || \"/\";\n const turboAction = this.getAttribute(\"turbo-action\") || \"advance\";\n const turboFrame = this.getAttribute(\"turbo-frame\");\n const turbo = this.getAttribute(\"turbo\") !== \"false\";\n const options = {\n action: turboAction\n };\n if (turboFrame) {\n options.frame = turboFrame;\n }\n if (turbo && window.Turbo) {\n window.Turbo.visit(url, options);\n } else {\n Proxy.location.assign(url);\n }\n}\n\nfunction turbo_clear_cache() {\n window.Turbo.cache.clear();\n}\n\nfunction registerTurboActions(streamActions) {\n streamActions.redirect_to = redirect_to;\n streamActions.turbo_clear_cache = turbo_clear_cache;\n}\n\nfunction turbo_progress_bar_set_value() {\n const value = this.getAttribute(\"value\") || 0;\n window.Turbo.navigator.adapter.progressBar.setValue(Number(value));\n}\n\nfunction turbo_progress_bar_show() {\n window.Turbo.navigator.adapter.progressBar.show();\n}\n\nfunction turbo_progress_bar_hide() {\n window.Turbo.navigator.adapter.progressBar.hide();\n}\n\nfunction registerTurboProgressBarActions(streamActions) {\n streamActions.turbo_progress_bar_set_value = turbo_progress_bar_set_value;\n streamActions.turbo_progress_bar_show = turbo_progress_bar_show;\n streamActions.turbo_progress_bar_hide = turbo_progress_bar_hide;\n}\n\nfunction turbo_frame_reload() {\n this.targetElements.forEach((element => element.reload()));\n}\n\nfunction turbo_frame_set_src() {\n const src = this.getAttribute(\"src\");\n this.targetElements.forEach((element => element.src = src));\n}\n\nfunction registerTurboFrameActions(streamActions) {\n streamActions.turbo_frame_reload = turbo_frame_reload;\n streamActions.turbo_frame_set_src = turbo_frame_set_src;\n}\n\nfunction register$1(streamActions) {\n registerAttributesActions(streamActions);\n registerBrowserActions(streamActions);\n registerDebugActions(streamActions);\n registerDeprecatedActions(streamActions);\n registerDocumentActions(streamActions);\n registerDOMActions(streamActions);\n registerEventsActions(streamActions);\n registerFormActions(streamActions);\n registerHistoryActions(streamActions);\n registerNotificationActions(streamActions);\n registerStorageActions(streamActions);\n registerTurboActions(streamActions);\n registerTurboProgressBarActions(streamActions);\n registerTurboFrameActions(streamActions);\n}\n\nvar Actions = Object.freeze({\n __proto__: null,\n add_css_class: add_css_class,\n clear_storage: clear_storage,\n console_log: console_log,\n console_table: console_table,\n dispatch_event: dispatch_event,\n graft: graft,\n history_back: history_back,\n history_forward: history_forward,\n history_go: history_go,\n inner_html: inner_html,\n insert_adjacent_html: insert_adjacent_html,\n insert_adjacent_text: insert_adjacent_text,\n invoke: invoke,\n notification: notification,\n outer_html: outer_html,\n push_state: push_state,\n redirect_to: redirect_to,\n register: register$1,\n registerAttributesActions: registerAttributesActions,\n registerBrowserActions: registerBrowserActions,\n registerDOMActions: registerDOMActions,\n registerDebugActions: registerDebugActions,\n registerDeprecatedActions: registerDeprecatedActions,\n registerDocumentActions: registerDocumentActions,\n registerEventsActions: registerEventsActions,\n registerFormActions: registerFormActions,\n registerHistoryActions: registerHistoryActions,\n registerNotificationActions: registerNotificationActions,\n registerStorageActions: registerStorageActions,\n registerTurboActions: registerTurboActions,\n registerTurboFrameActions: registerTurboFrameActions,\n registerTurboProgressBarActions: registerTurboProgressBarActions,\n reload: reload,\n remove_attribute: remove_attribute,\n remove_css_class: remove_css_class,\n remove_storage_item: remove_storage_item,\n replace_css_class: replace_css_class,\n replace_state: replace_state,\n reset_form: reset_form,\n scroll_into_view: scroll_into_view,\n set_attribute: set_attribute,\n set_cookie: set_cookie,\n set_cookie_item: set_cookie_item,\n set_dataset_attribute: set_dataset_attribute,\n set_focus: set_focus,\n set_meta: set_meta,\n set_property: set_property,\n set_storage_item: set_storage_item,\n set_style: set_style,\n set_styles: set_styles,\n set_title: set_title,\n set_value: set_value,\n text_content: text_content,\n toggle_attribute: toggle_attribute,\n toggle_css_class: toggle_css_class,\n turbo_clear_cache: turbo_clear_cache,\n turbo_frame_reload: turbo_frame_reload,\n turbo_frame_set_src: turbo_frame_set_src,\n turbo_progress_bar_hide: turbo_progress_bar_hide,\n turbo_progress_bar_set_value: turbo_progress_bar_set_value,\n turbo_progress_bar_show: turbo_progress_bar_show\n});\n\nfunction initialize(streamActions) {\n initialize$1(streamActions);\n register$1(streamActions);\n}\n\nfunction register(name, action, streamActions) {\n streamActions[name] = action;\n}\n\nvar index = {\n initialize: initialize,\n register: register,\n Actions: Actions,\n Utils: Utils\n};\n\nexport { Actions, Utils, index as default, initialize, register };\n","// Some elements should be removed from the DOM when the page is cached.\ndocument.addEventListener(\"turbo:before-cache\", function () {\n // Remove modals which were populated through TurboStream\n document.querySelector(\"#remote-modal .modal\")?.remove()\n\n // Remove any animate.css classes\n document.querySelectorAll(\".animate__animated\").forEach((element) => {\n element.classList.remove(\"animate__animated\")\n })\n\n // Close all open widgets\n document.querySelectorAll(\".show-widget\").forEach((element) => {\n element.classList.remove(\"show-widget\")\n })\n\n // Remove all open tom select dropdowns\n document.querySelectorAll(\".ts-dropdown\").forEach((element) => {\n element.remove()\n })\n})\n","class Toast {\n constructor(message, type) {\n this.message = message\n this.type = type\n }\n\n toast() {\n document.getElementById(\"flash-messages\").insertAdjacentHTML(\"beforeend\", this.toastHTML)\n }\n\n get toastHTML() {\n return `\n <div id=\"toast-${new Date().getTime()}\" class=\"toast align-items-center text-bg-${\n this.classForFlash\n } border-0\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-controller=\"toast-handler\" data-turbo-permanent>\n <div class=\"d-flex\">\n <div class=\"toast-body w-100\">\n <div class=\"d-flex align-items-center\">\n <div class=\"d-flex justify-content-center w-100\">\n ${this.message}\n </div>\n </div>\n </div>\n </div>\n </div>\n `\n }\n get classForFlash() {\n return (\n {\n success: \"success\",\n notice: \"success\",\n error: \"danger\",\n alert: \"danger\",\n }[this.type] || this.type\n )\n }\n}\n\nexport function toast(message, type = \"notice\") {\n new Toast(message, type).toast()\n}\n","import { StreamActions } from \"@hotwired/turbo\"\nimport { toast } from \"../lib/toast\"\n\nStreamActions.notify = function () {\n const type = this.getAttribute(\"type\")\n const message = this.getAttribute(\"message\")\n\n toast(message, type)\n}\n\nStreamActions.dispatch_js_event = function () {\n const eventName = this.getAttribute(\"event_name\")\n const event = new Event(eventName)\n window.dispatchEvent(event)\n}\n","import \"@hotwired/turbo-rails\"\n\nimport TurboPower from \"turbo_power\"\nTurboPower.initialize(Turbo.StreamActions)\n\nimport \"./cache_cleanup\"\nimport \"./custom_stream_actions\"\n","/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"bs-modal\"\nexport default class extends Controller {\n static targets = [\"modal\"];\n static values = {\n autoOpen: { type: Boolean, default: true },\n };\n\n connect() {\n this.modal = new bootstrap.Modal(this.modalTarget);\n if (this.autoOpenValue) {\n this.openModal();\n }\n\n this.boundhideModal = this.hideModal.bind(this);\n window.addEventListener(\"hide-bs-modal\", this.boundhideModal);\n }\n\n openModal() {\n this.modal.show();\n }\n\n hideModal() {\n this.modal.hide();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"camera\"\nexport default class extends Controller {\n static targets = [\"video\"]\n\n startCamera() {\n navigator.mediaDevices.getUserMedia(this.videoOptions).then((mediaStream) => {\n this.videoTarget.srcObject = mediaStream\n this.videoTarget.onloadedmetadata = () => {\n this.videoTarget.play()\n }\n })\n }\n\n get videoOptions() {\n return {\n audio: false,\n video: {\n facingMode: { exact: \"environment\" },\n },\n }\n }\n}\n","export class FetchResponse {\n constructor (response) {\n this.response = response\n }\n\n get statusCode () {\n return this.response.status\n }\n\n get redirected () {\n return this.response.redirected\n }\n\n get ok () {\n return this.response.ok\n }\n\n get unauthenticated () {\n return this.statusCode === 401\n }\n\n get unprocessableEntity () {\n return this.statusCode === 422\n }\n\n get authenticationURL () {\n return this.response.headers.get('WWW-Authenticate')\n }\n\n get contentType () {\n const contentType = this.response.headers.get('Content-Type') || ''\n\n return contentType.replace(/;.*$/, '')\n }\n\n get headers () {\n return this.response.headers\n }\n\n get html () {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text\n }\n\n return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n }\n\n get json () {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json())\n }\n\n return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n }\n\n get text () {\n return this.responseText || (this.responseText = this.response.text())\n }\n\n get isTurboStream () {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n }\n\n async renderTurboStream () {\n if (this.isTurboStream) {\n if (window.Turbo) {\n await window.Turbo.renderStreamMessage(await this.text)\n } else {\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n }\n } else {\n return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n }\n }\n}\n","export class RequestInterceptor {\n static register (interceptor) {\n this.interceptor = interceptor\n }\n\n static get () {\n return this.interceptor\n }\n\n static reset () {\n this.interceptor = undefined\n }\n}\n","export function getCookie (name) {\n const cookies = document.cookie ? document.cookie.split('; ') : []\n const prefix = `${encodeURIComponent(name)}=`\n const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n if (cookie) {\n const value = cookie.split('=').slice(1).join('=')\n\n if (value) {\n return decodeURIComponent(value)\n }\n }\n}\n\nexport function compact (object) {\n const result = {}\n\n for (const key in object) {\n const value = object[key]\n if (value !== undefined) {\n result[key] = value\n }\n }\n\n return result\n}\n\nexport function metaContent (name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n return [...formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n for (const [name, value] of entries) {\n if (value instanceof window.File) continue\n\n if (searchParams.has(name) && !name.includes('[]')) {\n searchParams.delete(name)\n searchParams.set(name, value)\n } else {\n searchParams.append(name, value)\n }\n }\n}\n","import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n constructor (method, url, options = {}) {\n this.method = method\n this.options = options\n this.originalUrl = url.toString()\n }\n\n async perform () {\n try {\n const requestInterceptor = RequestInterceptor.get()\n if (requestInterceptor) {\n await requestInterceptor(this)\n }\n } catch (error) {\n console.error(error)\n }\n\n const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n if (response.unauthenticated && response.authenticationURL) {\n return Promise.reject(window.location.href = response.authenticationURL)\n }\n\n const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n if (responseStatusIsTurboStreamable && response.isTurboStream) {\n await response.renderTurboStream()\n }\n\n return response\n }\n\n addHeader (key, value) {\n const headers = this.additionalHeaders\n headers[key] = value\n this.options.headers = headers\n }\n\n sameHostname () {\n if (!this.originalUrl.startsWith('http:')) {\n return true\n }\n\n try {\n return new URL(this.originalUrl).hostname === window.location.hostname\n } catch (_) {\n return true\n }\n }\n\n get fetchOptions () {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: this.credentials,\n redirect: this.redirect\n }\n }\n\n get headers () {\n const baseHeaders = {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-Type': this.contentType,\n Accept: this.accept\n }\n\n if (this.sameHostname()) {\n baseHeaders['X-CSRF-Token'] = this.csrfToken\n }\n\n return compact(\n Object.assign(baseHeaders, this.additionalHeaders)\n )\n }\n\n get csrfToken () {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n }\n\n get contentType () {\n if (this.options.contentType) {\n return this.options.contentType\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined\n } else if (this.body instanceof window.File) {\n return this.body.type\n }\n\n return 'application/json'\n }\n\n get accept () {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml'\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n case 'json':\n return 'application/json, application/vnd.api+json'\n default:\n return '*/*'\n }\n }\n\n get body () {\n return this.options.body\n }\n\n get query () {\n const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n const params = new URLSearchParams(originalQuery)\n\n let requestQuery = this.options.query\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery)\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries()\n } else {\n requestQuery = Object.entries(requestQuery || {})\n }\n\n mergeEntries(params, requestQuery)\n\n const query = params.toString()\n return (query.length > 0 ? `?${query}` : '')\n }\n\n get url () {\n return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n }\n\n get responseKind () {\n return this.options.responseKind || 'html'\n }\n\n get signal () {\n return this.options.signal\n }\n\n get redirect () {\n return this.options.redirect || 'follow'\n }\n\n get credentials () {\n return this.options.credentials || 'same-origin'\n }\n\n get additionalHeaders () {\n return this.options.headers || {}\n }\n\n get formattedBody () {\n const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body)\n }\n\n return this.body\n }\n}\n","import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n const request = new FetchRequest('get', url, options)\n return request.perform()\n}\n\nasync function post (url, options) {\n const request = new FetchRequest('post', url, options)\n return request.perform()\n}\n\nasync function put (url, options) {\n const request = new FetchRequest('put', url, options)\n return request.perform()\n}\n\nasync function patch (url, options) {\n const request = new FetchRequest('patch', url, options)\n return request.perform()\n}\n\nasync function destroy (url, options) {\n const request = new FetchRequest('delete', url, options)\n return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n","import { Controller } from \"@hotwired/stimulus\"\nimport { get } from \"@rails/request.js\";\n\n// This controller can be used for elements that are not clickable by default, like <tr>\n// Connects to data-controller=\"clickable-element\"\nexport default class extends Controller {\n async openLink(event) {\n // If the click is on a link or a submit button, let the browser handle it\n if (event.target.nodeName === \"A\" || event.target.type === \"submit\") {\n return;\n }\n if (event.target.classList.contains(\"clickable-element-execption\")) return;\n\n this.url = this.element.dataset.url\n\n const shouldOpenAsTurboStream = this.element.dataset.turboStream === \"true\";\n if (shouldOpenAsTurboStream) {\n await this.openTurboStreamLink(event);\n return;\n }\n\n const shouldOpenInNewTab = event.metaKey || event.ctrlKey || event.shiftKey\n if (shouldOpenInNewTab) {\n window.open(this.url, '_blank');\n } else {\n Turbo.visit(this.url);\n }\n }\n\n async openTurboStreamLink(event) {\n this.url = this.element.dataset.url;\n await get(this.url, { responseKind: \"turbo-stream\" })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"clipboard\"\nexport default class extends Controller {\n static targets = [\"source\"]\n\n copy() {\n navigator.clipboard.writeText(this.sourceTarget.value)\n this.sourceTarget.select()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"dom-manipulations\"\nexport default class extends Controller {\n static targets = [\"element\"]\n static classes = [\"icon1\", \"icon2\"]\n\n removeElement(event) {\n if (event.target.classList.contains(\"dom-manipulation-execption\")) return;\n\n this.elementTargets.forEach(element => element.remove() )\n }\n\n showElement(event) {\n if (event.target.classList.contains(\"dom-manipulation-execption\")) return;\n\n this.elementTargets.forEach(element => element.classList.remove(\"d-none\") )\n }\n\n hideElement(event) {\n if (event.target.classList.contains(\"dom-manipulation-execption\")) return;\n\n this.elementTargets.forEach(element => element.classList.add(\"d-none\") )\n }\n\n toggleVisibility(event) {\n if (event.target.classList.contains(\"dom-manipulation-execption\")) return;\n\n this.elementTargets.forEach(element => element.classList.toggle(\"d-none\") )\n }\n\n toggleCssClass(event) {\n if (event.target.classList.contains(\"dom-manipulation-execption\")) return;\n this.elementTargets.forEach(element => element.classList.toggle(event.params.cssClass) )\n }\n}\n","var objectExtend = extend;\n\n/*\n var obj = {a: 3, b: 5};\n extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 4, b: 5, c: 8}\n\n var obj = {a: 3, b: 5};\n extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 3, b: 5}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n extend({a: 4, b: 5}); // {a: 4, b: 5}\n extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n extend({a: 4, b: 5}, true); {a: 4, b: 5}\n extend('hello', {a: 4, b: 5}); // throws\n extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction extend(/* [deep], obj1, obj2, [objn] */) {\n var args = [].slice.call(arguments);\n var deep = false;\n if (typeof args[0] == 'boolean') {\n deep = args.shift();\n }\n var result = args[0];\n if (isUnextendable(result)) {\n throw new Error('extendee must be an object');\n }\n var extenders = args.slice(1);\n var len = extenders.length;\n for (var i = 0; i < len; i++) {\n var extender = extenders[i];\n for (var key in extender) {\n if (Object.prototype.hasOwnProperty.call(extender, key)) {\n var value = extender[key];\n if (deep && isCloneable(value)) {\n var base = Array.isArray(value) ? [] : {};\n result[key] = extend(\n true,\n Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key])\n ? result[key]\n : base,\n value\n );\n } else {\n result[key] = value;\n }\n }\n }\n }\n return result;\n}\n\nfunction isCloneable(obj) {\n return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n return !val || (typeof val != 'object' && typeof val != 'function');\n}\n\nexport {objectExtend as default};\n","import $ewBKy$justextend from \"just-extend\";\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nclass $4040acfd8584338d$export$2e2bcd8739ae039 {\n // Add an event listener for given event\n on(event, fn) {\n this._callbacks = this._callbacks || {\n };\n // Create namespace for this event\n if (!this._callbacks[event]) this._callbacks[event] = [];\n this._callbacks[event].push(fn);\n return this;\n }\n emit(event, ...args) {\n this._callbacks = this._callbacks || {\n };\n let callbacks = this._callbacks[event];\n if (callbacks) for (let callback of callbacks)callback.apply(this, args);\n // trigger a corresponding DOM event\n if (this.element) this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n args: args\n }));\n return this;\n }\n makeEvent(eventName, detail) {\n let params = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n if (typeof window.CustomEvent === \"function\") return new CustomEvent(eventName, params);\n else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n }\n // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {\n };\n return this;\n }\n // specific event\n let callbacks = this._callbacks[event];\n if (!callbacks) return this;\n // remove all handlers\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n // remove specific handler\n for(let i = 0; i < callbacks.length; i++){\n let callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n }\n}\n\n\n\nvar $fd6031f88dce2e32$exports = {};\n$fd6031f88dce2e32$exports = \"<div class=\\\"dz-preview dz-file-preview\\\">\\n <div class=\\\"dz-image\\\"><img data-dz-thumbnail=\\\"\\\"></div>\\n <div class=\\\"dz-details\\\">\\n <div class=\\\"dz-size\\\"><span data-dz-size=\\\"\\\"></span></div>\\n <div class=\\\"dz-filename\\\"><span data-dz-name=\\\"\\\"></span></div>\\n </div>\\n <div class=\\\"dz-progress\\\">\\n <span class=\\\"dz-upload\\\" data-dz-uploadprogress=\\\"\\\"></span>\\n </div>\\n <div class=\\\"dz-error-message\\\"><span data-dz-errormessage=\\\"\\\"></span></div>\\n <div class=\\\"dz-success-mark\\\">\\n <svg width=\\\"54\\\" height=\\\"54\\\" viewBox=\\\"0 0 54 54\\\" fill=\\\"white\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path d=\\\"M10.2071 29.7929L14.2929 25.7071C14.6834 25.3166 15.3166 25.3166 15.7071 25.7071L21.2929 31.2929C21.6834 31.6834 22.3166 31.6834 22.7071 31.2929L38.2929 15.7071C38.6834 15.3166 39.3166 15.3166 39.7071 15.7071L43.7929 19.7929C44.1834 20.1834 44.1834 20.8166 43.7929 21.2071L22.7071 42.2929C22.3166 42.6834 21.6834 42.6834 21.2929 42.2929L10.2071 31.2071C9.81658 30.8166 9.81658 30.1834 10.2071 29.7929Z\\\"></path>\\n </svg>\\n </div>\\n <div class=\\\"dz-error-mark\\\">\\n <svg width=\\\"54\\\" height=\\\"54\\\" viewBox=\\\"0 0 54 54\\\" fill=\\\"white\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path d=\\\"M26.2929 20.2929L19.2071 13.2071C18.8166 12.8166 18.1834 12.8166 17.7929 13.2071L13.2071 17.7929C12.8166 18.1834 12.8166 18.8166 13.2071 19.2071L20.2929 26.2929C20.6834 26.6834 20.6834 27.3166 20.2929 27.7071L13.2071 34.7929C12.8166 35.1834 12.8166 35.8166 13.2071 36.2071L17.7929 40.7929C18.1834 41.1834 18.8166 41.1834 19.2071 40.7929L26.2929 33.7071C26.6834 33.3166 27.3166 33.3166 27.7071 33.7071L34.7929 40.7929C35.1834 41.1834 35.8166 41.1834 36.2071 40.7929L40.7929 36.2071C41.1834 35.8166 41.1834 35.1834 40.7929 34.7929L33.7071 27.7071C33.3166 27.3166 33.3166 26.6834 33.7071 26.2929L40.7929 19.2071C41.1834 18.8166 41.1834 18.1834 40.7929 17.7929L36.2071 13.2071C35.8166 12.8166 35.1834 12.8166 34.7929 13.2071L27.7071 20.2929C27.3166 20.6834 26.6834 20.6834 26.2929 20.2929Z\\\"></path>\\n </svg>\\n </div>\\n</div>\\n\";\n\n\nlet $4ca367182776f80b$var$defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form doesn't\n * have an `action` attribute).\n *\n * You can also provide a function that will be called with `files` and\n * `dataBlocks` and must return the url as string.\n */ url: null,\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */ method: \"post\",\n /**\n * Will be set on the XHRequest.\n */ withCredentials: false,\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */ timeout: null,\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */ parallelUploads: 2,\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */ uploadMultiple: false,\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */ chunking: false,\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */ forceChunking: false,\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */ chunkSize: 2097152,\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */ parallelChunkUploads: false,\n /**\n * Whether a chunk should be retried if it fails.\n */ retryChunks: false,\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */ retryChunksLimit: 3,\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded.\n */ maxFilesize: 256,\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */ paramName: \"file\",\n /**\n * Whether thumbnails for images should be generated\n */ createImageThumbnails: true,\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */ maxThumbnailFilesize: 10,\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */ thumbnailWidth: 120,\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */ thumbnailHeight: 120,\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */ thumbnailMethod: \"crop\",\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */ resizeWidth: null,\n /**\n * See `resizeWidth`.\n */ resizeHeight: null,\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */ resizeMimeType: null,\n /**\n * The quality of the resized images. See `resizeWidth`.\n */ resizeQuality: 0.8,\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */ resizeMethod: \"contain\",\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */ filesizeBase: 1000,\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */ maxFiles: null,\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */ headers: null,\n /**\n * Should the default headers be set or not?\n * Accept: application/json <- for requesting json response\n * Cache-Control: no-cache <- Request shouldnt be cached\n * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n */ defaultHeaders: true,\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */ clickable: true,\n /**\n * Whether hidden files in directories should be ignored.\n */ ignoreHiddenFiles: true,\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */ acceptedFiles: null,\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */ acceptedMimeTypes: null,\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */ autoProcessQueue: true,\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */ autoQueue: true,\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */ addRemoveLinks: false,\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */ previewsContainer: null,\n /**\n * Set this to `true` if you don't want previews to be shown.\n */ disablePreviews: false,\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */ hiddenInputContainer: \"body\",\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */ capture: null,\n /**\n * **Deprecated**. Use `renameFile` instead.\n */ renameFilename: null,\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */ renameFile: null,\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */ forceFallback: false,\n /**\n * The text used before any files are dropped.\n */ dictDefaultMessage: \"Drop files here to upload\",\n /**\n * The text that replaces the default message text it the browser is not supported.\n */ dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */ dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */ dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n /**\n * If the file doesn't match the file type.\n */ dictInvalidFileType: \"You can't upload files of this type.\",\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */ dictResponseError: \"Server responded with {{statusCode}} code.\",\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */ dictCancelUpload: \"Cancel upload\",\n /**\n * The text that is displayed if an upload was manually canceled\n */ dictUploadCanceled: \"Upload canceled.\",\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */ dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */ dictRemoveFile: \"Remove file\",\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */ dictRemoveFileConfirmation: null,\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */ dictMaxFilesExceeded: \"You can not upload any more files.\",\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */ dictFileSizeUnits: {\n tb: \"TB\",\n gb: \"GB\",\n mb: \"MB\",\n kb: \"KB\",\n b: \"b\"\n },\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */ init () {\n },\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */ params (files, xhr, chunk) {\n if (chunk) return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n },\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */ accept (file, done) {\n return done();\n },\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */ chunksUploaded: function(file, done) {\n done();\n },\n /**\n * Sends the file as binary blob in body instead of form data.\n * If this is set, the `params` option will be ignored.\n * It's an error to set this to `true` along with `uploadMultiple` since\n * multiple files cannot be in a single binary body.\n */ binaryBody: false,\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */ fallback () {\n // This code should pass in IE7... :(\n let messageElement;\n this.element.className = `${this.element.className} dz-browser-not-supported`;\n for (let child of this.element.getElementsByTagName(\"div\"))if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n break;\n }\n if (!messageElement) {\n messageElement = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement('<div class=\"dz-message\"><span></span></div>');\n this.element.appendChild(messageElement);\n }\n let span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) span.textContent = this.options.dictFallbackMessage;\n else if (span.innerText != null) span.innerText = this.options.dictFallbackMessage;\n }\n return this.element.appendChild(this.getFallbackForm());\n },\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */ resize (file, width, height, resizeMethod) {\n let info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n let srcRatio = file.width / file.height;\n // Automatically calculate dimensions if not specified\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) width = height * srcRatio;\n else if (height == null) height = width / srcRatio;\n // Make sure images aren't upscaled\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n let trgRatio = width / height;\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) height = width / srcRatio;\n else width = height * srcRatio;\n } else throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n }\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n info.trgWidth = width;\n info.trgHeight = height;\n return info;\n },\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */ transformFile (file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n else return done(file);\n },\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */ previewTemplate: (/*@__PURE__*/$parcel$interopDefault($fd6031f88dce2e32$exports)),\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */ // Those are self explanatory and simply concern the DragnDrop.\n drop (e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart (e) {\n },\n dragend (e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter (e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover (e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave (e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste (e) {\n },\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset () {\n return this.element.classList.remove(\"dz-started\");\n },\n // Called when a file is added to the queue\n // Receives `file`\n addedfile (file) {\n if (this.element === this.previewsContainer) this.element.classList.add(\"dz-started\");\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n this.previewsContainer.appendChild(file.previewElement);\n for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\"))node.textContent = file.name;\n for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\"))node.innerHTML = this.filesize(file.size);\n if (this.options.addRemoveLinks) {\n file._removeLink = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(`<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`);\n file.previewElement.appendChild(file._removeLink);\n }\n let removeFileEvent = (e)=>{\n e.preventDefault();\n e.stopPropagation();\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm(this.options.dictCancelUploadConfirmation, ()=>this.removeFile(file)\n );\n else {\n if (this.options.dictRemoveFileConfirmation) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm(this.options.dictRemoveFileConfirmation, ()=>this.removeFile(file)\n );\n else return this.removeFile(file);\n }\n };\n for (let removeLink of file.previewElement.querySelectorAll(\"[data-dz-remove]\"))removeLink.addEventListener(\"click\", removeFileEvent);\n }\n },\n // Called whenever a file is removed.\n removedfile (file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) file.previewElement.parentNode.removeChild(file.previewElement);\n return this._updateMaxFilesReachedClass();\n },\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail (file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n for (let thumbnailElement of file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\")){\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n return setTimeout(()=>file.previewElement.classList.add(\"dz-image-preview\")\n , 1);\n }\n },\n // Called whenever an error occurs\n // Receives `file` and `message`\n error (file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"string\" && message.error) message = message.error;\n for (let node of file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"))node.textContent = message;\n }\n },\n errormultiple () {\n },\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing (file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n },\n processingmultiple () {\n },\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress (file, progress, bytesSent) {\n if (file.previewElement) for (let node of file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"))node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = `${progress}%`;\n },\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress () {\n },\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending () {\n },\n sendingmultiple () {\n },\n // When the complete upload is finished and successful\n // Receives `file`\n success (file) {\n if (file.previewElement) return file.previewElement.classList.add(\"dz-success\");\n },\n successmultiple () {\n },\n // When the upload is canceled.\n canceled (file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple () {\n },\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete (file) {\n if (file._removeLink) file._removeLink.innerHTML = this.options.dictRemoveFile;\n if (file.previewElement) return file.previewElement.classList.add(\"dz-complete\");\n },\n completemultiple () {\n },\n maxfilesexceeded () {\n },\n maxfilesreached () {\n },\n queuecomplete () {\n },\n addedfiles () {\n }\n};\nvar $4ca367182776f80b$export$2e2bcd8739ae039 = $4ca367182776f80b$var$defaultOptions;\n\n\nclass $3ed269f2f0fb224b$export$2e2bcd8739ae039 extends $4040acfd8584338d$export$2e2bcd8739ae039 {\n static initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = $4040acfd8584338d$export$2e2bcd8739ae039;\n /*\n This is a list of all available events you can register on a dropzone object.\n\n You can register an event handler like this:\n\n dropzone.on(\"dragEnter\", function() { });\n\n */ this.prototype.events = [\n \"drop\",\n \"dragstart\",\n \"dragend\",\n \"dragenter\",\n \"dragover\",\n \"dragleave\",\n \"addedfile\",\n \"addedfiles\",\n \"removedfile\",\n \"thumbnail\",\n \"error\",\n \"errormultiple\",\n \"processing\",\n \"processingmultiple\",\n \"uploadprogress\",\n \"totaluploadprogress\",\n \"sending\",\n \"sendingmultiple\",\n \"success\",\n \"successmultiple\",\n \"canceled\",\n \"canceledmultiple\",\n \"complete\",\n \"completemultiple\",\n \"reset\",\n \"maxfilesexceeded\",\n \"maxfilesreached\",\n \"queuecomplete\", \n ];\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n // Returns all files that have been accepted\n getAcceptedFiles() {\n return this.files.filter((file)=>file.accepted\n ).map((file)=>file\n );\n }\n // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n getRejectedFiles() {\n return this.files.filter((file)=>!file.accepted\n ).map((file)=>file\n );\n }\n getFilesWithStatus(status) {\n return this.files.filter((file)=>file.status === status\n ).map((file)=>file\n );\n }\n // Returns all files that are in the queue\n getQueuedFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED);\n }\n getUploadingFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING);\n }\n getAddedFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED);\n }\n // Files that are either queued or uploading\n getActiveFiles() {\n return this.files.filter((file)=>file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING || file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED\n ).map((file)=>file\n );\n }\n // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n init() {\n // In case it isn't set already\n if (this.element.tagName === \"form\") this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) this.element.appendChild($3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(`<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">${this.options.dictDefaultMessage}</button></div>`));\n if (this.clickableElements.length) {\n let setupHiddenFileInput = ()=>{\n if (this.hiddenFileInput) this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = document.createElement(\"input\");\n this.hiddenFileInput.setAttribute(\"type\", \"file\");\n if (this.options.maxFiles === null || this.options.maxFiles > 1) this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n this.hiddenFileInput.className = \"dz-hidden-input\";\n if (this.options.acceptedFiles !== null) this.hiddenFileInput.setAttribute(\"accept\", this.options.acceptedFiles);\n if (this.options.capture !== null) this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n // Making sure that no one can \"tab\" into this field.\n this.hiddenFileInput.setAttribute(\"tabindex\", \"-1\");\n // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n this.hiddenFileInput.style.visibility = \"hidden\";\n this.hiddenFileInput.style.position = \"absolute\";\n this.hiddenFileInput.style.top = \"0\";\n this.hiddenFileInput.style.left = \"0\";\n this.hiddenFileInput.style.height = \"0\";\n this.hiddenFileInput.style.width = \"0\";\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement(this.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(this.hiddenFileInput);\n this.hiddenFileInput.addEventListener(\"change\", ()=>{\n let { files: files } = this.hiddenFileInput;\n if (files.length) for (let file of files)this.addFile(file);\n this.emit(\"addedfiles\", files);\n setupHiddenFileInput();\n });\n };\n setupHiddenFileInput();\n }\n this.URL = window.URL !== null ? window.URL : window.webkitURL;\n // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n for (let eventName of this.events)this.on(eventName, this.options[eventName]);\n this.on(\"uploadprogress\", ()=>this.updateTotalUploadProgress()\n );\n this.on(\"removedfile\", ()=>this.updateTotalUploadProgress()\n );\n this.on(\"canceled\", (file)=>this.emit(\"complete\", file)\n );\n // Emit a `queuecomplete` event if all files finished uploading.\n this.on(\"complete\", (file)=>{\n if (this.getAddedFiles().length === 0 && this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(()=>this.emit(\"queuecomplete\")\n , 0);\n });\n const containsFiles = function(e) {\n if (e.dataTransfer.types) // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for(var i = 0; i < e.dataTransfer.types.length; i++){\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n return false;\n };\n let noPropagation = function(e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n if (e.preventDefault) return e.preventDefault();\n else return e.returnValue = false;\n };\n // Create the listeners\n this.listeners = [\n {\n element: this.element,\n events: {\n dragstart: (e)=>{\n return this.emit(\"dragstart\", e);\n },\n dragenter: (e)=>{\n noPropagation(e);\n return this.emit(\"dragenter\", e);\n },\n dragover: (e)=>{\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n let efct;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {\n }\n e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n noPropagation(e);\n return this.emit(\"dragover\", e);\n },\n dragleave: (e)=>{\n return this.emit(\"dragleave\", e);\n },\n drop: (e)=>{\n noPropagation(e);\n return this.drop(e);\n },\n dragend: (e)=>{\n return this.emit(\"dragend\", e);\n }\n }\n }, \n ];\n this.clickableElements.forEach((clickableElement)=>{\n return this.listeners.push({\n element: clickableElement,\n events: {\n click: (evt)=>{\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== this.element || evt.target === this.element || $3ed269f2f0fb224b$export$2e2bcd8739ae039.elementInside(evt.target, this.element.querySelector(\".dz-message\"))) this.hiddenFileInput.click(); // Forward the click\n return true;\n }\n }\n });\n });\n this.enable();\n return this.options.init.call(this);\n }\n // Not fully tested yet\n destroy() {\n this.disable();\n this.removeAllFiles(true);\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return $3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.splice($3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.indexOf(this), 1);\n }\n updateTotalUploadProgress() {\n let totalUploadProgress;\n let totalBytesSent = 0;\n let totalBytes = 0;\n let activeFiles = this.getActiveFiles();\n if (activeFiles.length) {\n for (let file of this.getActiveFiles()){\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else totalUploadProgress = 100;\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n }\n // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n _getParamName(n) {\n if (typeof this.options.paramName === \"function\") return this.options.paramName(n);\n else return `${this.options.paramName}${this.options.uploadMultiple ? `[${n}]` : \"\"}`;\n }\n // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") return file.name;\n return this.options.renameFile(file);\n }\n // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n getFallbackForm() {\n let existingFallback, form;\n if (existingFallback = this.getExistingFallback()) return existingFallback;\n let fieldsString = '<div class=\"dz-fallback\">';\n if (this.options.dictFallbackText) fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined} /><input type=\"submit\" value=\"Upload!\"></div>`;\n let fields = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(`<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`);\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n }\n // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n getExistingFallback() {\n let getFallback = function(elements) {\n for (let el of elements){\n if (/(^| )fallback($| )/.test(el.className)) return el;\n }\n };\n for (let tagName of [\n \"div\",\n \"form\"\n ]){\n var fallback;\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) return fallback;\n }\n }\n // Activates all listeners stored in @listeners\n setupEventListeners() {\n return this.listeners.map((elementListeners)=>(()=>{\n let result = [];\n for(let event in elementListeners.events){\n let listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n return result;\n })()\n );\n }\n // Deactivates all listeners stored in @listeners\n removeEventListeners() {\n return this.listeners.map((elementListeners)=>(()=>{\n let result = [];\n for(let event in elementListeners.events){\n let listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n return result;\n })()\n );\n }\n // Removes all event listeners and cancels all files in the queue or being processed.\n disable() {\n this.clickableElements.forEach((element)=>element.classList.remove(\"dz-clickable\")\n );\n this.removeEventListeners();\n this.disabled = true;\n return this.files.map((file)=>this.cancelUpload(file)\n );\n }\n enable() {\n delete this.disabled;\n this.clickableElements.forEach((element)=>element.classList.add(\"dz-clickable\")\n );\n return this.setupEventListeners();\n }\n // Returns a nicely formatted filesize\n filesize(size) {\n let selectedSize = 0;\n let selectedUnit = \"b\";\n if (size > 0) {\n let units = [\n \"tb\",\n \"gb\",\n \"mb\",\n \"kb\",\n \"b\"\n ];\n for(let i = 0; i < units.length; i++){\n let unit = units[i];\n let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n }\n // Adds or removes the `dz-max-files-reached` class from the form.\n _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) this.emit(\"maxfilesreached\", this.files);\n return this.element.classList.add(\"dz-max-files-reached\");\n } else return this.element.classList.remove(\"dz-max-files-reached\");\n }\n drop(e) {\n if (!e.dataTransfer) return;\n this.emit(\"drop\", e);\n // Convert the FileList to an Array\n // This is necessary for IE11\n let files = [];\n for(let i = 0; i < e.dataTransfer.files.length; i++)files[i] = e.dataTransfer.files[i];\n // Even if it's a folder, files.length will contain the folders.\n if (files.length) {\n let { items: items } = e.dataTransfer;\n if (items && items.length && items[0].webkitGetAsEntry != null) // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n else this.handleFiles(files);\n }\n this.emit(\"addedfiles\", files);\n }\n paste(e) {\n if ($3ed269f2f0fb224b$var$__guard__(e != null ? e.clipboardData : undefined, (x)=>x.items\n ) == null) return;\n this.emit(\"paste\", e);\n let { items: items } = e.clipboardData;\n if (items.length) return this._addFilesFromItems(items);\n }\n handleFiles(files) {\n for (let file of files)this.addFile(file);\n }\n // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n _addFilesFromItems(items) {\n return (()=>{\n let result = [];\n for (let item of items){\n var entry;\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) result.push(this.addFile(item.getAsFile()));\n else if (entry.isDirectory) // Append all files from that directory to files\n result.push(this._addFilesFromDirectory(entry, entry.name));\n else result.push(undefined);\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") result.push(this.addFile(item.getAsFile()));\n else result.push(undefined);\n } else result.push(undefined);\n }\n return result;\n })();\n }\n // Goes through the directory, and adds each file it finds recursively\n _addFilesFromDirectory(directory, path) {\n let dirReader = directory.createReader();\n let errorHandler = (error)=>$3ed269f2f0fb224b$var$__guardMethod__(console, \"log\", (o)=>o.log(error)\n )\n ;\n var readEntries = ()=>{\n return dirReader.readEntries((entries)=>{\n if (entries.length > 0) {\n for (let entry of entries){\n if (entry.isFile) entry.file((file)=>{\n if (this.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") return;\n file.fullPath = `${path}/${file.name}`;\n return this.addFile(file);\n });\n else if (entry.isDirectory) this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n }\n // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n readEntries();\n }\n return null;\n }, errorHandler);\n };\n return readEntries();\n }\n // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1048576) done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n else if (!$3ed269f2f0fb224b$export$2e2bcd8739ae039.isValidFile(file, this.options.acceptedFiles)) done(this.options.dictInvalidFileType);\n else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n this.emit(\"maxfilesexceeded\", file);\n } else this.options.accept.call(this, file, done);\n }\n addFile(file) {\n file.upload = {\n uuid: $3ed269f2f0fb224b$export$2e2bcd8739ae039.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file)\n };\n this.files.push(file);\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED;\n this.emit(\"addedfile\", file);\n this._enqueueThumbnail(file);\n this.accept(file, (error)=>{\n if (error) {\n file.accepted = false;\n this._errorProcessing([\n file\n ], error); // Will set the file.status\n } else {\n file.accepted = true;\n if (this.options.autoQueue) this.enqueueFile(file);\n // Will set .accepted = true\n }\n this._updateMaxFilesReachedClass();\n });\n }\n // Wrapper for enqueueFile\n enqueueFiles(files) {\n for (let file of files)this.enqueueFile(file);\n return null;\n }\n enqueueFile(file) {\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED && file.accepted === true) {\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED;\n if (this.options.autoProcessQueue) return setTimeout(()=>this.processQueue()\n , 0); // Deferring the call\n } else throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n _enqueueThumbnail(file) {\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1048576) {\n this._thumbnailQueue.push(file);\n return setTimeout(()=>this._processThumbnailQueue()\n , 0); // Deferring the call\n }\n }\n _processThumbnailQueue() {\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) return;\n this._processingThumbnail = true;\n let file = this._thumbnailQueue.shift();\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, (dataUrl)=>{\n this.emit(\"thumbnail\", file, dataUrl);\n this._processingThumbnail = false;\n return this._processThumbnailQueue();\n });\n }\n // Can be called by the user to remove a file\n removeFile(file) {\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) this.cancelUpload(file);\n this.files = $3ed269f2f0fb224b$var$without(this.files, file);\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) return this.emit(\"reset\");\n }\n // Removes all files that aren't currently processed from the list\n removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) cancelIfNecessary = false;\n for (let file of this.files.slice())if (file.status !== $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING || cancelIfNecessary) this.removeFile(file);\n return null;\n }\n // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n resizeImage(file, width, height, resizeMethod, callback) {\n return this.createThumbnail(file, width, height, resizeMethod, true, (dataUrl, canvas)=>{\n if (canvas == null) // The image has not been resized\n return callback(file);\n else {\n let { resizeMimeType: resizeMimeType } = this.options;\n if (resizeMimeType == null) resizeMimeType = file.type;\n let resizedDataURL = canvas.toDataURL(resizeMimeType, this.options.resizeQuality);\n if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") // Now add the original EXIF information\n resizedDataURL = $3ed269f2f0fb224b$var$ExifRestore.restore(file.dataURL, resizedDataURL);\n return callback($3ed269f2f0fb224b$export$2e2bcd8739ae039.dataURItoBlob(resizedDataURL));\n }\n });\n }\n createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n let fileReader = new FileReader();\n fileReader.onload = ()=>{\n file.dataURL = fileReader.result;\n // Don't bother creating a thumbnail for SVG images since they're vector\n if (file.type === \"image/svg+xml\") {\n if (callback != null) callback(fileReader.result);\n return;\n }\n this.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n fileReader.readAsDataURL(file);\n }\n // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n displayExistingFile(mockFile, imageUrl, callback, crossOrigin, resizeThumbnail = true) {\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n let onDone = (thumbnail)=>{\n this.emit(\"thumbnail\", mockFile, thumbnail);\n if (callback) callback();\n };\n mockFile.dataURL = imageUrl;\n this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n }\n }\n createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n let img = document.createElement(\"img\");\n if (crossOrigin) img.crossOrigin = crossOrigin;\n // fixOrientation is not needed anymore with browsers handling imageOrientation\n fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n img.onload = ()=>{\n let loadExif = (callback)=>callback(1)\n ;\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) loadExif = (callback)=>EXIF.getData(img, function() {\n return callback(EXIF.getTag(this, \"Orientation\"));\n })\n ;\n return loadExif((orientation)=>{\n file.width = img.width;\n file.height = img.height;\n let resizeInfo = this.options.resize.call(this, file, width, height, resizeMethod);\n let canvas = document.createElement(\"canvas\");\n let ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n switch(orientation){\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n }\n // This is a bugfix for iOS' scaling bug.\n $3ed269f2f0fb224b$var$drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n let thumbnail = canvas.toDataURL(\"image/png\");\n if (callback != null) return callback(thumbnail, canvas);\n });\n };\n if (callback != null) img.onerror = callback;\n return img.src = file.dataURL;\n }\n // Goes through the queue and processes files if there aren't too many already.\n processQueue() {\n let { parallelUploads: parallelUploads } = this.options;\n let processingLength = this.getUploadingFiles().length;\n let i = processingLength;\n // There are already at least as many files uploading than should be\n if (processingLength >= parallelUploads) return;\n let queuedFiles = this.getQueuedFiles();\n if (!(queuedFiles.length > 0)) return;\n if (this.options.uploadMultiple) // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n else while(i < parallelUploads){\n if (!queuedFiles.length) return;\n // Nothing left to process\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n // Wrapper for `processFiles`\n processFile(file) {\n return this.processFiles([\n file\n ]);\n }\n // Loads the file, then calls finishedLoading()\n processFiles(files) {\n for (let file of files){\n file.processing = true; // Backwards compatibility\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING;\n this.emit(\"processing\", file);\n }\n if (this.options.uploadMultiple) this.emit(\"processingmultiple\", files);\n return this.uploadFiles(files);\n }\n _getFilesWithXhr(xhr) {\n let files;\n return files = this.files.filter((file)=>file.xhr === xhr\n ).map((file)=>file\n );\n }\n // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n cancelUpload(file) {\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) {\n let groupedFiles = this._getFilesWithXhr(file.xhr);\n for (let groupedFile of groupedFiles)groupedFile.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED;\n if (typeof file.xhr !== \"undefined\") file.xhr.abort();\n for (let groupedFile1 of groupedFiles)this.emit(\"canceled\", groupedFile1);\n if (this.options.uploadMultiple) this.emit(\"canceledmultiple\", groupedFiles);\n } else if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED || file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED) {\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) this.emit(\"canceledmultiple\", [\n file\n ]);\n }\n if (this.options.autoProcessQueue) return this.processQueue();\n }\n resolveOption(option, ...args) {\n if (typeof option === \"function\") return option.apply(this, args);\n return option;\n }\n uploadFile(file) {\n return this.uploadFiles([\n file\n ]);\n }\n uploadFiles(files) {\n this._transformFiles(files, (transformedFiles)=>{\n if (this.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n let transformedFile = transformedFiles[0];\n files[0].upload.chunked = this.options.chunking && (this.options.forceChunking || transformedFile.size > this.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / this.options.chunkSize);\n }\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n let file = files[0];\n let transformedFile = transformedFiles[0];\n let startedChunkCount = 0;\n file.upload.chunks = [];\n let handleNextChunk = ()=>{\n let chunkIndex = 0;\n // Find the next item in file.upload.chunks that is not defined yet.\n while(file.upload.chunks[chunkIndex] !== undefined)chunkIndex++;\n // This means, that all chunks have already been started.\n if (chunkIndex >= file.upload.totalChunkCount) return;\n startedChunkCount++;\n let start = chunkIndex * this.options.chunkSize;\n let end = Math.min(start + this.options.chunkSize, transformedFile.size);\n let dataBlock = {\n name: this._getParamName(0),\n data: transformedFile.webkitSlice ? transformedFile.webkitSlice(start, end) : transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock,\n status: $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING,\n progress: 0,\n retries: 0\n };\n this._uploadData(files, [\n dataBlock\n ]);\n };\n file.upload.finishedChunkUpload = (chunk, response)=>{\n let allFinished = true;\n chunk.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS;\n // Clear the data from the chunk\n chunk.dataBlock = null;\n chunk.response = chunk.xhr.responseText;\n chunk.responseHeaders = chunk.xhr.getAllResponseHeaders();\n // Leaving this reference to xhr will cause memory leaks.\n chunk.xhr = null;\n for(let i = 0; i < file.upload.totalChunkCount; i++){\n if (file.upload.chunks[i] === undefined) return handleNextChunk();\n if (file.upload.chunks[i].status !== $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS) allFinished = false;\n }\n if (allFinished) this.options.chunksUploaded(file, ()=>{\n this._finished(files, response, null);\n });\n };\n if (this.options.parallelChunkUploads) for(let i = 0; i < file.upload.totalChunkCount; i++)handleNextChunk();\n else handleNextChunk();\n } else {\n let dataBlocks = [];\n for(let i = 0; i < files.length; i++)dataBlocks[i] = {\n name: this._getParamName(i),\n data: transformedFiles[i],\n filename: files[i].upload.filename\n };\n this._uploadData(files, dataBlocks);\n }\n });\n }\n /// Returns the right chunk for given file and xhr\n _getChunk(file, xhr) {\n for(let i = 0; i < file.upload.totalChunkCount; i++){\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) return file.upload.chunks[i];\n }\n }\n // This function actually uploads the file(s) to the server.\n //\n // If dataBlocks contains the actual data to upload (meaning, that this could\n // either be transformed files, or individual chunks for chunked upload) then\n // they will be used for the actual data to upload.\n _uploadData(files, dataBlocks) {\n let xhr = new XMLHttpRequest();\n // Put the xhr object in the file objects to be able to reference it later.\n for (let file of files)file.xhr = xhr;\n if (files[0].upload.chunked) // Put the xhr object in the right chunk object, so it can be associated\n // later, and found with _getChunk.\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n let method = this.resolveOption(this.options.method, files, dataBlocks);\n let url = this.resolveOption(this.options.url, files, dataBlocks);\n xhr.open(method, url, true);\n // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n let timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files);\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n xhr.withCredentials = !!this.options.withCredentials;\n xhr.onload = (e)=>{\n this._finishedUploading(files, xhr, e);\n };\n xhr.ontimeout = ()=>{\n this._handleUploadError(files, xhr, `Request timedout after ${this.options.timeout / 1000} seconds`);\n };\n xhr.onerror = ()=>{\n this._handleUploadError(files, xhr);\n };\n // Some browsers do not have the .upload property\n let progressObj = xhr.upload != null ? xhr.upload : xhr;\n progressObj.onprogress = (e)=>this._updateFilesUploadProgress(files, xhr, e)\n ;\n let headers = this.options.defaultHeaders ? {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n } : {\n };\n if (this.options.binaryBody) headers[\"Content-Type\"] = files[0].type;\n if (this.options.headers) $ewBKy$justextend(headers, this.options.headers);\n for(let headerName in headers){\n let headerValue = headers[headerName];\n if (headerValue) xhr.setRequestHeader(headerName, headerValue);\n }\n if (this.options.binaryBody) {\n // Since the file is going to be sent as binary body, it doesn't make\n // any sense to generate `FormData` for it.\n for (let file of files)this.emit(\"sending\", file, xhr);\n if (this.options.uploadMultiple) this.emit(\"sendingmultiple\", files, xhr);\n this.submitRequest(xhr, null, files);\n } else {\n let formData = new FormData();\n // Adding all @options parameters\n if (this.options.params) {\n let additionalParams = this.options.params;\n if (typeof additionalParams === \"function\") additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n for(let key in additionalParams){\n let value = additionalParams[key];\n if (Array.isArray(value)) // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for(let i = 0; i < value.length; i++)formData.append(key, value[i]);\n else formData.append(key, value);\n }\n }\n // Let the user add additional data if necessary\n for (let file of files)this.emit(\"sending\", file, xhr, formData);\n if (this.options.uploadMultiple) this.emit(\"sendingmultiple\", files, xhr, formData);\n this._addFormElementData(formData);\n // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n for(let i = 0; i < dataBlocks.length; i++){\n let dataBlock = dataBlocks[i];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n this.submitRequest(xhr, formData, files);\n }\n }\n // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n _transformFiles(files, done) {\n let transformedFiles = [];\n // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n let doneCounter = 0;\n for(let i = 0; i < files.length; i++)this.options.transformFile.call(this, files[i], (transformedFile)=>{\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) done(transformedFiles);\n });\n }\n // Takes care of adding other input elements of the form to the AJAX request\n _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") for (let input of this.element.querySelectorAll(\"input, textarea, select, button\")){\n let inputName = input.getAttribute(\"name\");\n let inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase();\n // If the input doesn't have a name, we can't use it.\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n for (let option of input.options)if (option.selected) formData.append(inputName, option.value);\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) formData.append(inputName, input.value);\n }\n }\n // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) // Handle file uploads without chunking\n for (let file of files){\n if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) continue;\n if (e) {\n file.upload.progress = 100 * e.loaded / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n else {\n // Handle chunked file uploads\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n let file = files[0];\n // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n let chunk = this._getChunk(file, xhr);\n if (e) {\n chunk.progress = 100 * e.loaded / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n }\n // Now tally the *file* upload progress from its individual chunks\n file.upload.progress = 0;\n file.upload.total = 0;\n file.upload.bytesSent = 0;\n for(let i = 0; i < file.upload.totalChunkCount; i++)if (file.upload.chunks[i] && typeof file.upload.chunks[i].progress !== \"undefined\") {\n file.upload.progress += file.upload.chunks[i].progress;\n file.upload.total += file.upload.chunks[i].total;\n file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n }\n // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n }\n _finishedUploading(files, xhr, e) {\n let response;\n if (files[0].status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED) return;\n if (xhr.readyState !== 4) return;\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n this._updateFilesUploadProgress(files, xhr);\n if (!(200 <= xhr.status && xhr.status < 300)) this._handleUploadError(files, xhr, response);\n else if (files[0].upload.chunked) files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n else this._finished(files, response, e);\n }\n _handleUploadError(files, xhr, response) {\n if (files[0].status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED) return;\n if (files[0].upload.chunked && this.options.retryChunks) {\n let chunk = this._getChunk(files[0], xhr);\n if ((chunk.retries++) < this.options.retryChunksLimit) {\n this._uploadData(files, [\n chunk.dataBlock\n ]);\n return;\n } else console.warn(\"Retried this chunk too often. Giving up.\");\n }\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n return;\n }\n if (this.options.binaryBody) {\n if (files[0].upload.chunked) {\n const chunk = this._getChunk(files[0], xhr);\n xhr.send(chunk.dataBlock.data);\n } else xhr.send(files[0]);\n } else xhr.send(formData);\n }\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _finished(files, responseText, e) {\n for (let file of files){\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n if (this.options.autoProcessQueue) return this.processQueue();\n }\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _errorProcessing(files, message, xhr) {\n for (let file of files){\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n if (this.options.autoProcessQueue) return this.processQueue();\n }\n static uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n }\n constructor(el, options){\n super();\n let fallback, left;\n this.element = el;\n this.clickableElements = [];\n this.listeners = [];\n this.files = []; // All files\n if (typeof this.element === \"string\") this.element = document.querySelector(this.element);\n // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n if (!this.element || this.element.nodeType == null) throw new Error(\"Invalid dropzone element.\");\n if (this.element.dropzone) throw new Error(\"Dropzone already attached.\");\n // Now add this dropzone to the instances.\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.push(this);\n // Put the dropzone inside the element itself.\n this.element.dropzone = this;\n let elementOptions = (left = $3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement(this.element)) != null ? left : {\n };\n this.options = $ewBKy$justextend(true, {\n }, $4ca367182776f80b$export$2e2bcd8739ae039, elementOptions, options != null ? options : {\n });\n this.options.previewTemplate = this.options.previewTemplate.replace(/\\n*/g, \"\");\n // If the browser failed, just call the fallback and leave\n if (this.options.forceFallback || !$3ed269f2f0fb224b$export$2e2bcd8739ae039.isBrowserSupported()) return this.options.fallback.call(this);\n // @options.url = @element.getAttribute \"action\" unless @options.url?\n if (this.options.url == null) this.options.url = this.element.getAttribute(\"action\");\n if (!this.options.url) throw new Error(\"No URL provided.\");\n if (this.options.acceptedFiles && this.options.acceptedMimeTypes) throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n if (this.options.uploadMultiple && this.options.chunking) throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n if (this.options.binaryBody && this.options.uploadMultiple) throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\");\n // Backwards compatibility\n if (this.options.acceptedMimeTypes) {\n this.options.acceptedFiles = this.options.acceptedMimeTypes;\n delete this.options.acceptedMimeTypes;\n }\n // Backwards compatibility\n if (this.options.renameFilename != null) this.options.renameFile = (file)=>this.options.renameFilename.call(this, file.name, file)\n ;\n if (typeof this.options.method === \"string\") this.options.method = this.options.method.toUpperCase();\n if ((fallback = this.getExistingFallback()) && fallback.parentNode) // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n if (this.options.previewsContainer !== false) {\n if (this.options.previewsContainer) this.previewsContainer = $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement(this.options.previewsContainer, \"previewsContainer\");\n else this.previewsContainer = this.element;\n }\n if (this.options.clickable) {\n if (this.options.clickable === true) this.clickableElements = [\n this.element\n ];\n else this.clickableElements = $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElements(this.options.clickable, \"clickable\");\n }\n this.init();\n }\n}\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.initClass();\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.options = {\n};\n// Returns the options for an element or undefined if none available.\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement = function(element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.options[$3ed269f2f0fb224b$var$camelize(element.getAttribute(\"id\"))];\n else return undefined;\n};\n// Holds a list of all dropzone instances\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.instances = [];\n// Returns the dropzone for given element if any\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.forElement = function(element) {\n if (typeof element === \"string\") element = document.querySelector(element);\n if ((element != null ? element.dropzone : undefined) == null) throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n return element.dropzone;\n};\n// Looks for all .dropzone elements and creates a dropzone for them\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.discover = function() {\n let dropzones;\n if (document.querySelectorAll) dropzones = document.querySelectorAll(\".dropzone\");\n else {\n dropzones = [];\n // IE :(\n let checkElements = (elements)=>(()=>{\n let result = [];\n for (let el of elements)if (/(^| )dropzone($| )/.test(el.className)) result.push(dropzones.push(el));\n else result.push(undefined);\n return result;\n })()\n ;\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n return (()=>{\n let result = [];\n for (let dropzone of dropzones)// Create a dropzone unless auto discover has been disabled for specific element\n if ($3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement(dropzone) !== false) result.push(new $3ed269f2f0fb224b$export$2e2bcd8739ae039(dropzone));\n else result.push(undefined);\n return result;\n })();\n};\n// Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers = [\n // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n /opera.*(Macintosh|Windows Phone).*version\\/12/i, \n];\n// Checks if the browser is supported\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.isBrowserSupported = function() {\n let capableBrowser = true;\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) capableBrowser = false;\n else {\n if ($3ed269f2f0fb224b$export$2e2bcd8739ae039.blacklistedBrowsers !== undefined) // Since this has been renamed, this makes sure we don't break older\n // configuration.\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers = $3ed269f2f0fb224b$export$2e2bcd8739ae039.blacklistedBrowsers;\n // The browser supports the API, but may be blocked.\n for (let regex of $3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers)if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n } else capableBrowser = false;\n return capableBrowser;\n};\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.dataURItoBlob = function(dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n let byteString = atob(dataURI.split(\",\")[1]);\n // separate out the mime component\n let mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n // write the bytes of the string to an ArrayBuffer\n let ab = new ArrayBuffer(byteString.length);\n let ia = new Uint8Array(ab);\n for(let i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--)ia[i] = byteString.charCodeAt(i);\n // write the ArrayBuffer to a blob\n return new Blob([\n ab\n ], {\n type: mimeString\n });\n};\n// Returns an array without the rejected item\nconst $3ed269f2f0fb224b$var$without = (list, rejectedItem)=>list.filter((item)=>item !== rejectedItem\n ).map((item)=>item\n )\n;\n// abc-def_ghi -> abcDefGhi\nconst $3ed269f2f0fb224b$var$camelize = (str)=>str.replace(/[\\-_](\\w)/g, (match)=>match.charAt(1).toUpperCase()\n )\n;\n// Creates an element from string\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement = function(string) {\n let div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n};\n// Tests if given element is inside (or simply is) the container\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.elementInside = function(element, container) {\n if (element === container) return true;\n // Coffeescript doesn't support do/while loops\n while(element = element.parentNode){\n if (element === container) return true;\n }\n return false;\n};\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement = function(el, name) {\n let element;\n if (typeof el === \"string\") element = document.querySelector(el);\n else if (el.nodeType != null) element = el;\n if (element == null) throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`);\n return element;\n};\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.getElements = function(els, name) {\n let el, elements;\n if (els instanceof Array) {\n elements = [];\n try {\n for (el of els)elements.push(this.getElement(el, name));\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n for (el of document.querySelectorAll(els))elements.push(el);\n } else if (els.nodeType != null) elements = [\n els\n ];\n if (elements == null || !elements.length) throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`);\n return elements;\n};\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm = function(question, accepted, rejected) {\n if (window.confirm(question)) return accepted();\n else if (rejected != null) return rejected();\n};\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.isValidFile = function(file, acceptedFiles) {\n if (!acceptedFiles) return true;\n // If there are no accepted mime types, it's OK\n acceptedFiles = acceptedFiles.split(\",\");\n let mimeType = file.type;\n let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n for (let validType of acceptedFiles){\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (mimeType === validType) return true;\n }\n }\n return false;\n};\n// Augment jQuery\nif (typeof jQuery !== \"undefined\" && jQuery !== null) jQuery.fn.dropzone = function(options) {\n return this.each(function() {\n return new $3ed269f2f0fb224b$export$2e2bcd8739ae039(this, options);\n });\n};\n// Dropzone file status codes\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED = \"added\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ACCEPTED = $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED;\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING = \"uploading\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.PROCESSING = $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING; // alias\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED = \"canceled\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ERROR = \"error\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */ // Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet $3ed269f2f0fb224b$var$detectVerticalSquash = function(img) {\n let iw = img.naturalWidth;\n let ih = img.naturalHeight;\n let canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n let ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n let { data: data } = ctx.getImageData(1, 0, 1, ih);\n // search image edge pixel position in case it is squashed vertically.\n let sy = 0;\n let ey = ih;\n let py = ih;\n while(py > sy){\n let alpha = data[(py - 1) * 4 + 3];\n if (alpha === 0) ey = py;\n else sy = py;\n py = ey + sy >> 1;\n }\n let ratio = py / ih;\n if (ratio === 0) return 1;\n else return ratio;\n};\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar $3ed269f2f0fb224b$var$drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n let vertSquashRatio = $3ed269f2f0fb224b$var$detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass $3ed269f2f0fb224b$var$ExifRestore {\n static initClass() {\n this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n static encode64(input) {\n let output = \"\";\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = \"\";\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = \"\";\n let i = 0;\n while(true){\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) enc3 = enc4 = 64;\n else if (isNaN(chr3)) enc4 = 64;\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) break;\n }\n return output;\n }\n static restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) return resizedFileBase64;\n let rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n let segments = this.slice2Segments(rawImage);\n let image = this.exifManipulation(resizedFileBase64, segments);\n return `data:image/jpeg;base64,${this.encode64(image)}`;\n }\n static exifManipulation(resizedFileBase64, segments) {\n let exifArray = this.getExifArray(segments);\n let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n let aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n static getExifArray(segments) {\n let seg = undefined;\n let x = 0;\n while(x < segments.length){\n seg = segments[x];\n if (seg[0] === 255 & seg[1] === 225) return seg;\n x++;\n }\n return [];\n }\n static insertExif(resizedFileBase64, exifArray) {\n let imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n let buf = this.decode64(imageData);\n let separatePoint = buf.indexOf(255, 3);\n let mae = buf.slice(0, separatePoint);\n let ato = buf.slice(separatePoint);\n let array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n static slice2Segments(rawImageArray) {\n let head = 0;\n let segments = [];\n while(true){\n var length;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) break;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) head += 2;\n else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n let endPoint = head + length + 2;\n let seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) break;\n }\n return segments;\n }\n static decode64(input) {\n let output = \"\";\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = \"\";\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = \"\";\n let i = 0;\n let buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n while(true){\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n if (enc3 !== 64) buf.push(chr2);\n if (enc4 !== 64) buf.push(chr3);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) break;\n }\n return buf;\n }\n}\n$3ed269f2f0fb224b$var$ExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */ // @win window reference\n// @fn function reference\nlet $3ed269f2f0fb224b$var$contentLoaded = function(win, fn) {\n let done = false;\n let top = true;\n let doc = win.document;\n let root = doc.documentElement;\n let add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n let rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n let pre = doc.addEventListener ? \"\" : \"on\";\n var init = function(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") return;\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) return fn.call(win, e.type || e);\n };\n var poll = function() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {\n }\n if (top) poll();\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\nfunction $3ed269f2f0fb224b$var$__guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\nfunction $3ed269f2f0fb224b$var$__guardMethod__(obj, methodName, transform) {\n if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") return transform(obj, methodName);\n else return undefined;\n}\n\n\nexport {$3ed269f2f0fb224b$export$2e2bcd8739ae039 as default, $3ed269f2f0fb224b$export$2e2bcd8739ae039 as Dropzone};\n//# sourceMappingURL=dropzone.mjs.map\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Dropzone } from \"dropzone\";\n\n// Connects to data-controller=\"dropzone\"\nexport default class extends Controller {\n static values = {\n paramName: { type: String, default: \"file\" },\n acceptedFiles: { type: String, default: \"*\" },\n maxFiles: { type: Number, default: 100 },\n }\n\n connect() {\n new Dropzone(this.element, this.options);\n }\n\n get options() {\n return {\n paramName: this.paramNameValue,\n acceptedFiles: this.acceptedFilesValue === \"*\" ? null : this.acceptedFilesValue,\n maxFiles: this.maxFilesValue,\n init: function () {\n this.on(\"success\", function (file, turboStreamResponse) {\n Turbo.renderStreamMessage(turboStreamResponse); // We expect the server to respond with a <turbo-stream> element\n });\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"filter\"\nexport default class extends Controller {\n static targets = [\"formRow\", \"formElement\", \"textField\", \"searchField\", \"dropdownMenu\"];\n static values = {\n paramName: String,\n filterType: { type: String, default: \"checkbox\" }, // \"checkbox\", \"radio\", \"text\" oder \"toggle\"\n };\n\n connect() {\n // Save the TurboFrame in which this controller is embedded\n // Later, when a request is made, we can update only this frame instead of the whole page\n this.parentTurboFrame = this.element.closest(\"turbo-frame\");\n }\n\n selectAll() {\n this.formElementTargets.forEach((checkbox) => (checkbox.checked = true));\n }\n\n deselectAll() {\n this.formElementTargets.forEach((checkbox) => (checkbox.checked = false));\n }\n\n clearInput() {\n this.textFieldTarget.value = null;\n }\n\n toggleSearchField() {\n this.searchFieldTarget.classList.toggle(\"d-none\");\n this.searchFieldTarget.focus();\n }\n\n setSearchFieldFocus() {\n this.searchFieldTarget.classList.remove(\"d-none\");\n this.searchFieldTarget.focus();\n }\n\n updateResourceView(event) {\n const searchValue = event.target.value.toLowerCase();\n this.formRowTargets.forEach((row) => {\n const label = row.querySelector(\"label\").textContent.toLowerCase();\n row.style.display = label.includes(searchValue) ? \"block\" : \"none\";\n });\n }\n\n setFocusDateField() {\n this.textFieldTarget.focus();\n }\n\n applyFilter() {\n Turbo.visit(this.updatedUrl, { frame: this.parentTurboFrame.id });\n\n // Manually update the browser history\n // When issue https://github.com/hotwired/turbo/issues/489 is resolved, this can be removed\n // When the issue is resolved, we can simply call Turbo.visit(this.newUrl, { frame: this.parentTurboFrame.id, action: \"advance\" });\n window.history.pushState(history.state, \"\", this.updatedUrl);\n }\n\n closeDropdownMenu() {\n if (!this.hasDropdownMenuTarget) return\n this.dropdownMenu.hide()\n }\n\n get dropdownMenu() {\n return bootstrap.Dropdown.getOrCreateInstance(this.dropdownMenuTarget)\n }\n\n get updatedUrl() {\n this.params = new URLSearchParams(this.currentURL.search);\n this.params.set(this.paramNameValue, this.selectedValues);\n return `${window.location.pathname}?${this.params.toString()}`;\n }\n\n get selectedValues() {\n switch (this.filterTypeValue) {\n case \"checkbox\":\n case \"radio\":\n return this.formElementTargets.filter((formElement) => formElement.checked).map((formElement) => formElement.value);\n case \"text\":\n return this.textFieldTarget.value;\n case \"toggle\":\n return this.params.get(this.paramNameValue) === \"true\" ? \"false\" : \"true\";\n default:\n return \"\";\n }\n }\n\n get currentURL() {\n return new URL(window.location);\n }\n}\n","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.de = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var German = {\n weekdays: {\n shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n longhand: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ],\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"KW\",\n rangeSeparator: \" bis \",\n scrollTitle: \"Zum Ändern scrollen\",\n toggleTitle: \"Zum Umschalten klicken\",\n time_24hr: true,\n };\n fp.l10ns.de = German;\n var de = fp.l10ns;\n\n exports.German = German;\n exports.default = de;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","import { Controller } from \"@hotwired/stimulus\";\nimport flatpickr from \"flatpickr\";\nimport { German } from \"flatpickr/dist/l10n/de\";\n\n// Connects to data-controller=\"flatpickr\"\nexport default class extends Controller {\n static targets = [\"flatpickr\"];\n static values = {\n mode: { type: String, default: \"single\" }, // \"single\", \"multiple\", or \"range\"\n enableTime: { type: Boolean, default: false },\n noCalendar: { type: Boolean, default: false },\n dateFormat: { type: String, default: \"d.m.Y\" },\n asTimepicker: { type: Boolean, default: false },\n };\n\n connect() {\n if (this.asTimepickerValue) {\n this.enableTimeValue = true;\n this.noCalendarValue = true;\n this.dateFormatValue = \"H:i\";\n }\n\n this.flatpickrElement = this.hasFlatpickrTarget ? this.flatpickrTarget : this.element;\n flatpickr(this.flatpickrElement, this.flatpickrOptions );\n }\n\n get flatpickrOptions() {\n return {\n locale: German,\n dateFormat: this.dateFormatValue,\n enableTime: this.enableTimeValue,\n noCalendar: this.noCalendarValue,\n mode: this.modeValue,\n }\n }\n}\n","/*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:05.335Z\n */\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar WINDOW = IS_BROWSER ? window : {};\nvar IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\nvar HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\nvar NAMESPACE = 'cropper';\n\n// Actions\nvar ACTION_ALL = 'all';\nvar ACTION_CROP = 'crop';\nvar ACTION_MOVE = 'move';\nvar ACTION_ZOOM = 'zoom';\nvar ACTION_EAST = 'e';\nvar ACTION_WEST = 'w';\nvar ACTION_SOUTH = 's';\nvar ACTION_NORTH = 'n';\nvar ACTION_NORTH_EAST = 'ne';\nvar ACTION_NORTH_WEST = 'nw';\nvar ACTION_SOUTH_EAST = 'se';\nvar ACTION_SOUTH_WEST = 'sw';\n\n// Classes\nvar CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\nvar CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\nvar CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\nvar CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\nvar CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\nvar CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\nvar CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n\n// Data keys\nvar DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\nvar DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\");\n\n// Drag modes\nvar DRAG_MODE_CROP = 'crop';\nvar DRAG_MODE_MOVE = 'move';\nvar DRAG_MODE_NONE = 'none';\n\n// Events\nvar EVENT_CROP = 'crop';\nvar EVENT_CROP_END = 'cropend';\nvar EVENT_CROP_MOVE = 'cropmove';\nvar EVENT_CROP_START = 'cropstart';\nvar EVENT_DBLCLICK = 'dblclick';\nvar EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\nvar EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\nvar EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\nvar EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\nvar EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\nvar EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\nvar EVENT_READY = 'ready';\nvar EVENT_RESIZE = 'resize';\nvar EVENT_WHEEL = 'wheel';\nvar EVENT_ZOOM = 'zoom';\n\n// Mime types\nvar MIME_TYPE_JPEG = 'image/jpeg';\n\n// RegExps\nvar REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\nvar REGEXP_DATA_URL = /^data:/;\nvar REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\nvar REGEXP_TAG_NAME = /^img|canvas$/i;\n\n// Misc\n// Inspired by the default width and height of a canvas element.\nvar MIN_CONTAINER_WIDTH = 200;\nvar MIN_CONTAINER_HEIGHT = 100;\n\nvar DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0,\n // 0, 1, 2, 3\n\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP,\n // 'crop', 'move' or 'none'\n\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n // An object with the previous cropping result data\n data: null,\n // A selector for adding extra containers to preview\n preview: '',\n // Re-render the cropper when resize the window\n responsive: true,\n // Restore the cropped area after resize the window\n restore: true,\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n // Show the black modal\n modal: true,\n // Show the dashed lines for guiding\n guides: true,\n // Show the center indicator for guiding\n center: true,\n // Show the white modal to highlight the crop box\n highlight: true,\n // Show the grid background\n background: true,\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n // Enable to move the image\n movable: true,\n // Enable to rotate the image\n rotatable: true,\n // Enable to scale the image\n scalable: true,\n // Enable to zoom the image\n zoomable: true,\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n // Enable to move the crop box\n cropBoxMovable: true,\n // Enable to resize the crop box\n cropBoxResizable: true,\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: MIN_CONTAINER_WIDTH,\n minContainerHeight: MIN_CONTAINER_HEIGHT,\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n};\n\nvar TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n/**\n * Check if the given value is not a number.\n */\nvar isNaN = Number.isNaN || WINDOW.isNaN;\n\n/**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\nvar isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n};\n\n/**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\nfunction isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nvar slice = Array.prototype.slice;\n\n/**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\nfunction toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n}\n\n/**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\nfunction forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length) /* array-like */) {\n toArray(data).forEach(function (value, key) {\n callback.call(data, value, key, data);\n });\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n return data;\n}\n\n/**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\nvar assign = Object.assign || function assign(target) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (isObject(target) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n target[key] = arg[key];\n });\n }\n });\n }\n return target;\n};\nvar REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n/**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\nfunction normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n}\nvar REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n\n/**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\nfunction setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value = \"\".concat(value, \"px\");\n }\n style[property] = value;\n });\n}\n\n/**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\nfunction hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n}\n\n/**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\nfunction addClass(element, value) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n var className = element.className.trim();\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n}\n\n/**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\nfunction removeClass(element, value) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n}\n\n/**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\nfunction toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n }\n\n // IE10-11 doesn't support the second parameter of `classList.toggle`\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n}\nvar REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n\n/**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\nfunction toParamCase(value) {\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n}\n\n/**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\nfunction getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n if (element.dataset) {\n return element.dataset[name];\n }\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\n}\n\n/**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\nfunction setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n }\n}\n\n/**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\nfunction removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (error) {\n element[name] = undefined;\n }\n } else if (element.dataset) {\n // #128 Safari not allows to delete dataset property\n try {\n delete element.dataset[name];\n } catch (error) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\n }\n}\nvar REGEXP_SPACES = /\\s\\s*/;\nvar onceSupported = function () {\n var supported = false;\n if (IS_BROWSER) {\n var once = false;\n var listener = function listener() {};\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n return supported;\n}();\n\n/**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\nfunction removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n element.removeEventListener(event, handler, options);\n });\n}\n\n/**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\nfunction addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n listener.apply(element, args);\n };\n if (!listeners[event]) {\n listeners[event] = {};\n }\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n element.addEventListener(event, _handler, options);\n });\n}\n\n/**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\nfunction dispatchEvent(element, type, data) {\n var event;\n\n // Event and CustomEvent on IE9-11 are global objects, not constructors\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, {\n detail: data,\n bubbles: true,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n return element.dispatchEvent(event);\n}\n\n/**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\nfunction getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n}\nvar location = WINDOW.location;\nvar REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n\n/**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\nfunction isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n}\n\n/**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\nfunction addTimestamp(url) {\n var timestamp = \"timestamp=\".concat(new Date().getTime());\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n}\n\n/**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\nfunction getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n }\n\n // Rotate should come first before scale to match orientation transform\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n}\n\n/**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\nfunction getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n var maxRatio = 0;\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\n maxRatio = ratio;\n }\n });\n });\n return maxRatio;\n}\n\n/**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\nfunction getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n startX: pageX,\n startY: pageY\n }, end);\n}\n\n/**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\nfunction getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n}\n\n/**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\nfunction getAdjustedSizes(_ref4) {\n var aspectRatio = _ref4.aspectRatio,\n height = _ref4.height,\n width = _ref4.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n return {\n width: width,\n height: height\n };\n}\n\n/**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\nfunction getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n degree = Math.abs(degree) % 180;\n if (degree === 90) {\n return {\n width: height,\n height: width\n };\n }\n var arc = degree % 90 * Math.PI / 180;\n var sinArc = Math.sin(arc);\n var cosArc = Math.cos(arc);\n var newWidth = width * cosArc + height * sinArc;\n var newHeight = width * sinArc + height * cosArc;\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\n}\n\n/**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\nfunction getSourceCanvas(image, _ref6, _ref7, _ref8) {\n var imageAspectRatio = _ref6.aspectRatio,\n imageNaturalWidth = _ref6.naturalWidth,\n imageNaturalHeight = _ref6.naturalHeight,\n _ref6$rotate = _ref6.rotate,\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n var aspectRatio = _ref7.aspectRatio,\n naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight;\n var _ref8$fillColor = _ref8.fillColor,\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));\n\n // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n var destMaxSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var destMinSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = fillColor;\n context.fillRect(0, 0, width, height);\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n context.imageSmoothingQuality = imageSmoothingQuality;\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n context.restore();\n return canvas;\n}\nvar fromCharCode = String.fromCharCode;\n\n/**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\nfunction getStringFromCharCode(dataView, start, length) {\n var str = '';\n length += start;\n for (var i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n return str;\n}\nvar REGEXP_DATA_URL_HEAD = /^data:.*,/;\n\n/**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\nfunction dataURLToArrayBuffer(dataURL) {\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var arrayBuffer = new ArrayBuffer(binary.length);\n var uint8 = new Uint8Array(arrayBuffer);\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n return arrayBuffer;\n}\n\n/**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\nfunction arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n\n // Chunk Typed Array for better performance (#435)\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n}\n\n/**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\nfunction resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n var littleEndian;\n var app1Start;\n var ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n offset += 1;\n }\n }\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n var _offset;\n var i;\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (error) {\n orientation = 1;\n }\n return orientation;\n}\n\n/**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\nfunction parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // Rotate left 180°\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90°\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90°\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90°\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90°\n case 8:\n rotate = -90;\n break;\n }\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n\nvar render = {\n render: function render() {\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n this.renderCanvas();\n if (this.cropped) {\n this.renderCropBox();\n }\n },\n initContainer: function initContainer() {\n var element = this.element,\n options = this.options,\n container = this.container,\n cropper = this.cropper;\n var minWidth = Number(options.minContainerWidth);\n var minHeight = Number(options.minContainerHeight);\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n var containerData = {\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n };\n this.containerData = containerData;\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n // Canvas (image wrapper)\n initCanvas: function initCanvas() {\n var containerData = this.containerData,\n imageData = this.imageData;\n var viewMode = this.options.viewMode;\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerData.width;\n var canvasHeight = containerData.height;\n if (containerData.height * aspectRatio > containerData.width) {\n if (viewMode === 3) {\n canvasWidth = containerData.height * aspectRatio;\n } else {\n canvasHeight = containerData.width / aspectRatio;\n }\n } else if (viewMode === 3) {\n canvasHeight = containerData.width / aspectRatio;\n } else {\n canvasWidth = containerData.height * aspectRatio;\n }\n var canvasData = {\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n width: canvasWidth,\n height: canvasHeight\n };\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n canvasData.left = (containerData.width - canvasData.width) / 2;\n canvasData.top = (containerData.height - canvasData.height) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n this.initialCanvasData = assign({}, canvasData);\n },\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var viewMode = options.viewMode;\n var aspectRatio = canvasData.aspectRatio;\n var cropped = this.cropped && cropBoxData;\n if (sizeLimited) {\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n if (viewMode > 1) {\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n if (viewMode === 3) {\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n } else if (viewMode > 0) {\n if (minCanvasWidth) {\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n } else if (minCanvasHeight) {\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n } else if (cropped) {\n minCanvasWidth = cropBoxData.width;\n minCanvasHeight = cropBoxData.height;\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n }\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minCanvasWidth,\n height: minCanvasHeight\n });\n minCanvasWidth = _getAdjustedSizes.width;\n minCanvasHeight = _getAdjustedSizes.height;\n canvasData.minWidth = minCanvasWidth;\n canvasData.minHeight = minCanvasHeight;\n canvasData.maxWidth = Infinity;\n canvasData.maxHeight = Infinity;\n }\n if (positionLimited) {\n if (viewMode > (cropped ? 0 : 1)) {\n var newCanvasLeft = containerData.width - canvasData.width;\n var newCanvasTop = containerData.height - canvasData.height;\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n if (cropped && this.limited) {\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n canvasData.maxLeft = cropBoxData.left;\n canvasData.maxTop = cropBoxData.top;\n if (viewMode === 2) {\n if (canvasData.width >= containerData.width) {\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n }\n if (canvasData.height >= containerData.height) {\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n }\n }\n }\n } else {\n canvasData.minLeft = -canvasData.width;\n canvasData.minTop = -canvasData.height;\n canvasData.maxLeft = containerData.width;\n canvasData.maxTop = containerData.height;\n }\n }\n },\n renderCanvas: function renderCanvas(changed, transformed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n if (transformed) {\n var _getRotatedSizes = getRotatedSizes({\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n degree: imageData.rotate || 0\n }),\n naturalWidth = _getRotatedSizes.width,\n naturalHeight = _getRotatedSizes.height;\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n canvasData.left -= (width - canvasData.width) / 2;\n canvasData.top -= (height - canvasData.height) / 2;\n canvasData.width = width;\n canvasData.height = height;\n canvasData.aspectRatio = naturalWidth / naturalHeight;\n canvasData.naturalWidth = naturalWidth;\n canvasData.naturalHeight = naturalHeight;\n this.limitCanvas(true, false);\n }\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n canvasData.left = canvasData.oldLeft;\n }\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n canvasData.top = canvasData.oldTop;\n }\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n this.limitCanvas(false, true);\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n setStyle(this.canvas, assign({\n width: canvasData.width,\n height: canvasData.height\n }, getTransforms({\n translateX: canvasData.left,\n translateY: canvasData.top\n })));\n this.renderImage(changed);\n if (this.cropped && this.limited) {\n this.limitCropBox(true, true);\n }\n },\n renderImage: function renderImage(changed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n assign(imageData, {\n width: width,\n height: height,\n left: (canvasData.width - width) / 2,\n top: (canvasData.height - height) / 2\n });\n setStyle(this.image, assign({\n width: imageData.width,\n height: imageData.height\n }, getTransforms(assign({\n translateX: imageData.left,\n translateY: imageData.top\n }, imageData))));\n if (changed) {\n this.output();\n }\n },\n initCropBox: function initCropBox() {\n var options = this.options,\n canvasData = this.canvasData;\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n var autoCropArea = Number(options.autoCropArea) || 0.8;\n var cropBoxData = {\n width: canvasData.width,\n height: canvasData.height\n };\n if (aspectRatio) {\n if (canvasData.height * aspectRatio > canvasData.width) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n this.cropBoxData = cropBoxData;\n this.limitCropBox(true, true);\n\n // Initialize auto crop area\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n\n // The width/height of auto crop area must large than \"minWidth/Height\"\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n this.initialCropBoxData = assign({}, cropBoxData);\n },\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData,\n limited = this.limited;\n var aspectRatio = options.aspectRatio;\n if (sizeLimited) {\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height;\n\n // The min/maxCropBoxWidth/Height must be less than container's width/height\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n if (aspectRatio) {\n if (minCropBoxWidth && minCropBoxHeight) {\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n } else if (minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else if (minCropBoxHeight) {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n } else {\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n }\n }\n\n // The minWidth/Height must be less than maxWidth/Height\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n cropBoxData.maxWidth = maxCropBoxWidth;\n cropBoxData.maxHeight = maxCropBoxHeight;\n }\n if (positionLimited) {\n if (limited) {\n cropBoxData.minLeft = Math.max(0, canvasData.left);\n cropBoxData.minTop = Math.max(0, canvasData.top);\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n } else {\n cropBoxData.minLeft = 0;\n cropBoxData.minTop = 0;\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\n }\n }\n },\n renderCropBox: function renderCropBox() {\n var options = this.options,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData;\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n cropBoxData.left = cropBoxData.oldLeft;\n }\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n cropBoxData.top = cropBoxData.oldTop;\n }\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n this.limitCropBox(false, true);\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n if (options.movable && options.cropBoxMovable) {\n // Turn to move the canvas when the crop box is equal to the container\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n }\n setStyle(this.cropBox, assign({\n width: cropBoxData.width,\n height: cropBoxData.height\n }, getTransforms({\n translateX: cropBoxData.left,\n translateY: cropBoxData.top\n })));\n if (this.cropped && this.limited) {\n this.limitCanvas(true, true);\n }\n if (!this.disabled) {\n this.output();\n }\n },\n output: function output() {\n this.preview();\n dispatchEvent(this.element, EVENT_CROP, this.getData());\n }\n};\n\nvar preview = {\n initPreview: function initPreview() {\n var element = this.element,\n crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var alt = element.alt || 'The image to preview';\n var image = document.createElement('img');\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n image.src = url;\n image.alt = alt;\n this.viewBox.appendChild(image);\n this.viewBoxImage = image;\n if (!preview) {\n return;\n }\n var previews = preview;\n if (typeof preview === 'string') {\n previews = element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n this.previews = previews;\n forEach(previews, function (el) {\n var img = document.createElement('img');\n\n // Save the original size for recover\n setData(el, DATA_PREVIEW, {\n width: el.offsetWidth,\n height: el.offsetHeight,\n html: el.innerHTML\n });\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n img.src = url;\n img.alt = alt;\n\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * Add `height:auto` to override `height` attribute on IE8\n * (Occur only when margin-top <= -height)\n */\n img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n el.innerHTML = '';\n el.appendChild(img);\n });\n },\n resetPreview: function resetPreview() {\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n setStyle(element, {\n width: data.width,\n height: data.height\n });\n element.innerHTML = data.html;\n removeData(element, DATA_PREVIEW);\n });\n },\n preview: function preview() {\n var imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var cropBoxWidth = cropBoxData.width,\n cropBoxHeight = cropBoxData.height;\n var width = imageData.width,\n height = imageData.height;\n var left = cropBoxData.left - canvasData.left - imageData.left;\n var top = cropBoxData.top - canvasData.top - imageData.top;\n if (!this.cropped || this.disabled) {\n return;\n }\n setStyle(this.viewBoxImage, assign({\n width: width,\n height: height\n }, getTransforms(assign({\n translateX: -left,\n translateY: -top\n }, imageData))));\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n if (cropBoxWidth) {\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\n }\n if (cropBoxHeight && newHeight > originalHeight) {\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\n }\n setStyle(element, {\n width: newWidth,\n height: newHeight\n });\n setStyle(element.getElementsByTagName('img')[0], assign({\n width: width * ratio,\n height: height * ratio\n }, getTransforms(assign({\n translateX: -left * ratio,\n translateY: -top * ratio\n }, imageData))));\n });\n }\n};\n\nvar events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n if (isFunction(options.cropstart)) {\n addListener(element, EVENT_CROP_START, options.cropstart);\n }\n if (isFunction(options.cropmove)) {\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n if (isFunction(options.cropend)) {\n addListener(element, EVENT_CROP_END, options.cropend);\n }\n if (isFunction(options.crop)) {\n addListener(element, EVENT_CROP, options.crop);\n }\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom);\n }\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n if (options.zoomable && options.zoomOnWheel) {\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n if (options.toggleDragModeOnDblclick) {\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n if (options.responsive) {\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n }\n },\n unbind: function unbind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n if (isFunction(options.cropstart)) {\n removeListener(element, EVENT_CROP_START, options.cropstart);\n }\n if (isFunction(options.cropmove)) {\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n if (isFunction(options.cropend)) {\n removeListener(element, EVENT_CROP_END, options.cropend);\n }\n if (isFunction(options.crop)) {\n removeListener(element, EVENT_CROP, options.crop);\n }\n if (isFunction(options.zoom)) {\n removeListener(element, EVENT_ZOOM, options.zoom);\n }\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n if (options.toggleDragModeOnDblclick) {\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n }\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n if (options.responsive) {\n removeListener(window, EVENT_RESIZE, this.onResize);\n }\n }\n};\n\nvar handlers = {\n resize: function resize() {\n if (this.disabled) {\n return;\n }\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n var ratioX = container.offsetWidth / containerData.width;\n var ratioY = container.offsetHeight / containerData.height;\n var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY;\n\n // Resize when width changed or height changed\n if (ratio !== 1) {\n var canvasData;\n var cropBoxData;\n if (options.restore) {\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\n }\n this.render();\n if (options.restore) {\n this.setCanvasData(forEach(canvasData, function (n, i) {\n canvasData[i] = n * ratio;\n }));\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n cropBoxData[i] = n * ratio;\n }));\n }\n }\n },\n dblclick: function dblclick() {\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n return;\n }\n this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n },\n wheel: function wheel(event) {\n var _this = this;\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n if (this.disabled) {\n return;\n }\n event.preventDefault();\n\n // Limit wheel speed to prevent zoom too fast (#21)\n if (this.wheeling) {\n return;\n }\n this.wheeling = true;\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n this.zoom(-delta * ratio, event);\n },\n cropStart: function cropStart(event) {\n var buttons = event.buttons,\n button = event.button;\n if (this.disabled\n\n // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && (\n // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0\n\n // Open context menu\n || event.ctrlKey)) {\n return;\n }\n var options = this.options,\n pointers = this.pointers;\n var action;\n if (event.changedTouches) {\n // Handle touch event\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[event.pointerId || 0] = getPointer(event);\n }\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(event.target, DATA_ACTION);\n }\n if (!REGEXP_ACTIONS.test(action)) {\n return;\n }\n if (dispatchEvent(this.element, EVENT_CROP_START, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n\n // This line is required for preventing page zooming in iOS browsers\n event.preventDefault();\n this.action = action;\n this.cropping = false;\n if (action === ACTION_CROP) {\n this.cropping = true;\n addClass(this.dragBox, CLASS_MODAL);\n }\n },\n cropMove: function cropMove(event) {\n var action = this.action;\n if (this.disabled || !action) {\n return;\n }\n var pointers = this.pointers;\n event.preventDefault();\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n // The first parameter should not be undefined (#432)\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n this.change(event);\n },\n cropEnd: function cropEnd(event) {\n if (this.disabled) {\n return;\n }\n var action = this.action,\n pointers = this.pointers;\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[event.pointerId || 0];\n }\n if (!action) {\n return;\n }\n event.preventDefault();\n if (!Object.keys(pointers).length) {\n this.action = '';\n }\n if (this.cropping) {\n this.cropping = false;\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n }\n dispatchEvent(this.element, EVENT_CROP_END, {\n originalEvent: event,\n action: action\n });\n }\n};\n\nvar change = {\n change: function change(event) {\n var options = this.options,\n canvasData = this.canvasData,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData,\n pointers = this.pointers;\n var action = this.action;\n var aspectRatio = options.aspectRatio;\n var left = cropBoxData.left,\n top = cropBoxData.top,\n width = cropBoxData.width,\n height = cropBoxData.height;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = containerData.width;\n var maxHeight = containerData.height;\n var renderable = true;\n var offset;\n\n // Locking aspect ratio in \"free mode\" by holding shift key\n if (!aspectRatio && event.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n }\n var pointer = pointers[Object.keys(pointers)[0]];\n var range = {\n x: pointer.endX - pointer.startX,\n y: pointer.endY - pointer.startY\n };\n var check = function check(side) {\n switch (side) {\n case ACTION_EAST:\n if (right + range.x > maxWidth) {\n range.x = maxWidth - right;\n }\n break;\n case ACTION_WEST:\n if (left + range.x < minLeft) {\n range.x = minLeft - left;\n }\n break;\n case ACTION_NORTH:\n if (top + range.y < minTop) {\n range.y = minTop - top;\n }\n break;\n case ACTION_SOUTH:\n if (bottom + range.y > maxHeight) {\n range.y = maxHeight - bottom;\n }\n break;\n }\n };\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n\n // Resize crop box\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n check(ACTION_EAST);\n width += range.x;\n if (width < 0) {\n action = ACTION_WEST;\n width = -width;\n left -= width;\n }\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n break;\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n if (height < 0) {\n action = ACTION_SOUTH;\n height = -height;\n top -= height;\n }\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n break;\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n if (width < 0) {\n action = ACTION_EAST;\n width = -width;\n left -= width;\n }\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n break;\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n check(ACTION_SOUTH);\n height += range.y;\n if (height < 0) {\n action = ACTION_NORTH;\n height = -height;\n top -= height;\n }\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n break;\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n } else {\n check(ACTION_NORTH);\n check(ACTION_EAST);\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += cropBoxData.width - width;\n } else {\n check(ACTION_NORTH);\n check(ACTION_WEST);\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_WEST);\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n check(ACTION_EAST);\n width += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_EAST);\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n top -= height;\n }\n break;\n\n // Move canvas\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n\n // Zoom canvas\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), event);\n renderable = false;\n break;\n\n // Create crop box\n case ACTION_CROP:\n if (!range.x || !range.y) {\n renderable = false;\n break;\n }\n offset = getOffset(this.cropper);\n left = pointer.startX - offset.left;\n top = pointer.startY - offset.top;\n width = cropBoxData.minWidth;\n height = cropBoxData.minHeight;\n if (range.x > 0) {\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n } else if (range.x < 0) {\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n }\n if (range.y < 0) {\n top -= height;\n }\n\n // Show the crop box if is hidden\n if (!this.cropped) {\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.cropped = true;\n if (this.limited) {\n this.limitCropBox(true, true);\n }\n }\n break;\n }\n if (renderable) {\n cropBoxData.width = width;\n cropBoxData.height = height;\n cropBoxData.left = left;\n cropBoxData.top = top;\n this.action = action;\n this.renderCropBox();\n }\n\n // Override\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n};\n\nvar methods = {\n // Show the crop box manually\n crop: function crop() {\n if (this.ready && !this.cropped && !this.disabled) {\n this.cropped = true;\n this.limitCropBox(true, true);\n if (this.options.modal) {\n addClass(this.dragBox, CLASS_MODAL);\n }\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.setCropBoxData(this.initialCropBoxData);\n }\n return this;\n },\n // Reset the image and crop box to their initial states\n reset: function reset() {\n if (this.ready && !this.disabled) {\n this.imageData = assign({}, this.initialImageData);\n this.canvasData = assign({}, this.initialCanvasData);\n this.cropBoxData = assign({}, this.initialCropBoxData);\n this.renderCanvas();\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n return this;\n },\n // Clear the crop box\n clear: function clear() {\n if (this.cropped && !this.disabled) {\n assign(this.cropBoxData, {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n });\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true);\n\n // Render canvas after crop box rendered\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n return this;\n },\n /**\n * Replace the image's src and rebuild the cropper\n * @param {string} url - The new URL.\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n * @returns {Cropper} this\n */\n replace: function replace(url) {\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this.disabled && url) {\n if (this.isImg) {\n this.element.src = url;\n }\n if (hasSameSize) {\n this.url = url;\n this.image.src = url;\n if (this.ready) {\n this.viewBoxImage.src = url;\n forEach(this.previews, function (element) {\n element.getElementsByTagName('img')[0].src = url;\n });\n }\n } else {\n if (this.isImg) {\n this.replaced = true;\n }\n this.options.data = null;\n this.uncreate();\n this.load(url);\n }\n }\n return this;\n },\n // Enable (unfreeze) the cropper\n enable: function enable() {\n if (this.ready && this.disabled) {\n this.disabled = false;\n removeClass(this.cropper, CLASS_DISABLED);\n }\n return this;\n },\n // Disable (freeze) the cropper\n disable: function disable() {\n if (this.ready && !this.disabled) {\n this.disabled = true;\n addClass(this.cropper, CLASS_DISABLED);\n }\n return this;\n },\n /**\n * Destroy the cropper and remove the instance from the image\n * @returns {Cropper} this\n */\n destroy: function destroy() {\n var element = this.element;\n if (!element[NAMESPACE]) {\n return this;\n }\n element[NAMESPACE] = undefined;\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n this.uncreate();\n return this;\n },\n /**\n * Move the canvas with relative offsets\n * @param {number} offsetX - The relative offset distance on the x-axis.\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n * @returns {Cropper} this\n */\n move: function move(offsetX) {\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n var _this$canvasData = this.canvasData,\n left = _this$canvasData.left,\n top = _this$canvasData.top;\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\n /**\n * Move the canvas to an absolute point\n * @param {number} x - The x-axis coordinate.\n * @param {number} [y=x] - The y-axis coordinate.\n * @returns {Cropper} this\n */\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var canvasData = this.canvasData;\n var changed = false;\n x = Number(x);\n y = Number(y);\n if (this.ready && !this.disabled && this.options.movable) {\n if (isNumber(x)) {\n canvasData.left = x;\n changed = true;\n }\n if (isNumber(y)) {\n canvasData.top = y;\n changed = true;\n }\n if (changed) {\n this.renderCanvas(true);\n }\n }\n return this;\n },\n /**\n * Zoom the canvas with a relative ratio\n * @param {number} ratio - The target ratio.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoom: function zoom(ratio, _originalEvent) {\n var canvasData = this.canvasData;\n ratio = Number(ratio);\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n },\n /**\n * Zoom the canvas to an absolute ratio\n * @param {number} ratio - The target ratio.\n * @param {Object} pivot - The zoom pivot point coordinate.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n var options = this.options,\n canvasData = this.canvasData;\n var width = canvasData.width,\n height = canvasData.height,\n naturalWidth = canvasData.naturalWidth,\n naturalHeight = canvasData.naturalHeight;\n ratio = Number(ratio);\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n if (dispatchEvent(this.element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: width / naturalWidth,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n if (_originalEvent) {\n var pointers = this.pointers;\n var offset = getOffset(this.cropper);\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n };\n\n // Zoom from the triggering point of the event\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n } else {\n // Zoom from the center of the canvas\n canvasData.left -= (newWidth - width) / 2;\n canvasData.top -= (newHeight - height) / 2;\n }\n canvasData.width = newWidth;\n canvasData.height = newHeight;\n this.renderCanvas(true);\n }\n return this;\n },\n /**\n * Rotate the canvas with a relative degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotate: function rotate(degree) {\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n },\n /**\n * Rotate the canvas to an absolute degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotateTo: function rotateTo(degree) {\n degree = Number(degree);\n if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n this.imageData.rotate = degree % 360;\n this.renderCanvas(true, true);\n }\n return this;\n },\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Cropper} this\n */\n scaleX: function scaleX(_scaleX) {\n var scaleY = this.imageData.scaleY;\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scaleY: function scaleY(_scaleY) {\n var scaleX = this.imageData.scaleX;\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\n /**\n * Scale the image\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var imageData = this.imageData;\n var transformed = false;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n if (this.ready && !this.disabled && this.options.scalable) {\n if (isNumber(scaleX)) {\n imageData.scaleX = scaleX;\n transformed = true;\n }\n if (isNumber(scaleY)) {\n imageData.scaleY = scaleY;\n transformed = true;\n }\n if (transformed) {\n this.renderCanvas(true, true);\n }\n }\n return this;\n },\n /**\n * Get the cropped area position and size data (base on the original image)\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n * @returns {Object} The result cropped data.\n */\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var data;\n if (this.ready && this.cropped) {\n data = {\n x: cropBoxData.left - canvasData.left,\n y: cropBoxData.top - canvasData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n var ratio = imageData.width / imageData.naturalWidth;\n forEach(data, function (n, i) {\n data[i] = n / ratio;\n });\n if (rounded) {\n // In case rounding off leads to extra 1px in right or bottom border\n // we should round the top-left corner and the dimension (#343).\n var bottom = Math.round(data.y + data.height);\n var right = Math.round(data.x + data.width);\n data.x = Math.round(data.x);\n data.y = Math.round(data.y);\n data.width = right - data.x;\n data.height = bottom - data.y;\n }\n } else {\n data = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n if (options.rotatable) {\n data.rotate = imageData.rotate || 0;\n }\n if (options.scalable) {\n data.scaleX = imageData.scaleX || 1;\n data.scaleY = imageData.scaleY || 1;\n }\n return data;\n },\n /**\n * Set the cropped area position and size with new data\n * @param {Object} data - The new data.\n * @returns {Cropper} this\n */\n setData: function setData(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n var cropBoxData = {};\n if (this.ready && !this.disabled && isPlainObject(data)) {\n var transformed = false;\n if (options.rotatable) {\n if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n imageData.rotate = data.rotate;\n transformed = true;\n }\n }\n if (options.scalable) {\n if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n imageData.scaleX = data.scaleX;\n transformed = true;\n }\n if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n imageData.scaleY = data.scaleY;\n transformed = true;\n }\n }\n if (transformed) {\n this.renderCanvas(true, true);\n }\n var ratio = imageData.width / imageData.naturalWidth;\n if (isNumber(data.x)) {\n cropBoxData.left = data.x * ratio + canvasData.left;\n }\n if (isNumber(data.y)) {\n cropBoxData.top = data.y * ratio + canvasData.top;\n }\n if (isNumber(data.width)) {\n cropBoxData.width = data.width * ratio;\n }\n if (isNumber(data.height)) {\n cropBoxData.height = data.height * ratio;\n }\n this.setCropBoxData(cropBoxData);\n }\n return this;\n },\n /**\n * Get the container size data.\n * @returns {Object} The result container data.\n */\n getContainerData: function getContainerData() {\n return this.ready ? assign({}, this.containerData) : {};\n },\n /**\n * Get the image position and size data.\n * @returns {Object} The result image data.\n */\n getImageData: function getImageData() {\n return this.sized ? assign({}, this.imageData) : {};\n },\n /**\n * Get the canvas position and size data.\n * @returns {Object} The result canvas data.\n */\n getCanvasData: function getCanvasData() {\n var canvasData = this.canvasData;\n var data = {};\n if (this.ready) {\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n data[n] = canvasData[n];\n });\n }\n return data;\n },\n /**\n * Set the canvas position and size with new data.\n * @param {Object} data - The new canvas data.\n * @returns {Cropper} this\n */\n setCanvasData: function setCanvasData(data) {\n var canvasData = this.canvasData;\n var aspectRatio = canvasData.aspectRatio;\n if (this.ready && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n canvasData.left = data.left;\n }\n if (isNumber(data.top)) {\n canvasData.top = data.top;\n }\n if (isNumber(data.width)) {\n canvasData.width = data.width;\n canvasData.height = data.width / aspectRatio;\n } else if (isNumber(data.height)) {\n canvasData.height = data.height;\n canvasData.width = data.height * aspectRatio;\n }\n this.renderCanvas(true);\n }\n return this;\n },\n /**\n * Get the crop box position and size data.\n * @returns {Object} The result crop box data.\n */\n getCropBoxData: function getCropBoxData() {\n var cropBoxData = this.cropBoxData;\n var data;\n if (this.ready && this.cropped) {\n data = {\n left: cropBoxData.left,\n top: cropBoxData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n }\n return data || {};\n },\n /**\n * Set the crop box position and size with new data.\n * @param {Object} data - The new crop box data.\n * @returns {Cropper} this\n */\n setCropBoxData: function setCropBoxData(data) {\n var cropBoxData = this.cropBoxData;\n var aspectRatio = this.options.aspectRatio;\n var widthChanged;\n var heightChanged;\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n cropBoxData.left = data.left;\n }\n if (isNumber(data.top)) {\n cropBoxData.top = data.top;\n }\n if (isNumber(data.width) && data.width !== cropBoxData.width) {\n widthChanged = true;\n cropBoxData.width = data.width;\n }\n if (isNumber(data.height) && data.height !== cropBoxData.height) {\n heightChanged = true;\n cropBoxData.height = data.height;\n }\n if (aspectRatio) {\n if (widthChanged) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else if (heightChanged) {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n this.renderCropBox();\n }\n return this;\n },\n /**\n * Get a canvas drawn the cropped image.\n * @param {Object} [options={}] - The config options.\n * @returns {HTMLCanvasElement} - The result canvas.\n */\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!this.ready || !window.HTMLCanvasElement) {\n return null;\n }\n var canvasData = this.canvasData;\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options);\n\n // Returns the source canvas if it is not cropped.\n if (!this.cropped) {\n return source;\n }\n var _this$getData = this.getData(options.rounded),\n initialX = _this$getData.x,\n initialY = _this$getData.y,\n initialWidth = _this$getData.width,\n initialHeight = _this$getData.height;\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\n if (ratio !== 1) {\n initialX *= ratio;\n initialY *= ratio;\n initialWidth *= ratio;\n initialHeight *= ratio;\n }\n var aspectRatio = initialWidth / initialHeight;\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.maxWidth || Infinity,\n height: options.maxHeight || Infinity\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.minWidth || 0,\n height: options.minHeight || 0\n }, 'cover');\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\n }),\n width = _getAdjustedSizes.width,\n height = _getAdjustedSizes.height;\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n var sourceWidth = source.width;\n var sourceHeight = source.height;\n\n // Source canvas parameters\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth;\n var srcHeight;\n\n // Destination canvas parameters\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n if (srcX <= -initialWidth || srcX > sourceWidth) {\n srcX = 0;\n srcWidth = 0;\n dstX = 0;\n dstWidth = 0;\n } else if (srcX <= 0) {\n dstX = -srcX;\n srcX = 0;\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n dstWidth = srcWidth;\n } else if (srcX <= sourceWidth) {\n dstX = 0;\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n dstWidth = srcWidth;\n }\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n srcY = 0;\n srcHeight = 0;\n dstY = 0;\n dstHeight = 0;\n } else if (srcY <= 0) {\n dstY = -srcY;\n srcY = 0;\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n dstHeight = srcHeight;\n } else if (srcY <= sourceHeight) {\n dstY = 0;\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n dstHeight = srcHeight;\n }\n var params = [srcX, srcY, srcWidth, srcHeight];\n\n // Avoid \"IndexSizeError\"\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n }\n\n // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n return canvas;\n },\n /**\n * Change the aspect ratio of the crop box.\n * @param {number} aspectRatio - The new aspect ratio.\n * @returns {Cropper} this\n */\n setAspectRatio: function setAspectRatio(aspectRatio) {\n var options = this.options;\n if (!this.disabled && !isUndefined(aspectRatio)) {\n // 0 -> NaN\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n if (this.ready) {\n this.initCropBox();\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n }\n return this;\n },\n /**\n * Change the drag mode.\n * @param {string} mode - The new drag mode.\n * @returns {Cropper} this\n */\n setDragMode: function setDragMode(mode) {\n var options = this.options,\n dragBox = this.dragBox,\n face = this.face;\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n options.dragMode = mode;\n setData(dragBox, DATA_ACTION, mode);\n toggleClass(dragBox, CLASS_CROP, croppable);\n toggleClass(dragBox, CLASS_MOVE, movable);\n if (!options.cropBoxMovable) {\n // Sync drag mode to crop box when it is not movable\n setData(face, DATA_ACTION, mode);\n toggleClass(face, CLASS_CROP, croppable);\n toggleClass(face, CLASS_MOVE, movable);\n }\n }\n return this;\n }\n};\n\nvar AnotherCropper = WINDOW.Cropper;\nvar Cropper = /*#__PURE__*/function () {\n /**\n * Create a new Cropper.\n * @param {Element} element - The target element for cropping.\n * @param {Object} [options={}] - The configuration options.\n */\n function Cropper(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Cropper);\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n }\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.cropped = false;\n this.disabled = false;\n this.pointers = {};\n this.ready = false;\n this.reloading = false;\n this.replaced = false;\n this.sized = false;\n this.sizing = false;\n this.init();\n }\n return _createClass(Cropper, [{\n key: \"init\",\n value: function init() {\n var element = this.element;\n var tagName = element.tagName.toLowerCase();\n var url;\n if (element[NAMESPACE]) {\n return;\n }\n element[NAMESPACE] = this;\n if (tagName === 'img') {\n this.isImg = true;\n\n // e.g.: \"img/picture.jpg\"\n url = element.getAttribute('src') || '';\n this.originalUrl = url;\n\n // Stop when it's a blank image\n if (!url) {\n return;\n }\n\n // e.g.: \"https://example.com/img/picture.jpg\"\n url = element.src;\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n url = element.toDataURL();\n }\n this.load(url);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this = this;\n if (!url) {\n return;\n }\n this.url = url;\n this.imageData = {};\n var element = this.element,\n options = this.options;\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n }\n\n // Only IE10+ supports Typed Arrays\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n }\n\n // Detect the mime type of the image directly if it is a Data URL\n if (REGEXP_DATA_URL.test(url)) {\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n // Only a JPEG image may contains Exif Orientation information,\n // the rest types of Data URLs are not necessary to check orientation at all.\n this.clone();\n }\n return;\n }\n\n // 1. Detect the mime type of the image by a XMLHttpRequest.\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n var xhr = new XMLHttpRequest();\n var clone = this.clone.bind(this);\n this.reloading = true;\n this.xhr = xhr;\n\n // 1. Cross origin requests are only supported for protocol schemes:\n // http, https, data, chrome, chrome-extension.\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n // in some browsers as IE11 and Safari.\n xhr.onabort = clone;\n xhr.onerror = clone;\n xhr.ontimeout = clone;\n xhr.onprogress = function () {\n // Abort the request directly if it not a JPEG image for better performance\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n xhr.abort();\n }\n };\n xhr.onload = function () {\n _this.read(xhr.response);\n };\n xhr.onloadend = function () {\n _this.reloading = false;\n _this.xhr = null;\n };\n\n // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n url = addTimestamp(url);\n }\n\n // The third parameter is required for avoiding side-effect (#682)\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\n xhr.send();\n }\n }, {\n key: \"read\",\n value: function read(arrayBuffer) {\n var options = this.options,\n imageData = this.imageData;\n\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n var orientation = resetAndGetOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n if (orientation > 1) {\n // Generate a new URL which has the default orientation value\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n var _parseOrientation = parseOrientation(orientation);\n rotate = _parseOrientation.rotate;\n scaleX = _parseOrientation.scaleX;\n scaleY = _parseOrientation.scaleY;\n }\n if (options.rotatable) {\n imageData.rotate = rotate;\n }\n if (options.scalable) {\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n }\n this.clone();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var element = this.element,\n url = this.url;\n var crossOrigin = element.crossOrigin;\n var crossOriginUrl = url;\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n if (!crossOrigin) {\n crossOrigin = 'anonymous';\n }\n\n // Bust cache when there is not a \"crossOrigin\" property (#519)\n crossOriginUrl = addTimestamp(url);\n }\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n var image = document.createElement('img');\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n image.src = crossOriginUrl || url;\n image.alt = element.alt || 'The image to crop';\n this.image = image;\n image.onload = this.start.bind(this);\n image.onerror = this.stop.bind(this);\n addClass(image, CLASS_HIDE);\n element.parentNode.insertBefore(image, element.nextSibling);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n this.sizing = true;\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.initialImageData = assign({}, _this2.imageData);\n _this2.sizing = false;\n _this2.sized = true;\n _this2.build();\n };\n\n // Most modern browsers (excepts iOS WebKit)\n if (image.naturalWidth && !isIOSWebKit) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n this.sizingImage = sizingImage;\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n if (!isIOSWebKit) {\n body.removeChild(sizingImage);\n }\n };\n sizingImage.src = image.src;\n\n // iOS WebKit will convert the image automatically\n // with its orientation once append it into DOM (#279)\n if (!isIOSWebKit) {\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(sizingImage);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }, {\n key: \"build\",\n value: function build() {\n if (!this.sized || this.ready) {\n return;\n }\n var element = this.element,\n options = this.options,\n image = this.image;\n\n // Create cropper elements\n var container = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n this.container = container;\n this.cropper = cropper;\n this.canvas = canvas;\n this.dragBox = dragBox;\n this.cropBox = cropBox;\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n this.face = face;\n canvas.appendChild(image);\n\n // Hide the original image\n addClass(element, CLASS_HIDDEN);\n\n // Inserts the cropper after to the current image\n container.insertBefore(cropper, element.nextSibling);\n\n // Show the hidden image\n removeClass(image, CLASS_HIDE);\n this.initPreview();\n this.bind();\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n addClass(cropBox, CLASS_HIDDEN);\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n }\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n }\n if (options.background) {\n addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n }\n if (!options.highlight) {\n addClass(face, CLASS_INVISIBLE);\n }\n if (options.cropBoxMovable) {\n addClass(face, CLASS_MOVE);\n setData(face, DATA_ACTION, ACTION_ALL);\n }\n if (!options.cropBoxResizable) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n }\n this.render();\n this.ready = true;\n this.setDragMode(options.dragMode);\n if (options.autoCrop) {\n this.crop();\n }\n this.setData(options.data);\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n dispatchEvent(element, EVENT_READY);\n }\n }, {\n key: \"unbuild\",\n value: function unbuild() {\n if (!this.ready) {\n return;\n }\n this.ready = false;\n this.unbind();\n this.resetPreview();\n var parentNode = this.cropper.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.cropper);\n }\n removeClass(this.element, CLASS_HIDDEN);\n }\n }, {\n key: \"uncreate\",\n value: function uncreate() {\n if (this.ready) {\n this.unbuild();\n this.ready = false;\n this.cropped = false;\n } else if (this.sizing) {\n this.sizingImage.onload = null;\n this.sizing = false;\n this.sized = false;\n } else if (this.reloading) {\n this.xhr.onabort = null;\n this.xhr.abort();\n } else if (this.image) {\n this.stop();\n }\n }\n\n /**\n * Get the no conflict cropper class.\n * @returns {Cropper} The cropper class.\n */\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Cropper = AnotherCropper;\n return Cropper;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n}();\nassign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\nexport { Cropper as default };\n","import { Controller } from \"@hotwired/stimulus\";\nimport Cropper from 'cropperjs';\n\n// Connects to data-controller=\"image-cropper\"\nexport default class extends Controller {\n static targets = [\"input\", \"preview\", \"form\"];\n static values = {\n aspectRatio: { type: Number, default: 16 / 9 },\n autoCropArea: { type: Number, default: 0.8 }, // 80% of the image will be auto cropped\n viewMode: { type: Number, default: 1 }, // restrict the crop box not to exceed the size of the canvas.\n scalable: { type: Boolean, default: false },\n zoomable: { type: Boolean, default: false },\n movable: { type: Boolean, default: false },\n };\n\n disconnect() {\n this.cropper?.destroy();\n this.formTarget.removeEventListener('submit', this.boundFormSubmissionHandler);\n }\n\n showCropper() {\n const url = URL.createObjectURL(this.imageDataFromInput)\n this.previewTarget.innerHTML = `<img src=\"${url}\" id=\"image\" style=\"width:100%;\">`\n this.cropper = new Cropper(this.previewTarget.querySelector('img'), this.options);\n\n // Prevent the form submission\n this.boundFormSubmissionHandler = this._submitFormWithCroppedImage.bind(this);\n this.formTarget.addEventListener('submit', this.boundFormSubmissionHandler, { once: true });\n }\n\n _submitFormWithCroppedImage(event) {\n event.preventDefault();\n\n // Replace the original image with the cropped image\n this.cropper.getCroppedCanvas().toBlob((blob) => {\n const file = new File([blob], this.imageDataFromInput.name, { type: \"image/*\", lastModified: new Date().getTime() });\n const container = new DataTransfer();\n container.items.add(file);\n this.inputTarget.files = container.files;\n });\n\n this.formTarget.requestSubmit();\n }\n\n get imageDataFromInput() {\n return this.inputTarget.files[0];\n }\n\n get options() {\n return {\n aspectRatio: this.aspectRatioValue,\n autoCropArea: this.autoCropAreaValue,\n viewMode: this.viewModeValue,\n scalable: this.scalableValue,\n zoomable: this.zoomableValue,\n movable: this.movableValue,\n };\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=8)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=\"swal-button\";e.CLASS_NAMES={MODAL:\"swal-modal\",OVERLAY:\"swal-overlay\",SHOW_MODAL:\"swal-overlay--show-modal\",MODAL_TITLE:\"swal-title\",MODAL_TEXT:\"swal-text\",ICON:\"swal-icon\",ICON_CUSTOM:\"swal-icon--custom\",CONTENT:\"swal-content\",FOOTER:\"swal-footer\",BUTTON_CONTAINER:\"swal-button-container\",BUTTON:o,CONFIRM_BUTTON:o+\"--confirm\",CANCEL_BUTTON:o+\"--cancel\",DANGER_BUTTON:o+\"--danger\",BUTTON_LOADING:o+\"--loading\",BUTTON_LOADER:o+\"__loader\"},e.default=e.CLASS_NAMES},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.getNode=function(t){var e=\".\"+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement(\"div\");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,\"\"),\"SweetAlert: \"+(t=t.trim())},e.isPlainObject=function(t){if(\"[object Object]\"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+\"st\":2===e&&12!==n?t+\"nd\":3===e&&13!==n?t+\"rd\":t+\"th\"}},function(t,e,n){\"use strict\";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,\"__esModule\",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\\n <div class=\"'+c+'\"></div>',e.titleMarkup='\\n <div class=\"'+a+'\"></div>\\n',e.textMarkup='\\n <div class=\"'+s+'\"></div>',e.footerMarkup='\\n <div class=\"'+l+'\"></div>\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1);e.CONFIRM_KEY=\"confirm\",e.CANCEL_KEY=\"cancel\";var r={visible:!0,text:null,value:null,className:\"\",closeModal:!0},i=Object.assign({},r,{visible:!1,text:\"Cancel\",value:null}),a=Object.assign({},r,{text:\"OK\",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):\"string\"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n<o.length;n++){var r=o[n],a=t[r],s=c(r,a);e[r]=s}return e.cancel||(e.cancel=i),e},u=function(t){var n={};switch(t.length){case 1:n[e.CANCEL_KEY]=Object.assign({},i,{visible:!1});break;case 2:n[e.CANCEL_KEY]=c(e.CANCEL_KEY,t[0]),n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t[1]);break;default:o.throwErr(\"Invalid number of 'buttons' in array (\"+t.length+\").\\n If you want more than 2 buttons, you need to use an object!\")}return n};e.getButtonListOpts=function(t){var n=e.defaultButtonList;return\"string\"==typeof t?n[e.CONFIRM_KEY]=c(e.CONFIRM_KEY,t):Array.isArray(t)?n=u(t):o.isPlainObject(t)?n=l(t):!0===t?n=u([!0,!0]):!1===t?n=u([!1,!1]):void 0===t&&(n=e.defaultButtonList),n}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(2),i=n(0),a=i.default.MODAL,s=i.default.OVERLAY,c=n(30),l=n(31),u=n(32),f=n(33);e.injectElIntoModal=function(t){var e=o.getNode(a),n=o.stringToNode(t);return e.appendChild(n),n};var d=function(t){t.className=a,t.textContent=\"\"},p=function(t,e){d(t);var n=e.className;n&&t.classList.add(n)};e.initModalContent=function(t){var e=o.getNode(a);p(e,t),c.default(t.icon),l.initTitle(t.title),l.initText(t.text),f.default(t.content),u.default(t.buttons,t.dangerMode)};var m=function(){var t=o.getNode(s),e=o.stringToNode(r.modalMarkup);t.appendChild(e)};e.default=m},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(3),r={isOpen:!1,promise:null,actions:{},timer:null},i=Object.assign({},r);e.resetState=function(){i=Object.assign({},r)},e.setActionValue=function(t){if(\"string\"==typeof t)return a(o.CONFIRM_KEY,t);for(var e in t)a(e,t[e])};var a=function(t,e){i.actions[t]||(i.actions[t]={}),Object.assign(i.actions[t],{value:e})};e.setActionOptionsFor=function(t,e){var n=(void 0===e?{}:e).closeModal,o=void 0===n||n;Object.assign(i.actions[t],{closeModal:o})},e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(3),i=n(0),a=i.default.OVERLAY,s=i.default.SHOW_MODAL,c=i.default.BUTTON,l=i.default.BUTTON_LOADING,u=n(5);e.openModal=function(){o.getNode(a).classList.add(s),u.default.isOpen=!0};var f=function(){o.getNode(a).classList.remove(s),u.default.isOpen=!1};e.onAction=function(t){void 0===t&&(t=r.CANCEL_KEY);var e=u.default.actions[t],n=e.value;if(!1===e.closeModal){var i=c+\"--\"+t;o.getNode(i).classList.add(l)}else f();u.default.promise.resolve(n)},e.getState=function(){var t=Object.assign({},u.default);return delete t.promise,delete t.timer,t},e.stopLoading=function(){for(var t=document.querySelectorAll(\".\"+c),e=0;e<t.length;e++){t[e].classList.remove(l)}}},function(t,e){var n;n=function(){return this}();try{n=n||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){(function(e){t.exports=e.sweetAlert=n(9)}).call(e,n(7))},function(t,e,n){(function(e){t.exports=e.swal=n(10)}).call(e,n(7))},function(t,e,n){\"undefined\"!=typeof window&&n(11),n(16);var o=n(23).default;t.exports=o},function(t,e,n){var o=n(12);\"string\"==typeof o&&(o=[[t.i,o,\"\"]]);var r={insertAt:\"top\"};r.transform=void 0;n(14)(o,r);o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(13)(void 0),e.push([t.i,'.swal-icon--error{border-color:#f27474;-webkit-animation:animateErrorIcon .5s;animation:animateErrorIcon .5s}.swal-icon--error__x-mark{position:relative;display:block;-webkit-animation:animateXMark .5s;animation:animateXMark .5s}.swal-icon--error__line{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal-icon--error__line--left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal-icon--error__line--right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}@-webkit-keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@keyframes animateErrorIcon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}to{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-webkit-keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animateXMark{0%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}to{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal-icon--warning{border-color:#f8bb86;-webkit-animation:pulseWarning .75s infinite alternate;animation:pulseWarning .75s infinite alternate}.swal-icon--warning__body{width:5px;height:47px;top:10px;border-radius:2px;margin-left:-2px}.swal-icon--warning__body,.swal-icon--warning__dot{position:absolute;left:50%;background-color:#f8bb86}.swal-icon--warning__dot{width:7px;height:7px;border-radius:50%;margin-left:-4px;bottom:-11px}@-webkit-keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}@keyframes pulseWarning{0%{border-color:#f8d486}to{border-color:#f8bb86}}.swal-icon--success{border-color:#a5dc86}.swal-icon--success:after,.swal-icon--success:before{content:\"\";border-radius:50%;position:absolute;width:60px;height:120px;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal-icon--success:before{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal-icon--success:after{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px;-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}.swal-icon--success__ring{width:80px;height:80px;border:4px solid hsla(98,55%,69%,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal-icon--success__hide-corners{width:5px;height:90px;background-color:#fff;padding:1px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal-icon--success__line{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal-icon--success__line--tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:animateSuccessTip .75s;animation:animateSuccessTip .75s}.swal-icon--success__line--long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-animation:animateSuccessLong .75s;animation:animateSuccessLong .75s}@-webkit-keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}to{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@-webkit-keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animateSuccessTip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@-webkit-keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes animateSuccessLong{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}.swal-icon--info{border-color:#c9dae1}.swal-icon--info:before{width:5px;height:29px;bottom:17px;border-radius:2px;margin-left:-2px}.swal-icon--info:after,.swal-icon--info:before{content:\"\";position:absolute;left:50%;background-color:#c9dae1}.swal-icon--info:after{width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px}.swal-icon{width:80px;height:80px;border-width:4px;border-style:solid;border-radius:50%;padding:0;position:relative;box-sizing:content-box;margin:20px auto}.swal-icon:first-child{margin-top:32px}.swal-icon--custom{width:auto;height:auto;max-width:100%;border:none;border-radius:0}.swal-icon img{max-width:100%;max-height:100%}.swal-title{color:rgba(0,0,0,.65);font-weight:600;text-transform:none;position:relative;display:block;padding:13px 16px;font-size:27px;line-height:normal;text-align:center;margin-bottom:0}.swal-title:first-child{margin-top:26px}.swal-title:not(:first-child){padding-bottom:0}.swal-title:not(:last-child){margin-bottom:13px}.swal-text{font-size:16px;position:relative;float:none;line-height:normal;vertical-align:top;text-align:left;display:inline-block;margin:0;padding:0 10px;font-weight:400;color:rgba(0,0,0,.64);max-width:calc(100% - 20px);overflow-wrap:break-word;box-sizing:border-box}.swal-text:first-child{margin-top:45px}.swal-text:last-child{margin-bottom:45px}.swal-footer{text-align:right;padding-top:13px;margin-top:13px;padding:13px 16px;border-radius:inherit;border-top-left-radius:0;border-top-right-radius:0}.swal-button-container{margin:5px;display:inline-block;position:relative}.swal-button{background-color:#7cd1f9;color:#fff;border:none;box-shadow:none;border-radius:5px;font-weight:600;font-size:14px;padding:10px 24px;margin:0;cursor:pointer}.swal-button:not([disabled]):hover{background-color:#78cbf2}.swal-button:active{background-color:#70bce0}.swal-button:focus{outline:none;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(43,114,165,.29)}.swal-button[disabled]{opacity:.5;cursor:default}.swal-button::-moz-focus-inner{border:0}.swal-button--cancel{color:#555;background-color:#efefef}.swal-button--cancel:not([disabled]):hover{background-color:#e8e8e8}.swal-button--cancel:active{background-color:#d7d7d7}.swal-button--cancel:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(116,136,150,.29)}.swal-button--danger{background-color:#e64942}.swal-button--danger:not([disabled]):hover{background-color:#df4740}.swal-button--danger:active{background-color:#cf423b}.swal-button--danger:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(165,43,43,.29)}.swal-content{padding:0 20px;margin-top:20px;font-size:medium}.swal-content:last-child{margin-bottom:20px}.swal-content__input,.swal-content__textarea{-webkit-appearance:none;background-color:#fff;border:none;font-size:14px;display:block;box-sizing:border-box;width:100%;border:1px solid rgba(0,0,0,.14);padding:10px 13px;border-radius:2px;transition:border-color .2s}.swal-content__input:focus,.swal-content__textarea:focus{outline:none;border-color:#6db8ff}.swal-content__textarea{resize:vertical}.swal-button--loading{color:transparent}.swal-button--loading~.swal-button__loader{opacity:1}.swal-button__loader{position:absolute;height:auto;width:43px;z-index:2;left:50%;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);text-align:center;pointer-events:none;opacity:0}.swal-button__loader div{display:inline-block;float:none;vertical-align:baseline;width:9px;height:9px;padding:0;border:none;margin:2px;opacity:.4;border-radius:7px;background-color:hsla(0,0%,100%,.9);transition:background .2s;-webkit-animation:swal-loading-anim 1s infinite;animation:swal-loading-anim 1s infinite}.swal-button__loader div:nth-child(3n+2){-webkit-animation-delay:.15s;animation-delay:.15s}.swal-button__loader div:nth-child(3n+3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}@keyframes swal-loading-anim{0%{opacity:.4}20%{opacity:.4}50%{opacity:1}to{opacity:.4}}.swal-overlay{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center;font-size:0;overflow-y:auto;background-color:rgba(0,0,0,.4);z-index:10000;pointer-events:none;opacity:0;transition:opacity .3s}.swal-overlay:before{content:\" \";display:inline-block;vertical-align:middle;height:100%}.swal-overlay--show-modal{opacity:1;pointer-events:auto}.swal-overlay--show-modal .swal-modal{opacity:1;pointer-events:auto;box-sizing:border-box;-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s;will-change:transform}.swal-modal{width:478px;opacity:0;pointer-events:none;background-color:#fff;text-align:center;border-radius:5px;position:static;margin:20px auto;display:inline-block;vertical-align:middle;-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;z-index:10001;transition:opacity .2s,-webkit-transform .3s;transition:transform .3s,opacity .2s;transition:transform .3s,opacity .2s,-webkit-transform .3s}@media (max-width:500px){.swal-modal{width:calc(100% - 20px)}}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1)}1%{-webkit-transform:scale(.5);transform:scale(.5)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}to{-webkit-transform:scale(1);transform:scale(1)}}',\"\"])},function(t,e){function n(t,e){var n=t[1]||\"\",r=t[3];if(!r)return n;if(e&&\"function\"==typeof btoa){var i=o(r);return[n].concat(r.sources.map(function(t){return\"/*# sourceURL=\"+r.sourceRoot+t+\" */\"})).concat([i]).join(\"\\n\")}return[n].join(\"\\n\")}function o(t){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+\" */\"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var o=n(e,t);return e[2]?\"@media \"+e[2]+\"{\"+o+\"}\":o}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var o={},r=0;r<this.length;r++){var i=this[r][0];\"number\"==typeof i&&(o[i]=!0)}for(r=0;r<t.length;r++){var a=t[r];\"number\"==typeof a[0]&&o[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]=\"(\"+a[2]+\") and (\"+n+\")\"),e.push(a))}},e}},function(t,e,n){function o(t,e){for(var n=0;n<t.length;n++){var o=t[n],r=m[o.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](o.parts[i]);for(;i<o.parts.length;i++)r.parts.push(u(o.parts[i],e))}else{for(var a=[],i=0;i<o.parts.length;i++)a.push(u(o.parts[i],e));m[o.id]={id:o.id,refs:1,parts:a}}}}function r(t,e){for(var n=[],o={},r=0;r<t.length;r++){var i=t[r],a=e.base?i[0]+e.base:i[0],s=i[1],c=i[2],l=i[3],u={css:s,media:c,sourceMap:l};o[a]?o[a].parts.push(u):n.push(o[a]={id:a,parts:[u]})}return n}function i(t,e){var n=v(t.insertInto);if(!n)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");var o=w[w.length-1];if(\"top\"===t.insertAt)o?o.nextSibling?n.insertBefore(e,o.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),w.push(e);else{if(\"bottom\"!==t.insertAt)throw new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");n.appendChild(e)}}function a(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=w.indexOf(t);e>=0&&w.splice(e,1)}function s(t){var e=document.createElement(\"style\");return t.attrs.type=\"text/css\",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement(\"link\");return t.attrs.type=\"text/css\",t.attrs.rel=\"stylesheet\",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?\"\":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute(\"media\",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var a=new Blob([o],{type:\"text/css\"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");e=e||{},e.attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;a<n.length;a++){var s=n[a],c=m[s.id];c.refs--,i.push(c)}if(t){o(r(t,e),e)}for(var a=0;a<i.length;a++){var c=i[a];if(0===c.refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete m[c.id]}}}};var x=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join(\"\\n\")}}()},function(t,e){t.exports=function(t){var e=\"undefined\"!=typeof window&&window.location;if(!e)throw new Error(\"fixUrls requires window.location\");if(!t||\"string\"!=typeof t)return t;var n=e.protocol+\"//\"+e.host,o=n+e.pathname.replace(/\\/[^\\/]*$/,\"/\");return t.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,function(t,e){var r=e.trim().replace(/^\"(.*)\"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});if(/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(r))return t;var i;return i=0===r.indexOf(\"//\")?r:0===r.indexOf(\"/\")?n+r:o+r.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(i)+\")\"})}},function(t,e,n){var o=n(17);\"undefined\"==typeof window||window.Promise||(window.Promise=o),n(21),String.prototype.includes||(String.prototype.includes=function(t,e){\"use strict\";return\"number\"!=typeof e&&(e=0),!(e+t.length>this.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,\"includes\",{value:function(t,e){if(null==this)throw new TypeError('\"this\" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i<o;){if(function(t,e){return t===e||\"number\"==typeof t&&\"number\"==typeof e&&isNaN(t)&&isNaN(e)}(n[i],t))return!0;i++}return!1}}),\"undefined\"!=typeof window&&function(t){t.forEach(function(t){t.hasOwnProperty(\"remove\")||Object.defineProperty(t,\"remove\",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype])},function(t,e,n){(function(e){!function(n){function o(){}function r(t,e){return function(){t.apply(e,arguments)}}function i(t){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(t,this)}function a(t,e){for(;3===t._state;)t=t._value;if(0===t._state)return void t._deferreds.push(e);t._handled=!0,i._immediateFn(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?s:c)(e.promise,t._value);var o;try{o=n(t._value)}catch(t){return void c(e.promise,t)}s(e.promise,o)})}function s(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void l(t);if(\"function\"==typeof n)return void f(r(n,e),t)}t._state=1,t._value=e,l(t)}catch(e){c(t,e)}}function c(t,e){t._state=2,t._value=e,l(t)}function l(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)a(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=n}function f(t,e){var n=!1;try{t(function(t){n||(n=!0,s(e,t))},function(t){n||(n=!0,c(e,t))})}catch(t){if(n)return;n=!0,c(e,t)}}var d=setTimeout;i.prototype.catch=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(o);return a(this,new u(t,e,n)),n},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function o(i,a){try{if(a&&(\"object\"==typeof a||\"function\"==typeof a)){var s=a.then;if(\"function\"==typeof s)return void s.call(a,function(t){o(i,t)},n)}e[i]=a,0==--r&&t(e)}catch(t){n(t)}}if(0===e.length)return t([]);for(var r=e.length,i=0;i<e.length;i++)o(i,e[i])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var o=0,r=t.length;o<r;o++)t[o].then(e,n)})},i._immediateFn=\"function\"==typeof e&&function(t){e(t)}||function(t){d(t,0)},i._unhandledRejectionFn=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==t&&t.exports?t.exports=i:n.Promise||(n.Promise=i)}(this)}).call(e,n(18).setImmediate)},function(t,e,n){function o(t,e){this._id=t,this._clearFn=e}var r=Function.prototype.apply;e.setTimeout=function(){return new o(r.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new o(r.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){\"use strict\";function o(t){\"function\"!=typeof t&&(t=new Function(\"\"+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return l[c]=o,s(c),c++}function r(t){delete l[t]}function i(t){var e=t.callback,o=t.args;switch(o.length){case 0:e();break;case 1:e(o[0]);break;case 2:e(o[0],o[1]);break;case 3:e(o[0],o[1],o[2]);break;default:e.apply(n,o)}}function a(t){if(u)setTimeout(a,0,t);else{var e=l[t];if(e){u=!0;try{i(e)}finally{r(t),u=!1}}}}if(!t.setImmediate){var s,c=1,l={},u=!1,f=t.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(t);d=d&&d.setTimeout?d:t,\"[object process]\"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage(\"\",\"*\"),t.onmessage=n,e}}()?function(){var e=\"setImmediate$\"+Math.random()+\"$\",n=function(n){n.source===t&&\"string\"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener(\"message\",n,!1):t.attachEvent(\"onmessage\",n),s=function(n){t.postMessage(e+n,\"*\")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():f&&\"onreadystatechange\"in f.createElement(\"script\")?function(){var t=f.documentElement;s=function(e){var n=f.createElement(\"script\");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),d.setImmediate=o,d.clearImmediate=r}}(\"undefined\"==typeof self?void 0===t?this:t:self)}).call(e,n(7),n(20))},function(t,e){function n(){throw new Error(\"setTimeout has not been defined\")}function o(){throw new Error(\"clearTimeout has not been defined\")}function r(t){if(u===setTimeout)return setTimeout(t,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function i(t){if(f===clearTimeout)return clearTimeout(t);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){b&&p&&(b=!1,p.length?m=p.concat(m):v=-1,m.length&&s())}function s(){if(!b){var t=r(a);b=!0;for(var e=m.length;e;){for(p=m,m=[];++v<e;)p&&p[v].run();v=-1,e=m.length}p=null,b=!1,i(t)}}function c(t,e){this.fun=t,this.array=e}function l(){}var u,f,d=t.exports={};!function(){try{u=\"function\"==typeof setTimeout?setTimeout:n}catch(t){u=n}try{f=\"function\"==typeof clearTimeout?clearTimeout:o}catch(t){f=o}}();var p,m=[],b=!1,v=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];m.push(new c(t,e)),1!==m.length||b||r(s)},c.prototype.run=function(){this.fun.apply(null,this.array)},d.title=\"browser\",d.browser=!0,d.env={},d.argv=[],d.version=\"\",d.versions={},d.on=l,d.addListener=l,d.once=l,d.off=l,d.removeListener=l,d.removeAllListeners=l,d.emit=l,d.prependListener=l,d.prependOnceListener=l,d.listeners=function(t){return[]},d.binding=function(t){throw new Error(\"process.binding is not supported\")},d.cwd=function(){return\"/\"},d.chdir=function(t){throw new Error(\"process.chdir is not supported\")},d.umask=function(){return 0}},function(t,e,n){\"use strict\";n(22).polyfill()},function(t,e,n){\"use strict\";function o(t,e){if(void 0===t||null===t)throw new TypeError(\"Cannot convert first argument to object\");for(var n=Object(t),o=1;o<arguments.length;o++){var r=arguments[o];if(void 0!==r&&null!==r)for(var i=Object.keys(Object(r)),a=0,s=i.length;a<s;a++){var c=i[a],l=Object.getOwnPropertyDescriptor(r,c);void 0!==l&&l.enumerable&&(n[c]=r[c])}}return n}function r(){Object.assign||Object.defineProperty(Object,\"assign\",{enumerable:!1,configurable:!0,writable:!0,value:o})}t.exports={assign:o,polyfill:r}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(24),r=n(6),i=n(5),a=n(36),s=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(\"undefined\"!=typeof window){var n=a.getOpts.apply(void 0,t);return new Promise(function(t,e){i.default.promise={resolve:t,reject:e},o.default(n),setTimeout(function(){r.openModal()})})}};s.close=r.onAction,s.getState=r.getState,s.setActionValue=i.setActionValue,s.stopLoading=r.stopLoading,s.setDefaults=a.setDefaults,e.default=s},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(0),i=r.default.MODAL,a=n(4),s=n(34),c=n(35),l=n(1);e.init=function(t){o.getNode(i)||(document.body||l.throwErr(\"You can only use SweetAlert AFTER the DOM has loaded!\"),s.default(),a.default()),a.initModalContent(t),c.default(t)},e.default=e.init},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.MODAL;e.modalMarkup='\\n <div class=\"'+r+'\" role=\"dialog\" aria-modal=\"true\"></div>',e.default=e.modalMarkup},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.OVERLAY,i='<div \\n class=\"'+r+'\"\\n tabIndex=\"-1\">\\n </div>';e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+\"--error\",e=t+\"__line\";return'\\n <div class=\"'+t+'__x-mark\">\\n <span class=\"'+e+\" \"+e+'--left\"></span>\\n <span class=\"'+e+\" \"+e+'--right\"></span>\\n </div>\\n '},e.warningIconMarkup=function(){var t=r+\"--warning\";return'\\n <span class=\"'+t+'__body\">\\n <span class=\"'+t+'__dot\"></span>\\n </span>\\n '},e.successIconMarkup=function(){var t=r+\"--success\";return'\\n <span class=\"'+t+\"__line \"+t+'__line--long\"></span>\\n <span class=\"'+t+\"__line \"+t+'__line--tip\"></span>\\n\\n <div class=\"'+t+'__ring\"></div>\\n <div class=\"'+t+'__hide-corners\"></div>\\n '}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\\n <div class=\"'+r+'\">\\n\\n </div>\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\\n <div class=\"'+r+'\">\\n\\n <button\\n class=\"'+i+'\"\\n ></button>\\n\\n <div class=\"'+a+'\">\\n <div></div>\\n <div></div>\\n <div></div>\\n </div>\\n\\n </div>\\n'},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=[\"error\",\"warning\",\"success\",\"info\"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+\"--\"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement(\"img\");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes(\"AppleWebKit\")&&(t.style.display=\"none\",t.offsetHeight,t.style.display=\"\")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split(\"\\n\").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n<o.length-1&&e.appendChild(document.createElement(\"br\"))});var n=r.injectElIntoModal(o.textMarkup);n.appendChild(e),i(n)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(4),i=n(0),a=i.default.BUTTON,s=i.default.DANGER_BUTTON,c=n(3),l=n(2),u=n(6),f=n(5),d=function(t,e,n){var r=e.text,i=e.value,d=e.className,p=e.closeModal,m=o.stringToNode(l.buttonMarkup),b=m.querySelector(\".\"+a),v=a+\"--\"+t;if(b.classList.add(v),d){(Array.isArray(d)?d:d.split(\" \")).filter(function(t){return t.length>0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener(\"click\",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener(\"input\",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener(\"keyup\",function(t){if(\"Enter\"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue(\"\")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+\"__\"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}\"input\"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;\"string\"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case\"Escape\":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case\"Tab\":return f(t)}},b=function(t){if(o.default.isOpen)return\"Tab\"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener(\"keydown\",m)},w=function(t){t[0].addEventListener(\"keydown\",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll(\".\"+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener(\"click\",x),t&&e.addEventListener(\"click\",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener(\"keyup\",p):document.removeEventListener(\"keyup\",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr(\"Cannot set both 'button' and 'buttons' options!\"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+\" argument ('\"+t+\"') is invalid\")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr(\"Expected \"+u(n)+\" argument ('\"+r+\"') to be a plain object\")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr(\"Unexpected \"+u(n)+\" argument (\"+r+\")\")},m=function(t,e,n,r){var i=typeof e,a=\"string\"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n={};t.forEach(function(e,o){var r=m(0,e,o,t);Object.assign(n,r)});var o=l(n);n.buttons=r.getButtonListOpts(o),delete n.button,n.content=i.getContentOpts(n.content);var u=Object.assign({},s,c,n);return Object.keys(u).forEach(function(t){a.DEPRECATED_OPTS[t]&&a.logDeprecation(t)}),u}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(1),r={element:\"input\",attributes:{placeholder:\"\"}};e.getContentOpts=function(t){var e={};return o.isPlainObject(t)?Object.assign(e,t):t instanceof Element?{element:t}:\"input\"===t?r:null}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.logDeprecation=function(t){var n=e.DEPRECATED_OPTS[t],o=n.onlyRename,r=n.replacement,i=n.subOption,a=n.link,s=o?\"renamed\":\"deprecated\",c='SweetAlert warning: \"'+t+'\" option has been '+s+\".\";if(r){c+=\" Please use\"+(i?' \"'+i+'\" in ':\" \")+'\"'+r+'\" instead.'}var l=\"https://sweetalert.js.org\";c+=a?\" More details: \"+l+a:\" More details: \"+l+\"/guides/#upgrading-from-1x\",console.warn(c)},e.DEPRECATED_OPTS={type:{replacement:\"icon\",link:\"/docs/#icon\"},imageUrl:{replacement:\"icon\",link:\"/docs/#icon\"},customClass:{replacement:\"className\",onlyRename:!0,link:\"/docs/#classname\"},imageSize:{},showCancelButton:{replacement:\"buttons\",link:\"/docs/#buttons\"},showConfirmButton:{replacement:\"button\",link:\"/docs/#button\"},confirmButtonText:{replacement:\"button\",link:\"/docs/#button\"},confirmButtonColor:{},cancelButtonText:{replacement:\"buttons\",link:\"/docs/#buttons\"},closeOnConfirm:{replacement:\"button\",subOption:\"closeModal\",link:\"/docs/#button\"},closeOnCancel:{replacement:\"buttons\",subOption:\"closeModal\",link:\"/docs/#buttons\"},showLoaderOnConfirm:{replacement:\"buttons\"},animation:{},inputType:{replacement:\"content\",link:\"/docs/#content\"},inputValue:{replacement:\"content\",link:\"/docs/#content\"},inputPlaceholder:{replacement:\"content\",link:\"/docs/#content\"},html:{replacement:\"content\",link:\"/docs/#content\"},allowEscapeKey:{replacement:\"closeOnEsc\",onlyRename:!0,link:\"/docs/#closeonesc\"},allowClickOutside:{replacement:\"closeOnClickOutside\",onlyRename:!0,link:\"/docs/#closeonclickoutside\"}}}])});","import { Controller } from \"@hotwired/stimulus\"\nimport swal from \"sweetalert\"\n\n// Connects to data-controller=\"locale-control\"\nexport default class extends Controller {\n turboNativeLocaleSelection() {\n swal(I18n.choose_locale, {\n className: \"center-swal-modal-footer\",\n buttons: {\n en: I18n.locale_options.en,\n de: I18n.locale_options.de,\n },\n }).then((value) => {\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.set(\"locale\", value);\n Turbo.visit(currentUrl.href);\n });\n }\n}\n","/*\nHotwire Native Bridge 1.0.0\nCopyright © 2024 37signals LLC\n*/\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\n\n// src/bridge.js\nvar Bridge = class {\n #adapter;\n #lastMessageId;\n #pendingMessages;\n #pendingCallbacks;\n constructor() {\n this.#adapter = null;\n this.#lastMessageId = 0;\n this.#pendingMessages = [];\n this.#pendingCallbacks = /* @__PURE__ */ new Map();\n }\n start() {\n this.notifyApplicationAfterStart();\n }\n notifyApplicationAfterStart() {\n document.dispatchEvent(new Event(\"web-bridge:ready\"));\n }\n supportsComponent(component) {\n if (this.#adapter) {\n return this.#adapter.supportsComponent(component);\n } else {\n return false;\n }\n }\n send({ component, event, data, callback }) {\n if (!this.#adapter) {\n this.#savePendingMessage({ component, event, data, callback });\n return null;\n }\n if (!this.supportsComponent(component))\n return null;\n const id = this.generateMessageId();\n const message = { id, component, event, data: data || {} };\n this.#adapter.receive(message);\n if (callback) {\n this.#pendingCallbacks.set(id, callback);\n }\n return id;\n }\n receive(message) {\n this.executeCallbackFor(message);\n }\n executeCallbackFor(message) {\n const callback = this.#pendingCallbacks.get(message.id);\n if (callback) {\n callback(message);\n }\n }\n removeCallbackFor(messageId) {\n if (this.#pendingCallbacks.has(messageId)) {\n this.#pendingCallbacks.delete(messageId);\n }\n }\n removePendingMessagesFor(component) {\n this.#pendingMessages = this.#pendingMessages.filter((message) => message.component != component);\n }\n generateMessageId() {\n const id = ++this.#lastMessageId;\n return id.toString();\n }\n setAdapter(adapter) {\n this.#adapter = adapter;\n document.documentElement.dataset.bridgePlatform = this.#adapter.platform;\n this.adapterDidUpdateSupportedComponents();\n this.#sendPendingMessages();\n }\n adapterDidUpdateSupportedComponents() {\n if (this.#adapter) {\n document.documentElement.dataset.bridgeComponents = this.#adapter.supportedComponents.join(\" \");\n }\n }\n #savePendingMessage(message) {\n this.#pendingMessages.push(message);\n }\n #sendPendingMessages() {\n this.#pendingMessages.forEach((message) => this.send(message));\n this.#pendingMessages = [];\n }\n};\n\n// src/bridge_component.js\nimport { Controller } from \"@hotwired/stimulus\";\n\n// src/bridge_element.js\nvar BridgeElement = class {\n constructor(element) {\n this.element = element;\n }\n get title() {\n return (this.bridgeAttribute(\"title\") || this.attribute(\"aria-label\") || this.element.textContent || this.element.value).trim();\n }\n get enabled() {\n return !this.disabled;\n }\n get disabled() {\n const disabled = this.bridgeAttribute(\"disabled\");\n return disabled === \"true\" || disabled === this.platform;\n }\n enableForComponent(component) {\n if (component.enabled) {\n this.removeBridgeAttribute(\"disabled\");\n }\n }\n hasClass(className) {\n return this.element.classList.contains(className);\n }\n attribute(name) {\n return this.element.getAttribute(name);\n }\n bridgeAttribute(name) {\n return this.attribute(`data-bridge-${name}`);\n }\n setBridgeAttribute(name, value) {\n this.element.setAttribute(`data-bridge-${name}`, value);\n }\n removeBridgeAttribute(name) {\n this.element.removeAttribute(`data-bridge-${name}`);\n }\n click() {\n if (this.platform == \"android\") {\n this.element.removeAttribute(\"target\");\n }\n this.element.click();\n }\n get platform() {\n return document.documentElement.dataset.bridgePlatform;\n }\n};\n\n// src/helpers/user_agent.js\nvar { userAgent } = window.navigator;\nvar isHotwireNativeApp = /bridge-components: \\[.+\\]/.test(userAgent);\n\n// src/bridge_component.js\nvar BridgeComponent = class extends Controller {\n static get shouldLoad() {\n return isHotwireNativeApp;\n }\n pendingMessageCallbacks = [];\n initialize() {\n this.pendingMessageCallbacks = [];\n }\n connect() {\n }\n disconnect() {\n this.removePendingCallbacks();\n this.removePendingMessages();\n }\n get component() {\n return this.constructor.component;\n }\n get platformOptingOut() {\n const { bridgePlatform } = document.documentElement.dataset;\n return this.identifier == this.element.getAttribute(`data-controller-optout-${bridgePlatform}`);\n }\n get enabled() {\n return !this.platformOptingOut && this.bridge.supportsComponent(this.component);\n }\n send(event, data = {}, callback) {\n data.metadata = {\n url: window.location.href\n };\n const message = { component: this.component, event, data, callback };\n const messageId = this.bridge.send(message);\n if (callback) {\n this.pendingMessageCallbacks.push(messageId);\n }\n }\n removePendingCallbacks() {\n this.pendingMessageCallbacks.forEach((messageId) => this.bridge.removeCallbackFor(messageId));\n }\n removePendingMessages() {\n this.bridge.removePendingMessagesFor(this.component);\n }\n get bridgeElement() {\n return new BridgeElement(this.element);\n }\n get bridge() {\n return window.Strada.web;\n }\n};\n__publicField(BridgeComponent, \"component\", \"\");\n\n// src/index.js\nif (!window.Strada) {\n const webBridge = new Bridge();\n window.Strada = { web: webBridge };\n webBridge.start();\n}\nexport {\n BridgeComponent,\n BridgeElement\n};\n","import { BridgeComponent } from \"@hotwired/hotwire-native-bridge\"\n\n// Connects to data-controller=\"native--base-url\"\nexport default class extends BridgeComponent {\n static component = \"base-url\"\n\n connect() {\n super.connect()\n }\n\n updateBaseURL({ params: { url } }) {\n this.send(\"updateBaseURL\", { url })\n }\n}\n","export const getMetaValue = (name) => {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element.getAttribute(\"content\")\n}\n\nexport const createMetaTag = (name, content) => {\n const metaTag = document.createElement(\"meta\")\n metaTag.name = name\n metaTag.content = content\n document.head.appendChild(metaTag)\n}\n\nexport const setFullPageReloadOnNextNavigation = () => {\n createMetaTag(\"turbo-visit-control\", \"reload\")\n}\n\nexport const setCookie = (name, value, days = 400) => {\n // 400 days is the recommended maximum lifetime for cookies\n let expires = \"\"\n if (days) {\n const date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000) // days * hours * minutes * seconds * milliseconds\n expires = `; expires=${date.toUTCString()}`\n }\n document.cookie = `${name}=${value || \"\"}${expires}; path=/`\n}\n\nexport const getCookie = (name) => {\n name = `${name}=`\n const decodedCookie = decodeURIComponent(document.cookie)\n const cookieArray = decodedCookie.split(\";\")\n\n for (let i = 0; i < cookieArray.length; i++) {\n let cookie = cookieArray[i]\n while (cookie.charAt(0) === \" \") {\n cookie = cookie.substring(1)\n }\n if (cookie.indexOf(name) === 0) {\n return cookie.substring(name.length, cookie.length)\n }\n }\n\n return null\n}\n\nexport const debounce = (fn, delay) => {\n let timeoutId = null\n\n return (...args) => {\n const callback = () => fn.apply(this, args)\n clearTimeout(timeoutId)\n timeoutId = setTimeout(callback, delay)\n }\n}\n\nconst { userAgent } = window.navigator\nexport const isIosApp = /Turbo Native iOS/.test(userAgent)\nexport const isAndroidApp = /Turbo Native Android/.test(userAgent)\nexport const isMobileApp = isIosApp || isAndroidApp\nexport const mobileAppPlatform = isMobileApp ? (isIosApp ? \"ios\" : \"android\") : null\nexport const mobileAppVersion = isMobileApp ? (userAgent.match(/app_version: ([^;]+)/) || [])[1] : null // ([^;]+) => all characters except semicolon\nexport const mobileAppUniqueDeviceId = isMobileApp ? (userAgent.match(/unique_device_id: ([^;]+)/) || [])[1] : null // ([^;]+) => all characters except semicolon\n\nexport default {\n createMetaTag,\n setFullPageReloadOnNextNavigation,\n getMetaValue,\n debounce,\n isIosApp,\n isAndroidApp,\n isMobileApp,\n mobileAppPlatform,\n mobileAppVersion,\n mobileAppUniqueDeviceId,\n setCookie,\n getCookie,\n}\n","import { BridgeComponent } from \"@hotwired/hotwire-native-bridge\"\nimport { post } from \"@rails/request.js\"\nimport { debounce } from \"../../lib/utils\"\n\n// Dies ist unser Haupt Bridge Controller, mit dem wir Nachrichten an die Hotwire Native App senden können.\n// Damit wir nicht für kleinere Dinge, eine eigenständige component machen müssen\n\n// Connects to data-controller=\"native--bridge\"\nexport default class extends BridgeComponent {\n static component = \"bridge\"\n\n connect() {\n super.connect()\n\n // Wir senden ein \"connect\" runter, damit die Mobile App jederzeit auf dieses Event antworten kann\n // (damit die Mobile App etwas hochsenden kann, muss zuerst etwas runtergesendet werden)\n this.send(\"connect\", {}, (message) => {\n const callbackReason = message.data.callbackReason\n switch (callbackReason) {\n case \"didPressMenuButton\":\n this.dispatchEvent(\"toggle-mobile-app-nav-bar\")\n break\n default:\n console.log(\"#connect unknown callbackReason \" + callbackReason)\n }\n })\n }\n\n // Wird debounce das CustomEvent erstellen, falls aus irgendeinem Grund die App kurz nacheinander eine Nachricht sendet\n dispatchEvent = debounce((eventName) => {\n const event = new CustomEvent(eventName)\n window.dispatchEvent(event)\n }, 10)\n}\n","/*\n * stimulus-use 0.52.2\n */\nimport { Controller } from \"@hotwired/stimulus\";\n\nconst method = (controller, methodName) => {\n const method = controller[methodName];\n if (typeof method == \"function\") {\n return method;\n } else {\n return (...args) => {};\n }\n};\n\nconst composeEventName = (name, controller, eventPrefix) => {\n let composedName = name;\n if (eventPrefix === true) {\n composedName = `${controller.identifier}:${name}`;\n } else if (typeof eventPrefix === \"string\") {\n composedName = `${eventPrefix}:${name}`;\n }\n return composedName;\n};\n\nconst extendedEvent = (type, event, detail) => {\n const {bubbles: bubbles, cancelable: cancelable, composed: composed} = event || {\n bubbles: true,\n cancelable: true,\n composed: true\n };\n if (event) {\n Object.assign(detail, {\n originalEvent: event\n });\n }\n const customEvent = new CustomEvent(type, {\n bubbles: bubbles,\n cancelable: cancelable,\n composed: composed,\n detail: detail\n });\n return customEvent;\n};\n\nfunction isElementInViewport(el) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const vertInView = rect.top <= windowHeight && rect.top + rect.height > 0;\n const horInView = rect.left <= windowWidth && rect.left + rect.width > 0;\n return vertInView && horInView;\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, ((_, char) => char.toUpperCase()));\n}\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise */ function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nconst defaultOptions$8 = {\n debug: false,\n logger: console,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nclass StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c;\n this.log = (functionName, args) => {\n if (!this.debug) return;\n this.logger.groupCollapsed(`%c${this.controller.identifier} %c#${functionName}`, \"color: #3B82F6\", \"color: unset\");\n this.logger.log(Object.assign({\n controllerId: this.controllerId\n }, args));\n this.logger.groupEnd();\n };\n this.warn = message => {\n this.logger.warn(`%c${this.controller.identifier} %c${message}`, \"color: #3B82F6; font-weight: bold\", \"color: unset\");\n };\n this.dispatch = (eventName, details = {}) => {\n if (this.dispatchEvent) {\n const {event: event} = details, eventDetails = __rest(details, [ \"event\" ]);\n const customEvent = this.extendedEvent(eventName, event || null, eventDetails);\n this.targetElement.dispatchEvent(customEvent);\n this.log(\"dispatchEvent\", Object.assign({\n eventName: customEvent.type\n }, eventDetails));\n }\n };\n this.call = (methodName, args = {}) => {\n const method = this.controller[methodName];\n if (typeof method == \"function\") {\n return method.call(this.controller, args);\n }\n };\n this.extendedEvent = (name, event, detail) => {\n const {bubbles: bubbles, cancelable: cancelable, composed: composed} = event || {\n bubbles: true,\n cancelable: true,\n composed: true\n };\n if (event) {\n Object.assign(detail, {\n originalEvent: event\n });\n }\n const customEvent = new CustomEvent(this.composeEventName(name), {\n bubbles: bubbles,\n cancelable: cancelable,\n composed: composed,\n detail: detail\n });\n return customEvent;\n };\n this.composeEventName = name => {\n let composedName = name;\n if (this.eventPrefix === true) {\n composedName = `${this.controller.identifier}:${name}`;\n } else if (typeof this.eventPrefix === \"string\") {\n composedName = `${this.eventPrefix}:${name}`;\n }\n return composedName;\n };\n this.debug = (_b = (_a = options === null || options === void 0 ? void 0 : options.debug) !== null && _a !== void 0 ? _a : controller.application.stimulusUseDebug) !== null && _b !== void 0 ? _b : defaultOptions$8.debug;\n this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : defaultOptions$8.logger;\n this.controller = controller;\n this.controllerId = controller.element.id || controller.element.dataset.id;\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$8, options);\n Object.assign(this, {\n dispatchEvent: dispatchEvent,\n eventPrefix: eventPrefix\n });\n this.controllerInitialize = controller.initialize.bind(controller);\n this.controllerConnect = controller.connect.bind(controller);\n this.controllerDisconnect = controller.disconnect.bind(controller);\n }\n}\n\nconst defaultOptions$7 = {\n eventPrefix: true,\n bubbles: true,\n cancelable: true\n};\n\nclass UseDispatch extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.dispatch = (eventName, detail = {}) => {\n const {controller: controller, targetElement: targetElement, eventPrefix: eventPrefix, bubbles: bubbles, cancelable: cancelable, log: log, warn: warn} = this;\n Object.assign(detail, {\n controller: controller\n });\n const eventNameWithPrefix = composeEventName(eventName, this.controller, eventPrefix);\n const event = new CustomEvent(eventNameWithPrefix, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n targetElement.dispatchEvent(event);\n warn(\"`useDispatch()` is deprecated. Please use the built-in `this.dispatch()` function from Stimulus. You can find more information on how to upgrade at: https://stimulus-use.github.io/stimulus-use/#/use-dispatch\");\n log(\"dispatch\", {\n eventName: eventNameWithPrefix,\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n return event;\n };\n this.targetElement = (_a = options.element) !== null && _a !== void 0 ? _a : controller.element;\n this.eventPrefix = (_b = options.eventPrefix) !== null && _b !== void 0 ? _b : defaultOptions$7.eventPrefix;\n this.bubbles = (_c = options.bubbles) !== null && _c !== void 0 ? _c : defaultOptions$7.bubbles;\n this.cancelable = (_d = options.cancelable) !== null && _d !== void 0 ? _d : defaultOptions$7.cancelable;\n this.enhanceController();\n }\n enhanceController() {\n Object.assign(this.controller, {\n dispatch: this.dispatch\n });\n }\n}\n\nconst useDispatch = (controller, options = {}) => new UseDispatch(controller, options);\n\nconst defaultOptions$6 = {\n overwriteDispatch: true\n};\n\nconst useApplication = (controller, options = {}) => {\n const {overwriteDispatch: overwriteDispatch} = Object.assign({}, defaultOptions$6, options);\n Object.defineProperty(controller, \"isPreview\", {\n get() {\n return document.documentElement.hasAttribute(\"data-turbolinks-preview\") || document.documentElement.hasAttribute(\"data-turbo-preview\");\n }\n });\n Object.defineProperty(controller, \"isConnected\", {\n get() {\n return !!Array.from(this.context.module.connectedContexts).find((c => c === this.context));\n }\n });\n Object.defineProperty(controller, \"csrfToken\", {\n get() {\n return this.metaValue(\"csrf-token\");\n }\n });\n if (overwriteDispatch) {\n useDispatch(controller, options);\n }\n Object.assign(controller, {\n metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute(\"content\");\n }\n });\n};\n\nclass ApplicationController extends Controller {\n constructor(context) {\n super(context);\n this.isPreview = false;\n this.isConnected = false;\n this.csrfToken = \"\";\n useApplication(this, this.options);\n }\n}\n\nconst defaultOptions$5 = {\n events: [ \"click\", \"touchend\" ],\n onlyVisible: true,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useClickOutside = (composableController, options = {}) => {\n const controller = composableController;\n const {onlyVisible: onlyVisible, dispatchEvent: dispatchEvent, events: events, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$5, options);\n const onEvent = event => {\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n if (targetElement.contains(event.target) || !isElementInViewport(targetElement) && onlyVisible) {\n return;\n }\n if (controller.clickOutside) {\n controller.clickOutside(event);\n }\n if (dispatchEvent) {\n const eventName = composeEventName(\"click:outside\", controller, eventPrefix);\n const clickOutsideEvent = extendedEvent(eventName, event, {\n controller: controller\n });\n targetElement.dispatchEvent(clickOutsideEvent);\n }\n };\n const observe = () => {\n events === null || events === void 0 ? void 0 : events.forEach((event => {\n window.addEventListener(event, onEvent, true);\n }));\n };\n const unobserve = () => {\n events === null || events === void 0 ? void 0 : events.forEach((event => {\n window.removeEventListener(event, onEvent, true);\n }));\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass ClickOutsideComposableController extends Controller {}\n\nclass ClickOutsideController extends ClickOutsideComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useClickOutside(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass DebounceController extends Controller {}\n\nDebounceController.debounces = [];\n\nconst defaultWait$1 = 200;\n\nconst debounce = (fn, wait = defaultWait$1) => {\n let timeoutId = null;\n return function() {\n const args = Array.from(arguments);\n const context = this;\n const params = args.map((arg => arg.params));\n const callback = () => {\n args.forEach(((arg, index) => arg.params = params[index]));\n return fn.apply(context, args);\n };\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(callback, wait);\n };\n};\n\nconst useDebounce = (composableController, options) => {\n const controller = composableController;\n const constructor = controller.constructor;\n constructor.debounces.forEach((func => {\n if (typeof func === \"string\") {\n controller[func] = debounce(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === \"object\") {\n const {name: name, wait: wait} = func;\n if (!name) return;\n controller[name] = debounce(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n }));\n};\n\nclass UseHover extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.targetElement.addEventListener(\"mouseenter\", this.onEnter);\n this.targetElement.addEventListener(\"mouseleave\", this.onLeave);\n };\n this.unobserve = () => {\n this.targetElement.removeEventListener(\"mouseenter\", this.onEnter);\n this.targetElement.removeEventListener(\"mouseleave\", this.onLeave);\n };\n this.onEnter = event => {\n this.call(\"mouseEnter\", event);\n this.log(\"mouseEnter\", {\n hover: true\n });\n this.dispatch(\"mouseEnter\", {\n hover: false\n });\n };\n this.onLeave = event => {\n this.call(\"mouseLeave\", event);\n this.log(\"mouseLeave\", {\n hover: false\n });\n this.dispatch(\"mouseLeave\", {\n hover: false\n });\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useHover = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseHover(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass HoverComposableController extends Controller {}\n\nclass HoverController extends HoverComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useHover(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultEvents = [ \"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\" ];\n\nconst oneMinute = 6e4;\n\nconst defaultOptions$4 = {\n ms: oneMinute,\n initialState: false,\n events: defaultEvents,\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useIdle = (composableController, options = {}) => {\n const controller = composableController;\n const {ms: ms, initialState: initialState, events: events, dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$4, options);\n let isIdle = initialState;\n let timeout = setTimeout((() => {\n isIdle = true;\n dispatchAway();\n }), ms);\n const dispatchAway = event => {\n const eventName = composeEventName(\"away\", controller, eventPrefix);\n controller.isIdle = true;\n method(controller, \"away\").call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, {\n controller: controller\n });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const dispatchBack = event => {\n const eventName = composeEventName(\"back\", controller, eventPrefix);\n controller.isIdle = false;\n method(controller, \"back\").call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, {\n controller: controller\n });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const onEvent = event => {\n if (isIdle) dispatchBack(event);\n isIdle = false;\n clearTimeout(timeout);\n timeout = setTimeout((() => {\n isIdle = true;\n dispatchAway(event);\n }), ms);\n };\n const onVisibility = event => {\n if (!document.hidden) onEvent(event);\n };\n if (isIdle) {\n dispatchAway();\n } else {\n dispatchBack();\n }\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n events.forEach((event => {\n window.addEventListener(event, onEvent);\n }));\n document.addEventListener(\"visibilitychange\", onVisibility);\n };\n const unobserve = () => {\n clearTimeout(timeout);\n events.forEach((event => {\n window.removeEventListener(event, onEvent);\n }));\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass IdleComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isIdle = false;\n }\n}\n\nclass IdleController extends IdleComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useIdle(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$3 = {\n dispatchEvent: true,\n eventPrefix: true,\n visibleAttribute: \"isVisible\"\n};\n\nconst useIntersection = (composableController, options = {}) => {\n const controller = composableController;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix, visibleAttribute: visibleAttribute} = Object.assign({}, defaultOptions$3, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n if (!controller.intersectionElements) controller.intersectionElements = [];\n controller.intersectionElements.push(targetElement);\n const callback = entries => {\n const [entry] = entries;\n if (entry.isIntersecting) {\n dispatchAppear(entry);\n } else if (targetElement.hasAttribute(visibleAttribute)) {\n dispatchDisappear(entry);\n }\n };\n const observer = new IntersectionObserver(callback, options);\n const dispatchAppear = entry => {\n targetElement.setAttribute(visibleAttribute, \"true\");\n method(controller, \"appear\").call(controller, entry, observer);\n if (dispatchEvent) {\n const eventName = composeEventName(\"appear\", controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry,\n observer: observer\n });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const dispatchDisappear = entry => {\n targetElement.removeAttribute(visibleAttribute);\n method(controller, \"disappear\").call(controller, entry, observer);\n if (dispatchEvent) {\n const eventName = composeEventName(\"disappear\", controller, eventPrefix);\n const disappearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry,\n observer: observer\n });\n targetElement.dispatchEvent(disappearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const disconnect = () => {\n unobserve();\n controllerDisconnect();\n };\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n const noneVisible = () => controller.intersectionElements.filter((element => element.hasAttribute(visibleAttribute))).length === 0;\n const oneVisible = () => controller.intersectionElements.filter((element => element.hasAttribute(visibleAttribute))).length === 1;\n const atLeastOneVisible = () => controller.intersectionElements.some((element => element.hasAttribute(visibleAttribute)));\n const allVisible = () => controller.intersectionElements.every((element => element.hasAttribute(visibleAttribute)));\n const isVisible = allVisible;\n Object.assign(controller, {\n isVisible: isVisible,\n noneVisible: noneVisible,\n oneVisible: oneVisible,\n atLeastOneVisible: atLeastOneVisible,\n allVisible: allVisible,\n disconnect: disconnect\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass IntersectionComposableController extends Controller {}\n\nclass IntersectionController extends IntersectionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useIntersection(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst useLazyLoad = (controller, options) => {\n const callback = entries => {\n const [entry] = entries;\n if (entry.isIntersecting && !controller.isLoaded) {\n handleAppear();\n }\n };\n const handleAppear = entry => {\n const src = controller.data.get(\"src\");\n if (!src) return;\n const imageElement = controller.element;\n controller.isLoading = true;\n method(controller, \"loading\").call(controller, src);\n imageElement.onload = () => {\n handleLoaded(src);\n };\n imageElement.src = src;\n };\n const handleLoaded = src => {\n controller.isLoading = false;\n controller.isLoaded = true;\n method(controller, \"loaded\").call(controller, src);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new IntersectionObserver(callback, options);\n const observe = () => {\n observer.observe(controller.element);\n };\n const unobserve = () => {\n observer.unobserve(controller.element);\n };\n Object.assign(controller, {\n isVisible: false,\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass LazyLoadComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isLoading = false;\n this.isLoaded = false;\n }\n}\n\nclass LazyLoadController extends LazyLoadComposableController {\n constructor(context) {\n super(context);\n this.options = {\n rootMargin: \"10%\"\n };\n requestAnimationFrame((() => {\n const [observe, unobserve] = useLazyLoad(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$2 = {\n mediaQueries: {},\n dispatchEvent: true,\n eventPrefix: true,\n debug: false\n};\n\nclass UseMatchMedia extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.matches = [];\n this.callback = event => {\n const name = Object.keys(this.mediaQueries).find((name => this.mediaQueries[name] === event.media));\n if (!name) return;\n const {media: media, matches: matches} = event;\n this.changed({\n name: name,\n media: media,\n matches: matches,\n event: event\n });\n };\n this.changed = payload => {\n const {name: name} = payload;\n if (payload.event) {\n this.call(camelize(`${name}_changed`), payload);\n this.dispatch(`${name}:changed`, payload);\n this.log(`media query \"${name}\" changed`, payload);\n }\n if (payload.matches) {\n this.call(camelize(`is_${name}`), payload);\n this.dispatch(`is:${name}`, payload);\n } else {\n this.call(camelize(`not_${name}`), payload);\n this.dispatch(`not:${name}`, payload);\n }\n };\n this.observe = () => {\n Object.keys(this.mediaQueries).forEach((name => {\n const media = this.mediaQueries[name];\n const match = window.matchMedia(media);\n match.addListener(this.callback);\n this.matches.push(match);\n this.changed({\n name: name,\n media: media,\n matches: match.matches\n });\n }));\n };\n this.unobserve = () => {\n this.matches.forEach((match => match.removeListener(this.callback)));\n };\n this.controller = controller;\n this.mediaQueries = (_a = options.mediaQueries) !== null && _a !== void 0 ? _a : defaultOptions$2.mediaQueries;\n this.dispatchEvent = (_b = options.dispatchEvent) !== null && _b !== void 0 ? _b : defaultOptions$2.dispatchEvent;\n this.eventPrefix = (_c = options.eventPrefix) !== null && _c !== void 0 ? _c : defaultOptions$2.eventPrefix;\n this.debug = (_d = options.debug) !== null && _d !== void 0 ? _d : defaultOptions$2.debug;\n if (!window.matchMedia) {\n console.error(\"window.matchMedia() is not available\");\n return;\n }\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useMatchMedia = (controller, options = {}) => {\n const observer = new UseMatchMedia(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nconst memoize = (controller, name, value) => {\n Object.defineProperty(controller, name, {\n value: value\n });\n return value;\n};\n\nconst useMemo = controller => {\n var _a;\n (_a = controller.constructor.memos) === null || _a === void 0 ? void 0 : _a.forEach((getter => {\n memoize(controller, getter, controller[getter]);\n }));\n};\n\nconst defineMetaGetter = (controller, metaName, suffix) => {\n const getterName = suffix ? `${camelize(metaName)}Meta` : camelize(metaName);\n Object.defineProperty(controller, getterName, {\n get() {\n return typeCast(metaValue(metaName));\n }\n });\n};\n\nfunction metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute(\"content\");\n}\n\nfunction typeCast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nconst useMeta = (controller, options = {\n suffix: true\n}) => {\n const metaNames = controller.constructor.metaNames;\n const suffix = options.suffix;\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName => {\n defineMetaGetter(controller, metaName, suffix);\n }));\n Object.defineProperty(controller, \"metas\", {\n get() {\n const result = {};\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName => {\n const value = typeCast(metaValue(metaName));\n if (value !== undefined && value !== null) {\n result[camelize(metaName)] = value;\n }\n }));\n return result;\n }\n });\n};\n\nclass UseMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n try {\n this.observer.observe(this.targetElement, this.options);\n } catch (error) {\n this.controller.application.handleError(error, \"At a minimum, one of childList, attributes, and/or characterData must be true\", {});\n }\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = entries => {\n this.call(\"mutate\", entries);\n this.log(\"mutate\", {\n entries: entries\n });\n this.dispatch(\"mutate\", {\n entries: entries\n });\n };\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n this.controller = controller;\n this.options = options;\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useMutation = (controller, options = {}) => {\n const observer = new UseMutation(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass MutationComposableController extends Controller {}\n\nclass MutationController extends MutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useMutation(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst defaultOptions$1 = {\n dispatchEvent: true,\n eventPrefix: true\n};\n\nconst useResize = (composableController, options = {}) => {\n const controller = composableController;\n const {dispatchEvent: dispatchEvent, eventPrefix: eventPrefix} = Object.assign({}, defaultOptions$1, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const callback = entries => {\n const [entry] = entries;\n method(controller, \"resize\").call(controller, entry.contentRect);\n if (dispatchEvent) {\n const eventName = composeEventName(\"resize\", controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, {\n controller: controller,\n entry: entry\n });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new ResizeObserver(callback);\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass ResizeComposableController extends Controller {}\n\nclass ResizeController extends ResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useResize(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass UseTargetMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.observer.observe(this.targetElement, {\n subtree: true,\n characterData: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [ this.targetSelector, this.scopedTargetSelector ]\n });\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = entries => {\n for (const mutation of entries) {\n switch (mutation.type) {\n case \"attributes\":\n let newValue = mutation.target.getAttribute(mutation.attributeName);\n let oldValue = mutation.oldValue;\n if (mutation.attributeName === this.targetSelector || mutation.attributeName === this.scopedTargetSelector) {\n let oldTargets = this.targetsUsedByThisController(oldValue);\n let newTargets = this.targetsUsedByThisController(newValue);\n let removedTargets = oldTargets.filter((target => !newTargets.includes(target)));\n let addedTargets = newTargets.filter((target => !oldTargets.includes(target)));\n removedTargets.forEach((target => this.targetRemoved(this.stripIdentifierPrefix(target), mutation.target, \"attributeChange\")));\n addedTargets.forEach((target => this.targetAdded(this.stripIdentifierPrefix(target), mutation.target, \"attributeChange\")));\n }\n break;\n\n case \"characterData\":\n let nodule = this.findTargetInAncestry(mutation.target);\n if (nodule == null) {\n return;\n } else {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n supportedTargets.forEach((target => {\n this.targetChanged(this.stripIdentifierPrefix(target), nodule, \"domMutation\");\n }));\n }\n break;\n\n case \"childList\":\n let {addedNodes: addedNodes, removedNodes: removedNodes} = mutation;\n addedNodes.forEach((node => this.processNodeDOMMutation(node, this.targetAdded)));\n removedNodes.forEach((node => this.processNodeDOMMutation(node, this.targetRemoved)));\n break;\n }\n }\n };\n this.controller = controller;\n this.options = options;\n this.targetElement = controller.element;\n this.identifier = controller.scope.identifier;\n this.identifierPrefix = `${this.identifier}.`;\n this.targetSelector = controller.scope.schema.targetAttribute;\n this.scopedTargetSelector = `data-${this.identifier}-target`;\n this.targets = options.targets || controller.constructor.targets;\n this.prefixedTargets = this.targets.map((target => `${this.identifierPrefix}${target}`));\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n processNodeDOMMutation(node, initialChangeModeAssumption) {\n let nodule = node;\n let change = initialChangeModeAssumption;\n let supportedTargets = [];\n if (nodule.nodeName == \"#text\" || this.targetsUsedByThisControllerFromNode(nodule).length == 0) {\n change = this.targetChanged;\n nodule = this.findTargetInAncestry(node);\n } else {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n if (nodule == null) {\n return;\n } else if (supportedTargets.length == 0) {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n supportedTargets.forEach((target => {\n change.call(this, this.stripIdentifierPrefix(target), nodule, \"domMutation\");\n }));\n }\n findTargetInAncestry(node) {\n let nodule = node;\n let supportedTargets = [];\n if (nodule.nodeName != \"#text\") {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n while (nodule.parentNode !== null && nodule.parentNode != this.targetElement && supportedTargets.length == 0) {\n nodule = nodule.parentNode;\n if (nodule.nodeName !== \"#text\") {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n if (supportedTargets.length > 0) {\n return nodule;\n }\n }\n }\n if (nodule.nodeName == \"#text\") {\n return null;\n }\n if (nodule.parentNode == null) {\n return null;\n }\n if (nodule.parentNode == this.targetElement) {\n if (this.targetsUsedByThisControllerFromNode(nodule).length > 0) {\n return nodule;\n }\n return null;\n }\n return null;\n }\n targetAdded(name, node, trigger) {\n let targetCallback = `${name}TargetAdded`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.warn(\"`[target]TargetAdded` is deprecated. Please use the built-in `[target]TargetConnected()` function from Stimulus.\");\n this.log(\"targetAdded\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetRemoved(name, node, trigger) {\n let targetCallback = `${name}TargetRemoved`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.warn(\"`[target]TargetRemoved` is deprecated. Please use the built-in `[target]TargetDisconnected()` function from Stimulus.\");\n this.log(\"targetRemoved\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetChanged(name, node, trigger) {\n let targetCallback = `${name}TargetChanged`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log(\"targetChanged\", {\n target: name,\n node: node,\n trigger: trigger\n });\n }\n targetsUsedByThisControllerFromNode(node) {\n if (node.nodeName == \"#text\" || node.nodeName == \"#comment\") {\n return [];\n }\n let nodeElement = node;\n return this.targetsUsedByThisController(nodeElement.getAttribute(this.scopedTargetSelector) || nodeElement.getAttribute(this.targetSelector));\n }\n targetsUsedByThisController(targetStr) {\n targetStr = targetStr || \"\";\n let targetsToCheck = this.stripIdentifierPrefix(targetStr).split(\" \");\n return this.targets.filter((n => targetsToCheck.indexOf(n) !== -1));\n }\n stripIdentifierPrefix(target) {\n return target.replace(new RegExp(this.identifierPrefix, \"g\"), \"\");\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useTargetMutation = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseTargetMutation(controller, options);\n observer.warn(\"`[target]TargetAdded` and `[target]TargetRemoved` are deprecated. Please use the built-in `[target]TargetConnected()` and `[target]TargetDisconnected()` functions from Stimulus.\");\n return [ observer.observe, observer.unobserve ];\n};\n\nclass TargetMutationComposableController extends Controller {}\n\nclass TargetMutationController extends TargetMutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useTargetMutation(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass ThrottleController extends Controller {}\n\nThrottleController.throttles = [];\n\nconst defaultWait = 200;\n\nfunction throttle(func, wait = defaultWait) {\n let inThrottle;\n return function() {\n const args = arguments;\n const context = this;\n if (!inThrottle) {\n inThrottle = true;\n func.apply(context, args);\n setTimeout((() => inThrottle = false), wait);\n }\n };\n}\n\nconst useThrottle = (composableController, options = {}) => {\n var _a;\n const controller = composableController;\n const constructor = controller.constructor;\n (_a = constructor.throttles) === null || _a === void 0 ? void 0 : _a.forEach((func => {\n if (typeof func === \"string\") {\n controller[func] = throttle(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === \"object\") {\n const {name: name, wait: wait} = func;\n if (!name) return;\n controller[name] = throttle(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n }));\n};\n\nconst alpineNames = {\n enterFromClass: \"enter\",\n enterActiveClass: \"enterStart\",\n enterToClass: \"enterEnd\",\n leaveFromClass: \"leave\",\n leaveActiveClass: \"leaveStart\",\n leaveToClass: \"leaveEnd\"\n};\n\nconst defaultOptions = {\n transitioned: false,\n hiddenClass: \"hidden\",\n preserveOriginalClass: true,\n removeToClasses: true\n};\n\nconst useTransition = (composableController, options = {}) => {\n var _a, _b, _c;\n const controller = composableController;\n const targetName = controller.element.dataset.transitionTarget;\n let targetFromAttribute;\n if (targetName) {\n targetFromAttribute = controller[`${targetName}Target`];\n }\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement)) return;\n const dataset = targetElement.dataset;\n const leaveAfter = parseInt(dataset.leaveAfter || \"\") || options.leaveAfter || 0;\n const {transitioned: transitioned, hiddenClass: hiddenClass, preserveOriginalClass: preserveOriginalClass, removeToClasses: removeToClasses} = Object.assign({}, defaultOptions, options);\n const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n async function enter(event) {\n if (controller.transitioned) return;\n controller.transitioned = true;\n controllerEnter && controllerEnter(event);\n const enterFromClasses = getAttribute(\"enterFrom\", options, dataset);\n const enterActiveClasses = getAttribute(\"enterActive\", options, dataset);\n const enterToClasses = getAttribute(\"enterTo\", options, dataset);\n const leaveToClasses = getAttribute(\"leaveTo\", options, dataset);\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n if (!removeToClasses) {\n removeClasses(targetElement, leaveToClasses);\n }\n await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (leaveAfter > 0) {\n setTimeout((() => {\n leave(event);\n }), leaveAfter);\n }\n }\n async function leave(event) {\n if (!controller.transitioned) return;\n controller.transitioned = false;\n controllerLeave && controllerLeave(event);\n const leaveFromClasses = getAttribute(\"leaveFrom\", options, dataset);\n const leaveActiveClasses = getAttribute(\"leaveActive\", options, dataset);\n const leaveToClasses = getAttribute(\"leaveTo\", options, dataset);\n const enterToClasses = getAttribute(\"enterTo\", options, dataset);\n if (!removeToClasses) {\n removeClasses(targetElement, enterToClasses);\n }\n await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n }\n function toggleTransition(event) {\n controllerToggleTransition && controllerToggleTransition(event);\n if (controller.transitioned) {\n leave();\n } else {\n enter();\n }\n }\n async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n const stashedClasses = [];\n if (preserveOriginalClass) {\n initialClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n activeClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n endClasses.forEach((cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls)));\n }\n addClasses(element, initialClasses);\n removeClasses(element, stashedClasses);\n addClasses(element, activeClasses);\n await nextAnimationFrame();\n removeClasses(element, initialClasses);\n addClasses(element, endClasses);\n await afterTransition(element);\n removeClasses(element, activeClasses);\n if (removeEndClasses) {\n removeClasses(element, endClasses);\n }\n addClasses(element, stashedClasses);\n }\n function initialState() {\n controller.transitioned = transitioned;\n if (transitioned) {\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n enter();\n } else {\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n leave();\n }\n }\n function addClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.add(...classes);\n }\n }\n function removeClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.remove(...classes);\n }\n }\n initialState();\n Object.assign(controller, {\n enter: enter,\n leave: leave,\n toggleTransition: toggleTransition\n });\n return [ enter, leave, toggleTransition ];\n};\n\nfunction getAttribute(name, options, dataset) {\n const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n const datasetAlpineName = alpineNames[name];\n const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || \" \";\n return isEmpty(classes) ? [] : classes.split(\" \");\n}\n\nasync function afterTransition(element) {\n return new Promise((resolve => {\n const duration = Number(getComputedStyle(element).transitionDuration.split(\",\")[0].replace(\"s\", \"\")) * 1e3;\n setTimeout((() => {\n resolve(duration);\n }), duration);\n }));\n}\n\nasync function nextAnimationFrame() {\n return new Promise((resolve => {\n requestAnimationFrame((() => {\n requestAnimationFrame(resolve);\n }));\n }));\n}\n\nfunction isEmpty(str) {\n return str.length === 0 || !str.trim();\n}\n\nclass TransitionComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.transitioned = false;\n }\n}\n\nclass TransitionController extends TransitionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n useTransition(this, this.options);\n }));\n }\n}\n\nclass UseVisibility extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.controller.isVisible = !document.hidden;\n document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n this.handleVisibilityChange();\n };\n this.unobserve = () => {\n document.removeEventListener(\"visibilitychange\", this.handleVisibilityChange);\n };\n this.becomesInvisible = event => {\n this.controller.isVisible = false;\n this.call(\"invisible\", event);\n this.log(\"invisible\", {\n isVisible: false\n });\n this.dispatch(\"invisible\", {\n event: event,\n isVisible: false\n });\n };\n this.becomesVisible = event => {\n this.controller.isVisible = true;\n this.call(\"visible\", event);\n this.log(\"visible\", {\n isVisible: true\n });\n this.dispatch(\"visible\", {\n event: event,\n isVisible: true\n });\n };\n this.handleVisibilityChange = event => {\n if (document.hidden) {\n this.becomesInvisible(event);\n } else {\n this.becomesVisible(event);\n }\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useVisibility = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseVisibility(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass VisibilityComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isVisible = false;\n }\n}\n\nclass VisibilityController extends VisibilityComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useVisibility(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nclass UseWindowFocus extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n if (document.hasFocus()) {\n this.becomesFocused();\n } else {\n this.becomesUnfocused();\n }\n this.interval = setInterval((() => {\n this.handleWindowFocusChange();\n }), this.intervalDuration);\n };\n this.unobserve = () => {\n clearInterval(this.interval);\n };\n this.becomesUnfocused = event => {\n this.controller.hasFocus = false;\n this.call(\"unfocus\", event);\n this.log(\"unfocus\", {\n hasFocus: false\n });\n this.dispatch(\"unfocus\", {\n event: event,\n hasFocus: false\n });\n };\n this.becomesFocused = event => {\n this.controller.hasFocus = true;\n this.call(\"focus\", event);\n this.log(\"focus\", {\n hasFocus: true\n });\n this.dispatch(\"focus\", {\n event: event,\n hasFocus: true\n });\n };\n this.handleWindowFocusChange = event => {\n if (document.hasFocus() && !this.controller.hasFocus) {\n this.becomesFocused(event);\n } else if (!document.hasFocus() && this.controller.hasFocus) {\n this.becomesUnfocused(event);\n }\n };\n this.controller = controller;\n this.intervalDuration = options.interval || 200;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, {\n disconnect: disconnect\n });\n }\n}\n\nconst useWindowFocus = (composableController, options = {}) => {\n const controller = composableController;\n const observer = new UseWindowFocus(controller, options);\n return [ observer.observe, observer.unobserve ];\n};\n\nclass WindowFocusComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.hasFocus = false;\n }\n}\n\nclass WindowFocusController extends WindowFocusComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useWindowFocus(this, this.options);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nconst useWindowResize = composableController => {\n const controller = composableController;\n const callback = event => {\n const {innerWidth: innerWidth, innerHeight: innerHeight} = window;\n const payload = {\n height: innerHeight || Infinity,\n width: innerWidth || Infinity,\n event: event\n };\n method(controller, \"windowResize\").call(controller, payload);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n window.addEventListener(\"resize\", callback);\n callback();\n };\n const unobserve = () => {\n window.removeEventListener(\"resize\", callback);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [ observe, unobserve ];\n};\n\nclass WindowResizeComposableController extends Controller {}\n\nclass WindowResizeController extends WindowResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame((() => {\n const [observe, unobserve] = useWindowResize(this);\n Object.assign(this, {\n observe: observe,\n unobserve: unobserve\n });\n }));\n }\n}\n\nfunction useHotkeys() {\n throw \"[stimulus-use] Notice: The import for `useHotkeys()` has been moved from `stimulus-use` to `stimulus-use/hotkeys`. \\nPlease change the import accordingly and add `hotkey-js` as a dependency to your project. \\n\\nFor more information see: https://stimulus-use.github.io/stimulus-use/#/use-hotkeys?id=importing-the-behavior\";\n}\n\nexport { ApplicationController, ClickOutsideController, HoverController, IdleController, IntersectionController, LazyLoadController, MutationController, ResizeController, TargetMutationController, TransitionController, UseHover, UseMutation, UseTargetMutation, UseVisibility, UseWindowFocus, VisibilityController, WindowFocusController, WindowResizeController, debounce, useApplication, useClickOutside, useDebounce, useDispatch, useHotkeys, useHover, useIdle, useIntersection, useLazyLoad, useMatchMedia, useMemo, useMeta, useMutation, useResize, useTargetMutation, useThrottle, useTransition, useVisibility, useWindowFocus, useWindowResize };\n","import { Controller } from \"@hotwired/stimulus\";\nimport { useClickOutside } from \"stimulus-use\";\n\n// Connects to data-controller=\"native--nav-bar\"\nexport default class extends Controller {\n static targets = [\"navBar\"];\n\n connect() {\n this.navBarSize = \"70vw\";\n this.boundToggle = this.toggle.bind(this);\n\n // Default values\n this.navBar.style.width = \"0\";\n this.navBar.style.display = \"flex\";\n\n // When the Native Nav-Bar button is clicked, the TurboNative Bridge triggers a \"toggle-mobile-app-nav-bar\" event\n // We react to this event here and toggle the Nav-Bar\n window.addEventListener(\"toggle-mobile-app-nav-bar\", this.boundToggle);\n\n // When the user clicks outside the Nav-Bar, we close it\n useClickOutside(this, { element: this.navBar });\n }\n\n disconnect() {\n document.removeEventListener(\"toggle-mobile-app-nav-bar\", this.boundOpenLink);\n }\n\n openLink(event) {\n this.navBar.style.display = \"none\";\n\n // When the mobile app follows the link, the nav-bar isn't closed yet.\n // This leads to a \"flashing\" effect when the user navigates back.\n // Hack: Use setTimeout to make sure the nav-bar is closed before the link is followed.\n setTimeout(() => {\n Turbo.visit(event.target.closest(\".nav-link\").dataset.href);\n }, 40);\n }\n\n toggle() {\n if (this.navBar.style.width === this.navBarSize) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n this.navBar.style.width = this.navBarSize;\n }\n\n close() {\n this.navBar.style.width = \"0\";\n }\n\n clickOutside(event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.close();\n }\n\n get navBar() {\n return this.navBarTarget;\n }\n}\n","import { BridgeComponent } from \"@hotwired/hotwire-native-bridge\"\n\nconst PERMISSIONS = {\n CAMERA: \"CAMERA\",\n LOCATION: \"LOCATION\",\n}\n\n// Connects to data-controller=\"native--permissions\"\nexport default class extends BridgeComponent {\n static component = \"permissions\"\n\n biometricPrompt() {\n this.send(\"biometricPrompt\", { title: \"We need permissions\", subtitle: \"use your finger\", negativeButtonText: \"Cancel\" }, (message) => {\n const result = message.data.success\n alert(result)\n })\n }\n\n checkPermissions({ params: { permission } }) {\n const sanitizedPermission = PERMISSIONS[permission]\n if (!sanitizedPermission) {\n console.warn(`Unknown permission: ${permission}`)\n return\n }\n\n this.send(\"checkPermissions\", { permission: sanitizedPermission }, (message) => {\n const granted = message.data.granted\n\n // Dispatches a \"result\" event with the granted status\n this.dispatch(\"result\", { granted: granted })\n\n // If an action only needs to be taken if the permission is granted,\n // we can directly listen for the \"granted\" or \"denied\" events\n if (granted) {\n this.dispatch(\"granted\")\n } else {\n this.dispatch(\"denied\")\n }\n })\n }\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rive\"] = factory();\n\telse\n\t\troot[\"rive\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\nvar Rive = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(moduleArg = {}) {\n\nvar m = moduleArg, aa, ea;\nm.ready = new Promise((a, b) => {\n aa = a;\n ea = b;\n});\nfunction fa() {\n function a(g) {\n const n = d;\n c = b = 0;\n d = new Map();\n n.forEach(p => {\n try {\n p(g);\n } catch (l) {\n console.error(l);\n }\n });\n this.ob();\n e && e.Tb();\n }\n let b = 0, c = 0, d = new Map(), e = null, f = null;\n this.requestAnimationFrame = function(g) {\n b || (b = requestAnimationFrame(a.bind(this)));\n const n = ++c;\n d.set(n, g);\n return n;\n };\n this.cancelAnimationFrame = function(g) {\n d.delete(g);\n b && 0 == d.size && (cancelAnimationFrame(b), b = 0);\n };\n this.Rb = function(g) {\n f && (document.body.remove(f), f = null);\n g || (f = document.createElement(\"div\"), f.style.backgroundColor = \"black\", f.style.position = \"fixed\", f.style.right = 0, f.style.top = 0, f.style.color = \"white\", f.style.padding = \"4px\", f.innerHTML = \"RIVE FPS\", g = function(n) {\n f.innerHTML = \"RIVE FPS \" + n.toFixed(1);\n }, document.body.appendChild(f));\n e = new function() {\n let n = 0, p = 0;\n this.Tb = function() {\n var l = performance.now();\n p ? (++n, l -= p, 1000 < l && (g(1000 * n / l), n = p = 0)) : (p = l, n = 0);\n };\n }();\n };\n this.Ob = function() {\n f && (document.body.remove(f), f = null);\n e = null;\n };\n this.ob = function() {\n };\n}\nfunction ha(a) {\n console.assert(!0);\n const b = new Map();\n let c = -Infinity;\n this.push = function(d) {\n d = d + ((1 << a) - 1) >> a;\n b.has(d) && clearTimeout(b.get(d));\n b.set(d, setTimeout(function() {\n b.delete(d);\n 0 == b.length ? c = -Infinity : d == c && (c = Math.max(...b.keys()), console.assert(c < d));\n }, 1000));\n c = Math.max(d, c);\n return c << a;\n };\n}\nconst ia = m.onRuntimeInitialized;\nm.onRuntimeInitialized = function() {\n ia && ia();\n let a = m.decodeAudio;\n m.decodeAudio = function(e, f) {\n e = a(e);\n f(e);\n };\n let b = m.decodeFont;\n m.decodeFont = function(e, f) {\n e = b(e);\n f(e);\n };\n const c = m.FileAssetLoader;\n m.ptrToAsset = e => {\n let f = m.ptrToFileAsset(e);\n return f.isImage ? m.ptrToImageAsset(e) : f.isFont ? m.ptrToFontAsset(e) : f.isAudio ? m.ptrToAudioAsset(e) : f;\n };\n m.CustomFileAssetLoader = c.extend(\"CustomFileAssetLoader\", {__construct:function({loadContents:e}) {\n this.__parent.__construct.call(this);\n this.Gb = e;\n }, loadContents:function(e, f) {\n e = m.ptrToAsset(e);\n return this.Gb(e, f);\n },});\n m.CDNFileAssetLoader = c.extend(\"CDNFileAssetLoader\", {__construct:function() {\n this.__parent.__construct.call(this);\n }, loadContents:function(e) {\n let f = m.ptrToAsset(e);\n e = f.cdnUuid;\n if (\"\" === e) {\n return !1;\n }\n (function(g, n) {\n var p = new XMLHttpRequest();\n p.responseType = \"arraybuffer\";\n p.onreadystatechange = function() {\n 4 == p.readyState && 200 == p.status && n(p);\n };\n p.open(\"GET\", g, !0);\n p.send(null);\n })(f.cdnBaseUrl + \"/\" + e, g => {\n f.decode(new Uint8Array(g.response));\n });\n return !0;\n },});\n m.FallbackFileAssetLoader = c.extend(\"FallbackFileAssetLoader\", {__construct:function() {\n this.__parent.__construct.call(this);\n this.kb = [];\n }, addLoader:function(e) {\n this.kb.push(e);\n }, loadContents:function(e, f) {\n for (let g of this.kb) {\n if (g.loadContents(e, f)) {\n return !0;\n }\n }\n return !1;\n },});\n let d = m.computeAlignment;\n m.computeAlignment = function(e, f, g, n, p = 1.0) {\n return d.call(this, e, f, g, n, p);\n };\n};\nconst ja = \"createConicGradient createImageData createLinearGradient createPattern createRadialGradient getContextAttributes getImageData getLineDash getTransform isContextLost isPointInPath isPointInStroke measureText\".split(\" \"), ka = new function() {\n function a() {\n if (!b) {\n var k = document.createElement(\"canvas\"), t = {alpha:1, depth:0, stencil:0, antialias:0, premultipliedAlpha:1, preserveDrawingBuffer:0, powerPreference:\"high-performance\", failIfMajorPerformanceCaveat:0, enableExtensionsByDefault:1, explicitSwapControl:1, renderViaOffscreenBackBuffer:1,};\n let r;\n if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n if (r = k.getContext(\"webgl\", t), c = 1, !r) {\n return console.log(\"No WebGL support. Image mesh will not be drawn.\"), !1;\n }\n } else {\n if (r = k.getContext(\"webgl2\", t)) {\n c = 2;\n } else {\n if (r = k.getContext(\"webgl\", t)) {\n c = 1;\n } else {\n return console.log(\"No WebGL support. Image mesh will not be drawn.\"), !1;\n }\n }\n }\n r = new Proxy(r, {get(D, w) {\n if (D.isContextLost()) {\n if (p || (console.error(\"Cannot render the mesh because the GL Context was lost. Tried to invoke \", w), p = !0), \"function\" === typeof D[w]) {\n return function() {\n };\n }\n } else {\n return \"function\" === typeof D[w] ? function(...M) {\n return D[w].apply(D, M);\n } : D[w];\n }\n }, set(D, w, M) {\n if (D.isContextLost()) {\n p || (console.error(\"Cannot render the mesh because the GL Context was lost. Tried to set property \" + w), p = !0);\n } else {\n return D[w] = M, !0;\n }\n },});\n d = Math.min(r.getParameter(r.MAX_RENDERBUFFER_SIZE), r.getParameter(r.MAX_TEXTURE_SIZE));\n function B(D, w, M) {\n w = r.createShader(w);\n r.shaderSource(w, M);\n r.compileShader(w);\n M = r.getShaderInfoLog(w);\n if (0 < (M || \"\").length) {\n throw M;\n }\n r.attachShader(D, w);\n }\n k = r.createProgram();\n B(k, r.VERTEX_SHADER, \"attribute vec2 vertex;\\n attribute vec2 uv;\\n uniform vec4 mat;\\n uniform vec2 translate;\\n varying vec2 st;\\n void main() {\\n st = uv;\\n gl_Position = vec4(mat2(mat) * vertex + translate, 0, 1);\\n }\");\n B(k, r.FRAGMENT_SHADER, \"precision highp float;\\n uniform sampler2D image;\\n varying vec2 st;\\n void main() {\\n gl_FragColor = texture2D(image, st);\\n }\");\n r.bindAttribLocation(k, 0, \"vertex\");\n r.bindAttribLocation(k, 1, \"uv\");\n r.linkProgram(k);\n t = r.getProgramInfoLog(k);\n if (0 < (t || \"\").trim().length) {\n throw t;\n }\n e = r.getUniformLocation(k, \"mat\");\n f = r.getUniformLocation(k, \"translate\");\n r.useProgram(k);\n r.bindBuffer(r.ARRAY_BUFFER, r.createBuffer());\n r.enableVertexAttribArray(0);\n r.enableVertexAttribArray(1);\n r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, r.createBuffer());\n r.uniform1i(r.getUniformLocation(k, \"image\"), 0);\n r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0);\n b = r;\n }\n return !0;\n }\n let b = null, c = 0, d = 0, e = null, f = null, g = 0, n = 0, p = !1;\n a();\n this.hc = function() {\n a();\n return d;\n };\n this.Mb = function(k) {\n b.deleteTexture && b.deleteTexture(k);\n };\n this.Lb = function(k) {\n if (!a()) {\n return null;\n }\n const t = b.createTexture();\n if (!t) {\n return null;\n }\n b.bindTexture(b.TEXTURE_2D, t);\n b.texImage2D(b.TEXTURE_2D, 0, b.RGBA, b.RGBA, b.UNSIGNED_BYTE, k);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_WRAP_S, b.CLAMP_TO_EDGE);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_WRAP_T, b.CLAMP_TO_EDGE);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MAG_FILTER, b.LINEAR);\n 2 == c ? (b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MIN_FILTER, b.LINEAR_MIPMAP_LINEAR), b.generateMipmap(b.TEXTURE_2D)) : b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MIN_FILTER, b.LINEAR);\n return t;\n };\n const l = new ha(8), u = new ha(8), v = new ha(10), x = new ha(10);\n this.Qb = function(k, t, r, B, D) {\n if (a()) {\n var w = l.push(k), M = u.push(t);\n if (b.canvas) {\n if (b.canvas.width != w || b.canvas.height != M) {\n b.canvas.width = w, b.canvas.height = M;\n }\n b.viewport(0, M - t, k, t);\n b.disable(b.SCISSOR_TEST);\n b.clearColor(0, 0, 0, 0);\n b.clear(b.COLOR_BUFFER_BIT);\n b.enable(b.SCISSOR_TEST);\n r.sort((H, ba) => ba.wb - H.wb);\n w = v.push(B);\n g != w && (b.bufferData(b.ARRAY_BUFFER, 8 * w, b.DYNAMIC_DRAW), g = w);\n w = 0;\n for (var T of r) {\n b.bufferSubData(b.ARRAY_BUFFER, w, T.Ta), w += 4 * T.Ta.length;\n }\n console.assert(w == 4 * B);\n for (var ca of r) {\n b.bufferSubData(b.ARRAY_BUFFER, w, ca.Db), w += 4 * ca.Db.length;\n }\n console.assert(w == 8 * B);\n w = x.push(D);\n n != w && (b.bufferData(b.ELEMENT_ARRAY_BUFFER, 2 * w, b.DYNAMIC_DRAW), n = w);\n T = 0;\n for (var ra of r) {\n b.bufferSubData(b.ELEMENT_ARRAY_BUFFER, T, ra.indices), T += 2 * ra.indices.length;\n }\n console.assert(T == 2 * D);\n ra = 0;\n ca = !0;\n w = T = 0;\n for (const H of r) {\n H.image.Ka != ra && (b.bindTexture(b.TEXTURE_2D, H.image.Ja || null), ra = H.image.Ka);\n H.mc ? (b.scissor(H.Ya, M - H.Za - H.jb, H.Ac, H.jb), ca = !0) : ca && (b.scissor(0, M - t, k, t), ca = !1);\n r = 2 / k;\n const ba = -2 / t;\n b.uniform4f(e, H.ha[0] * r * H.Ba, H.ha[1] * ba * H.Ca, H.ha[2] * r * H.Ba, H.ha[3] * ba * H.Ca);\n b.uniform2f(f, H.ha[4] * r * H.Ba + r * (H.Ya - H.ic * H.Ba) - 1, H.ha[5] * ba * H.Ca + ba * (H.Za - H.jc * H.Ca) + 1);\n b.vertexAttribPointer(0, 2, b.FLOAT, !1, 0, w);\n b.vertexAttribPointer(1, 2, b.FLOAT, !1, 0, w + 4 * B);\n b.drawElements(b.TRIANGLES, H.indices.length, b.UNSIGNED_SHORT, T);\n w += 4 * H.Ta.length;\n T += 2 * H.indices.length;\n }\n console.assert(w == 4 * B);\n console.assert(T == 2 * D);\n }\n }\n };\n this.canvas = function() {\n return a() && b.canvas;\n };\n}(), la = m.onRuntimeInitialized;\nm.onRuntimeInitialized = function() {\n function a(q) {\n switch(q) {\n case l.srcOver:\n return \"source-over\";\n case l.screen:\n return \"screen\";\n case l.overlay:\n return \"overlay\";\n case l.darken:\n return \"darken\";\n case l.lighten:\n return \"lighten\";\n case l.colorDodge:\n return \"color-dodge\";\n case l.colorBurn:\n return \"color-burn\";\n case l.hardLight:\n return \"hard-light\";\n case l.softLight:\n return \"soft-light\";\n case l.difference:\n return \"difference\";\n case l.exclusion:\n return \"exclusion\";\n case l.multiply:\n return \"multiply\";\n case l.hue:\n return \"hue\";\n case l.saturation:\n return \"saturation\";\n case l.color:\n return \"color\";\n case l.luminosity:\n return \"luminosity\";\n }\n }\n function b(q) {\n return \"rgba(\" + ((16711680 & q) >>> 16) + \",\" + ((65280 & q) >>> 8) + \",\" + ((255 & q) >>> 0) + \",\" + ((4278190080 & q) >>> 24) / 255 + \")\";\n }\n function c() {\n 0 < M.length && (ka.Qb(w.drawWidth(), w.drawHeight(), M, T, ca), M = [], ca = T = 0, w.reset(512, 512));\n for (const q of D) {\n for (const y of q.H) {\n y();\n }\n q.H = [];\n }\n D.clear();\n }\n la && la();\n var d = m.RenderPaintStyle;\n const e = m.RenderPath, f = m.RenderPaint, g = m.Renderer, n = m.StrokeCap, p = m.StrokeJoin, l = m.BlendMode, u = d.fill, v = d.stroke, x = m.FillRule.evenOdd;\n let k = 1;\n var t = m.RenderImage.extend(\"CanvasRenderImage\", {__construct:function({la:q, xa:y} = {}) {\n this.__parent.__construct.call(this);\n this.Ka = k;\n k = k + 1 & 2147483647 || 1;\n this.la = q;\n this.xa = y;\n }, __destruct:function() {\n this.Ja && (ka.Mb(this.Ja), URL.revokeObjectURL(this.Wa));\n this.__parent.__destruct.call(this);\n }, decode:function(q) {\n var y = this;\n y.xa && y.xa(y);\n var F = new Image();\n y.Wa = URL.createObjectURL(new Blob([q], {type:\"image/png\",}));\n F.onload = function() {\n y.Fb = F;\n y.Ja = ka.Lb(F);\n y.size(F.width, F.height);\n y.la && y.la(y);\n };\n F.src = y.Wa;\n },}), r = e.extend(\"CanvasRenderPath\", {__construct:function() {\n this.__parent.__construct.call(this);\n this.T = new Path2D();\n }, rewind:function() {\n this.T = new Path2D();\n }, addPath:function(q, y, F, G, A, I, J) {\n var K = this.T, X = K.addPath;\n q = q.T;\n const Q = new DOMMatrix();\n Q.a = y;\n Q.b = F;\n Q.c = G;\n Q.d = A;\n Q.e = I;\n Q.f = J;\n X.call(K, q, Q);\n }, fillRule:function(q) {\n this.Va = q;\n }, moveTo:function(q, y) {\n this.T.moveTo(q, y);\n }, lineTo:function(q, y) {\n this.T.lineTo(q, y);\n }, cubicTo:function(q, y, F, G, A, I) {\n this.T.bezierCurveTo(q, y, F, G, A, I);\n }, close:function() {\n this.T.closePath();\n },}), B = f.extend(\"CanvasRenderPaint\", {color:function(q) {\n this.Xa = b(q);\n }, thickness:function(q) {\n this.Ib = q;\n }, join:function(q) {\n switch(q) {\n case p.miter:\n this.Ia = \"miter\";\n break;\n case p.round:\n this.Ia = \"round\";\n break;\n case p.bevel:\n this.Ia = \"bevel\";\n }\n }, cap:function(q) {\n switch(q) {\n case n.butt:\n this.Ha = \"butt\";\n break;\n case n.round:\n this.Ha = \"round\";\n break;\n case n.square:\n this.Ha = \"square\";\n }\n }, style:function(q) {\n this.Hb = q;\n }, blendMode:function(q) {\n this.Eb = a(q);\n }, clearGradient:function() {\n this.ja = null;\n }, linearGradient:function(q, y, F, G) {\n this.ja = {yb:q, zb:y, bb:F, cb:G, Ra:[],};\n }, radialGradient:function(q, y, F, G) {\n this.ja = {yb:q, zb:y, bb:F, cb:G, Ra:[], ec:!0,};\n }, addStop:function(q, y) {\n this.ja.Ra.push({color:q, stop:y,});\n }, completeGradient:function() {\n }, draw:function(q, y, F) {\n let G = this.Hb;\n var A = this.Xa, I = this.ja;\n q.globalCompositeOperation = this.Eb;\n if (null != I) {\n A = I.yb;\n var J = I.zb;\n const X = I.bb;\n var K = I.cb;\n const Q = I.Ra;\n I.ec ? (I = X - A, K -= J, A = q.createRadialGradient(A, J, 0, A, J, Math.sqrt(I * I + K * K))) : A = q.createLinearGradient(A, J, X, K);\n for (let da = 0, R = Q.length; da < R; da++) {\n J = Q[da], A.addColorStop(J.stop, b(J.color));\n }\n this.Xa = A;\n this.ja = null;\n }\n switch(G) {\n case v:\n q.strokeStyle = A;\n q.lineWidth = this.Ib;\n q.lineCap = this.Ha;\n q.lineJoin = this.Ia;\n q.stroke(y);\n break;\n case u:\n q.fillStyle = A, q.fill(y, F);\n }\n },});\n const D = new Set();\n let w = null, M = [], T = 0, ca = 0;\n var ra = m.CanvasRenderer = g.extend(\"Renderer\", {__construct:function(q) {\n this.__parent.__construct.call(this);\n this.S = [1, 0, 0, 1, 0, 0];\n this.C = q.getContext(\"2d\");\n this.Ua = q;\n this.H = [];\n }, save:function() {\n this.S.push(...this.S.slice(this.S.length - 6));\n this.H.push(this.C.save.bind(this.C));\n }, restore:function() {\n const q = this.S.length - 6;\n if (6 > q) {\n throw \"restore() called without matching save().\";\n }\n this.S.splice(q);\n this.H.push(this.C.restore.bind(this.C));\n }, transform:function(q, y, F, G, A, I) {\n const J = this.S, K = J.length - 6;\n J.splice(K, 6, J[K] * q + J[K + 2] * y, J[K + 1] * q + J[K + 3] * y, J[K] * F + J[K + 2] * G, J[K + 1] * F + J[K + 3] * G, J[K] * A + J[K + 2] * I + J[K + 4], J[K + 1] * A + J[K + 3] * I + J[K + 5]);\n this.H.push(this.C.transform.bind(this.C, q, y, F, G, A, I));\n }, rotate:function(q) {\n const y = Math.sin(q);\n q = Math.cos(q);\n this.transform(q, y, -y, q, 0, 0);\n }, _drawPath:function(q, y) {\n this.H.push(y.draw.bind(y, this.C, q.T, q.Va === x ? \"evenodd\" : \"nonzero\"));\n }, _drawRiveImage:function(q, y, F) {\n var G = q.Fb;\n if (G) {\n var A = this.C, I = a(y);\n this.H.push(function() {\n A.globalCompositeOperation = I;\n A.globalAlpha = F;\n A.drawImage(G, 0, 0);\n A.globalAlpha = 1;\n });\n }\n }, _getMatrix:function(q) {\n const y = this.S, F = y.length - 6;\n for (let G = 0; 6 > G; ++G) {\n q[G] = y[F + G];\n }\n }, _drawImageMesh:function(q, y, F, G, A, I, J, K, X, Q) {\n var da = this.C.canvas.width, R = this.C.canvas.height;\n const Yb = X - J, Zb = Q - K;\n J = Math.max(J, 0);\n K = Math.max(K, 0);\n X = Math.min(X, da);\n Q = Math.min(Q, R);\n const Ga = X - J, Ha = Q - K;\n console.assert(Ga <= Math.min(Yb, da));\n console.assert(Ha <= Math.min(Zb, R));\n if (!(0 >= Ga || 0 >= Ha)) {\n X = Ga < Yb || Ha < Zb;\n da = Q = 1;\n var sa = Math.ceil(Ga * Q), ta = Math.ceil(Ha * da);\n R = ka.hc();\n sa > R && (Q *= R / sa, sa = R);\n ta > R && (da *= R / ta, ta = R);\n w || (w = new m.DynamicRectanizer(R), w.reset(512, 512));\n R = w.addRect(sa, ta);\n 0 > R && (c(), D.add(this), R = w.addRect(sa, ta), console.assert(0 <= R));\n var $b = R & 65535, ac = R >> 16;\n M.push({ha:this.S.slice(this.S.length - 6), image:q, Ya:$b, Za:ac, ic:J, jc:K, Ac:sa, jb:ta, Ba:Q, Ca:da, Ta:new Float32Array(G), Db:new Float32Array(A), indices:new Uint16Array(I), mc:X, wb:q.Ka << 1 | (X ? 1 : 0),});\n T += G.length;\n ca += I.length;\n var za = this.C, qd = a(y);\n this.H.push(function() {\n za.save();\n za.resetTransform();\n za.globalCompositeOperation = qd;\n za.globalAlpha = F;\n const bc = ka.canvas();\n bc && za.drawImage(bc, $b, ac, sa, ta, J, K, Ga, Ha);\n za.restore();\n });\n }\n }, _clipPath:function(q) {\n this.H.push(this.C.clip.bind(this.C, q.T, q.Va === x ? \"evenodd\" : \"nonzero\"));\n }, clear:function() {\n D.add(this);\n this.H.push(this.C.clearRect.bind(this.C, 0, 0, this.Ua.width, this.Ua.height));\n }, flush:function() {\n }, translate:function(q, y) {\n this.transform(1, 0, 0, 1, q, y);\n },});\n m.makeRenderer = function(q) {\n const y = new ra(q), F = y.C;\n return new Proxy(y, {get(G, A) {\n if (\"function\" === typeof G[A]) {\n return function(...I) {\n return G[A].apply(G, I);\n };\n }\n if (\"function\" === typeof F[A]) {\n if (-1 < ja.indexOf(A)) {\n throw Error(\"RiveException: Method call to '\" + A + \"()' is not allowed, as the renderer cannot immediately pass through the return values of any canvas 2d context methods.\");\n }\n return function(...I) {\n y.H.push(F[A].bind(F, ...I));\n };\n }\n return G[A];\n }, set(G, A, I) {\n if (A in F) {\n return y.H.push(() => {\n F[A] = I;\n }), !0;\n }\n },});\n };\n m.decodeImage = function(q, y) {\n (new t({la:y})).decode(q);\n };\n m.renderFactory = {makeRenderPaint:function() {\n return new B();\n }, makeRenderPath:function() {\n return new r();\n }, makeRenderImage:function() {\n let q = ba;\n return new t({xa:() => {\n q.total++;\n }, la:() => {\n q.loaded++;\n if (q.loaded === q.total) {\n const y = q.ready;\n y && (y(), q.ready = null);\n }\n },});\n },};\n let H = m.load, ba = null;\n m.load = function(q, y, F = !0) {\n const G = new m.FallbackFileAssetLoader();\n void 0 !== y && G.addLoader(y);\n F && (y = new m.CDNFileAssetLoader(), G.addLoader(y));\n return new Promise(function(A) {\n let I = null;\n ba = {total:0, loaded:0, ready:function() {\n A(I);\n },};\n I = H(q, G);\n 0 == ba.total && A(I);\n });\n };\n let rd = m.RendererWrapper.prototype.align;\n m.RendererWrapper.prototype.align = function(q, y, F, G, A = 1.0) {\n rd.call(this, q, y, F, G, A);\n };\n d = new fa();\n m.requestAnimationFrame = d.requestAnimationFrame.bind(d);\n m.cancelAnimationFrame = d.cancelAnimationFrame.bind(d);\n m.enableFPSCounter = d.Rb.bind(d);\n m.disableFPSCounter = d.Ob;\n d.ob = c;\n m.resolveAnimationFrame = c;\n m.cleanup = function() {\n w && w.delete();\n };\n};\nvar ma = Object.assign({}, m), na = \"./this.program\", oa = \"object\" == typeof window, pa = \"function\" == typeof importScripts, qa = \"\", ua, va;\nif (oa || pa) {\n pa ? qa = self.location.href : \"undefined\" != typeof document && document.currentScript && (qa = document.currentScript.src), _scriptDir && (qa = _scriptDir), 0 !== qa.indexOf(\"blob:\") ? qa = qa.substr(0, qa.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : qa = \"\", pa && (va = a => {\n var b = new XMLHttpRequest();\n b.open(\"GET\", a, !1);\n b.responseType = \"arraybuffer\";\n b.send(null);\n return new Uint8Array(b.response);\n }), ua = (a, b, c) => {\n var d = new XMLHttpRequest();\n d.open(\"GET\", a, !0);\n d.responseType = \"arraybuffer\";\n d.onload = () => {\n 200 == d.status || 0 == d.status && d.response ? b(d.response) : c();\n };\n d.onerror = c;\n d.send(null);\n };\n}\nvar wa = m.print || console.log.bind(console), xa = m.printErr || console.error.bind(console);\nObject.assign(m, ma);\nma = null;\nm.thisProgram && (na = m.thisProgram);\nvar ya;\nm.wasmBinary && (ya = m.wasmBinary);\nvar noExitRuntime = m.noExitRuntime || !0;\n\"object\" != typeof WebAssembly && Aa(\"no native wasm support detected\");\nvar Ba, z, Ca = !1, C, E, Da, Ea, L, N, Fa, Ia;\nfunction Ja() {\n var a = Ba.buffer;\n m.HEAP8 = C = new Int8Array(a);\n m.HEAP16 = Da = new Int16Array(a);\n m.HEAP32 = L = new Int32Array(a);\n m.HEAPU8 = E = new Uint8Array(a);\n m.HEAPU16 = Ea = new Uint16Array(a);\n m.HEAPU32 = N = new Uint32Array(a);\n m.HEAPF32 = Fa = new Float32Array(a);\n m.HEAPF64 = Ia = new Float64Array(a);\n}\nvar Ka, La = [], Ma = [], Na = [];\nfunction Oa() {\n var a = m.preRun.shift();\n La.unshift(a);\n}\nvar Pa = 0, Qa = null, Ra = null;\nfunction Aa(a) {\n if (m.onAbort) {\n m.onAbort(a);\n }\n a = \"Aborted(\" + a + \")\";\n xa(a);\n Ca = !0;\n a = new WebAssembly.RuntimeError(a + \". Build with -sASSERTIONS for more info.\");\n ea(a);\n throw a;\n}\nfunction Sa(a) {\n return a.startsWith(\"data:application/octet-stream;base64,\");\n}\nvar Ta;\nTa = \"canvas_advanced.wasm\";\nif (!Sa(Ta)) {\n var Ua = Ta;\n Ta = m.locateFile ? m.locateFile(Ua, qa) : qa + Ua;\n}\nfunction Va(a) {\n if (a == Ta && ya) {\n return new Uint8Array(ya);\n }\n if (va) {\n return va(a);\n }\n throw \"both async and sync fetching of the wasm failed\";\n}\nfunction Wa(a) {\n if (!ya && (oa || pa)) {\n if (\"function\" == typeof fetch && !a.startsWith(\"file://\")) {\n return fetch(a, {credentials:\"same-origin\"}).then(b => {\n if (!b.ok) {\n throw \"failed to load wasm binary file at '\" + a + \"'\";\n }\n return b.arrayBuffer();\n }).catch(() => Va(a));\n }\n if (ua) {\n return new Promise((b, c) => {\n ua(a, d => b(new Uint8Array(d)), c);\n });\n }\n }\n return Promise.resolve().then(() => Va(a));\n}\nfunction Xa(a, b, c) {\n return Wa(a).then(d => WebAssembly.instantiate(d, b)).then(d => d).then(c, d => {\n xa(\"failed to asynchronously prepare wasm: \" + d);\n Aa(d);\n });\n}\nfunction Ya(a, b) {\n var c = Ta;\n return ya || \"function\" != typeof WebAssembly.instantiateStreaming || Sa(c) || c.startsWith(\"file://\") || \"function\" != typeof fetch ? Xa(c, a, b) : fetch(c, {credentials:\"same-origin\"}).then(d => WebAssembly.instantiateStreaming(d, a).then(b, function(e) {\n xa(\"wasm streaming compile failed: \" + e);\n xa(\"falling back to ArrayBuffer instantiation\");\n return Xa(c, a, b);\n }));\n}\nvar Za, $a, db = {448252:(a, b, c, d, e) => {\n if (\"undefined\" === typeof window || void 0 === (window.AudioContext || window.webkitAudioContext)) {\n return 0;\n }\n if (\"undefined\" === typeof window.h) {\n window.h = {Aa:0};\n window.h.I = {};\n window.h.I.ya = a;\n window.h.I.capture = b;\n window.h.I.La = c;\n window.h.ga = {};\n window.h.ga.stopped = d;\n window.h.ga.xb = e;\n let f = window.h;\n f.D = [];\n f.yc = function(g) {\n for (var n = 0; n < f.D.length; ++n) {\n if (null == f.D[n]) {\n return f.D[n] = g, n;\n }\n }\n f.D.push(g);\n return f.D.length - 1;\n };\n f.Cb = function(g) {\n for (f.D[g] = null; 0 < f.D.length;) {\n if (null == f.D[f.D.length - 1]) {\n f.D.pop();\n } else {\n break;\n }\n }\n };\n f.Sc = function(g) {\n for (var n = 0; n < f.D.length; ++n) {\n if (f.D[n] == g) {\n return f.Cb(n);\n }\n }\n };\n f.ra = function(g) {\n return f.D[g];\n };\n f.Bb = [\"touchend\", \"click\"];\n f.unlock = function() {\n for (var g = 0; g < f.D.length; ++g) {\n var n = f.D[g];\n null != n && null != n.J && n.state === f.ga.xb && n.J.resume().then(() => {\n ab(n.pb);\n }, p => {\n console.error(\"Failed to resume audiocontext\", p);\n });\n }\n f.Bb.map(function(p) {\n document.removeEventListener(p, f.unlock, !0);\n });\n };\n f.Bb.map(function(g) {\n document.addEventListener(g, f.unlock, !0);\n });\n }\n window.h.Aa += 1;\n return 1;\n}, 450430:() => {\n \"undefined\" !== typeof window.h && (--window.h.Aa, 0 === window.h.Aa && delete window.h);\n}, 450594:() => void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia, 450698:() => {\n try {\n var a = new (window.AudioContext || window.webkitAudioContext)(), b = a.sampleRate;\n a.close();\n return b;\n } catch (c) {\n return 0;\n }\n}, 450869:(a, b, c, d, e, f) => {\n if (\"undefined\" === typeof window.h) {\n return -1;\n }\n var g = {}, n = {};\n a == window.h.I.ya && 0 != c && (n.sampleRate = c);\n g.J = new (window.AudioContext || window.webkitAudioContext)(n);\n g.J.suspend();\n g.state = window.h.ga.stopped;\n c = 0;\n a != window.h.I.ya && (c = b);\n g.Z = g.J.createScriptProcessor(d, c, b);\n g.Z.onaudioprocess = function(p) {\n if (null == g.sa || 0 == g.sa.length) {\n g.sa = new Float32Array(Fa.buffer, e, d * b);\n }\n if (a == window.h.I.capture || a == window.h.I.La) {\n for (var l = 0; l < b; l += 1) {\n for (var u = p.inputBuffer.getChannelData(l), v = g.sa, x = 0; x < d; x += 1) {\n v[x * b + l] = u[x];\n }\n }\n bb(f, d, e);\n }\n if (a == window.h.I.ya || a == window.h.I.La) {\n for (cb(f, d, e), l = 0; l < p.outputBuffer.numberOfChannels; ++l) {\n for (u = p.outputBuffer.getChannelData(l), v = g.sa, x = 0; x < d; x += 1) {\n u[x] = v[x * b + l];\n }\n }\n } else {\n for (l = 0; l < p.outputBuffer.numberOfChannels; ++l) {\n p.outputBuffer.getChannelData(l).fill(0.0);\n }\n }\n };\n a != window.h.I.capture && a != window.h.I.La || navigator.mediaDevices.getUserMedia({audio:!0, video:!1}).then(function(p) {\n g.Da = g.J.createMediaStreamSource(p);\n g.Da.connect(g.Z);\n g.Z.connect(g.J.destination);\n }).catch(function(p) {\n console.log(\"Failed to get user media: \" + p);\n });\n a == window.h.I.ya && g.Z.connect(g.J.destination);\n g.pb = f;\n return window.h.yc(g);\n}, 453746:a => window.h.ra(a).J.sampleRate, 453819:a => {\n a = window.h.ra(a);\n void 0 !== a.Z && (a.Z.onaudioprocess = function() {\n }, a.Z.disconnect(), a.Z = void 0);\n void 0 !== a.Da && (a.Da.disconnect(), a.Da = void 0);\n a.J.close();\n a.J = void 0;\n a.pb = void 0;\n}, 454219:a => {\n window.h.Cb(a);\n}, 454269:a => {\n a = window.h.ra(a);\n a.J.resume();\n a.state = window.h.ga.xb;\n}, 454408:a => {\n a = window.h.ra(a);\n a.J.suspend();\n a.state = window.h.ga.stopped;\n}}, eb = a => {\n for (; 0 < a.length;) {\n a.shift()(m);\n }\n}, fb = (a, b) => {\n for (var c = 0, d = a.length - 1; 0 <= d; d--) {\n var e = a[d];\n \".\" === e ? a.splice(d, 1) : \"..\" === e ? (a.splice(d, 1), c++) : c && (a.splice(d, 1), c--);\n }\n if (b) {\n for (; c; c--) {\n a.unshift(\"..\");\n }\n }\n return a;\n}, gb = a => {\n var b = \"/\" === a.charAt(0), c = \"/\" === a.substr(-1);\n (a = fb(a.split(\"/\").filter(d => !!d), !b).join(\"/\")) || b || (a = \".\");\n a && c && (a += \"/\");\n return (b ? \"/\" : \"\") + a;\n}, hb = a => {\n var b = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);\n a = b[0];\n b = b[1];\n if (!a && !b) {\n return \".\";\n }\n b && (b = b.substr(0, b.length - 1));\n return a + b;\n}, ib = a => {\n if (\"/\" === a) {\n return \"/\";\n }\n a = gb(a);\n a = a.replace(/\\/$/, \"\");\n var b = a.lastIndexOf(\"/\");\n return -1 === b ? a : a.substr(b + 1);\n}, jb = () => {\n if (\"object\" == typeof crypto && \"function\" == typeof crypto.getRandomValues) {\n return a => crypto.getRandomValues(a);\n }\n Aa(\"initRandomDevice\");\n}, kb = a => (kb = jb())(a);\nfunction lb() {\n for (var a = \"\", b = !1, c = arguments.length - 1; -1 <= c && !b; c--) {\n b = 0 <= c ? arguments[c] : \"/\";\n if (\"string\" != typeof b) {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n }\n if (!b) {\n return \"\";\n }\n a = b + \"/\" + a;\n b = \"/\" === b.charAt(0);\n }\n a = fb(a.split(\"/\").filter(d => !!d), !b).join(\"/\");\n return (b ? \"/\" : \"\") + a || \".\";\n}\nvar mb = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf8\") : void 0, nb = (a, b, c) => {\n var d = b + c;\n for (c = b; a[c] && !(c >= d);) {\n ++c;\n }\n if (16 < c - b && a.buffer && mb) {\n return mb.decode(a.subarray(b, c));\n }\n for (d = \"\"; b < c;) {\n var e = a[b++];\n if (e & 128) {\n var f = a[b++] & 63;\n if (192 == (e & 224)) {\n d += String.fromCharCode((e & 31) << 6 | f);\n } else {\n var g = a[b++] & 63;\n e = 224 == (e & 240) ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;\n 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));\n }\n } else {\n d += String.fromCharCode(e);\n }\n }\n return d;\n}, ob = [], pb = a => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 127 >= d ? b++ : 2047 >= d ? b += 2 : 55296 <= d && 57343 >= d ? (b += 4, ++c) : b += 3;\n }\n return b;\n}, qb = (a, b, c, d) => {\n if (!(0 < d)) {\n return 0;\n }\n var e = c;\n d = c + d - 1;\n for (var f = 0; f < a.length; ++f) {\n var g = a.charCodeAt(f);\n if (55296 <= g && 57343 >= g) {\n var n = a.charCodeAt(++f);\n g = 65536 + ((g & 1023) << 10) | n & 1023;\n }\n if (127 >= g) {\n if (c >= d) {\n break;\n }\n b[c++] = g;\n } else {\n if (2047 >= g) {\n if (c + 1 >= d) {\n break;\n }\n b[c++] = 192 | g >> 6;\n } else {\n if (65535 >= g) {\n if (c + 2 >= d) {\n break;\n }\n b[c++] = 224 | g >> 12;\n } else {\n if (c + 3 >= d) {\n break;\n }\n b[c++] = 240 | g >> 18;\n b[c++] = 128 | g >> 12 & 63;\n }\n b[c++] = 128 | g >> 6 & 63;\n }\n b[c++] = 128 | g & 63;\n }\n }\n b[c] = 0;\n return c - e;\n};\nfunction rb(a, b) {\n var c = Array(pb(a) + 1);\n a = qb(a, c, 0, c.length);\n b && (c.length = a);\n return c;\n}\nvar sb = [];\nfunction tb(a, b) {\n sb[a] = {input:[], F:[], V:b};\n ub(a, vb);\n}\nvar vb = {open:function(a) {\n var b = sb[a.node.za];\n if (!b) {\n throw new O(43);\n }\n a.s = b;\n a.seekable = !1;\n}, close:function(a) {\n a.s.V.qa(a.s);\n}, qa:function(a) {\n a.s.V.qa(a.s);\n}, read:function(a, b, c, d) {\n if (!a.s || !a.s.V.ib) {\n throw new O(60);\n }\n for (var e = 0, f = 0; f < d; f++) {\n try {\n var g = a.s.V.ib(a.s);\n } catch (n) {\n throw new O(29);\n }\n if (void 0 === g && 0 === e) {\n throw new O(6);\n }\n if (null === g || void 0 === g) {\n break;\n }\n e++;\n b[c + f] = g;\n }\n e && (a.node.timestamp = Date.now());\n return e;\n}, write:function(a, b, c, d) {\n if (!a.s || !a.s.V.Oa) {\n throw new O(60);\n }\n try {\n for (var e = 0; e < d; e++) {\n a.s.V.Oa(a.s, b[c + e]);\n }\n } catch (f) {\n throw new O(29);\n }\n d && (a.node.timestamp = Date.now());\n return e;\n},}, wb = {ib:function() {\n a: {\n if (!ob.length) {\n var a = null;\n \"undefined\" != typeof window && \"function\" == typeof window.prompt ? (a = window.prompt(\"Input: \"), null !== a && (a += \"\\n\")) : \"function\" == typeof readline && (a = readline(), null !== a && (a += \"\\n\"));\n if (!a) {\n a = null;\n break a;\n }\n ob = rb(a, !0);\n }\n a = ob.shift();\n }\n return a;\n}, Oa:function(a, b) {\n null === b || 10 === b ? (wa(nb(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa:function(a) {\n a.F && 0 < a.F.length && (wa(nb(a.F, 0)), a.F = []);\n}, bc:function() {\n return {Fc:25856, Hc:5, Ec:191, Gc:35387, Dc:[3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,]};\n}, cc:function() {\n return 0;\n}, dc:function() {\n return [24, 80];\n},}, xb = {Oa:function(a, b) {\n null === b || 10 === b ? (xa(nb(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa:function(a) {\n a.F && 0 < a.F.length && (xa(nb(a.F, 0)), a.F = []);\n},};\nfunction yb(a, b) {\n var c = a.j ? a.j.length : 0;\n c >= b || (b = Math.max(b, c * (1048576 > c ? 2.0 : 1.125) >>> 0), 0 != c && (b = Math.max(b, 256)), c = a.j, a.j = new Uint8Array(b), 0 < a.v && a.j.set(c.subarray(0, a.v), 0));\n}\nvar P = {O:null, U() {\n return P.createNode(null, \"/\", 16895, 0);\n}, createNode(a, b, c, d) {\n if (24576 === (c & 61440) || 4096 === (c & 61440)) {\n throw new O(63);\n }\n P.O || (P.O = {dir:{node:{Y:P.l.Y, P:P.l.P, ka:P.l.ka, va:P.l.va, ub:P.l.ub, Ab:P.l.Ab, vb:P.l.vb, sb:P.l.sb, Ea:P.l.Ea}, stream:{ba:P.m.ba}}, file:{node:{Y:P.l.Y, P:P.l.P}, stream:{ba:P.m.ba, read:P.m.read, write:P.m.write, pa:P.m.pa, lb:P.m.lb, nb:P.m.nb}}, link:{node:{Y:P.l.Y, P:P.l.P, ma:P.l.ma}, stream:{}}, $a:{node:{Y:P.l.Y, P:P.l.P}, stream:zb}});\n c = Ab(a, b, c, d);\n 16384 === (c.mode & 61440) ? (c.l = P.O.dir.node, c.m = P.O.dir.stream, c.j = {}) : 32768 === (c.mode & 61440) ? (c.l = P.O.file.node, c.m = P.O.file.stream, c.v = 0, c.j = null) : 40960 === (c.mode & 61440) ? (c.l = P.O.link.node, c.m = P.O.link.stream) : 8192 === (c.mode & 61440) && (c.l = P.O.$a.node, c.m = P.O.$a.stream);\n c.timestamp = Date.now();\n a && (a.j[b] = c, a.timestamp = c.timestamp);\n return c;\n}, Kc(a) {\n return a.j ? a.j.subarray ? a.j.subarray(0, a.v) : new Uint8Array(a.j) : new Uint8Array(0);\n}, l:{Y(a) {\n var b = {};\n b.Jc = 8192 === (a.mode & 61440) ? a.id : 1;\n b.Mc = a.id;\n b.mode = a.mode;\n b.Oc = 1;\n b.uid = 0;\n b.Lc = 0;\n b.za = a.za;\n 16384 === (a.mode & 61440) ? b.size = 4096 : 32768 === (a.mode & 61440) ? b.size = a.v : 40960 === (a.mode & 61440) ? b.size = a.link.length : b.size = 0;\n b.Bc = new Date(a.timestamp);\n b.Nc = new Date(a.timestamp);\n b.Ic = new Date(a.timestamp);\n b.Jb = 4096;\n b.Cc = Math.ceil(b.size / b.Jb);\n return b;\n}, P(a, b) {\n void 0 !== b.mode && (a.mode = b.mode);\n void 0 !== b.timestamp && (a.timestamp = b.timestamp);\n if (void 0 !== b.size && (b = b.size, a.v != b)) {\n if (0 == b) {\n a.j = null, a.v = 0;\n } else {\n var c = a.j;\n a.j = new Uint8Array(b);\n c && a.j.set(c.subarray(0, Math.min(b, a.v)));\n a.v = b;\n }\n }\n}, ka() {\n throw Bb[44];\n}, va(a, b, c, d) {\n return P.createNode(a, b, c, d);\n}, ub(a, b, c) {\n if (16384 === (a.mode & 61440)) {\n try {\n var d = Cb(b, c);\n } catch (f) {\n }\n if (d) {\n for (var e in d.j) {\n throw new O(55);\n }\n }\n }\n delete a.parent.j[a.name];\n a.parent.timestamp = Date.now();\n a.name = c;\n b.j[c] = a;\n b.timestamp = a.parent.timestamp;\n a.parent = b;\n}, Ab(a, b) {\n delete a.j[b];\n a.timestamp = Date.now();\n}, vb(a, b) {\n var c = Cb(a, b), d;\n for (d in c.j) {\n throw new O(55);\n }\n delete a.j[b];\n a.timestamp = Date.now();\n}, sb(a) {\n var b = [\".\", \"..\"], c;\n for (c in a.j) {\n a.j.hasOwnProperty(c) && b.push(c);\n }\n return b;\n}, Ea(a, b, c) {\n a = P.createNode(a, b, 41471, 0);\n a.link = c;\n return a;\n}, ma(a) {\n if (40960 !== (a.mode & 61440)) {\n throw new O(28);\n }\n return a.link;\n},}, m:{read(a, b, c, d, e) {\n var f = a.node.j;\n if (e >= a.node.v) {\n return 0;\n }\n a = Math.min(a.node.v - e, d);\n if (8 < a && f.subarray) {\n b.set(f.subarray(e, e + a), c);\n } else {\n for (d = 0; d < a; d++) {\n b[c + d] = f[e + d];\n }\n }\n return a;\n}, write(a, b, c, d, e, f) {\n b.buffer === C.buffer && (f = !1);\n if (!d) {\n return 0;\n }\n a = a.node;\n a.timestamp = Date.now();\n if (b.subarray && (!a.j || a.j.subarray)) {\n if (f) {\n return a.j = b.subarray(c, c + d), a.v = d;\n }\n if (0 === a.v && 0 === e) {\n return a.j = b.slice(c, c + d), a.v = d;\n }\n if (e + d <= a.v) {\n return a.j.set(b.subarray(c, c + d), e), d;\n }\n }\n yb(a, e + d);\n if (a.j.subarray && b.subarray) {\n a.j.set(b.subarray(c, c + d), e);\n } else {\n for (f = 0; f < d; f++) {\n a.j[e + f] = b[c + f];\n }\n }\n a.v = Math.max(a.v, e + d);\n return d;\n}, ba(a, b, c) {\n 1 === c ? b += a.position : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.v);\n if (0 > b) {\n throw new O(28);\n }\n return b;\n}, pa(a, b, c) {\n yb(a.node, b + c);\n a.node.v = Math.max(a.node.v, b + c);\n}, lb(a, b, c, d, e) {\n if (32768 !== (a.node.mode & 61440)) {\n throw new O(43);\n }\n a = a.node.j;\n if (e & 2 || a.buffer !== C.buffer) {\n if (0 < c || c + b < a.length) {\n a.subarray ? a = a.subarray(c, c + b) : a = Array.prototype.slice.call(a, c, c + b);\n }\n c = !0;\n Aa();\n b = void 0;\n if (!b) {\n throw new O(48);\n }\n C.set(a, b);\n } else {\n c = !1, b = a.byteOffset;\n }\n return {o:b, M:c};\n}, nb(a, b, c, d) {\n P.m.write(a, b, 0, d, c, !1);\n return 0;\n},},};\nfunction Db(a, b) {\n var c = 0;\n a && (c |= 365);\n b && (c |= 146);\n return c;\n}\nvar Eb = null, Fb = {}, Gb = [], Hb = 1, Ib = null, Jb = !0, O = null, Bb = {}, Lb = (a, b = {}) => {\n a = lb(a);\n if (!a) {\n return {path:\"\", node:null};\n }\n b = Object.assign({gb:!0, Qa:0}, b);\n if (8 < b.Qa) {\n throw new O(32);\n }\n a = a.split(\"/\").filter(g => !!g);\n for (var c = Eb, d = \"/\", e = 0; e < a.length; e++) {\n var f = e === a.length - 1;\n if (f && b.parent) {\n break;\n }\n c = Cb(c, a[e]);\n d = gb(d + \"/\" + a[e]);\n c.wa && (!f || f && b.gb) && (c = c.wa.root);\n if (!f || b.fb) {\n for (f = 0; 40960 === (c.mode & 61440);) {\n if (c = Kb(d), d = lb(hb(d), c), c = Lb(d, {Qa:b.Qa + 1}).node, 40 < f++) {\n throw new O(32);\n }\n }\n }\n }\n return {path:d, node:c};\n}, Mb = a => {\n for (var b;;) {\n if (a === a.parent) {\n return a = a.U.mb, b ? \"/\" !== a[a.length - 1] ? `${a}/${b}` : a + b : a;\n }\n b = b ? `${a.name}/${b}` : a.name;\n a = a.parent;\n }\n}, Nb = (a, b) => {\n for (var c = 0, d = 0; d < b.length; d++) {\n c = (c << 5) - c + b.charCodeAt(d) | 0;\n }\n return (a + c >>> 0) % Ib.length;\n}, Cb = (a, b) => {\n var c;\n if (c = (c = Ob(a, \"x\")) ? c : a.l.ka ? 0 : 2) {\n throw new O(c, a);\n }\n for (c = Ib[Nb(a.id, b)]; c; c = c.lc) {\n var d = c.name;\n if (c.parent.id === a.id && d === b) {\n return c;\n }\n }\n return a.l.ka(a, b);\n}, Ab = (a, b, c, d) => {\n a = new Pb(a, b, c, d);\n b = Nb(a.parent.id, a.name);\n a.lc = Ib[b];\n return Ib[b] = a;\n}, Qb = a => {\n var b = [\"r\", \"w\", \"rw\"][a & 3];\n a & 512 && (b += \"w\");\n return b;\n}, Ob = (a, b) => {\n if (Jb) {\n return 0;\n }\n if (!b.includes(\"r\") || a.mode & 292) {\n if (b.includes(\"w\") && !(a.mode & 146) || b.includes(\"x\") && !(a.mode & 73)) {\n return 2;\n }\n } else {\n return 2;\n }\n return 0;\n}, Rb = (a, b) => {\n try {\n return Cb(a, b), 20;\n } catch (c) {\n }\n return Ob(a, \"wx\");\n}, Sb = () => {\n for (var a = 0; 4096 >= a; a++) {\n if (!Gb[a]) {\n return a;\n }\n }\n throw new O(33);\n}, Tb = a => {\n a = Gb[a];\n if (!a) {\n throw new O(8);\n }\n return a;\n}, Vb = (a, b = -1) => {\n Ub || (Ub = function() {\n this.h = {};\n }, Ub.prototype = {}, Object.defineProperties(Ub.prototype, {object:{get() {\n return this.node;\n }, set(c) {\n this.node = c;\n }}, flags:{get() {\n return this.h.flags;\n }, set(c) {\n this.h.flags = c;\n },}, position:{get() {\n return this.h.position;\n }, set(c) {\n this.h.position = c;\n },},}));\n a = Object.assign(new Ub(), a);\n -1 == b && (b = Sb());\n a.X = b;\n return Gb[b] = a;\n}, zb = {open:a => {\n a.m = Fb[a.node.za].m;\n a.m.open && a.m.open(a);\n}, ba:() => {\n throw new O(70);\n},}, ub = (a, b) => {\n Fb[a] = {m:b};\n}, Wb = (a, b) => {\n var c = \"/\" === b, d = !b;\n if (c && Eb) {\n throw new O(10);\n }\n if (!c && !d) {\n var e = Lb(b, {gb:!1});\n b = e.path;\n e = e.node;\n if (e.wa) {\n throw new O(10);\n }\n if (16384 !== (e.mode & 61440)) {\n throw new O(54);\n }\n }\n b = {type:a, Qc:{}, mb:b, kc:[]};\n a = a.U(b);\n a.U = b;\n b.root = a;\n c ? Eb = a : e && (e.wa = b, e.U && e.U.kc.push(b));\n}, S = (a, b, c) => {\n var d = Lb(a, {parent:!0}).node;\n a = ib(a);\n if (!a || \".\" === a || \"..\" === a) {\n throw new O(28);\n }\n var e = Rb(d, a);\n if (e) {\n throw new O(e);\n }\n if (!d.l.va) {\n throw new O(63);\n }\n return d.l.va(d, a, b, c);\n}, Xb = (a, b, c) => {\n \"undefined\" == typeof c && (c = b, b = 438);\n S(a, b | 8192, c);\n}, cc = (a, b) => {\n if (!lb(a)) {\n throw new O(44);\n }\n var c = Lb(b, {parent:!0}).node;\n if (!c) {\n throw new O(44);\n }\n b = ib(b);\n var d = Rb(c, b);\n if (d) {\n throw new O(d);\n }\n if (!c.l.Ea) {\n throw new O(63);\n }\n c.l.Ea(c, b, a);\n}, Kb = a => {\n a = Lb(a).node;\n if (!a) {\n throw new O(44);\n }\n if (!a.l.ma) {\n throw new O(28);\n }\n return lb(Mb(a.parent), a.l.ma(a));\n}, ec = (a, b, c) => {\n if (\"\" === a) {\n throw new O(44);\n }\n if (\"string\" == typeof b) {\n var d = {r:0, \"r+\":2, w:577, \"w+\":578, a:1089, \"a+\":1090,}[b];\n if (\"undefined\" == typeof d) {\n throw Error(`Unknown file open mode: ${b}`);\n }\n b = d;\n }\n c = b & 64 ? (\"undefined\" == typeof c ? 438 : c) & 4095 | 32768 : 0;\n if (\"object\" == typeof a) {\n var e = a;\n } else {\n a = gb(a);\n try {\n e = Lb(a, {fb:!(b & 131072)}).node;\n } catch (f) {\n }\n }\n d = !1;\n if (b & 64) {\n if (e) {\n if (b & 128) {\n throw new O(20);\n }\n } else {\n e = S(a, c, 0), d = !0;\n }\n }\n if (!e) {\n throw new O(44);\n }\n 8192 === (e.mode & 61440) && (b &= -513);\n if (b & 65536 && 16384 !== (e.mode & 61440)) {\n throw new O(54);\n }\n if (!d && (c = e ? 40960 === (e.mode & 61440) ? 32 : 16384 === (e.mode & 61440) && (\"r\" !== Qb(b) || b & 512) ? 31 : Ob(e, Qb(b)) : 44)) {\n throw new O(c);\n }\n if (b & 512 && !d) {\n c = e;\n c = \"string\" == typeof c ? Lb(c, {fb:!0}).node : c;\n if (!c.l.P) {\n throw new O(63);\n }\n if (16384 === (c.mode & 61440)) {\n throw new O(31);\n }\n if (32768 !== (c.mode & 61440)) {\n throw new O(28);\n }\n if (d = Ob(c, \"w\")) {\n throw new O(d);\n }\n c.l.P(c, {size:0, timestamp:Date.now()});\n }\n b &= -131713;\n e = Vb({node:e, path:Mb(e), flags:b, seekable:!0, position:0, m:e.m, zc:[], error:!1});\n e.m.open && e.m.open(e);\n !m.logReadFiles || b & 1 || (dc || (dc = {}), a in dc || (dc[a] = 1));\n return e;\n}, fc = (a, b, c) => {\n if (null === a.X) {\n throw new O(8);\n }\n if (!a.seekable || !a.m.ba) {\n throw new O(70);\n }\n if (0 != c && 1 != c && 2 != c) {\n throw new O(28);\n }\n a.position = a.m.ba(a, b, c);\n a.zc = [];\n}, gc = () => {\n O || (O = function(a, b) {\n this.name = \"ErrnoError\";\n this.node = b;\n this.pc = function(c) {\n this.aa = c;\n };\n this.pc(a);\n this.message = \"FS error\";\n }, O.prototype = Error(), O.prototype.constructor = O, [44].forEach(a => {\n Bb[a] = new O(a);\n Bb[a].stack = \"<generic error, no stack>\";\n }));\n}, hc, jc = (a, b, c) => {\n a = gb(\"/dev/\" + a);\n var d = Db(!!b, !!c);\n ic || (ic = 64);\n var e = ic++ << 8 | 0;\n ub(e, {open:f => {\n f.seekable = !1;\n }, close:() => {\n c && c.buffer && c.buffer.length && c(10);\n }, read:(f, g, n, p) => {\n for (var l = 0, u = 0; u < p; u++) {\n try {\n var v = b();\n } catch (x) {\n throw new O(29);\n }\n if (void 0 === v && 0 === l) {\n throw new O(6);\n }\n if (null === v || void 0 === v) {\n break;\n }\n l++;\n g[n + u] = v;\n }\n l && (f.node.timestamp = Date.now());\n return l;\n }, write:(f, g, n, p) => {\n for (var l = 0; l < p; l++) {\n try {\n c(g[n + l]);\n } catch (u) {\n throw new O(29);\n }\n }\n p && (f.node.timestamp = Date.now());\n return l;\n }});\n Xb(a, d, e);\n}, ic, kc = {}, Ub, dc, lc = void 0;\nfunction mc() {\n lc += 4;\n return L[lc - 4 >> 2];\n}\nfunction nc(a) {\n if (void 0 === a) {\n return \"_unknown\";\n }\n a = a.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var b = a.charCodeAt(0);\n return 48 <= b && 57 >= b ? `_${a}` : a;\n}\nfunction oc(a, b) {\n a = nc(a);\n return {[a]:function() {\n return b.apply(this, arguments);\n }}[a];\n}\nfunction pc() {\n this.M = [void 0];\n this.hb = [];\n}\nvar U = new pc(), qc = void 0;\nfunction V(a) {\n throw new qc(a);\n}\nvar rc = a => {\n a || V(\"Cannot use deleted val. handle = \" + a);\n return U.get(a).value;\n}, sc = a => {\n switch(a) {\n case void 0:\n return 1;\n case null:\n return 2;\n case !0:\n return 3;\n case !1:\n return 4;\n default:\n return U.pa({tb:1, value:a});\n }\n};\nfunction tc(a) {\n var b = Error, c = oc(a, function(d) {\n this.name = a;\n this.message = d;\n d = Error(d).stack;\n void 0 !== d && (this.stack = this.toString() + \"\\n\" + d.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n });\n c.prototype = Object.create(b.prototype);\n c.prototype.constructor = c;\n c.prototype.toString = function() {\n return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n };\n return c;\n}\nvar uc = void 0, vc = void 0;\nfunction W(a) {\n for (var b = \"\"; E[a];) {\n b += vc[E[a++]];\n }\n return b;\n}\nvar wc = [];\nfunction xc() {\n for (; wc.length;) {\n var a = wc.pop();\n a.g.fa = !1;\n a[\"delete\"]();\n }\n}\nvar yc = void 0, zc = {};\nfunction Ac(a, b) {\n for (void 0 === b && V(\"ptr should not be undefined\"); a.A;) {\n b = a.na(b), a = a.A;\n }\n return b;\n}\nvar Bc = {};\nfunction Cc(a) {\n a = Dc(a);\n var b = W(a);\n Ec(a);\n return b;\n}\nfunction Fc(a, b) {\n var c = Bc[a];\n void 0 === c && V(b + \" has unknown type \" + Cc(a));\n return c;\n}\nfunction Gc() {\n}\nvar Hc = !1;\nfunction Ic(a) {\n --a.count.value;\n 0 === a.count.value && (a.G ? a.L.W(a.G) : a.u.i.W(a.o));\n}\nfunction Jc(a, b, c) {\n if (b === c) {\n return a;\n }\n if (void 0 === c.A) {\n return null;\n }\n a = Jc(a, b, c.A);\n return null === a ? null : c.Pb(a);\n}\nvar Kc = {};\nfunction Lc(a, b) {\n b = Ac(a, b);\n return zc[b];\n}\nvar Mc = void 0;\nfunction Nc(a) {\n throw new Mc(a);\n}\nfunction Oc(a, b) {\n b.u && b.o || Nc(\"makeClassHandle requires ptr and ptrType\");\n !!b.L !== !!b.G && Nc(\"Both smartPtrType and smartPtr must be specified\");\n b.count = {value:1};\n return Pc(Object.create(a, {g:{value:b,},}));\n}\nfunction Pc(a) {\n if (\"undefined\" === typeof FinalizationRegistry) {\n return Pc = b => b, a;\n }\n Hc = new FinalizationRegistry(b => {\n Ic(b.g);\n });\n Pc = b => {\n var c = b.g;\n c.G && Hc.register(b, {g:c}, b);\n return b;\n };\n Gc = b => {\n Hc.unregister(b);\n };\n return Pc(a);\n}\nvar Qc = {};\nfunction Rc(a) {\n for (; a.length;) {\n var b = a.pop();\n a.pop()(b);\n }\n}\nfunction Sc(a) {\n return this.fromWireType(L[a >> 2]);\n}\nvar Tc = {}, Uc = {};\nfunction Y(a, b, c) {\n function d(n) {\n n = c(n);\n n.length !== a.length && Nc(\"Mismatched type converter count\");\n for (var p = 0; p < a.length; ++p) {\n Vc(a[p], n[p]);\n }\n }\n a.forEach(function(n) {\n Uc[n] = b;\n });\n var e = Array(b.length), f = [], g = 0;\n b.forEach((n, p) => {\n Bc.hasOwnProperty(n) ? e[p] = Bc[n] : (f.push(n), Tc.hasOwnProperty(n) || (Tc[n] = []), Tc[n].push(() => {\n e[p] = Bc[n];\n ++g;\n g === f.length && d(e);\n }));\n });\n 0 === f.length && d(e);\n}\nfunction Wc(a) {\n switch(a) {\n case 1:\n return 0;\n case 2:\n return 1;\n case 4:\n return 2;\n case 8:\n return 3;\n default:\n throw new TypeError(`Unknown type size: ${a}`);\n }\n}\nfunction Xc(a, b, c = {}) {\n var d = b.name;\n a || V(`type \"${d}\" must have a positive integer typeid pointer`);\n if (Bc.hasOwnProperty(a)) {\n if (c.$b) {\n return;\n }\n V(`Cannot register type '${d}' twice`);\n }\n Bc[a] = b;\n delete Uc[a];\n Tc.hasOwnProperty(a) && (b = Tc[a], delete Tc[a], b.forEach(e => e()));\n}\nfunction Vc(a, b, c = {}) {\n if (!(\"argPackAdvance\" in b)) {\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n }\n Xc(a, b, c);\n}\nfunction Yc(a) {\n V(a.g.u.i.name + \" instance already deleted\");\n}\nfunction Zc() {\n}\nfunction $c(a, b, c) {\n if (void 0 === a[b].B) {\n var d = a[b];\n a[b] = function() {\n a[b].B.hasOwnProperty(arguments.length) || V(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].B})!`);\n return a[b].B[arguments.length].apply(this, arguments);\n };\n a[b].B = [];\n a[b].B[d.ea] = d;\n }\n}\nfunction ad(a, b, c) {\n m.hasOwnProperty(a) ? ((void 0 === c || void 0 !== m[a].B && void 0 !== m[a].B[c]) && V(`Cannot register public name '${a}' twice`), $c(m, a, a), m.hasOwnProperty(c) && V(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`), m[a].B[c] = b) : (m[a] = b, void 0 !== c && (m[a].Pc = c));\n}\nfunction bd(a, b, c, d, e, f, g, n) {\n this.name = a;\n this.constructor = b;\n this.N = c;\n this.W = d;\n this.A = e;\n this.Ub = f;\n this.na = g;\n this.Pb = n;\n this.qb = [];\n}\nfunction cd(a, b, c) {\n for (; b !== c;) {\n b.na || V(`Expected null or instance of ${c.name}, got an instance of ${b.name}`), a = b.na(a), b = b.A;\n }\n return a;\n}\nfunction dd(a, b) {\n if (null === b) {\n return this.Na && V(`null is not a valid ${this.name}`), 0;\n }\n b.g || V(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || V(`Cannot pass deleted object as a pointer of type ${this.name}`);\n return cd(b.g.o, b.g.u.i, this.i);\n}\nfunction fd(a, b) {\n if (null === b) {\n this.Na && V(`null is not a valid ${this.name}`);\n if (this.ua) {\n var c = this.Pa();\n null !== a && a.push(this.W, c);\n return c;\n }\n return 0;\n }\n b.g || V(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || V(`Cannot pass deleted object as a pointer of type ${this.name}`);\n !this.ta && b.g.u.ta && V(`Cannot convert argument of type ${b.g.L ? b.g.L.name : b.g.u.name} to parameter type ${this.name}`);\n c = cd(b.g.o, b.g.u.i, this.i);\n if (this.ua) {\n switch(void 0 === b.g.G && V(\"Passing raw pointer to smart pointer is illegal\"), this.tc) {\n case 0:\n b.g.L === this ? c = b.g.G : V(`Cannot convert argument of type ${b.g.L ? b.g.L.name : b.g.u.name} to parameter type ${this.name}`);\n break;\n case 1:\n c = b.g.G;\n break;\n case 2:\n if (b.g.L === this) {\n c = b.g.G;\n } else {\n var d = b.clone();\n c = this.oc(c, sc(function() {\n d[\"delete\"]();\n }));\n null !== a && a.push(this.W, c);\n }\n break;\n default:\n V(\"Unsupporting sharing policy\");\n }\n }\n return c;\n}\nfunction gd(a, b) {\n if (null === b) {\n return this.Na && V(`null is not a valid ${this.name}`), 0;\n }\n b.g || V(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || V(`Cannot pass deleted object as a pointer of type ${this.name}`);\n b.g.u.ta && V(`Cannot convert argument of type ${b.g.u.name} to parameter type ${this.name}`);\n return cd(b.g.o, b.g.u.i, this.i);\n}\nfunction hd(a, b, c, d) {\n this.name = a;\n this.i = b;\n this.Na = c;\n this.ta = d;\n this.ua = !1;\n this.W = this.oc = this.Pa = this.rb = this.tc = this.nc = void 0;\n void 0 !== b.A ? this.toWireType = fd : (this.toWireType = d ? dd : gd, this.K = null);\n}\nfunction jd(a, b, c) {\n m.hasOwnProperty(a) || Nc(\"Replacing nonexistant public symbol\");\n void 0 !== m[a].B && void 0 !== c ? m[a].B[c] = b : (m[a] = b, m[a].ea = c);\n}\nvar kd = [], ld = a => {\n var b = kd[a];\n b || (a >= kd.length && (kd.length = a + 1), kd[a] = b = Ka.get(a));\n return b;\n}, md = (a, b) => {\n var c = [];\n return function() {\n c.length = 0;\n Object.assign(c, arguments);\n if (a.includes(\"j\")) {\n var d = m[\"dynCall_\" + a];\n d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b);\n } else {\n d = ld(b).apply(null, c);\n }\n return d;\n };\n};\nfunction Z(a, b) {\n a = W(a);\n var c = a.includes(\"j\") ? md(a, b) : ld(b);\n \"function\" != typeof c && V(`unknown function pointer with signature ${a}: ${b}`);\n return c;\n}\nvar nd = void 0;\nfunction od(a, b) {\n function c(f) {\n e[f] || Bc[f] || (Uc[f] ? Uc[f].forEach(c) : (d.push(f), e[f] = !0));\n }\n var d = [], e = {};\n b.forEach(c);\n throw new nd(`${a}: ` + d.map(Cc).join([\", \"]));\n}\nfunction pd(a, b, c, d, e) {\n var f = b.length;\n 2 > f && V(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var g = null !== b[1] && null !== c, n = !1;\n for (c = 1; c < b.length; ++c) {\n if (null !== b[c] && void 0 === b[c].K) {\n n = !0;\n break;\n }\n }\n var p = \"void\" !== b[0].name, l = f - 2, u = Array(l), v = [], x = [];\n return function() {\n arguments.length !== l && V(`function ${a} called with ${arguments.length} arguments, expected ${l} args!`);\n x.length = 0;\n v.length = g ? 2 : 1;\n v[0] = e;\n if (g) {\n var k = b[1].toWireType(x, this);\n v[1] = k;\n }\n for (var t = 0; t < l; ++t) {\n u[t] = b[t + 2].toWireType(x, arguments[t]), v.push(u[t]);\n }\n t = d.apply(null, v);\n if (n) {\n Rc(x);\n } else {\n for (var r = g ? 1 : 2; r < b.length; r++) {\n var B = 1 === r ? k : u[r - 2];\n null !== b[r].K && b[r].K(B);\n }\n }\n k = p ? b[0].fromWireType(t) : void 0;\n return k;\n };\n}\nfunction sd(a, b) {\n for (var c = [], d = 0; d < a; d++) {\n c.push(N[b + 4 * d >> 2]);\n }\n return c;\n}\nfunction td(a, b, c) {\n a instanceof Object || V(`${c} with invalid \"this\": ${a}`);\n a instanceof b.i.constructor || V(`${c} incompatible with \"this\" of type ${a.constructor.name}`);\n a.g.o || V(`cannot call emscripten binding method ${c} on deleted object`);\n return cd(a.g.o, a.g.u.i, b.i);\n}\nfunction ud(a) {\n a >= U.h && 0 === --U.get(a).tb && U.Zb(a);\n}\nfunction vd(a, b, c) {\n switch(b) {\n case 0:\n return function(d) {\n return this.fromWireType((c ? C : E)[d]);\n };\n case 1:\n return function(d) {\n return this.fromWireType((c ? Da : Ea)[d >> 1]);\n };\n case 2:\n return function(d) {\n return this.fromWireType((c ? L : N)[d >> 2]);\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + a);\n }\n}\nfunction ed(a) {\n if (null === a) {\n return \"null\";\n }\n var b = typeof a;\n return \"object\" === b || \"array\" === b || \"function\" === b ? a.toString() : \"\" + a;\n}\nfunction wd(a, b) {\n switch(b) {\n case 2:\n return function(c) {\n return this.fromWireType(Fa[c >> 2]);\n };\n case 3:\n return function(c) {\n return this.fromWireType(Ia[c >> 3]);\n };\n default:\n throw new TypeError(\"Unknown float type: \" + a);\n }\n}\nfunction xd(a, b, c) {\n switch(b) {\n case 0:\n return c ? function(d) {\n return C[d];\n } : function(d) {\n return E[d];\n };\n case 1:\n return c ? function(d) {\n return Da[d >> 1];\n } : function(d) {\n return Ea[d >> 1];\n };\n case 2:\n return c ? function(d) {\n return L[d >> 2];\n } : function(d) {\n return N[d >> 2];\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + a);\n }\n}\nvar yd = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-16le\") : void 0, zd = (a, b) => {\n var c = a >> 1;\n for (var d = c + b / 2; !(c >= d) && Ea[c];) {\n ++c;\n }\n c <<= 1;\n if (32 < c - a && yd) {\n return yd.decode(E.subarray(a, c));\n }\n c = \"\";\n for (d = 0; !(d >= b / 2); ++d) {\n var e = Da[a + 2 * d >> 1];\n if (0 == e) {\n break;\n }\n c += String.fromCharCode(e);\n }\n return c;\n}, Ad = (a, b, c) => {\n void 0 === c && (c = 2147483647);\n if (2 > c) {\n return 0;\n }\n c -= 2;\n var d = b;\n c = c < 2 * a.length ? c / 2 : a.length;\n for (var e = 0; e < c; ++e) {\n Da[b >> 1] = a.charCodeAt(e), b += 2;\n }\n Da[b >> 1] = 0;\n return b - d;\n}, Bd = a => 2 * a.length, Cd = (a, b) => {\n for (var c = 0, d = \"\"; !(c >= b / 4);) {\n var e = L[a + 4 * c >> 2];\n if (0 == e) {\n break;\n }\n ++c;\n 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);\n }\n return d;\n}, Dd = (a, b, c) => {\n void 0 === c && (c = 2147483647);\n if (4 > c) {\n return 0;\n }\n var d = b;\n c = d + c - 4;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var g = a.charCodeAt(++e);\n f = 65536 + ((f & 1023) << 10) | g & 1023;\n }\n L[b >> 2] = f;\n b += 4;\n if (b + 4 > c) {\n break;\n }\n }\n L[b >> 2] = 0;\n return b - d;\n}, Ed = a => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 55296 <= d && 57343 >= d && ++c;\n b += 4;\n }\n return b;\n}, Fd = {};\nfunction Gd(a) {\n var b = Fd[a];\n return void 0 === b ? W(a) : b;\n}\nvar Hd = [];\nfunction Id(a) {\n var b = Hd.length;\n Hd.push(a);\n return b;\n}\nfunction Jd(a, b) {\n for (var c = Array(a), d = 0; d < a; ++d) {\n c[d] = Fc(N[b + 4 * d >> 2], \"parameter \" + d);\n }\n return c;\n}\nvar Kd = [], Ld = [], Md = {}, Od = () => {\n if (!Nd) {\n var a = {USER:\"web_user\", LOGNAME:\"web_user\", PATH:\"/\", PWD:\"/\", HOME:\"/home/web_user\", LANG:(\"object\" == typeof navigator && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", _:na || \"./this.program\"}, b;\n for (b in Md) {\n void 0 === Md[b] ? delete a[b] : a[b] = Md[b];\n }\n var c = [];\n for (b in a) {\n c.push(`${b}=${a[b]}`);\n }\n Nd = c;\n }\n return Nd;\n}, Nd, Pd = a => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400), Qd = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Rd = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Sd = (a, b, c, d) => {\n function e(k, t, r) {\n for (k = \"number\" == typeof k ? k.toString() : k || \"\"; k.length < t;) {\n k = r[0] + k;\n }\n return k;\n }\n function f(k, t) {\n return e(k, t, \"0\");\n }\n function g(k, t) {\n function r(D) {\n return 0 > D ? -1 : 0 < D ? 1 : 0;\n }\n var B;\n 0 === (B = r(k.getFullYear() - t.getFullYear())) && 0 === (B = r(k.getMonth() - t.getMonth())) && (B = r(k.getDate() - t.getDate()));\n return B;\n }\n function n(k) {\n switch(k.getDay()) {\n case 0:\n return new Date(k.getFullYear() - 1, 11, 29);\n case 1:\n return k;\n case 2:\n return new Date(k.getFullYear(), 0, 3);\n case 3:\n return new Date(k.getFullYear(), 0, 2);\n case 4:\n return new Date(k.getFullYear(), 0, 1);\n case 5:\n return new Date(k.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(k.getFullYear() - 1, 11, 30);\n }\n }\n function p(k) {\n var t = k.ca;\n for (k = new Date((new Date(k.da + 1900, 0, 1)).getTime()); 0 < t;) {\n var r = k.getMonth(), B = (Pd(k.getFullYear()) ? Qd : Rd)[r];\n if (t > B - k.getDate()) {\n t -= B - k.getDate() + 1, k.setDate(1), 11 > r ? k.setMonth(r + 1) : (k.setMonth(0), k.setFullYear(k.getFullYear() + 1));\n } else {\n k.setDate(k.getDate() + t);\n break;\n }\n }\n r = new Date(k.getFullYear() + 1, 0, 4);\n t = n(new Date(k.getFullYear(), 0, 4));\n r = n(r);\n return 0 >= g(t, k) ? 0 >= g(r, k) ? k.getFullYear() + 1 : k.getFullYear() : k.getFullYear() - 1;\n }\n var l = L[d + 40 >> 2];\n d = {wc:L[d >> 2], vc:L[d + 4 >> 2], Fa:L[d + 8 >> 2], Sa:L[d + 12 >> 2], Ga:L[d + 16 >> 2], da:L[d + 20 >> 2], R:L[d + 24 >> 2], ca:L[d + 28 >> 2], Rc:L[d + 32 >> 2], uc:L[d + 36 >> 2], xc:l ? l ? nb(E, l) : \"\" : \"\"};\n c = c ? nb(E, c) : \"\";\n l = {\"%c\":\"%a %b %d %H:%M:%S %Y\", \"%D\":\"%m/%d/%y\", \"%F\":\"%Y-%m-%d\", \"%h\":\"%b\", \"%r\":\"%I:%M:%S %p\", \"%R\":\"%H:%M\", \"%T\":\"%H:%M:%S\", \"%x\":\"%m/%d/%y\", \"%X\":\"%H:%M:%S\", \"%Ec\":\"%c\", \"%EC\":\"%C\", \"%Ex\":\"%m/%d/%y\", \"%EX\":\"%H:%M:%S\", \"%Ey\":\"%y\", \"%EY\":\"%Y\", \"%Od\":\"%d\", \"%Oe\":\"%e\", \"%OH\":\"%H\", \"%OI\":\"%I\", \"%Om\":\"%m\", \"%OM\":\"%M\", \"%OS\":\"%S\", \"%Ou\":\"%u\", \"%OU\":\"%U\", \"%OV\":\"%V\", \"%Ow\":\"%w\", \"%OW\":\"%W\", \"%Oy\":\"%y\",};\n for (var u in l) {\n c = c.replace(new RegExp(u, \"g\"), l[u]);\n }\n var v = \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"), x = \"January February March April May June July August September October November December\".split(\" \");\n l = {\"%a\":k => v[k.R].substring(0, 3), \"%A\":k => v[k.R], \"%b\":k => x[k.Ga].substring(0, 3), \"%B\":k => x[k.Ga], \"%C\":k => f((k.da + 1900) / 100 | 0, 2), \"%d\":k => f(k.Sa, 2), \"%e\":k => e(k.Sa, 2, \" \"), \"%g\":k => p(k).toString().substring(2), \"%G\":k => p(k), \"%H\":k => f(k.Fa, 2), \"%I\":k => {\n k = k.Fa;\n 0 == k ? k = 12 : 12 < k && (k -= 12);\n return f(k, 2);\n }, \"%j\":k => {\n for (var t = 0, r = 0; r <= k.Ga - 1; t += (Pd(k.da + 1900) ? Qd : Rd)[r++]) {\n }\n return f(k.Sa + t, 3);\n }, \"%m\":k => f(k.Ga + 1, 2), \"%M\":k => f(k.vc, 2), \"%n\":() => \"\\n\", \"%p\":k => 0 <= k.Fa && 12 > k.Fa ? \"AM\" : \"PM\", \"%S\":k => f(k.wc, 2), \"%t\":() => \"\\t\", \"%u\":k => k.R || 7, \"%U\":k => f(Math.floor((k.ca + 7 - k.R) / 7), 2), \"%V\":k => {\n var t = Math.floor((k.ca + 7 - (k.R + 6) % 7) / 7);\n 2 >= (k.R + 371 - k.ca - 2) % 7 && t++;\n if (t) {\n 53 == t && (r = (k.R + 371 - k.ca) % 7, 4 == r || 3 == r && Pd(k.da) || (t = 1));\n } else {\n t = 52;\n var r = (k.R + 7 - k.ca - 1) % 7;\n (4 == r || 5 == r && Pd(k.da % 400 - 1)) && t++;\n }\n return f(t, 2);\n }, \"%w\":k => k.R, \"%W\":k => f(Math.floor((k.ca + 7 - (k.R + 6) % 7) / 7), 2), \"%y\":k => (k.da + 1900).toString().substring(2), \"%Y\":k => k.da + 1900, \"%z\":k => {\n k = k.uc;\n var t = 0 <= k;\n k = Math.abs(k) / 60;\n return (t ? \"+\" : \"-\") + String(\"0000\" + (k / 60 * 100 + k % 60)).slice(-4);\n }, \"%Z\":k => k.xc, \"%%\":() => \"%\"};\n c = c.replace(/%%/g, \"\\x00\\x00\");\n for (u in l) {\n c.includes(u) && (c = c.replace(new RegExp(u, \"g\"), l[u](d)));\n }\n c = c.replace(/\\0\\0/g, \"%\");\n u = rb(c, !1);\n if (u.length > b) {\n return 0;\n }\n C.set(u, a);\n return u.length - 1;\n};\nfunction Pb(a, b, c, d) {\n a || (a = this);\n this.parent = a;\n this.U = a.U;\n this.wa = null;\n this.id = Hb++;\n this.name = b;\n this.mode = c;\n this.l = {};\n this.m = {};\n this.za = d;\n}\nObject.defineProperties(Pb.prototype, {read:{get:function() {\n return 365 === (this.mode & 365);\n}, set:function(a) {\n a ? this.mode |= 365 : this.mode &= -366;\n}}, write:{get:function() {\n return 146 === (this.mode & 146);\n}, set:function(a) {\n a ? this.mode |= 146 : this.mode &= -147;\n}}});\ngc();\nIb = Array(4096);\nWb(P, \"/\");\nS(\"/tmp\", 16895, 0);\nS(\"/home\", 16895, 0);\nS(\"/home/web_user\", 16895, 0);\n(() => {\n S(\"/dev\", 16895, 0);\n ub(259, {read:() => 0, write:(d, e, f, g) => g,});\n Xb(\"/dev/null\", 259);\n tb(1280, wb);\n tb(1536, xb);\n Xb(\"/dev/tty\", 1280);\n Xb(\"/dev/tty1\", 1536);\n var a = new Uint8Array(1024), b = 0, c = () => {\n 0 === b && (b = kb(a).byteLength);\n return a[--b];\n };\n jc(\"random\", c);\n jc(\"urandom\", c);\n S(\"/dev/shm\", 16895, 0);\n S(\"/dev/shm/tmp\", 16895, 0);\n})();\n(() => {\n S(\"/proc\", 16895, 0);\n var a = S(\"/proc/self\", 16895, 0);\n S(\"/proc/self/fd\", 16895, 0);\n Wb({U:() => {\n var b = Ab(a, \"fd\", 16895, 73);\n b.l = {ka:(c, d) => {\n var e = Tb(+d);\n c = {parent:null, U:{mb:\"fake\"}, l:{ma:() => e.path},};\n return c.parent = c;\n }};\n return b;\n }}, \"/proc/self/fd\");\n})();\nObject.assign(pc.prototype, {get(a) {\n return this.M[a];\n}, has(a) {\n return void 0 !== this.M[a];\n}, pa(a) {\n var b = this.hb.pop() || this.M.length;\n this.M[b] = a;\n return b;\n}, Zb(a) {\n this.M[a] = void 0;\n this.hb.push(a);\n}});\nqc = m.BindingError = class extends Error {\n constructor(a) {\n super(a);\n this.name = \"BindingError\";\n }\n};\nU.M.push({value:void 0}, {value:null}, {value:!0}, {value:!1},);\nU.h = U.M.length;\nm.count_emval_handles = function() {\n for (var a = 0, b = U.h; b < U.M.length; ++b) {\n void 0 !== U.M[b] && ++a;\n }\n return a;\n};\nuc = m.PureVirtualError = tc(\"PureVirtualError\");\nfor (var Td = Array(256), Ud = 0; 256 > Ud; ++Ud) {\n Td[Ud] = String.fromCharCode(Ud);\n}\nvc = Td;\nm.getInheritedInstanceCount = function() {\n return Object.keys(zc).length;\n};\nm.getLiveInheritedInstances = function() {\n var a = [], b;\n for (b in zc) {\n zc.hasOwnProperty(b) && a.push(zc[b]);\n }\n return a;\n};\nm.flushPendingDeletes = xc;\nm.setDelayFunction = function(a) {\n yc = a;\n wc.length && yc && yc(xc);\n};\nMc = m.InternalError = class extends Error {\n constructor(a) {\n super(a);\n this.name = \"InternalError\";\n }\n};\nZc.prototype.isAliasOf = function(a) {\n if (!(this instanceof Zc && a instanceof Zc)) {\n return !1;\n }\n var b = this.g.u.i, c = this.g.o, d = a.g.u.i;\n for (a = a.g.o; b.A;) {\n c = b.na(c), b = b.A;\n }\n for (; d.A;) {\n a = d.na(a), d = d.A;\n }\n return b === d && c === a;\n};\nZc.prototype.clone = function() {\n this.g.o || Yc(this);\n if (this.g.ia) {\n return this.g.count.value += 1, this;\n }\n var a = Pc, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.g;\n a = a(c.call(b, d, {g:{value:{count:e.count, fa:e.fa, ia:e.ia, o:e.o, u:e.u, G:e.G, L:e.L,},}}));\n a.g.count.value += 1;\n a.g.fa = !1;\n return a;\n};\nZc.prototype[\"delete\"] = function() {\n this.g.o || Yc(this);\n this.g.fa && !this.g.ia && V(\"Object already scheduled for deletion\");\n Gc(this);\n Ic(this.g);\n this.g.ia || (this.g.G = void 0, this.g.o = void 0);\n};\nZc.prototype.isDeleted = function() {\n return !this.g.o;\n};\nZc.prototype.deleteLater = function() {\n this.g.o || Yc(this);\n this.g.fa && !this.g.ia && V(\"Object already scheduled for deletion\");\n wc.push(this);\n 1 === wc.length && yc && yc(xc);\n this.g.fa = !0;\n return this;\n};\nhd.prototype.Vb = function(a) {\n this.rb && (a = this.rb(a));\n return a;\n};\nhd.prototype.ab = function(a) {\n this.W && this.W(a);\n};\nhd.prototype.argPackAdvance = 8;\nhd.prototype.readValueFromPointer = Sc;\nhd.prototype.deleteObject = function(a) {\n if (null !== a) {\n a[\"delete\"]();\n }\n};\nhd.prototype.fromWireType = function(a) {\n function b() {\n return this.ua ? Oc(this.i.N, {u:this.nc, o:c, L:this, G:a,}) : Oc(this.i.N, {u:this, o:a,});\n }\n var c = this.Vb(a);\n if (!c) {\n return this.ab(a), null;\n }\n var d = Lc(this.i, c);\n if (void 0 !== d) {\n if (0 === d.g.count.value) {\n return d.g.o = c, d.g.G = a, d.clone();\n }\n d = d.clone();\n this.ab(a);\n return d;\n }\n d = this.i.Ub(c);\n d = Kc[d];\n if (!d) {\n return b.call(this);\n }\n d = this.ta ? d.Kb : d.pointerType;\n var e = Jc(c, this.i, d.i);\n return null === e ? b.call(this) : this.ua ? Oc(d.i.N, {u:d, o:e, L:this, G:a,}) : Oc(d.i.N, {u:d, o:e,});\n};\nnd = m.UnboundTypeError = tc(\"UnboundTypeError\");\nvar Xd = {__syscall_fcntl64:function(a, b, c) {\n lc = c;\n try {\n var d = Tb(a);\n switch(b) {\n case 0:\n var e = mc();\n return 0 > e ? -28 : Vb(d, e).X;\n case 1:\n case 2:\n return 0;\n case 3:\n return d.flags;\n case 4:\n return e = mc(), d.flags |= e, 0;\n case 5:\n return e = mc(), Da[e + 0 >> 1] = 2, 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n return L[Vd() >> 2] = 28, -1;\n default:\n return -28;\n }\n } catch (f) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== f.name) {\n throw f;\n }\n return -f.aa;\n }\n}, __syscall_ioctl:function(a, b, c) {\n lc = c;\n try {\n var d = Tb(a);\n switch(b) {\n case 21509:\n return d.s ? 0 : -59;\n case 21505:\n if (!d.s) {\n return -59;\n }\n if (d.s.V.bc) {\n b = [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,];\n var e = mc();\n L[e >> 2] = 25856;\n L[e + 4 >> 2] = 5;\n L[e + 8 >> 2] = 191;\n L[e + 12 >> 2] = 35387;\n for (var f = 0; 32 > f; f++) {\n C[e + f + 17 >> 0] = b[f] || 0;\n }\n }\n return 0;\n case 21510:\n case 21511:\n case 21512:\n return d.s ? 0 : -59;\n case 21506:\n case 21507:\n case 21508:\n if (!d.s) {\n return -59;\n }\n if (d.s.V.cc) {\n for (e = mc(), b = [], f = 0; 32 > f; f++) {\n b.push(C[e + f + 17 >> 0]);\n }\n }\n return 0;\n case 21519:\n if (!d.s) {\n return -59;\n }\n e = mc();\n return L[e >> 2] = 0;\n case 21520:\n return d.s ? -28 : -59;\n case 21531:\n e = mc();\n if (!d.m.ac) {\n throw new O(59);\n }\n return d.m.ac(d, b, e);\n case 21523:\n if (!d.s) {\n return -59;\n }\n d.s.V.dc && (f = [24, 80], e = mc(), Da[e >> 1] = f[0], Da[e + 2 >> 1] = f[1]);\n return 0;\n case 21524:\n return d.s ? 0 : -59;\n case 21515:\n return d.s ? 0 : -59;\n default:\n return -28;\n }\n } catch (g) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== g.name) {\n throw g;\n }\n return -g.aa;\n }\n}, __syscall_openat:function(a, b, c, d) {\n lc = d;\n try {\n b = b ? nb(E, b) : \"\";\n var e = b;\n if (\"/\" === e.charAt(0)) {\n b = e;\n } else {\n var f = -100 === a ? \"/\" : Tb(a).path;\n if (0 == e.length) {\n throw new O(44);\n }\n b = gb(f + \"/\" + e);\n }\n var g = d ? mc() : 0;\n return ec(b, c, g).X;\n } catch (n) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== n.name) {\n throw n;\n }\n return -n.aa;\n }\n}, _embind_create_inheriting_constructor:function(a, b, c) {\n a = W(a);\n b = Fc(b, \"wrapper\");\n c = rc(c);\n var d = [].slice, e = b.i, f = e.N, g = e.A.N, n = e.A.constructor;\n a = oc(a, function() {\n e.A.qb.forEach(function(l) {\n if (this[l] === g[l]) {\n throw new uc(`Pure virtual function ${l} must be implemented in JavaScript`);\n }\n }.bind(this));\n Object.defineProperty(this, \"__parent\", {value:f});\n this.__construct.apply(this, d.call(arguments));\n });\n f.__construct = function() {\n this === f && V(\"Pass correct 'this' to __construct\");\n var l = n.implement.apply(void 0, [this].concat(d.call(arguments)));\n Gc(l);\n var u = l.g;\n l.notifyOnDestruction();\n u.ia = !0;\n Object.defineProperties(this, {g:{value:u}});\n Pc(this);\n l = u.o;\n l = Ac(e, l);\n zc.hasOwnProperty(l) ? V(`Tried to register registered instance: ${l}`) : zc[l] = this;\n };\n f.__destruct = function() {\n this === f && V(\"Pass correct 'this' to __destruct\");\n Gc(this);\n var l = this.g.o;\n l = Ac(e, l);\n zc.hasOwnProperty(l) ? delete zc[l] : V(`Tried to unregister unregistered instance: ${l}`);\n };\n a.prototype = Object.create(f);\n for (var p in c) {\n a.prototype[p] = c[p];\n }\n return sc(a);\n}, _embind_finalize_value_object:function(a) {\n var b = Qc[a];\n delete Qc[a];\n var c = b.Pa, d = b.W, e = b.eb, f = e.map(g => g.Yb).concat(e.map(g => g.rc));\n Y([a], f, g => {\n var n = {};\n e.forEach((p, l) => {\n var u = g[l], v = p.Wb, x = p.Xb, k = g[l + e.length], t = p.qc, r = p.sc;\n n[p.Sb] = {read:B => u.fromWireType(v(x, B)), write:(B, D) => {\n var w = [];\n t(r, B, k.toWireType(w, D));\n Rc(w);\n }};\n });\n return [{name:b.name, fromWireType:function(p) {\n var l = {}, u;\n for (u in n) {\n l[u] = n[u].read(p);\n }\n d(p);\n return l;\n }, toWireType:function(p, l) {\n for (var u in n) {\n if (!(u in l)) {\n throw new TypeError(`Missing field: \"${u}\"`);\n }\n }\n var v = c();\n for (u in n) {\n n[u].write(v, l[u]);\n }\n null !== p && p.push(d, v);\n return v;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:d,}];\n });\n}, _embind_register_bigint:function() {\n}, _embind_register_bool:function(a, b, c, d, e) {\n var f = Wc(c);\n b = W(b);\n Vc(a, {name:b, fromWireType:function(g) {\n return !!g;\n }, toWireType:function(g, n) {\n return n ? d : e;\n }, argPackAdvance:8, readValueFromPointer:function(g) {\n if (1 === c) {\n var n = C;\n } else if (2 === c) {\n n = Da;\n } else if (4 === c) {\n n = L;\n } else {\n throw new TypeError(\"Unknown boolean type size: \" + b);\n }\n return this.fromWireType(n[g >> f]);\n }, K:null,});\n}, _embind_register_class:function(a, b, c, d, e, f, g, n, p, l, u, v, x) {\n u = W(u);\n f = Z(e, f);\n n && (n = Z(g, n));\n l && (l = Z(p, l));\n x = Z(v, x);\n var k = nc(u);\n ad(k, function() {\n od(`Cannot construct ${u} due to unbound types`, [d]);\n });\n Y([a, b, c], d ? [d] : [], function(t) {\n t = t[0];\n if (d) {\n var r = t.i;\n var B = r.N;\n } else {\n B = Zc.prototype;\n }\n t = oc(k, function() {\n if (Object.getPrototypeOf(this) !== D) {\n throw new qc(\"Use 'new' to construct \" + u);\n }\n if (void 0 === w.$) {\n throw new qc(u + \" has no accessible constructor\");\n }\n var T = w.$[arguments.length];\n if (void 0 === T) {\n throw new qc(`Tried to invoke ctor of ${u} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(w.$).toString()}) parameters instead!`);\n }\n return T.apply(this, arguments);\n });\n var D = Object.create(B, {constructor:{value:t},});\n t.prototype = D;\n var w = new bd(u, t, D, x, r, f, n, l);\n w.A && (void 0 === w.A.oa && (w.A.oa = []), w.A.oa.push(w));\n r = new hd(u, w, !0, !1);\n B = new hd(u + \"*\", w, !1, !1);\n var M = new hd(u + \" const*\", w, !1, !0);\n Kc[a] = {pointerType:B, Kb:M};\n jd(k, t);\n return [r, B, M];\n });\n}, _embind_register_class_class_function:function(a, b, c, d, e, f, g) {\n var n = sd(c, d);\n b = W(b);\n f = Z(e, f);\n Y([], [a], function(p) {\n function l() {\n od(`Cannot call ${u} due to unbound types`, n);\n }\n p = p[0];\n var u = `${p.name}.${b}`;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n var v = p.i.constructor;\n void 0 === v[b] ? (l.ea = c - 1, v[b] = l) : ($c(v, b, u), v[b].B[c - 1] = l);\n Y([], n, function(x) {\n x = pd(u, [x[0], null].concat(x.slice(1)), null, f, g);\n void 0 === v[b].B ? (x.ea = c - 1, v[b] = x) : v[b].B[c - 1] = x;\n if (p.i.oa) {\n for (const k of p.i.oa) {\n k.constructor.hasOwnProperty(b) || (k.constructor[b] = x);\n }\n }\n return [];\n });\n return [];\n });\n}, _embind_register_class_class_property:function(a, b, c, d, e, f, g, n) {\n b = W(b);\n f = Z(e, f);\n Y([], [a], function(p) {\n p = p[0];\n var l = `${p.name}.${b}`, u = {get() {\n od(`Cannot access ${l} due to unbound types`, [c]);\n }, enumerable:!0, configurable:!0};\n u.set = n ? () => {\n od(`Cannot access ${l} due to unbound types`, [c]);\n } : () => {\n V(`${l} is a read-only property`);\n };\n Object.defineProperty(p.i.constructor, b, u);\n Y([], [c], function(v) {\n v = v[0];\n var x = {get() {\n return v.fromWireType(f(d));\n }, enumerable:!0};\n n && (n = Z(g, n), x.set = k => {\n var t = [];\n n(d, v.toWireType(t, k));\n Rc(t);\n });\n Object.defineProperty(p.i.constructor, b, x);\n return [];\n });\n return [];\n });\n}, _embind_register_class_constructor:function(a, b, c, d, e, f) {\n var g = sd(b, c);\n e = Z(d, e);\n Y([], [a], function(n) {\n n = n[0];\n var p = `constructor ${n.name}`;\n void 0 === n.i.$ && (n.i.$ = []);\n if (void 0 !== n.i.$[b - 1]) {\n throw new qc(`Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n }\n n.i.$[b - 1] = () => {\n od(`Cannot construct ${n.name} due to unbound types`, g);\n };\n Y([], g, function(l) {\n l.splice(1, 0, null);\n n.i.$[b - 1] = pd(p, l, null, e, f);\n return [];\n });\n return [];\n });\n}, _embind_register_class_function:function(a, b, c, d, e, f, g, n) {\n var p = sd(c, d);\n b = W(b);\n f = Z(e, f);\n Y([], [a], function(l) {\n function u() {\n od(`Cannot call ${v} due to unbound types`, p);\n }\n l = l[0];\n var v = `${l.name}.${b}`;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n n && l.i.qb.push(b);\n var x = l.i.N, k = x[b];\n void 0 === k || void 0 === k.B && k.className !== l.name && k.ea === c - 2 ? (u.ea = c - 2, u.className = l.name, x[b] = u) : ($c(x, b, v), x[b].B[c - 2] = u);\n Y([], p, function(t) {\n t = pd(v, t, l, f, g);\n void 0 === x[b].B ? (t.ea = c - 2, x[b] = t) : x[b].B[c - 2] = t;\n return [];\n });\n return [];\n });\n}, _embind_register_class_property:function(a, b, c, d, e, f, g, n, p, l) {\n b = W(b);\n e = Z(d, e);\n Y([], [a], function(u) {\n u = u[0];\n var v = `${u.name}.${b}`, x = {get() {\n od(`Cannot access ${v} due to unbound types`, [c, g]);\n }, enumerable:!0, configurable:!0};\n x.set = p ? () => {\n od(`Cannot access ${v} due to unbound types`, [c, g]);\n } : () => {\n V(v + \" is a read-only property\");\n };\n Object.defineProperty(u.i.N, b, x);\n Y([], p ? [c, g] : [c], function(k) {\n var t = k[0], r = {get() {\n var D = td(this, u, v + \" getter\");\n return t.fromWireType(e(f, D));\n }, enumerable:!0};\n if (p) {\n p = Z(n, p);\n var B = k[1];\n r.set = function(D) {\n var w = td(this, u, v + \" setter\"), M = [];\n p(l, w, B.toWireType(M, D));\n Rc(M);\n };\n }\n Object.defineProperty(u.i.N, b, r);\n return [];\n });\n return [];\n });\n}, _embind_register_emval:function(a, b) {\n b = W(b);\n Vc(a, {name:b, fromWireType:function(c) {\n var d = rc(c);\n ud(c);\n return d;\n }, toWireType:function(c, d) {\n return sc(d);\n }, argPackAdvance:8, readValueFromPointer:Sc, K:null,});\n}, _embind_register_enum:function(a, b, c, d) {\n function e() {\n }\n c = Wc(c);\n b = W(b);\n e.values = {};\n Vc(a, {name:b, constructor:e, fromWireType:function(f) {\n return this.constructor.values[f];\n }, toWireType:function(f, g) {\n return g.value;\n }, argPackAdvance:8, readValueFromPointer:vd(b, c, d), K:null,});\n ad(b, e);\n}, _embind_register_enum_value:function(a, b, c) {\n var d = Fc(a, \"enum\");\n b = W(b);\n a = d.constructor;\n d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:oc(`${d.name}_${b}`, function() {\n })},});\n a.values[c] = d;\n a[b] = d;\n}, _embind_register_float:function(a, b, c) {\n c = Wc(c);\n b = W(b);\n Vc(a, {name:b, fromWireType:function(d) {\n return d;\n }, toWireType:function(d, e) {\n return e;\n }, argPackAdvance:8, readValueFromPointer:wd(b, c), K:null,});\n}, _embind_register_function:function(a, b, c, d, e, f) {\n var g = sd(b, c);\n a = W(a);\n e = Z(d, e);\n ad(a, function() {\n od(`Cannot call ${a} due to unbound types`, g);\n }, b - 1);\n Y([], g, function(n) {\n jd(a, pd(a, [n[0], null].concat(n.slice(1)), null, e, f), b - 1);\n return [];\n });\n}, _embind_register_integer:function(a, b, c, d, e) {\n b = W(b);\n -1 === e && (e = 4294967295);\n e = Wc(c);\n var f = n => n;\n if (0 === d) {\n var g = 32 - 8 * c;\n f = n => n << g >>> g;\n }\n c = b.includes(\"unsigned\") ? function(n, p) {\n return p >>> 0;\n } : function(n, p) {\n return p;\n };\n Vc(a, {name:b, fromWireType:f, toWireType:c, argPackAdvance:8, readValueFromPointer:xd(b, e, 0 !== d), K:null,});\n}, _embind_register_memory_view:function(a, b, c) {\n function d(f) {\n f >>= 2;\n var g = N;\n return new e(g.buffer, g[f + 1], g[f]);\n }\n var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array,][b];\n c = W(c);\n Vc(a, {name:c, fromWireType:d, argPackAdvance:8, readValueFromPointer:d,}, {$b:!0,});\n}, _embind_register_std_string:function(a, b) {\n b = W(b);\n var c = \"std::string\" === b;\n Vc(a, {name:b, fromWireType:function(d) {\n var e = N[d >> 2], f = d + 4;\n if (c) {\n for (var g = f, n = 0; n <= e; ++n) {\n var p = f + n;\n if (n == e || 0 == E[p]) {\n g = g ? nb(E, g, p - g) : \"\";\n if (void 0 === l) {\n var l = g;\n } else {\n l += String.fromCharCode(0), l += g;\n }\n g = p + 1;\n }\n }\n } else {\n l = Array(e);\n for (n = 0; n < e; ++n) {\n l[n] = String.fromCharCode(E[f + n]);\n }\n l = l.join(\"\");\n }\n Ec(d);\n return l;\n }, toWireType:function(d, e) {\n e instanceof ArrayBuffer && (e = new Uint8Array(e));\n var f = \"string\" == typeof e;\n f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || V(\"Cannot pass non-string to std::string\");\n var g = c && f ? pb(e) : e.length;\n var n = Wd(4 + g + 1), p = n + 4;\n N[n >> 2] = g;\n if (c && f) {\n qb(e, E, p, g + 1);\n } else {\n if (f) {\n for (f = 0; f < g; ++f) {\n var l = e.charCodeAt(f);\n 255 < l && (Ec(p), V(\"String has UTF-16 code units that do not fit in 8 bits\"));\n E[p + f] = l;\n }\n } else {\n for (f = 0; f < g; ++f) {\n E[p + f] = e[f];\n }\n }\n }\n null !== d && d.push(Ec, n);\n return n;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:function(d) {\n Ec(d);\n },});\n}, _embind_register_std_wstring:function(a, b, c) {\n c = W(c);\n if (2 === b) {\n var d = zd;\n var e = Ad;\n var f = Bd;\n var g = () => Ea;\n var n = 1;\n } else {\n 4 === b && (d = Cd, e = Dd, f = Ed, g = () => N, n = 2);\n }\n Vc(a, {name:c, fromWireType:function(p) {\n for (var l = N[p >> 2], u = g(), v, x = p + 4, k = 0; k <= l; ++k) {\n var t = p + 4 + k * b;\n if (k == l || 0 == u[t >> n]) {\n x = d(x, t - x), void 0 === v ? v = x : (v += String.fromCharCode(0), v += x), x = t + b;\n }\n }\n Ec(p);\n return v;\n }, toWireType:function(p, l) {\n \"string\" != typeof l && V(`Cannot pass non-string to C++ string type ${c}`);\n var u = f(l), v = Wd(4 + u + b);\n N[v >> 2] = u >> n;\n e(l, v + 4, u + b);\n null !== p && p.push(Ec, v);\n return v;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:function(p) {\n Ec(p);\n },});\n}, _embind_register_value_object:function(a, b, c, d, e, f) {\n Qc[a] = {name:W(b), Pa:Z(c, d), W:Z(e, f), eb:[],};\n}, _embind_register_value_object_field:function(a, b, c, d, e, f, g, n, p, l) {\n Qc[a].eb.push({Sb:W(b), Yb:c, Wb:Z(d, e), Xb:f, rc:g, qc:Z(n, p), sc:l,});\n}, _embind_register_void:function(a, b) {\n b = W(b);\n Vc(a, {fc:!0, name:b, argPackAdvance:0, fromWireType:function() {\n }, toWireType:function() {\n },});\n}, _emscripten_get_now_is_monotonic:() => !0, _emval_as:function(a, b, c) {\n a = rc(a);\n b = Fc(b, \"emval::as\");\n var d = [], e = sc(d);\n N[c >> 2] = e;\n return b.toWireType(d, a);\n}, _emval_call_method:function(a, b, c, d, e) {\n a = Hd[a];\n b = rc(b);\n c = Gd(c);\n var f = [];\n N[d >> 2] = sc(f);\n return a(b, c, f, e);\n}, _emval_call_void_method:function(a, b, c, d) {\n a = Hd[a];\n b = rc(b);\n c = Gd(c);\n a(b, c, null, d);\n}, _emval_decref:ud, _emval_get_method_caller:function(a, b) {\n var c = Jd(a, b), d = c[0];\n b = d.name + \"_$\" + c.slice(1).map(function(g) {\n return g.name;\n }).join(\"_\") + \"$\";\n var e = Kd[b];\n if (void 0 !== e) {\n return e;\n }\n var f = Array(a - 1);\n e = Id((g, n, p, l) => {\n for (var u = 0, v = 0; v < a - 1; ++v) {\n f[v] = c[v + 1].readValueFromPointer(l + u), u += c[v + 1].argPackAdvance;\n }\n g = g[n].apply(g, f);\n for (v = 0; v < a - 1; ++v) {\n c[v + 1].Nb && c[v + 1].Nb(f[v]);\n }\n if (!d.fc) {\n return d.toWireType(p, g);\n }\n });\n return Kd[b] = e;\n}, _emval_get_module_property:function(a) {\n a = Gd(a);\n return sc(m[a]);\n}, _emval_get_property:function(a, b) {\n a = rc(a);\n b = rc(b);\n return sc(a[b]);\n}, _emval_incref:function(a) {\n 4 < a && (U.get(a).tb += 1);\n}, _emval_new_cstring:function(a) {\n return sc(Gd(a));\n}, _emval_new_object:function() {\n return sc({});\n}, _emval_run_destructors:function(a) {\n var b = rc(a);\n Rc(b);\n ud(a);\n}, _emval_set_property:function(a, b, c) {\n a = rc(a);\n b = rc(b);\n c = rc(c);\n a[b] = c;\n}, _emval_take_value:function(a, b) {\n a = Fc(a, \"_emval_take_value\");\n a = a.readValueFromPointer(b);\n return sc(a);\n}, abort:() => {\n Aa(\"\");\n}, emscripten_asm_const_int:(a, b, c) => {\n Ld.length = 0;\n var d;\n for (c >>= 2; d = E[b++];) {\n c += 105 != d & c, Ld.push(105 == d ? L[c] : Ia[c++ >> 1]), ++c;\n }\n return db[a].apply(null, Ld);\n}, emscripten_date_now:function() {\n return Date.now();\n}, emscripten_get_now:() => performance.now(), emscripten_memcpy_big:(a, b, c) => E.copyWithin(a, b, b + c), emscripten_resize_heap:a => {\n var b = E.length;\n a >>>= 0;\n if (2147483648 < a) {\n return !1;\n }\n for (var c = 1; 4 >= c; c *= 2) {\n var d = b * (1 + 0.2 / c);\n d = Math.min(d, a + 100663296);\n var e = Math;\n d = Math.max(a, d);\n a: {\n e = e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - Ba.buffer.byteLength + 65535 >>> 16;\n try {\n Ba.grow(e);\n Ja();\n var f = 1;\n break a;\n } catch (g) {\n }\n f = void 0;\n }\n if (f) {\n return !0;\n }\n }\n return !1;\n}, environ_get:(a, b) => {\n var c = 0;\n Od().forEach(function(d, e) {\n var f = b + c;\n e = N[a + 4 * e >> 2] = f;\n for (f = 0; f < d.length; ++f) {\n C[e++ >> 0] = d.charCodeAt(f);\n }\n C[e >> 0] = 0;\n c += d.length + 1;\n });\n return 0;\n}, environ_sizes_get:(a, b) => {\n var c = Od();\n N[a >> 2] = c.length;\n var d = 0;\n c.forEach(function(e) {\n d += e.length + 1;\n });\n N[b >> 2] = d;\n return 0;\n}, fd_close:function(a) {\n try {\n var b = Tb(a);\n if (null === b.X) {\n throw new O(8);\n }\n b.Ma && (b.Ma = null);\n try {\n b.m.close && b.m.close(b);\n } catch (c) {\n throw c;\n } finally {\n Gb[b.X] = null;\n }\n b.X = null;\n return 0;\n } catch (c) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== c.name) {\n throw c;\n }\n return c.aa;\n }\n}, fd_read:function(a, b, c, d) {\n try {\n a: {\n var e = Tb(a);\n a = b;\n for (var f, g = b = 0; g < c; g++) {\n var n = N[a >> 2], p = N[a + 4 >> 2];\n a += 8;\n var l = e, u = n, v = p, x = f, k = C;\n if (0 > v || 0 > x) {\n throw new O(28);\n }\n if (null === l.X) {\n throw new O(8);\n }\n if (1 === (l.flags & 2097155)) {\n throw new O(8);\n }\n if (16384 === (l.node.mode & 61440)) {\n throw new O(31);\n }\n if (!l.m.read) {\n throw new O(28);\n }\n var t = \"undefined\" != typeof x;\n if (!t) {\n x = l.position;\n } else if (!l.seekable) {\n throw new O(70);\n }\n var r = l.m.read(l, k, u, v, x);\n t || (l.position += r);\n var B = r;\n if (0 > B) {\n var D = -1;\n break a;\n }\n b += B;\n if (B < p) {\n break;\n }\n \"undefined\" !== typeof f && (f += B);\n }\n D = b;\n }\n N[d >> 2] = D;\n return 0;\n } catch (w) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== w.name) {\n throw w;\n }\n return w.aa;\n }\n}, fd_seek:function(a, b, c, d, e) {\n b = c + 2097152 >>> 0 < 4194305 - !!b ? (b >>> 0) + 4294967296 * c : NaN;\n try {\n if (isNaN(b)) {\n return 61;\n }\n var f = Tb(a);\n fc(f, b, d);\n $a = [f.position >>> 0, (Za = f.position, 1.0 <= +Math.abs(Za) ? 0.0 < Za ? +Math.floor(Za / 4294967296.0) >>> 0 : ~~+Math.ceil((Za - +(~~Za >>> 0)) / 4294967296.0) >>> 0 : 0)];\n L[e >> 2] = $a[0];\n L[e + 4 >> 2] = $a[1];\n f.Ma && 0 === b && 0 === d && (f.Ma = null);\n return 0;\n } catch (g) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== g.name) {\n throw g;\n }\n return g.aa;\n }\n}, fd_write:function(a, b, c, d) {\n try {\n a: {\n var e = Tb(a);\n a = b;\n for (var f, g = b = 0; g < c; g++) {\n var n = N[a >> 2], p = N[a + 4 >> 2];\n a += 8;\n var l = e, u = n, v = p, x = f, k = C;\n if (0 > v || 0 > x) {\n throw new O(28);\n }\n if (null === l.X) {\n throw new O(8);\n }\n if (0 === (l.flags & 2097155)) {\n throw new O(8);\n }\n if (16384 === (l.node.mode & 61440)) {\n throw new O(31);\n }\n if (!l.m.write) {\n throw new O(28);\n }\n l.seekable && l.flags & 1024 && fc(l, 0, 2);\n var t = \"undefined\" != typeof x;\n if (!t) {\n x = l.position;\n } else if (!l.seekable) {\n throw new O(70);\n }\n var r = l.m.write(l, k, u, v, x, void 0);\n t || (l.position += r);\n var B = r;\n if (0 > B) {\n var D = -1;\n break a;\n }\n b += B;\n \"undefined\" !== typeof f && (f += B);\n }\n D = b;\n }\n N[d >> 2] = D;\n return 0;\n } catch (w) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== w.name) {\n throw w;\n }\n return w.aa;\n }\n}, strftime_l:(a, b, c, d) => Sd(a, b, c, d)};\n(function() {\n function a(c) {\n z = c = c.exports;\n Ba = z.memory;\n Ja();\n Ka = z.__indirect_function_table;\n Ma.unshift(z.__wasm_call_ctors);\n Pa--;\n m.monitorRunDependencies && m.monitorRunDependencies(Pa);\n if (0 == Pa && (null !== Qa && (clearInterval(Qa), Qa = null), Ra)) {\n var d = Ra;\n Ra = null;\n d();\n }\n return c;\n }\n var b = {env:Xd, wasi_snapshot_preview1:Xd,};\n Pa++;\n m.monitorRunDependencies && m.monitorRunDependencies(Pa);\n if (m.instantiateWasm) {\n try {\n return m.instantiateWasm(b, a);\n } catch (c) {\n xa(\"Module.instantiateWasm callback failed with error: \" + c), ea(c);\n }\n }\n Ya(b, function(c) {\n a(c.instance);\n }).catch(ea);\n return {};\n})();\nvar Ec = a => (Ec = z.free)(a), Wd = a => (Wd = z.malloc)(a), ab = m._ma_device__on_notification_unlocked = a => (ab = m._ma_device__on_notification_unlocked = z.ma_device__on_notification_unlocked)(a);\nm._ma_malloc_emscripten = (a, b) => (m._ma_malloc_emscripten = z.ma_malloc_emscripten)(a, b);\nm._ma_free_emscripten = (a, b) => (m._ma_free_emscripten = z.ma_free_emscripten)(a, b);\nvar bb = m._ma_device_process_pcm_frames_capture__webaudio = (a, b, c) => (bb = m._ma_device_process_pcm_frames_capture__webaudio = z.ma_device_process_pcm_frames_capture__webaudio)(a, b, c), cb = m._ma_device_process_pcm_frames_playback__webaudio = (a, b, c) => (cb = m._ma_device_process_pcm_frames_playback__webaudio = z.ma_device_process_pcm_frames_playback__webaudio)(a, b, c), Vd = () => (Vd = z.__errno_location)(), Dc = a => (Dc = z.__getTypeName)(a);\nm.__embind_initialize_bindings = () => (m.__embind_initialize_bindings = z._embind_initialize_bindings)();\nm.dynCall_iiji = (a, b, c, d, e) => (m.dynCall_iiji = z.dynCall_iiji)(a, b, c, d, e);\nm.dynCall_jiji = (a, b, c, d, e) => (m.dynCall_jiji = z.dynCall_jiji)(a, b, c, d, e);\nm.dynCall_iiiji = (a, b, c, d, e, f) => (m.dynCall_iiiji = z.dynCall_iiiji)(a, b, c, d, e, f);\nm.dynCall_iij = (a, b, c, d) => (m.dynCall_iij = z.dynCall_iij)(a, b, c, d);\nm.dynCall_jii = (a, b, c) => (m.dynCall_jii = z.dynCall_jii)(a, b, c);\nm.dynCall_viijii = (a, b, c, d, e, f, g) => (m.dynCall_viijii = z.dynCall_viijii)(a, b, c, d, e, f, g);\nm.dynCall_iiiiij = (a, b, c, d, e, f, g) => (m.dynCall_iiiiij = z.dynCall_iiiiij)(a, b, c, d, e, f, g);\nm.dynCall_iiiiijj = (a, b, c, d, e, f, g, n, p) => (m.dynCall_iiiiijj = z.dynCall_iiiiijj)(a, b, c, d, e, f, g, n, p);\nm.dynCall_iiiiiijj = (a, b, c, d, e, f, g, n, p, l) => (m.dynCall_iiiiiijj = z.dynCall_iiiiiijj)(a, b, c, d, e, f, g, n, p, l);\nvar Yd;\nRa = function Zd() {\n Yd || $d();\n Yd || (Ra = Zd);\n};\nfunction $d() {\n function a() {\n if (!Yd && (Yd = !0, m.calledRun = !0, !Ca)) {\n m.noFSInit || hc || (hc = !0, gc(), m.stdin = m.stdin, m.stdout = m.stdout, m.stderr = m.stderr, m.stdin ? jc(\"stdin\", m.stdin) : cc(\"/dev/tty\", \"/dev/stdin\"), m.stdout ? jc(\"stdout\", null, m.stdout) : cc(\"/dev/tty\", \"/dev/stdout\"), m.stderr ? jc(\"stderr\", null, m.stderr) : cc(\"/dev/tty1\", \"/dev/stderr\"), ec(\"/dev/stdin\", 0), ec(\"/dev/stdout\", 1), ec(\"/dev/stderr\", 1));\n Jb = !1;\n eb(Ma);\n aa(m);\n if (m.onRuntimeInitialized) {\n m.onRuntimeInitialized();\n }\n if (m.postRun) {\n for (\"function\" == typeof m.postRun && (m.postRun = [m.postRun]); m.postRun.length;) {\n var b = m.postRun.shift();\n Na.unshift(b);\n }\n }\n eb(Na);\n }\n }\n if (!(0 < Pa)) {\n if (m.preRun) {\n for (\"function\" == typeof m.preRun && (m.preRun = [m.preRun]); m.preRun.length;) {\n Oa();\n }\n }\n eb(La);\n 0 < Pa || (m.setStatus ? (m.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n m.setStatus(\"\");\n }, 1);\n a();\n }, 1)) : a());\n }\n}\nif (m.preInit) {\n for (\"function\" == typeof m.preInit && (m.preInit = [m.preInit]); 0 < m.preInit.length;) {\n m.preInit.pop()();\n }\n}\n$d();\n\n\n\n return moduleArg.ready\n}\n\n);\n})();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Rive);\n\n/***/ }),\n/* 2 */\n/***/ ((module) => {\n\nmodule.exports = /*#__PURE__*/JSON.parse('{\"name\":\"@rive-app/canvas\",\"version\":\"2.26.4\",\"description\":\"Rive\\'s canvas based web api.\",\"main\":\"rive.js\",\"homepage\":\"https://rive.app\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/rive-app/rive-wasm/tree/master/js\"},\"keywords\":[\"rive\",\"animation\"],\"author\":\"Rive\",\"contributors\":[\"Luigi Rosso <luigi@rive.app> (https://rive.app)\",\"Maxwell Talbot <max@rive.app> (https://rive.app)\",\"Arthur Vivian <arthur@rive.app> (https://rive.app)\",\"Umberto Sonnino <umberto@rive.app> (https://rive.app)\",\"Matthew Sullivan <matt.j.sullivan@gmail.com> (mailto:matt.j.sullivan@gmail.com)\"],\"license\":\"MIT\",\"files\":[\"rive.js\",\"rive.js.map\",\"rive.wasm\",\"rive_fallback.wasm\",\"rive.d.ts\",\"rive_advanced.mjs.d.ts\"],\"typings\":\"rive.d.ts\",\"dependencies\":{},\"browser\":{\"fs\":false,\"path\":false}}');\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Animation: () => (/* reexport safe */ _Animation__WEBPACK_IMPORTED_MODULE_0__.Animation)\n/* harmony export */ });\n/* harmony import */ var _Animation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);\n\n\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Animation: () => (/* binding */ Animation)\n/* harmony export */ });\n/**\n * Represents an animation that can be played on an Artboard.\n * Wraps animations and instances from the runtime and keeps track of playback state.\n *\n * The `Animation` class manages the state and behavior of a single animation instance,\n * including its current time, loop count, and ability to scrub to a specific time.\n *\n * The class provides methods to advance the animation, apply its interpolated keyframe\n * values to the Artboard, and clean up the underlying animation instance when the\n * animation is no longer needed.\n */\nvar Animation = /** @class */ (function () {\n /**\n * Constructs a new animation\n * @constructor\n * @param {any} animation: runtime animation object\n * @param {any} instance: runtime animation instance object\n */\n function Animation(animation, artboard, runtime, playing) {\n this.animation = animation;\n this.artboard = artboard;\n this.playing = playing;\n this.loopCount = 0;\n /**\n * The time to which the animation should move to on the next render.\n * If not null, the animation will scrub to this time instead of advancing by the given time.\n */\n this.scrubTo = null;\n this.instance = new runtime.LinearAnimationInstance(animation, artboard);\n }\n Object.defineProperty(Animation.prototype, \"name\", {\n /**\n * Returns the animation's name\n */\n get: function () {\n return this.animation.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"time\", {\n /**\n * Returns the animation's name\n */\n get: function () {\n return this.instance.time;\n },\n /**\n * Sets the animation's current time\n */\n set: function (value) {\n this.instance.time = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"loopValue\", {\n /**\n * Returns the animation's loop type\n */\n get: function () {\n return this.animation.loopValue;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"needsScrub\", {\n /**\n * Indicates whether the animation needs to be scrubbed.\n * @returns `true` if the animation needs to be scrubbed, `false` otherwise.\n */\n get: function () {\n return this.scrubTo !== null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the animation by the give time. If the animation needs scrubbing,\n * time is ignored and the stored scrub value is used.\n * @param time the time to advance the animation by if no scrubbing required\n */\n Animation.prototype.advance = function (time) {\n if (this.scrubTo === null) {\n this.instance.advance(time);\n }\n else {\n this.instance.time = 0;\n this.instance.advance(this.scrubTo);\n this.scrubTo = null;\n }\n };\n /**\n * Apply interpolated keyframe values to the artboard. This should be called after calling\n * .advance() on an animation instance so that new values are applied to properties.\n *\n * Note: This does not advance the artboard, which updates all objects on the artboard\n * @param mix - Mix value for the animation from 0 to 1\n */\n Animation.prototype.apply = function (mix) {\n this.instance.apply(mix);\n };\n /**\n * Deletes the backing Wasm animation instance; once this is called, this\n * animation is no more.\n */\n Animation.prototype.cleanup = function () {\n this.instance.delete();\n };\n return Animation;\n}());\n\n\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BLANK_URL: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__.BLANK_URL),\n/* harmony export */ registerTouchInteractions: () => (/* reexport safe */ _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__.registerTouchInteractions),\n/* harmony export */ sanitizeUrl: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__.sanitizeUrl)\n/* harmony export */ });\n/* harmony import */ var _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ registerTouchInteractions: () => (/* binding */ registerTouchInteractions)\n/* harmony export */ });\nvar _this = undefined;\n/**\n * Returns the clientX and clientY properties from touch or mouse events. Also\n * calls preventDefault() on the event if it is a touchstart or touchmove to prevent\n * scrolling the page on mobile devices\n * @param event - Either a TouchEvent or a MouseEvent\n * @returns - Coordinates of the clientX and clientY properties from the touch/mouse event\n */\nvar getClientCoordinates = function (event, isTouchScrollEnabled) {\n var _a, _b;\n if ([\"touchstart\", \"touchmove\"].indexOf(event.type) > -1 &&\n ((_a = event.touches) === null || _a === void 0 ? void 0 : _a.length)) {\n // This flag, if false, prevents touch events on the canvas default behavior\n // which may prevent scrolling if a drag motion on the canvas is performed\n if (!isTouchScrollEnabled) {\n event.preventDefault();\n }\n return {\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n };\n }\n else if (event.type === \"touchend\" &&\n ((_b = event.changedTouches) === null || _b === void 0 ? void 0 : _b.length)) {\n return {\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n };\n }\n else {\n return {\n clientX: event.clientX,\n clientY: event.clientY,\n };\n }\n};\n/**\n * Registers mouse move/up/down callback handlers on the canvas to send meaningful coordinates to\n * the state machine pointer move/up/down functions based on cursor interaction\n */\nvar registerTouchInteractions = function (_a) {\n var canvas = _a.canvas, artboard = _a.artboard, _b = _a.stateMachines, stateMachines = _b === void 0 ? [] : _b, renderer = _a.renderer, rive = _a.rive, fit = _a.fit, alignment = _a.alignment, _c = _a.isTouchScrollEnabled, isTouchScrollEnabled = _c === void 0 ? false : _c, _d = _a.layoutScaleFactor, layoutScaleFactor = _d === void 0 ? 1.0 : _d;\n if (!canvas ||\n !stateMachines.length ||\n !renderer ||\n !rive ||\n !artboard ||\n typeof window === \"undefined\") {\n return null;\n }\n /**\n * After a touchend event, some browsers may fire synthetic mouse events\n * (mouseover, mousedown, mousemove, mouseup) if the touch interaction did not cause\n * any default action (such as scrolling).\n *\n * This is done to simulate the behavior of a mouse for applications that do not support\n * touch events.\n *\n * We're keeping track of the previous event to not send the synthetic mouse events if the\n * touch event was a click (touchstart -> touchend).\n *\n * This is only needed when `isTouchScrollEnabled` is false\n * When true, `preventDefault()` is called which prevents this behaviour.\n **/\n var _prevEventType = null;\n var _syntheticEventsActive = false;\n var processEventCallback = function (event) {\n // Exit early out of all synthetic mouse events\n // https://stackoverflow.com/questions/9656990/how-to-prevent-simulated-mouse-events-in-mobile-browsers\n // https://stackoverflow.com/questions/25572070/javascript-touchend-versus-click-dilemma\n if (_syntheticEventsActive && event instanceof MouseEvent) {\n // Synthetic event finished\n if (event.type == \"mouseup\") {\n _syntheticEventsActive = false;\n }\n return;\n }\n // Test if it's a \"touch click\". This could cause the browser to send\n // synthetic mouse events.\n _syntheticEventsActive =\n isTouchScrollEnabled &&\n event.type === \"touchend\" &&\n _prevEventType === \"touchstart\";\n _prevEventType = event.type;\n var boundingRect = event.currentTarget.getBoundingClientRect();\n var _a = getClientCoordinates(event, isTouchScrollEnabled), clientX = _a.clientX, clientY = _a.clientY;\n if (!clientX && !clientY) {\n return;\n }\n var canvasX = clientX - boundingRect.left;\n var canvasY = clientY - boundingRect.top;\n var forwardMatrix = rive.computeAlignment(fit, alignment, {\n minX: 0,\n minY: 0,\n maxX: boundingRect.width,\n maxY: boundingRect.height,\n }, artboard.bounds, layoutScaleFactor);\n var invertedMatrix = new rive.Mat2D();\n forwardMatrix.invert(invertedMatrix);\n var canvasCoordinatesVector = new rive.Vec2D(canvasX, canvasY);\n var transformedVector = rive.mapXY(invertedMatrix, canvasCoordinatesVector);\n var transformedX = transformedVector.x();\n var transformedY = transformedVector.y();\n transformedVector.delete();\n invertedMatrix.delete();\n canvasCoordinatesVector.delete();\n forwardMatrix.delete();\n switch (event.type) {\n /**\n * There's a 2px buffer for a hitRadius when translating the pointer coordinates\n * down to the state machine. In cases where the hitbox is about that much away\n * from the Artboard border, we don't have exact precision on determining pointer\n * exit. We're therefore adding to the translated coordinates on mouseout of a canvas\n * to ensure that we report the mouse has truly exited the hitarea.\n * https://github.com/rive-app/rive-cpp/blob/master/src/animation/state_machine_instance.cpp#L336\n *\n * We add/subtract 10000 to account for when the graphic goes beyond the canvas bound\n * due to for example, a fit: 'cover'. Not perfect, but helps reliably (for now) ensure\n * we report going out of bounds when the mouse is out of the canvas\n */\n case \"mouseout\":\n for (var _i = 0, stateMachines_1 = stateMachines; _i < stateMachines_1.length; _i++) {\n var stateMachine = stateMachines_1[_i];\n stateMachine.pointerMove(transformedX, transformedY);\n }\n break;\n // Pointer moving/hovering on the canvas\n case \"touchmove\":\n case \"mouseover\":\n case \"mousemove\": {\n for (var _b = 0, stateMachines_2 = stateMachines; _b < stateMachines_2.length; _b++) {\n var stateMachine = stateMachines_2[_b];\n stateMachine.pointerMove(transformedX, transformedY);\n }\n break;\n }\n // Pointer click initiated but not released yet on the canvas\n case \"touchstart\":\n case \"mousedown\": {\n for (var _c = 0, stateMachines_3 = stateMachines; _c < stateMachines_3.length; _c++) {\n var stateMachine = stateMachines_3[_c];\n stateMachine.pointerDown(transformedX, transformedY);\n }\n break;\n }\n // Pointer click released on the canvas\n case \"touchend\":\n case \"mouseup\": {\n for (var _d = 0, stateMachines_4 = stateMachines; _d < stateMachines_4.length; _d++) {\n var stateMachine = stateMachines_4[_d];\n stateMachine.pointerUp(transformedX, transformedY);\n }\n break;\n }\n default:\n }\n };\n var callback = processEventCallback.bind(_this);\n canvas.addEventListener(\"mouseover\", callback);\n canvas.addEventListener(\"mouseout\", callback);\n canvas.addEventListener(\"mousemove\", callback);\n canvas.addEventListener(\"mousedown\", callback);\n canvas.addEventListener(\"mouseup\", callback);\n canvas.addEventListener(\"touchmove\", callback, {\n passive: isTouchScrollEnabled,\n });\n canvas.addEventListener(\"touchstart\", callback, {\n passive: isTouchScrollEnabled,\n });\n canvas.addEventListener(\"touchend\", callback);\n return function () {\n canvas.removeEventListener(\"mouseover\", callback);\n canvas.removeEventListener(\"mouseout\", callback);\n canvas.removeEventListener(\"mousemove\", callback);\n canvas.removeEventListener(\"mousedown\", callback);\n canvas.removeEventListener(\"mouseup\", callback);\n canvas.removeEventListener(\"touchmove\", callback);\n canvas.removeEventListener(\"touchstart\", callback);\n canvas.removeEventListener(\"touchend\", callback);\n };\n};\n\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BLANK_URL: () => (/* binding */ BLANK_URL),\n/* harmony export */ sanitizeUrl: () => (/* binding */ sanitizeUrl)\n/* harmony export */ });\n// Reference: https://github.com/braintree/sanitize-url/tree/main\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar htmlCtrlEntityRegex = /&(newline|tab);/gi;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^.+(:|:)/gim;\nvar relativeFirstCharacters = [\".\", \"/\"];\nvar BLANK_URL = \"about:blank\";\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(ctrlCharactersRegex, \"\");\n return removedNullByte.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return BLANK_URL;\n }\n var sanitizedUrl = decodeHtmlCharacters(url)\n .replace(htmlCtrlEntityRegex, \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return BLANK_URL;\n }\n return sanitizedUrl;\n}\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Alignment: () => (/* binding */ Alignment),\n/* harmony export */ EventType: () => (/* binding */ EventType),\n/* harmony export */ Fit: () => (/* binding */ Fit),\n/* harmony export */ Layout: () => (/* binding */ Layout),\n/* harmony export */ LoopType: () => (/* binding */ LoopType),\n/* harmony export */ Rive: () => (/* binding */ Rive),\n/* harmony export */ RiveEventType: () => (/* binding */ RiveEventType),\n/* harmony export */ RiveFile: () => (/* binding */ RiveFile),\n/* harmony export */ RuntimeLoader: () => (/* binding */ RuntimeLoader),\n/* harmony export */ StateMachineInput: () => (/* binding */ StateMachineInput),\n/* harmony export */ StateMachineInputType: () => (/* binding */ StateMachineInputType),\n/* harmony export */ Testing: () => (/* binding */ Testing),\n/* harmony export */ decodeAudio: () => (/* binding */ decodeAudio),\n/* harmony export */ decodeFont: () => (/* binding */ decodeFont),\n/* harmony export */ decodeImage: () => (/* binding */ decodeImage)\n/* harmony export */ });\n/* harmony import */ var _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n/* harmony import */ var package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _animation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar RiveError = /** @class */ (function (_super) {\n __extends(RiveError, _super);\n function RiveError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isHandledError = true;\n return _this;\n }\n return RiveError;\n}(Error));\n// #regions helpers\nvar resolveErrorMessage = function (error) {\n return error && error.isHandledError\n ? error.message\n : \"Problem loading file; may be corrupt!\";\n};\n// #region layout\n// Fit options for the canvas\nvar Fit;\n(function (Fit) {\n Fit[\"Cover\"] = \"cover\";\n Fit[\"Contain\"] = \"contain\";\n Fit[\"Fill\"] = \"fill\";\n Fit[\"FitWidth\"] = \"fitWidth\";\n Fit[\"FitHeight\"] = \"fitHeight\";\n Fit[\"None\"] = \"none\";\n Fit[\"ScaleDown\"] = \"scaleDown\";\n Fit[\"Layout\"] = \"layout\";\n})(Fit || (Fit = {}));\n// Alignment options for the canvas\nvar Alignment;\n(function (Alignment) {\n Alignment[\"Center\"] = \"center\";\n Alignment[\"TopLeft\"] = \"topLeft\";\n Alignment[\"TopCenter\"] = \"topCenter\";\n Alignment[\"TopRight\"] = \"topRight\";\n Alignment[\"CenterLeft\"] = \"centerLeft\";\n Alignment[\"CenterRight\"] = \"centerRight\";\n Alignment[\"BottomLeft\"] = \"bottomLeft\";\n Alignment[\"BottomCenter\"] = \"bottomCenter\";\n Alignment[\"BottomRight\"] = \"bottomRight\";\n})(Alignment || (Alignment = {}));\n// Alignment options for Rive animations in a HTML canvas\nvar Layout = /** @class */ (function () {\n function Layout(params) {\n var _a, _b, _c, _d, _e, _f, _g;\n this.fit = (_a = params === null || params === void 0 ? void 0 : params.fit) !== null && _a !== void 0 ? _a : Fit.Contain;\n this.alignment = (_b = params === null || params === void 0 ? void 0 : params.alignment) !== null && _b !== void 0 ? _b : Alignment.Center;\n this.layoutScaleFactor = (_c = params === null || params === void 0 ? void 0 : params.layoutScaleFactor) !== null && _c !== void 0 ? _c : 1;\n this.minX = (_d = params === null || params === void 0 ? void 0 : params.minX) !== null && _d !== void 0 ? _d : 0;\n this.minY = (_e = params === null || params === void 0 ? void 0 : params.minY) !== null && _e !== void 0 ? _e : 0;\n this.maxX = (_f = params === null || params === void 0 ? void 0 : params.maxX) !== null && _f !== void 0 ? _f : 0;\n this.maxY = (_g = params === null || params === void 0 ? void 0 : params.maxY) !== null && _g !== void 0 ? _g : 0;\n }\n // Alternative constructor to build a Layout from an interface/object\n Layout.new = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n console.warn(\"This function is deprecated: please use `new Layout({})` instead\");\n return new Layout({ fit: fit, alignment: alignment, minX: minX, minY: minY, maxX: maxX, maxY: maxY });\n };\n /**\n * Makes a copy of the layout, replacing any specified parameters\n */\n Layout.prototype.copyWith = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, layoutScaleFactor = _a.layoutScaleFactor, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n return new Layout({\n fit: fit !== null && fit !== void 0 ? fit : this.fit,\n alignment: alignment !== null && alignment !== void 0 ? alignment : this.alignment,\n layoutScaleFactor: layoutScaleFactor !== null && layoutScaleFactor !== void 0 ? layoutScaleFactor : this.layoutScaleFactor,\n minX: minX !== null && minX !== void 0 ? minX : this.minX,\n minY: minY !== null && minY !== void 0 ? minY : this.minY,\n maxX: maxX !== null && maxX !== void 0 ? maxX : this.maxX,\n maxY: maxY !== null && maxY !== void 0 ? maxY : this.maxY,\n });\n };\n // Returns fit for the Wasm runtime format\n Layout.prototype.runtimeFit = function (rive) {\n if (this.cachedRuntimeFit)\n return this.cachedRuntimeFit;\n var fit;\n if (this.fit === Fit.Cover)\n fit = rive.Fit.cover;\n else if (this.fit === Fit.Contain)\n fit = rive.Fit.contain;\n else if (this.fit === Fit.Fill)\n fit = rive.Fit.fill;\n else if (this.fit === Fit.FitWidth)\n fit = rive.Fit.fitWidth;\n else if (this.fit === Fit.FitHeight)\n fit = rive.Fit.fitHeight;\n else if (this.fit === Fit.ScaleDown)\n fit = rive.Fit.scaleDown;\n else if (this.fit === Fit.Layout)\n fit = rive.Fit.layout;\n else\n fit = rive.Fit.none;\n this.cachedRuntimeFit = fit;\n return fit;\n };\n // Returns alignment for the Wasm runtime format\n Layout.prototype.runtimeAlignment = function (rive) {\n if (this.cachedRuntimeAlignment)\n return this.cachedRuntimeAlignment;\n var alignment;\n if (this.alignment === Alignment.TopLeft)\n alignment = rive.Alignment.topLeft;\n else if (this.alignment === Alignment.TopCenter)\n alignment = rive.Alignment.topCenter;\n else if (this.alignment === Alignment.TopRight)\n alignment = rive.Alignment.topRight;\n else if (this.alignment === Alignment.CenterLeft)\n alignment = rive.Alignment.centerLeft;\n else if (this.alignment === Alignment.CenterRight)\n alignment = rive.Alignment.centerRight;\n else if (this.alignment === Alignment.BottomLeft)\n alignment = rive.Alignment.bottomLeft;\n else if (this.alignment === Alignment.BottomCenter)\n alignment = rive.Alignment.bottomCenter;\n else if (this.alignment === Alignment.BottomRight)\n alignment = rive.Alignment.bottomRight;\n else\n alignment = rive.Alignment.center;\n this.cachedRuntimeAlignment = alignment;\n return alignment;\n };\n return Layout;\n}());\n\n// Runtime singleton; use getInstance to provide a callback that returns the\n// Rive runtime\nvar RuntimeLoader = /** @class */ (function () {\n // Class is never instantiated\n function RuntimeLoader() {\n }\n // Loads the runtime\n RuntimeLoader.loadRuntime = function () {\n _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n // Loads Wasm bundle\n locateFile: function () { return RuntimeLoader.wasmURL; },\n })\n .then(function (rive) {\n var _a;\n RuntimeLoader.runtime = rive;\n // Fire all the callbacks\n while (RuntimeLoader.callBackQueue.length > 0) {\n (_a = RuntimeLoader.callBackQueue.shift()) === null || _a === void 0 ? void 0 : _a(RuntimeLoader.runtime);\n }\n })\n .catch(function (error) {\n // Capture specific error details\n var errorDetails = {\n message: (error === null || error === void 0 ? void 0 : error.message) || \"Unknown error\",\n type: (error === null || error === void 0 ? void 0 : error.name) || \"Error\",\n // Some browsers may provide additional WebAssembly-specific details\n wasmError: error instanceof WebAssembly.CompileError ||\n error instanceof WebAssembly.RuntimeError,\n originalError: error,\n };\n // Log detailed error for debugging\n console.debug(\"Rive WASM load error details:\", errorDetails);\n // In case unpkg fails, or the wasm was not supported, we try to load the fallback module from jsdelivr.\n // This `rive_fallback.wasm` is compiled to support older architecture.\n // TODO: (Gordon): preemptively test browser support and load the correct wasm file. Then use jsdelvr only if unpkg fails.\n var backupJsdelivrUrl = \"https://cdn.jsdelivr.net/npm/\".concat(package_json__WEBPACK_IMPORTED_MODULE_1__.name, \"@\").concat(package_json__WEBPACK_IMPORTED_MODULE_1__.version, \"/rive_fallback.wasm\");\n if (RuntimeLoader.wasmURL.toLowerCase() !== backupJsdelivrUrl) {\n console.warn(\"Failed to load WASM from \".concat(RuntimeLoader.wasmURL, \" (\").concat(errorDetails.message, \"), trying jsdelivr as a backup\"));\n RuntimeLoader.setWasmUrl(backupJsdelivrUrl);\n RuntimeLoader.loadRuntime();\n }\n else {\n var errorMessage = [\n \"Could not load Rive WASM file from \".concat(RuntimeLoader.wasmURL, \" or \").concat(backupJsdelivrUrl, \".\"),\n \"Possible reasons:\",\n \"- Network connection is down\",\n \"- WebAssembly is not supported in this environment\",\n \"- The WASM file is corrupted or incompatible\",\n \"\\nError details:\",\n \"- Type: \".concat(errorDetails.type),\n \"- Message: \".concat(errorDetails.message),\n \"- WebAssembly-specific error: \".concat(errorDetails.wasmError),\n \"\\nTo resolve, you may need to:\",\n \"1. Check your network connection\",\n \"2. Set a new WASM source via RuntimeLoader.setWasmUrl()\",\n \"3. Call RuntimeLoader.loadRuntime() again\",\n ].join(\"\\n\");\n console.error(errorMessage);\n }\n });\n };\n // Provides a runtime instance via a callback\n RuntimeLoader.getInstance = function (callback) {\n // If it's not loading, start loading runtime\n if (!RuntimeLoader.isLoading) {\n RuntimeLoader.isLoading = true;\n RuntimeLoader.loadRuntime();\n }\n if (!RuntimeLoader.runtime) {\n RuntimeLoader.callBackQueue.push(callback);\n }\n else {\n callback(RuntimeLoader.runtime);\n }\n };\n // Provides a runtime instance via a promise\n RuntimeLoader.awaitInstance = function () {\n return new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) { return resolve(rive); });\n });\n };\n // Manually sets the wasm url\n RuntimeLoader.setWasmUrl = function (url) {\n RuntimeLoader.wasmURL = url;\n };\n // Gets the current wasm url\n RuntimeLoader.getWasmUrl = function () {\n return RuntimeLoader.wasmURL;\n };\n // Flag to indicate that loading has started/completed\n RuntimeLoader.isLoading = false;\n // List of callbacks for the runtime that come in while loading\n RuntimeLoader.callBackQueue = [];\n // Path to the Wasm file; default path works for testing only;\n // if embedded wasm is used then this is never used.\n RuntimeLoader.wasmURL = \"https://unpkg.com/\".concat(package_json__WEBPACK_IMPORTED_MODULE_1__.name, \"@\").concat(package_json__WEBPACK_IMPORTED_MODULE_1__.version, \"/rive.wasm\");\n return RuntimeLoader;\n}());\n\n// #endregion\n// #region state machines\nvar StateMachineInputType;\n(function (StateMachineInputType) {\n StateMachineInputType[StateMachineInputType[\"Number\"] = 56] = \"Number\";\n StateMachineInputType[StateMachineInputType[\"Trigger\"] = 58] = \"Trigger\";\n StateMachineInputType[StateMachineInputType[\"Boolean\"] = 59] = \"Boolean\";\n})(StateMachineInputType || (StateMachineInputType = {}));\n/**\n * An input for a state machine\n */\nvar StateMachineInput = /** @class */ (function () {\n function StateMachineInput(type, runtimeInput) {\n this.type = type;\n this.runtimeInput = runtimeInput;\n }\n Object.defineProperty(StateMachineInput.prototype, \"name\", {\n /**\n * Returns the name of the input\n */\n get: function () {\n return this.runtimeInput.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachineInput.prototype, \"value\", {\n /**\n * Returns the current value of the input\n */\n get: function () {\n return this.runtimeInput.value;\n },\n /**\n * Sets the value of the input\n */\n set: function (value) {\n this.runtimeInput.value = value;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Fires a trigger; does nothing on Number or Boolean input types\n */\n StateMachineInput.prototype.fire = function () {\n if (this.type === StateMachineInputType.Trigger) {\n this.runtimeInput.fire();\n }\n };\n /**\n * Deletes the input\n */\n StateMachineInput.prototype.delete = function () {\n this.runtimeInput = null;\n };\n return StateMachineInput;\n}());\n\nvar RiveEventType;\n(function (RiveEventType) {\n RiveEventType[RiveEventType[\"General\"] = 128] = \"General\";\n RiveEventType[RiveEventType[\"OpenUrl\"] = 131] = \"OpenUrl\";\n})(RiveEventType || (RiveEventType = {}));\nvar StateMachine = /** @class */ (function () {\n /**\n * @constructor\n * @param stateMachine runtime state machine object\n * @param instance runtime state machine instance object\n */\n function StateMachine(stateMachine, runtime, playing, artboard) {\n this.stateMachine = stateMachine;\n this.playing = playing;\n this.artboard = artboard;\n /**\n * Caches the inputs from the runtime\n */\n this.inputs = [];\n this.instance = new runtime.StateMachineInstance(stateMachine, artboard);\n this.initInputs(runtime);\n }\n Object.defineProperty(StateMachine.prototype, \"name\", {\n get: function () {\n return this.stateMachine.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachine.prototype, \"statesChanged\", {\n /**\n * Returns a list of state names that have changed on this frame\n */\n get: function () {\n var names = [];\n for (var i = 0; i < this.instance.stateChangedCount(); i++) {\n names.push(this.instance.stateChangedNameByIndex(i));\n }\n return names;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the state machine instance by a given time.\n * @param time - the time to advance the animation by in seconds\n */\n StateMachine.prototype.advance = function (time) {\n this.instance.advance(time);\n };\n /**\n * Advances the state machine instance by a given time and apply changes to artboard.\n * @param time - the time to advance the animation by in seconds\n */\n StateMachine.prototype.advanceAndApply = function (time) {\n this.instance.advanceAndApply(time);\n };\n /**\n * Returns the number of events reported from the last advance call\n * @returns Number of events reported\n */\n StateMachine.prototype.reportedEventCount = function () {\n return this.instance.reportedEventCount();\n };\n /**\n * Returns a RiveEvent object emitted from the last advance call at the given index\n * of a list of potentially multiple events. If an event at the index is not found,\n * undefined is returned.\n * @param i index of the event reported in a list of potentially multiple events\n * @returns RiveEvent or extended RiveEvent object returned, or undefined\n */\n StateMachine.prototype.reportedEventAt = function (i) {\n return this.instance.reportedEventAt(i);\n };\n /**\n * Fetches references to the state machine's inputs and caches them\n * @param runtime an instance of the runtime; needed for the SMIInput types\n */\n StateMachine.prototype.initInputs = function (runtime) {\n // Fetch the inputs from the runtime if we don't have them\n for (var i = 0; i < this.instance.inputCount(); i++) {\n var input = this.instance.input(i);\n this.inputs.push(this.mapRuntimeInput(input, runtime));\n }\n };\n /**\n * Maps a runtime input to it's appropriate type\n * @param input\n */\n StateMachine.prototype.mapRuntimeInput = function (input, runtime) {\n if (input.type === runtime.SMIInput.bool) {\n return new StateMachineInput(StateMachineInputType.Boolean, input.asBool());\n }\n else if (input.type === runtime.SMIInput.number) {\n return new StateMachineInput(StateMachineInputType.Number, input.asNumber());\n }\n else if (input.type === runtime.SMIInput.trigger) {\n return new StateMachineInput(StateMachineInputType.Trigger, input.asTrigger());\n }\n };\n /**\n * Deletes the backing Wasm state machine instance; once this is called, this\n * state machine is no more.\n */\n StateMachine.prototype.cleanup = function () {\n this.inputs.forEach(function (input) {\n input.delete();\n });\n this.inputs.length = 0;\n this.instance.delete();\n };\n return StateMachine;\n}());\n// #endregion\n// #region animator\n/**\n * Manages animation\n */\nvar Animator = /** @class */ (function () {\n /**\n * Constructs a new animator\n * @constructor\n * @param runtime Rive runtime; needed to instance animations & state machines\n * @param artboard the artboard that holds all animations and state machines\n * @param animations optional list of animations\n * @param stateMachines optional list of state machines\n */\n function Animator(runtime, artboard, eventManager, animations, stateMachines) {\n if (animations === void 0) { animations = []; }\n if (stateMachines === void 0) { stateMachines = []; }\n this.runtime = runtime;\n this.artboard = artboard;\n this.eventManager = eventManager;\n this.animations = animations;\n this.stateMachines = stateMachines;\n }\n /**\n * Adds animations and state machines by their names. If names are shared\n * between animations & state machines, then the first one found will be\n * created. Best not to use the same names for these in your Rive file.\n * @param animatable the name(s) of animations and state machines to add\n * @returns a list of names of the playing animations and state machines\n */\n Animator.prototype.add = function (animatables, playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n animatables = mapToStringArray(animatables);\n // If animatables is empty, play or pause everything\n if (animatables.length === 0) {\n this.animations.forEach(function (a) { return (a.playing = playing); });\n this.stateMachines.forEach(function (m) { return (m.playing = playing); });\n }\n else {\n // Play/pause already instanced items, or create new instances\n var instancedAnimationNames = this.animations.map(function (a) { return a.name; });\n var instancedMachineNames = this.stateMachines.map(function (m) { return m.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedAnimationNames.indexOf(animatables[i]);\n var mIndex = instancedMachineNames.indexOf(animatables[i]);\n if (aIndex >= 0 || mIndex >= 0) {\n if (aIndex >= 0) {\n // Animation is instanced, play/pause it\n this.animations[aIndex].playing = playing;\n }\n else {\n // State machine is instanced, play/pause it\n this.stateMachines[mIndex].playing = playing;\n }\n }\n else {\n // Try to create a new animation instance\n var anim = this.artboard.animationByName(animatables[i]);\n if (anim) {\n var newAnimation = new _animation__WEBPACK_IMPORTED_MODULE_2__.Animation(anim, this.artboard, this.runtime, playing);\n // Display the first frame of the specified animation\n newAnimation.advance(0);\n newAnimation.apply(1.0);\n this.animations.push(newAnimation);\n }\n else {\n // Try to create a new state machine instance\n var sm = this.artboard.stateMachineByName(animatables[i]);\n if (sm) {\n var newStateMachine = new StateMachine(sm, this.runtime, playing, this.artboard);\n this.stateMachines.push(newStateMachine);\n }\n }\n }\n }\n }\n // Fire play/paused events for animations\n if (fireEvent) {\n if (playing) {\n this.eventManager.fire({\n type: EventType.Play,\n data: this.playing,\n });\n }\n else {\n this.eventManager.fire({\n type: EventType.Pause,\n data: this.paused,\n });\n }\n }\n return playing ? this.playing : this.paused;\n };\n /**\n * Adds linear animations by their names.\n * @param animatables the name(s) of animations to add\n * @param playing whether animations should play on instantiation\n */\n Animator.prototype.initLinearAnimations = function (animatables, playing) {\n // Play/pause already instanced items, or create new instances\n // This validation is kept to maintain compatibility with current behavior.\n // But given that it this is called during artboard initialization\n // it should probably be safe to remove.\n var instancedAnimationNames = this.animations.map(function (a) { return a.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedAnimationNames.indexOf(animatables[i]);\n if (aIndex >= 0) {\n this.animations[aIndex].playing = playing;\n }\n else {\n // Try to create a new animation instance\n var anim = this.artboard.animationByName(animatables[i]);\n if (anim) {\n var newAnimation = new _animation__WEBPACK_IMPORTED_MODULE_2__.Animation(anim, this.artboard, this.runtime, playing);\n // Display the first frame of the specified animation\n newAnimation.advance(0);\n newAnimation.apply(1.0);\n this.animations.push(newAnimation);\n }\n }\n }\n };\n /**\n * Adds state machines by their names.\n * @param animatables the name(s) of state machines to add\n * @param playing whether state machines should play on instantiation\n */\n Animator.prototype.initStateMachines = function (animatables, playing) {\n // Play/pause already instanced items, or create new instances\n // This validation is kept to maintain compatibility with current behavior.\n // But given that it this is called during artboard initialization\n // it should probably be safe to remove.\n var instancedStateMachineNames = this.stateMachines.map(function (a) { return a.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedStateMachineNames.indexOf(animatables[i]);\n if (aIndex >= 0) {\n this.stateMachines[aIndex].playing = playing;\n }\n else {\n // Try to create a new state machine instance\n var sm = this.artboard.stateMachineByName(animatables[i]);\n if (sm) {\n var newStateMachine = new StateMachine(sm, this.runtime, playing, this.artboard);\n this.stateMachines.push(newStateMachine);\n }\n else {\n // In order to maintain compatibility with current behavior, if a state machine is not found\n // we look for an animation with the same name\n this.initLinearAnimations([animatables[i]], playing);\n }\n }\n }\n };\n /**\n * Play the named animations/state machines\n * @param animatables the names of the animations/machines to play; plays all if empty\n * @returns a list of the playing items\n */\n Animator.prototype.play = function (animatables) {\n return this.add(animatables, true);\n };\n /**\n * Pauses named animations and state machines, or everything if nothing is\n * specified\n * @param animatables names of the animations and state machines to pause\n * @returns a list of names of the animations and state machines paused\n */\n Animator.prototype.pause = function (animatables) {\n return this.add(animatables, false);\n };\n /**\n * Set time of named animations\n * @param animations names of the animations to scrub\n * @param value time scrub value, a floating point number to which the playhead is jumped\n * @returns a list of names of the animations that were scrubbed\n */\n Animator.prototype.scrub = function (animatables, value) {\n var forScrubbing = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n forScrubbing.forEach(function (a) { return (a.scrubTo = value); });\n return forScrubbing.map(function (a) { return a.name; });\n };\n Object.defineProperty(Animator.prototype, \"playing\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * playing\n */\n get: function () {\n return this.animations\n .filter(function (a) { return a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"paused\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * paused\n */\n get: function () {\n return this.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return !m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Stops and removes all named animations and state machines\n * @param animatables animations and state machines to remove\n * @returns a list of names of removed items\n */\n Animator.prototype.stop = function (animatables) {\n var _this = this;\n animatables = mapToStringArray(animatables);\n // If nothing's specified, wipe them out, all of them\n var removedNames = [];\n // Stop everything\n if (animatables.length === 0) {\n removedNames = this.animations\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.map(function (m) { return m.name; }));\n // Clean up before emptying the arrays\n this.animations.forEach(function (a) { return a.cleanup(); });\n this.stateMachines.forEach(function (m) { return m.cleanup(); });\n // Empty out the arrays\n this.animations.splice(0, this.animations.length);\n this.stateMachines.splice(0, this.stateMachines.length);\n }\n else {\n // Remove only the named animations/state machines\n var animationsToRemove = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n animationsToRemove.forEach(function (a) {\n a.cleanup();\n _this.animations.splice(_this.animations.indexOf(a), 1);\n });\n var machinesToRemove = this.stateMachines.filter(function (m) {\n return animatables.includes(m.name);\n });\n machinesToRemove.forEach(function (m) {\n m.cleanup();\n _this.stateMachines.splice(_this.stateMachines.indexOf(m), 1);\n });\n removedNames = animationsToRemove\n .map(function (a) { return a.name; })\n .concat(machinesToRemove.map(function (m) { return m.name; }));\n }\n this.eventManager.fire({\n type: EventType.Stop,\n data: removedNames,\n });\n // Return the list of animations removed\n return removedNames;\n };\n Object.defineProperty(Animator.prototype, \"isPlaying\", {\n /**\n * Returns true if at least one animation is active\n */\n get: function () {\n return (this.animations.reduce(function (acc, curr) { return acc || curr.playing; }, false) ||\n this.stateMachines.reduce(function (acc, curr) { return acc || curr.playing; }, false));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isPaused\", {\n /**\n * Returns true if all animations are paused and there's at least one animation\n */\n get: function () {\n return (!this.isPlaying &&\n (this.animations.length > 0 || this.stateMachines.length > 0));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isStopped\", {\n /**\n * Returns true if there are no playing or paused animations/state machines\n */\n get: function () {\n return this.animations.length === 0 && this.stateMachines.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If there are no animations or state machines, add the first one found\n * @returns the name of the animation or state machine instanced\n */\n Animator.prototype.atLeastOne = function (playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n var instancedName;\n if (this.animations.length === 0 && this.stateMachines.length === 0) {\n if (this.artboard.animationCount() > 0) {\n // Add the first animation\n this.add([(instancedName = this.artboard.animationByIndex(0).name)], playing, fireEvent);\n }\n else if (this.artboard.stateMachineCount() > 0) {\n // Add the first state machine\n this.add([(instancedName = this.artboard.stateMachineByIndex(0).name)], playing, fireEvent);\n }\n }\n return instancedName;\n };\n /**\n * Checks if any animations have looped and if so, fire the appropriate event\n */\n Animator.prototype.handleLooping = function () {\n for (var _i = 0, _a = this.animations.filter(function (a) { return a.playing; }); _i < _a.length; _i++) {\n var animation = _a[_i];\n // Emit if the animation looped\n if (animation.loopValue === 0 && animation.loopCount) {\n animation.loopCount = 0;\n // This is a one-shot; if it has ended, delete the instance\n this.stop(animation.name);\n }\n else if (animation.loopValue === 1 && animation.loopCount) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.Loop },\n });\n animation.loopCount = 0;\n }\n // Wasm indicates a loop at each time the animation\n // changes direction, so a full loop/lap occurs every\n // two loop counts\n else if (animation.loopValue === 2 && animation.loopCount > 1) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.PingPong },\n });\n animation.loopCount = 0;\n }\n }\n };\n /**\n * Checks if states have changed in state machines and fires a statechange\n * event\n */\n Animator.prototype.handleStateChanges = function () {\n var statesChanged = [];\n for (var _i = 0, _a = this.stateMachines.filter(function (sm) { return sm.playing; }); _i < _a.length; _i++) {\n var stateMachine = _a[_i];\n statesChanged.push.apply(statesChanged, stateMachine.statesChanged);\n }\n if (statesChanged.length > 0) {\n this.eventManager.fire({\n type: EventType.StateChange,\n data: statesChanged,\n });\n }\n };\n Animator.prototype.handleAdvancing = function (time) {\n this.eventManager.fire({\n type: EventType.Advance,\n data: time,\n });\n };\n return Animator;\n}());\n// #endregion\n// #region events\n/**\n * Supported event types triggered in Rive\n */\nvar EventType;\n(function (EventType) {\n EventType[\"Load\"] = \"load\";\n EventType[\"LoadError\"] = \"loaderror\";\n EventType[\"Play\"] = \"play\";\n EventType[\"Pause\"] = \"pause\";\n EventType[\"Stop\"] = \"stop\";\n EventType[\"Loop\"] = \"loop\";\n EventType[\"Draw\"] = \"draw\";\n EventType[\"Advance\"] = \"advance\";\n EventType[\"StateChange\"] = \"statechange\";\n EventType[\"RiveEvent\"] = \"riveevent\";\n EventType[\"AudioStatusChange\"] = \"audiostatuschange\";\n})(EventType || (EventType = {}));\n/**\n * Looping types: one-shot, loop, and ping-pong\n */\nvar LoopType;\n(function (LoopType) {\n LoopType[\"OneShot\"] = \"oneshot\";\n LoopType[\"Loop\"] = \"loop\";\n LoopType[\"PingPong\"] = \"pingpong\";\n})(LoopType || (LoopType = {}));\n// Manages Rive events and listeners\nvar EventManager = /** @class */ (function () {\n function EventManager(listeners) {\n if (listeners === void 0) { listeners = []; }\n this.listeners = listeners;\n }\n // Gets listeners of specified type\n EventManager.prototype.getListeners = function (type) {\n return this.listeners.filter(function (e) { return e.type === type; });\n };\n // Adds a listener\n EventManager.prototype.add = function (listener) {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n };\n /**\n * Removes a listener\n * @param listener the listener with the callback to be removed\n */\n EventManager.prototype.remove = function (listener) {\n // We can't simply look for the listener as it'll be a different instance to\n // one originally subscribed. Find all the listeners of the right type and\n // then check their callbacks which should match.\n for (var i = 0; i < this.listeners.length; i++) {\n var currentListener = this.listeners[i];\n if (currentListener.type === listener.type) {\n if (currentListener.callback === listener.callback) {\n this.listeners.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * Clears all listeners of specified type, or every listener if no type is\n * specified\n * @param type the type of listeners to clear, or all listeners if not\n * specified\n */\n EventManager.prototype.removeAll = function (type) {\n var _this = this;\n if (!type) {\n this.listeners.splice(0, this.listeners.length);\n }\n else {\n this.listeners\n .filter(function (l) { return l.type === type; })\n .forEach(function (l) { return _this.remove(l); });\n }\n };\n // Fires an event\n EventManager.prototype.fire = function (event) {\n var eventListeners = this.getListeners(event.type);\n eventListeners.forEach(function (listener) { return listener.callback(event); });\n };\n return EventManager;\n}());\n// Manages a queue of tasks\nvar TaskQueueManager = /** @class */ (function () {\n function TaskQueueManager(eventManager) {\n this.eventManager = eventManager;\n this.queue = [];\n }\n // Adds a task top the queue\n TaskQueueManager.prototype.add = function (task) {\n this.queue.push(task);\n };\n // Processes all tasks in the queue\n TaskQueueManager.prototype.process = function () {\n while (this.queue.length > 0) {\n var task = this.queue.shift();\n if (task === null || task === void 0 ? void 0 : task.action) {\n task.action();\n }\n if (task === null || task === void 0 ? void 0 : task.event) {\n this.eventManager.fire(task.event);\n }\n }\n };\n return TaskQueueManager;\n}());\n// #endregion\n// #region Audio\nvar SystemAudioStatus;\n(function (SystemAudioStatus) {\n SystemAudioStatus[SystemAudioStatus[\"AVAILABLE\"] = 0] = \"AVAILABLE\";\n SystemAudioStatus[SystemAudioStatus[\"UNAVAILABLE\"] = 1] = \"UNAVAILABLE\";\n})(SystemAudioStatus || (SystemAudioStatus = {}));\n// Class to handle audio context availability and status changes\nvar AudioManager = /** @class */ (function (_super) {\n __extends(AudioManager, _super);\n function AudioManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._started = false;\n _this._enabled = false;\n _this._status = SystemAudioStatus.UNAVAILABLE;\n return _this;\n }\n AudioManager.prototype.delay = function (time) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return setTimeout(resolve, time); })];\n });\n });\n };\n AudioManager.prototype.timeout = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (_, reject) { return setTimeout(reject, 50); })];\n });\n });\n };\n // Alerts animations on status changes and removes the listeners to avoid alerting twice.\n AudioManager.prototype.reportToListeners = function () {\n this.fire({ type: EventType.AudioStatusChange });\n this.removeAll();\n };\n /**\n * The audio context has been resolved.\n * Alert any listeners that we can now play audio.\n * Rive will now play audio at the configured volume.\n */\n AudioManager.prototype.enableAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._enabled) {\n this._enabled = true;\n this._status = SystemAudioStatus.AVAILABLE;\n this.reportToListeners();\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Check if we are able to play audio.\n *\n * We currently check the audio context, when resume() returns before a timeout we know that the\n * audio context is running and we can enable audio.\n */\n AudioManager.prototype.testAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(this._status === SystemAudioStatus.UNAVAILABLE &&\n this._audioContext !== null)) return [3 /*break*/, 4];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.race([this._audioContext.resume(), this.timeout()])];\n case 2:\n _b.sent();\n this.enableAudio();\n return [3 /*break*/, 4];\n case 3:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Establish audio for use with rive.\n * We both test if we can use audio intermittently and listen for user interaction.\n * The aim is to enable audio playback as soon as the browser allows this.\n */\n AudioManager.prototype._establishAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._started) return [3 /*break*/, 5];\n this._started = true;\n if (!(typeof window == \"undefined\")) return [3 /*break*/, 1];\n this.enableAudio();\n return [3 /*break*/, 5];\n case 1:\n this._audioContext = new AudioContext();\n this.listenForUserAction();\n _a.label = 2;\n case 2:\n if (!(this._status === SystemAudioStatus.UNAVAILABLE)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.testAudio()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.delay(1000)];\n case 4:\n _a.sent();\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AudioManager.prototype.listenForUserAction = function () {\n var _this = this;\n // NOTE: AudioContexts are ready immediately if requested in a ui callback\n // we *could* re request one in this listener.\n var _clickListener = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // note this has \"better\" results than calling `await this.testAudio()`\n // as we force audio to be enabled in the current thread, rather than chancing\n // the thread to be passed over for some other async context\n this.enableAudio();\n return [2 /*return*/];\n });\n }); };\n // NOTE: we should test this on mobile/pads\n document.addEventListener(\"pointerdown\", _clickListener, {\n once: true,\n });\n };\n /**\n * Establish the audio context for rive, this lets rive know that we can play audio.\n */\n AudioManager.prototype.establishAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._establishAudio();\n return [2 /*return*/];\n });\n });\n };\n Object.defineProperty(AudioManager.prototype, \"systemVolume\", {\n get: function () {\n if (this._status === SystemAudioStatus.UNAVAILABLE) {\n // We do an immediate test to avoid depending on the delay of the running test\n this.testAudio();\n return 0;\n }\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AudioManager.prototype, \"status\", {\n get: function () {\n return this._status;\n },\n enumerable: false,\n configurable: true\n });\n return AudioManager;\n}(EventManager));\nvar audioManager = new AudioManager();\nvar FakeResizeObserver = /** @class */ (function () {\n function FakeResizeObserver() {\n }\n FakeResizeObserver.prototype.observe = function () { };\n FakeResizeObserver.prototype.unobserve = function () { };\n FakeResizeObserver.prototype.disconnect = function () { };\n return FakeResizeObserver;\n}());\nvar MyResizeObserver = globalThis.ResizeObserver || FakeResizeObserver;\n/**\n * This class takes care of any observers that will be attached to an animation.\n * It should be treated as a singleton because observers are much more performant\n * when used for observing multiple elements by a single instance.\n */\nvar ObjectObservers = /** @class */ (function () {\n function ObjectObservers() {\n var _this = this;\n this._elementsMap = new Map();\n /**\n * Resize observers trigger both when the element changes its size and also when the\n * element is added or removed from the document.\n */\n this._onObservedEntry = function (entry) {\n var observed = _this._elementsMap.get(entry.target);\n if (observed !== null) {\n observed.onResize(entry.target.clientWidth == 0 || entry.target.clientHeight == 0);\n }\n else {\n _this._resizeObserver.unobserve(entry.target);\n }\n };\n this._onObserved = function (entries) {\n entries.forEach(_this._onObservedEntry);\n };\n this._resizeObserver = new MyResizeObserver(this._onObserved);\n }\n // Adds an observable element\n ObjectObservers.prototype.add = function (element, onResize) {\n var observed = {\n onResize: onResize,\n element: element,\n };\n this._elementsMap.set(element, observed);\n this._resizeObserver.observe(element);\n return observed;\n };\n // Removes an observable element\n ObjectObservers.prototype.remove = function (observed) {\n this._resizeObserver.unobserve(observed.element);\n this._elementsMap.delete(observed.element);\n };\n return ObjectObservers;\n}());\nvar observers = new ObjectObservers();\nvar RiveFile = /** @class */ (function () {\n function RiveFile(params) {\n // Allow the runtime to automatically load assets hosted in Rive's runtime.\n this.enableRiveAssetCDN = true;\n this.referenceCount = 0;\n this.destroyed = false;\n this.src = params.src;\n this.buffer = params.buffer;\n if (params.assetLoader)\n this.assetLoader = params.assetLoader;\n this.enableRiveAssetCDN =\n typeof params.enableRiveAssetCDN == \"boolean\"\n ? params.enableRiveAssetCDN\n : true;\n // New event management system\n this.eventManager = new EventManager();\n if (params.onLoad)\n this.on(EventType.Load, params.onLoad);\n if (params.onLoadError)\n this.on(EventType.LoadError, params.onLoadError);\n }\n RiveFile.prototype.initData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, loader, _b;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this.src) return [3 /*break*/, 2];\n _a = this;\n return [4 /*yield*/, loadRiveFile(this.src)];\n case 1:\n _a.buffer = _d.sent();\n _d.label = 2;\n case 2:\n if (this.destroyed) {\n return [2 /*return*/];\n }\n if (this.assetLoader) {\n loader = new this.runtime.CustomFileAssetLoader({\n loadContents: this.assetLoader,\n });\n }\n // Load the Rive file\n _b = this;\n return [4 /*yield*/, this.runtime.load(new Uint8Array(this.buffer), loader, this.enableRiveAssetCDN)];\n case 3:\n // Load the Rive file\n _b.file = _d.sent();\n if (this.destroyed) {\n (_c = this.file) === null || _c === void 0 ? void 0 : _c.delete();\n this.file = null;\n return [2 /*return*/];\n }\n if (this.file !== null) {\n this.eventManager.fire({\n type: EventType.Load,\n data: this,\n });\n }\n else {\n this.eventManager.fire({\n type: EventType.LoadError,\n data: null,\n });\n throw new Error(RiveFile.fileLoadErrorMessage);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n RiveFile.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // If no source file url specified, it's a bust\n if (!this.src && !this.buffer) {\n throw new Error(RiveFile.missingErrorMessage);\n }\n _a = this;\n return [4 /*yield*/, RuntimeLoader.awaitInstance()];\n case 1:\n _a.runtime = _b.sent();\n if (this.destroyed) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.initData()];\n case 2:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Subscribe to Rive-generated events\n * @param type the type of event to subscribe to\n * @param callback callback to fire when the event occurs\n */\n RiveFile.prototype.on = function (type, callback) {\n this.eventManager.add({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @param type the type of event to unsubscribe from\n * @param callback the callback to unsubscribe\n */\n RiveFile.prototype.off = function (type, callback) {\n this.eventManager.remove({\n type: type,\n callback: callback,\n });\n };\n RiveFile.prototype.cleanup = function () {\n var _a;\n this.referenceCount -= 1;\n if (this.referenceCount <= 0) {\n this.removeAllRiveEventListeners();\n (_a = this.file) === null || _a === void 0 ? void 0 : _a.delete();\n this.file = null;\n this.destroyed = true;\n }\n };\n /**\n * Unsubscribes all Rive listeners from an event type, or everything if no type is\n * given\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n RiveFile.prototype.removeAllRiveEventListeners = function (type) {\n this.eventManager.removeAll(type);\n };\n RiveFile.prototype.getInstance = function () {\n if (this.file !== null) {\n this.referenceCount += 1;\n return this.file;\n }\n };\n // Error message for missing source or buffer\n RiveFile.missingErrorMessage = \"Rive source file or data buffer required\";\n // Error message for file load error\n RiveFile.fileLoadErrorMessage = \"The file failed to load\";\n return RiveFile;\n}());\n\nvar Rive = /** @class */ (function () {\n function Rive(params) {\n var _this = this;\n var _a;\n // Tracks if a Rive file is loaded\n this.loaded = false;\n // Tracks if a Rive file is destroyed\n this.destroyed = false;\n // Reference of an object that handles any observers for the animation\n this._observed = null;\n /**\n * Tracks if a Rive file is loaded; we need this in addition to loaded as some\n * commands (e.g. contents) can be called as soon as the file is loaded.\n * However, playback commands need to be queued and run in order once initial\n * animations and autoplay has been sorted out. This applies to play, pause,\n * and start.\n */\n this.readyForPlaying = false;\n // Runtime artboard\n this.artboard = null;\n // place to clear up event listeners\n this.eventCleanup = null;\n this.shouldDisableRiveListeners = false;\n this.automaticallyHandleEvents = false;\n // Allow the runtime to automatically load assets hosted in Rive's runtime.\n this.enableRiveAssetCDN = true;\n // Keep a local value of the set volume to update it asynchronously\n this._volume = 1;\n // Keep a local value of the set width to update it asynchronously\n this._artboardWidth = undefined;\n // Keep a local value of the set height to update it asynchronously\n this._artboardHeight = undefined;\n // Keep a local value of the device pixel ratio used in rendering and canvas/artboard resizing\n this._devicePixelRatioUsed = 1;\n // Whether the canvas element's size is 0\n this._hasZeroSize = false;\n // Audio event listener\n this._audioEventListener = null;\n // draw method bound to the class\n this._boundDraw = null;\n // Durations to generate a frame for the last second. Used for performance profiling.\n this.durations = [];\n this.frameTimes = [];\n this.frameCount = 0;\n this.isTouchScrollEnabled = false;\n this.onCanvasResize = function (hasZeroSize) {\n var toggledDisplay = _this._hasZeroSize !== hasZeroSize;\n _this._hasZeroSize = hasZeroSize;\n if (!hasZeroSize) {\n if (toggledDisplay) {\n _this.resizeDrawingSurfaceToCanvas();\n }\n }\n else if (!_this._layout.maxX || !_this._layout.maxY) {\n _this.resizeToCanvas();\n }\n };\n /**\n * Used be draw to track when a second of active rendering time has passed.\n * Used for debugging purposes\n */\n this.renderSecondTimer = 0;\n this._boundDraw = this.draw.bind(this);\n this.canvas = params.canvas;\n if (params.canvas.constructor === HTMLCanvasElement) {\n this._observed = observers.add(this.canvas, this.onCanvasResize);\n }\n this.src = params.src;\n this.buffer = params.buffer;\n this.riveFile = params.riveFile;\n this.layout = (_a = params.layout) !== null && _a !== void 0 ? _a : new Layout();\n this.shouldDisableRiveListeners = !!params.shouldDisableRiveListeners;\n this.isTouchScrollEnabled = !!params.isTouchScrollEnabled;\n this.automaticallyHandleEvents = !!params.automaticallyHandleEvents;\n this.enableRiveAssetCDN =\n params.enableRiveAssetCDN === undefined\n ? true\n : params.enableRiveAssetCDN;\n // New event management system\n this.eventManager = new EventManager();\n if (params.onLoad)\n this.on(EventType.Load, params.onLoad);\n if (params.onLoadError)\n this.on(EventType.LoadError, params.onLoadError);\n if (params.onPlay)\n this.on(EventType.Play, params.onPlay);\n if (params.onPause)\n this.on(EventType.Pause, params.onPause);\n if (params.onStop)\n this.on(EventType.Stop, params.onStop);\n if (params.onLoop)\n this.on(EventType.Loop, params.onLoop);\n if (params.onStateChange)\n this.on(EventType.StateChange, params.onStateChange);\n if (params.onAdvance)\n this.on(EventType.Advance, params.onAdvance);\n /**\n * @deprecated Use camelCase'd versions instead.\n */\n if (params.onload && !params.onLoad)\n this.on(EventType.Load, params.onload);\n if (params.onloaderror && !params.onLoadError)\n this.on(EventType.LoadError, params.onloaderror);\n if (params.onplay && !params.onPlay)\n this.on(EventType.Play, params.onplay);\n if (params.onpause && !params.onPause)\n this.on(EventType.Pause, params.onpause);\n if (params.onstop && !params.onStop)\n this.on(EventType.Stop, params.onstop);\n if (params.onloop && !params.onLoop)\n this.on(EventType.Loop, params.onloop);\n if (params.onstatechange && !params.onStateChange)\n this.on(EventType.StateChange, params.onstatechange);\n /**\n * Asset loading\n */\n if (params.assetLoader)\n this.assetLoader = params.assetLoader;\n // Hook up the task queue\n this.taskQueue = new TaskQueueManager(this.eventManager);\n this.init({\n src: this.src,\n buffer: this.buffer,\n riveFile: this.riveFile,\n autoplay: params.autoplay,\n animations: params.animations,\n stateMachines: params.stateMachines,\n artboard: params.artboard,\n useOffscreenRenderer: params.useOffscreenRenderer,\n });\n }\n // Alternative constructor to build a Rive instance from an interface/object\n Rive.new = function (params) {\n console.warn(\"This function is deprecated: please use `new Rive({})` instead\");\n return new Rive(params);\n };\n // Event handler for when audio context becomes available\n Rive.prototype.onSystemAudioChanged = function () {\n this.volume = this._volume;\n };\n // Initializes the Rive object either from constructor or load()\n Rive.prototype.init = function (_a) {\n var _this = this;\n var src = _a.src, buffer = _a.buffer, riveFile = _a.riveFile, animations = _a.animations, stateMachines = _a.stateMachines, artboard = _a.artboard, _b = _a.autoplay, autoplay = _b === void 0 ? false : _b, _c = _a.useOffscreenRenderer, useOffscreenRenderer = _c === void 0 ? false : _c;\n if (this.destroyed) {\n return;\n }\n this.src = src;\n this.buffer = buffer;\n this.riveFile = riveFile;\n // If no source file url specified, it's a bust\n if (!this.src && !this.buffer && !this.riveFile) {\n throw new RiveError(Rive.missingErrorMessage);\n }\n // List of animations that should be initialized.\n var startingAnimationNames = mapToStringArray(animations);\n // List of state machines that should be initialized\n var startingStateMachineNames = mapToStringArray(stateMachines);\n // Ensure loaded is marked as false if loading new file\n this.loaded = false;\n this.readyForPlaying = false;\n // Ensure the runtime is loaded\n RuntimeLoader.awaitInstance()\n .then(function (runtime) {\n if (_this.destroyed) {\n return;\n }\n _this.runtime = runtime;\n _this.removeRiveListeners();\n _this.deleteRiveRenderer();\n // Get the canvas where you want to render the animation and create a renderer\n _this.renderer = _this.runtime.makeRenderer(_this.canvas, useOffscreenRenderer);\n // Initial size adjustment based on devicePixelRatio if no width/height are\n // specified explicitly\n if (!(_this.canvas.width || _this.canvas.height)) {\n _this.resizeDrawingSurfaceToCanvas();\n }\n // Load Rive data from a source uri or a data buffer\n _this.initData(artboard, startingAnimationNames, startingStateMachineNames, autoplay)\n .then(function () { return _this.setupRiveListeners(); })\n .catch(function (e) {\n console.error(e);\n });\n })\n .catch(function (e) {\n console.error(e);\n });\n };\n /**\n * Setup Rive Listeners on the canvas\n * @param riveListenerOptions - Enables TouchEvent events on the canvas. Set to true to allow\n * touch scrolling on the canvas element on touch-enabled devices\n * i.e. { isTouchScrollEnabled: true }\n */\n Rive.prototype.setupRiveListeners = function (riveListenerOptions) {\n var _this = this;\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n if (!this.shouldDisableRiveListeners) {\n var activeStateMachines = (this.animator.stateMachines || [])\n .filter(function (sm) { return sm.playing && _this.runtime.hasListeners(sm.instance); })\n .map(function (sm) { return sm.instance; });\n var touchScrollEnabledOption = this.isTouchScrollEnabled;\n if (riveListenerOptions &&\n \"isTouchScrollEnabled\" in riveListenerOptions) {\n touchScrollEnabledOption = riveListenerOptions.isTouchScrollEnabled;\n }\n this.eventCleanup = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.registerTouchInteractions)({\n canvas: this.canvas,\n artboard: this.artboard,\n stateMachines: activeStateMachines,\n renderer: this.renderer,\n rive: this.runtime,\n fit: this._layout.runtimeFit(this.runtime),\n alignment: this._layout.runtimeAlignment(this.runtime),\n isTouchScrollEnabled: touchScrollEnabledOption,\n layoutScaleFactor: this._layout.layoutScaleFactor,\n });\n }\n };\n /**\n * Remove Rive Listeners setup on the canvas\n */\n Rive.prototype.removeRiveListeners = function () {\n if (this.eventCleanup) {\n this.eventCleanup();\n this.eventCleanup = null;\n }\n };\n /**\n * If the instance has audio and the system audio is not ready\n * we hook the instance to the audio manager\n */\n Rive.prototype.initializeAudio = function () {\n var _this = this;\n var _a;\n // Initialize audio if needed\n if (audioManager.status == SystemAudioStatus.UNAVAILABLE) {\n if (((_a = this.artboard) === null || _a === void 0 ? void 0 : _a.hasAudio) && this._audioEventListener === null) {\n this._audioEventListener = {\n type: EventType.AudioStatusChange,\n callback: function () { return _this.onSystemAudioChanged(); },\n };\n audioManager.add(this._audioEventListener);\n audioManager.establishAudio();\n }\n }\n };\n Rive.prototype.initArtboardSize = function () {\n if (!this.artboard)\n return;\n // Use preset values if they are not undefined\n this._artboardWidth = this.artboard.width =\n this._artboardWidth || this.artboard.width;\n this._artboardHeight = this.artboard.height =\n this._artboardHeight || this.artboard.height;\n };\n // Initializes runtime with Rive data and preps for playing\n Rive.prototype.initData = function (artboardName, animationNames, stateMachineNames, autoplay) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1, msg;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n if (!(this.riveFile == null)) return [3 /*break*/, 2];\n this.riveFile = new RiveFile({\n src: this.src,\n buffer: this.buffer,\n enableRiveAssetCDN: this.enableRiveAssetCDN,\n assetLoader: this.assetLoader,\n });\n return [4 /*yield*/, this.riveFile.init()];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n // Check for riveFile in case it has been cleaned up while initializing;\n if (!this.riveFile) {\n throw new RiveError(Rive.cleanupErrorMessage);\n }\n this.file = this.riveFile.getInstance();\n // Initialize and draw frame\n this.initArtboard(artboardName, animationNames, stateMachineNames, autoplay);\n // Initialize the artboard size\n this.initArtboardSize();\n // Check for audio\n this.initializeAudio();\n // Everything's set up, emit a load event\n this.loaded = true;\n this.eventManager.fire({\n type: EventType.Load,\n data: (_a = this.src) !== null && _a !== void 0 ? _a : \"buffer\",\n });\n // Flag ready for playback commands and clear the task queue; this order\n // is important or it may infinitely recurse\n this.readyForPlaying = true;\n this.taskQueue.process();\n this.drawFrame();\n return [2 /*return*/, Promise.resolve()];\n case 3:\n error_1 = _b.sent();\n msg = resolveErrorMessage(error_1);\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return [2 /*return*/, Promise.reject(msg)];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n // Initialize for playback\n Rive.prototype.initArtboard = function (artboardName, animationNames, stateMachineNames, autoplay) {\n if (!this.file) {\n return;\n }\n // Fetch the artboard\n var rootArtboard = artboardName\n ? this.file.artboardByName(artboardName)\n : this.file.defaultArtboard();\n // Check we have a working artboard\n if (!rootArtboard) {\n var msg = \"Invalid artboard name or no default artboard\";\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return;\n }\n this.artboard = rootArtboard;\n rootArtboard.volume = this._volume * audioManager.systemVolume;\n // Check that the artboard has at least 1 animation\n if (this.artboard.animationCount() < 1) {\n var msg = \"Artboard has no animations\";\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n throw msg;\n }\n // Initialize the animator\n this.animator = new Animator(this.runtime, this.artboard, this.eventManager);\n // Initialize the animations; as loaded hasn't happened yet, we need to\n // suppress firing the play/pause events until the load event has fired. To\n // do this we tell the animator to suppress firing events, and add event\n // firing to the task queue.\n var instanceNames;\n if (animationNames.length > 0 || stateMachineNames.length > 0) {\n instanceNames = animationNames.concat(stateMachineNames);\n this.animator.initLinearAnimations(animationNames, autoplay);\n this.animator.initStateMachines(stateMachineNames, autoplay);\n }\n else {\n instanceNames = [this.animator.atLeastOne(autoplay, false)];\n }\n // Queue up firing the playback events\n this.taskQueue.add({\n event: {\n type: autoplay ? EventType.Play : EventType.Pause,\n data: instanceNames,\n },\n });\n };\n // Draws the current artboard frame\n Rive.prototype.drawFrame = function () {\n var _a;\n if ((_a = document === null || document === void 0 ? void 0 : document.timeline) === null || _a === void 0 ? void 0 : _a.currentTime) {\n if (this.loaded && this.artboard && !this.frameRequestId) {\n this._boundDraw(document.timeline.currentTime);\n }\n }\n else {\n this.startRendering();\n }\n };\n /**\n * Draw rendering loop; renders animation frames at the correct time interval.\n * @param time the time at which to render a frame\n */\n Rive.prototype.draw = function (time, onSecond) {\n // Clear the frameRequestId, as we're now rendering a fresh frame\n this.frameRequestId = null;\n var before = performance.now();\n // On the first pass, make sure lastTime has a valid value\n if (!this.lastRenderTime) {\n this.lastRenderTime = time;\n }\n // Handle the onSecond callback\n this.renderSecondTimer += time - this.lastRenderTime;\n if (this.renderSecondTimer > 5000) {\n this.renderSecondTimer = 0;\n onSecond === null || onSecond === void 0 ? void 0 : onSecond();\n }\n // Calculate the elapsed time between frames in seconds\n var elapsedTime = (time - this.lastRenderTime) / 1000;\n this.lastRenderTime = time;\n // - Advance non-paused animations by the elapsed number of seconds\n // - Advance any animations that require scrubbing\n // - Advance to the first frame even when autoplay is false\n var activeAnimations = this.animator.animations\n .filter(function (a) { return a.playing || a.needsScrub; })\n // The scrubbed animations must be applied first to prevent weird artifacts\n // if the playing animations conflict with the scrubbed animating attribuates.\n .sort(function (first) { return (first.needsScrub ? -1 : 1); });\n for (var _i = 0, activeAnimations_1 = activeAnimations; _i < activeAnimations_1.length; _i++) {\n var animation = activeAnimations_1[_i];\n animation.advance(elapsedTime);\n if (animation.instance.didLoop) {\n animation.loopCount += 1;\n }\n animation.apply(1.0);\n }\n // - Advance non-paused state machines by the elapsed number of seconds\n // - Advance to the first frame even when autoplay is false\n var activeStateMachines = this.animator.stateMachines.filter(function (a) { return a.playing; });\n for (var _a = 0, activeStateMachines_1 = activeStateMachines; _a < activeStateMachines_1.length; _a++) {\n var stateMachine = activeStateMachines_1[_a];\n // Check for events before the current frame's state machine advance\n var numEventsReported = stateMachine.reportedEventCount();\n if (numEventsReported) {\n for (var i = 0; i < numEventsReported; i++) {\n var event_1 = stateMachine.reportedEventAt(i);\n if (event_1) {\n if (event_1.type === RiveEventType.OpenUrl) {\n this.eventManager.fire({\n type: EventType.RiveEvent,\n data: event_1,\n });\n // Handle the event side effect if explicitly enabled\n if (this.automaticallyHandleEvents) {\n var newAnchorTag = document.createElement(\"a\");\n var _b = event_1, url = _b.url, target = _b.target;\n var sanitizedUrl = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sanitizeUrl)(url);\n url && newAnchorTag.setAttribute(\"href\", sanitizedUrl);\n target && newAnchorTag.setAttribute(\"target\", target);\n if (sanitizedUrl && sanitizedUrl !== _utils__WEBPACK_IMPORTED_MODULE_3__.BLANK_URL) {\n newAnchorTag.click();\n }\n }\n }\n else {\n this.eventManager.fire({\n type: EventType.RiveEvent,\n data: event_1,\n });\n }\n }\n }\n }\n stateMachine.advanceAndApply(elapsedTime);\n // stateMachine.instance.apply(this.artboard);\n }\n // Once the animations have been applied to the artboard, advance it\n // by the elapsed time.\n if (this.animator.stateMachines.length == 0) {\n this.artboard.advance(elapsedTime);\n }\n var renderer = this.renderer;\n // Canvas must be wiped to prevent artifacts\n renderer.clear();\n renderer.save();\n // Update the renderer alignment if necessary\n this.alignRenderer();\n // Do not draw on 0 canvas size\n if (!this._hasZeroSize) {\n this.artboard.draw(renderer);\n }\n renderer.restore();\n renderer.flush();\n // Check for any animations that looped\n this.animator.handleLooping();\n // Check for any state machines that had a state change\n this.animator.handleStateChanges();\n // Report advanced time\n this.animator.handleAdvancing(elapsedTime);\n // Add duration to create frame to durations array\n this.frameCount++;\n var after = performance.now();\n this.frameTimes.push(after);\n this.durations.push(after - before);\n while (this.frameTimes[0] <= after - 1000) {\n this.frameTimes.shift();\n this.durations.shift();\n }\n // Calling requestAnimationFrame will rerun draw() at the correct rate:\n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations\n if (this.animator.isPlaying) {\n // Request a new rendering frame\n this.startRendering();\n }\n else if (this.animator.isPaused) {\n // Reset the end time so on playback it starts at the correct frame\n this.lastRenderTime = 0;\n }\n else if (this.animator.isStopped) {\n // Reset animation instances, artboard and time\n // TODO: implement this properly when we have instancing\n // this.initArtboard();\n // this.drawFrame();\n this.lastRenderTime = 0;\n }\n };\n /**\n * Align the renderer\n */\n Rive.prototype.alignRenderer = function () {\n var _a = this, renderer = _a.renderer, runtime = _a.runtime, _layout = _a._layout, artboard = _a.artboard;\n // Align things up safe in the knowledge we can restore if changed\n renderer.align(_layout.runtimeFit(runtime), _layout.runtimeAlignment(runtime), {\n minX: _layout.minX,\n minY: _layout.minY,\n maxX: _layout.maxX,\n maxY: _layout.maxY,\n }, artboard.bounds, this._devicePixelRatioUsed * _layout.layoutScaleFactor);\n };\n Object.defineProperty(Rive.prototype, \"fps\", {\n get: function () {\n return this.durations.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"frameTime\", {\n get: function () {\n if (this.durations.length === 0) {\n return 0;\n }\n return (this.durations.reduce(function (a, b) { return a + b; }, 0) / this.durations.length).toFixed(4);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Cleans up all Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances,\n * renderer instance, file and runtime.\n *\n * Once this is called, you will need to initialise a new instance of the\n * Rive class\n */\n Rive.prototype.cleanup = function () {\n var _a;\n this.destroyed = true;\n // Stop the renderer if it hasn't already been stopped.\n this.stopRendering();\n // Clean up any artboard, animation or state machine instances.\n this.cleanupInstances();\n // Remove from observer\n if (this._observed !== null) {\n observers.remove(this._observed);\n }\n this.removeRiveListeners();\n if (this.file) {\n (_a = this.riveFile) === null || _a === void 0 ? void 0 : _a.cleanup();\n this.file = null;\n }\n this.riveFile = null;\n this.deleteRiveRenderer();\n if (this._audioEventListener !== null) {\n audioManager.remove(this._audioEventListener);\n this._audioEventListener = null;\n }\n };\n /**\n * Cleans up the Renderer object. Only call this API if you no longer\n * need to render Rive content in your session.\n */\n Rive.prototype.deleteRiveRenderer = function () {\n var _a;\n (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.delete();\n this.renderer = null;\n };\n /**\n * Cleans up any Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances.\n *\n * Once this is called, things will need to be reinitialized or bad things\n * might happen.\n */\n Rive.prototype.cleanupInstances = function () {\n if (this.eventCleanup !== null) {\n this.eventCleanup();\n }\n // Delete all animation and state machine instances\n this.stop();\n if (this.artboard) {\n this.artboard.delete();\n this.artboard = null;\n }\n };\n /**\n * Tries to query the setup Artboard for a text run node with the given name.\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @returns - TextValueRun node or undefined if the text run cannot be queried\n */\n Rive.prototype.retrieveTextRun = function (textRunName) {\n var _a;\n if (!textRunName) {\n console.warn(\"No text run name provided\");\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access text run, but the Artboard is null\");\n return;\n }\n var textRun = this.artboard.textRun(textRunName);\n if (!textRun) {\n console.warn(\"Could not access a text run with name '\".concat(textRunName, \"' in the '\").concat((_a = this.artboard) === null || _a === void 0 ? void 0 : _a.name, \"' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.\"));\n return;\n }\n return textRun;\n };\n /**\n * Returns a string from a given text run node name, or undefined if the text run\n * cannot be queried.\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @returns - String value of the text run node or undefined\n */\n Rive.prototype.getTextRunValue = function (textRunName) {\n var textRun = this.retrieveTextRun(textRunName);\n return textRun ? textRun.text : undefined;\n };\n /**\n * Sets a text value for a given text run node name if possible\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @param textRunValue - String value to set on the text run node\n */\n Rive.prototype.setTextRunValue = function (textRunName, textRunValue) {\n var textRun = this.retrieveTextRun(textRunName);\n if (textRun) {\n textRun.text = textRunValue;\n }\n };\n // Plays specified animations; if none specified, it unpauses everything.\n Rive.prototype.play = function (animationNames, autoplay) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, queue up the play\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.play(animationNames, autoplay); },\n });\n return;\n }\n this.animator.play(animationNames);\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n this.setupRiveListeners();\n this.startRendering();\n };\n // Pauses specified animations; if none specified, pauses all.\n Rive.prototype.pause = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.pause(animationNames); },\n });\n return;\n }\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n this.animator.pause(animationNames);\n };\n Rive.prototype.scrub = function (animationNames, value) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.scrub(animationNames, value); },\n });\n return;\n }\n // Scrub the animation time; we draw a single frame here so that if\n // nothing's currently playing, the scrubbed animation is still rendered/\n this.animator.scrub(animationNames, value || 0);\n this.drawFrame();\n };\n // Stops specified animations; if none specifies, stops them all.\n Rive.prototype.stop = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.stop(animationNames); },\n });\n return;\n }\n // If there is no artboard, this.animator will be undefined\n if (this.animator) {\n this.animator.stop(animationNames);\n }\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n };\n /**\n * Resets the animation\n * @param artboard the name of the artboard, or default if none given\n * @param animations the names of animations for playback\n * @param stateMachines the names of state machines for playback\n * @param autoplay whether to autoplay when reset, defaults to false\n *\n */\n Rive.prototype.reset = function (params) {\n var _a;\n // Get the current artboard, animations, state machines, and playback states\n var artBoardName = params === null || params === void 0 ? void 0 : params.artboard;\n var animationNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.animations);\n var stateMachineNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.stateMachines);\n var autoplay = (_a = params === null || params === void 0 ? void 0 : params.autoplay) !== null && _a !== void 0 ? _a : false;\n // Stop everything and clean up\n this.cleanupInstances();\n // Reinitialize an artboard instance with the state\n this.initArtboard(artBoardName, animationNames, stateMachineNames, autoplay);\n this.taskQueue.process();\n };\n // Loads a new Rive file, keeping listeners in place\n Rive.prototype.load = function (params) {\n this.file = null;\n // Stop all animations\n this.stop();\n // Reinitialize\n this.init(params);\n };\n Object.defineProperty(Rive.prototype, \"layout\", {\n /**\n * Returns the current layout. Note that layout should be treated as\n * immutable. If you want to change the layout, create a new one use the\n * layout setter\n */\n get: function () {\n return this._layout;\n },\n // Sets a new layout\n set: function (layout) {\n this._layout = layout;\n // If the maxX or maxY are 0, then set them to the canvas width and height\n if (!layout.maxX || !layout.maxY) {\n this.resizeToCanvas();\n }\n if (this.loaded && !this.animator.isPlaying) {\n this.drawFrame();\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Sets the layout bounds to the current canvas size; this is typically called\n * when the canvas is resized\n */\n Rive.prototype.resizeToCanvas = function () {\n this._layout = this.layout.copyWith({\n minX: 0,\n minY: 0,\n maxX: this.canvas.width,\n maxY: this.canvas.height,\n });\n };\n /**\n * Accounts for devicePixelRatio as a multiplier to render the size of the canvas drawing surface.\n * Uses the size of the backing canvas to set new width/height attributes. Need to re-render\n * and resize the layout to match the new drawing surface afterwards.\n * Useful function for consumers to include in a window resize listener.\n *\n * This method will set the {@link devicePixelRatioUsed} property.\n *\n * Optionally, you can provide a {@link customDevicePixelRatio} to provide a\n * custom value.\n */\n Rive.prototype.resizeDrawingSurfaceToCanvas = function (customDevicePixelRatio) {\n if (this.canvas instanceof HTMLCanvasElement && !!window) {\n var _a = this.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;\n var dpr = customDevicePixelRatio || window.devicePixelRatio || 1;\n this.devicePixelRatioUsed = dpr;\n this.canvas.width = dpr * width;\n this.canvas.height = dpr * height;\n this.resizeToCanvas();\n this.drawFrame();\n if (this.layout.fit === Fit.Layout) {\n var scaleFactor = this._layout.layoutScaleFactor;\n this.artboard.width = width / scaleFactor;\n this.artboard.height = height / scaleFactor;\n }\n }\n };\n Object.defineProperty(Rive.prototype, \"source\", {\n // Returns the animation source, which may be undefined\n get: function () {\n return this.src;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"activeArtboard\", {\n /**\n * Returns the name of the active artboard\n */\n get: function () {\n return this.artboard ? this.artboard.name : \"\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"animationNames\", {\n // Returns a list of animation names on the chosen artboard\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded || !this.artboard) {\n return [];\n }\n var animationNames = [];\n for (var i = 0; i < this.artboard.animationCount(); i++) {\n animationNames.push(this.artboard.animationByIndex(i).name);\n }\n return animationNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"stateMachineNames\", {\n /**\n * Returns a list of state machine names from the current artboard\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded || !this.artboard) {\n return [];\n }\n var stateMachineNames = [];\n for (var i = 0; i < this.artboard.stateMachineCount(); i++) {\n stateMachineNames.push(this.artboard.stateMachineByIndex(i).name);\n }\n return stateMachineNames;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the inputs for the specified instanced state machine, or an empty\n * list if the name is invalid or the state machine is not instanced\n * @param name the state machine name\n * @returns the inputs for the named state machine\n */\n Rive.prototype.stateMachineInputs = function (name) {\n // If the file's not loaded, early out, nothing to pause\n if (!this.loaded) {\n return;\n }\n var stateMachine = this.animator.stateMachines.find(function (m) { return m.name === name; });\n return stateMachine === null || stateMachine === void 0 ? void 0 : stateMachine.inputs;\n };\n // Returns the input with the provided name at the given path\n Rive.prototype.retrieveInputAtPath = function (name, path) {\n if (!name) {\n console.warn(\"No input name provided for path '\".concat(path, \"'\"));\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access input: '\".concat(name, \"', at path: '\").concat(path, \"', but the Artboard is null\"));\n return;\n }\n var input = this.artboard.inputByPath(name, path);\n if (!input) {\n console.warn(\"Could not access an input with name: '\".concat(name, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return input;\n };\n /**\n * Set the boolean input with the provided name at the given path with value\n * @param input the state machine input name\n * @param value the value to set the input to\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.setBooleanStateAtPath = function (inputName, value, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Boolean) {\n input.asBool().value = value;\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a boolean\"));\n }\n };\n /**\n * Set the number input with the provided name at the given path with value\n * @param input the state machine input name\n * @param value the value to set the input to\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.setNumberStateAtPath = function (inputName, value, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Number) {\n input.asNumber().value = value;\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a number\"));\n }\n };\n /**\n * Fire the trigger with the provided name at the given path\n * @param input the state machine input name\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.fireStateAtPath = function (inputName, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Trigger) {\n input.asTrigger().fire();\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a trigger\"));\n }\n };\n // Returns the TextValueRun object for the provided name at the given path\n Rive.prototype.retrieveTextAtPath = function (name, path) {\n if (!name) {\n console.warn(\"No text name provided for path '\".concat(path, \"'\"));\n return;\n }\n if (!path) {\n console.warn(\"No path provided for text '\".concat(name, \"'\"));\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access text: '\".concat(name, \"', at path: '\").concat(path, \"', but the Artboard is null\"));\n return;\n }\n var text = this.artboard.textByPath(name, path);\n if (!text) {\n console.warn(\"Could not access text with name: '\".concat(name, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return text;\n };\n /**\n * Retrieves the text value for a specified text run at a given path\n * @param textName The name of the text run\n * @param path The path to the text run within the artboard\n * @returns The text value of the text run, or undefined if not found\n *\n * @example\n * // Get the text value for a text run named \"title\" at one nested artboard deep\n * const titleText = riveInstance.getTextRunValueAtPath(\"title\", \"artboard1\");\n *\n * @example\n * // Get the text value for a text run named \"subtitle\" within a nested group two artboards deep\n * const subtitleText = riveInstance.getTextRunValueAtPath(\"subtitle\", \"group/nestedGroup\");\n *\n * @remarks\n * If the text run cannot be found at the specified path, a warning will be logged to the console.\n */\n Rive.prototype.getTextRunValueAtPath = function (textName, path) {\n var run = this.retrieveTextAtPath(textName, path);\n if (!run) {\n console.warn(\"Could not get text with name: '\".concat(textName, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return run.text;\n };\n /**\n * Sets the text value for a specified text run at a given path\n * @param textName The name of the text run\n * @param value The new text value to set\n * @param path The path to the text run within the artboard\n * @returns void\n *\n * @example\n * // Set the text value for a text run named \"title\" at one nested artboard deep\n * riveInstance.setTextRunValueAtPath(\"title\", \"New Title\", \"artboard1\");\n *\n * @example\n * // Set the text value for a text run named \"subtitle\" within a nested group two artboards deep\n * riveInstance.setTextRunValueAtPath(\"subtitle\", \"New Subtitle\", \"group/nestedGroup\");\n *\n * @remarks\n * If the text run cannot be found at the specified path, a warning will be logged to the console.\n */\n Rive.prototype.setTextRunValueAtPath = function (textName, value, path) {\n var run = this.retrieveTextAtPath(textName, path);\n if (!run) {\n console.warn(\"Could not set text with name: '\".concat(textName, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n run.text = value;\n };\n Object.defineProperty(Rive.prototype, \"playingStateMachineNames\", {\n // Returns a list of playing machine names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"playingAnimationNames\", {\n // Returns a list of playing animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations.filter(function (a) { return a.playing; }).map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedAnimationNames\", {\n // Returns a list of paused animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedStateMachineNames\", {\n /**\n * Returns a list of paused machine names\n * @returns a list of state machine names that are paused\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return !m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPlaying\", {\n /**\n * @returns true if any animation is playing\n */\n get: function () {\n return this.animator.isPlaying;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPaused\", {\n /**\n * @returns true if all instanced animations are paused\n */\n get: function () {\n return this.animator.isPaused;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isStopped\", {\n /**\n * @returns true if no animations are playing or paused\n */\n get: function () {\n return this.animator.isStopped;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"bounds\", {\n /**\n * @returns the bounds of the current artboard, or undefined if the artboard\n * isn't loaded yet.\n */\n get: function () {\n return this.artboard ? this.artboard.bounds : undefined;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Subscribe to Rive-generated events\n * @param type the type of event to subscribe to\n * @param callback callback to fire when the event occurs\n */\n Rive.prototype.on = function (type, callback) {\n this.eventManager.add({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @param type the type of event to unsubscribe from\n * @param callback the callback to unsubscribe\n */\n Rive.prototype.off = function (type, callback) {\n this.eventManager.remove({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @deprecated\n * @param callback the callback to unsubscribe from\n */\n Rive.prototype.unsubscribe = function (type, callback) {\n console.warn(\"This function is deprecated: please use `off()` instead.\");\n this.off(type, callback);\n };\n /**\n * Unsubscribes all Rive listeners from an event type, or everything if no type is\n * given\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n Rive.prototype.removeAllRiveEventListeners = function (type) {\n this.eventManager.removeAll(type);\n };\n /**\n * Unsubscribes all listeners from an event type, or everything if no type is\n * given\n * @deprecated\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n Rive.prototype.unsubscribeAll = function (type) {\n console.warn(\"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\");\n this.removeAllRiveEventListeners(type);\n };\n /**\n * Stops the rendering loop; this is different from pausing in that it doesn't\n * change the state of any animation. It stops rendering from occurring. This\n * is designed for situations such as when Rive isn't visible.\n *\n * The only way to start rendering again is to call `startRendering`.\n * Animations that are marked as playing will start from the position that\n * they would have been at if rendering had not been stopped.\n */\n Rive.prototype.stopRendering = function () {\n if (this.loaded && this.frameRequestId) {\n if (this.runtime.cancelAnimationFrame) {\n this.runtime.cancelAnimationFrame(this.frameRequestId);\n }\n else {\n cancelAnimationFrame(this.frameRequestId);\n }\n this.frameRequestId = null;\n }\n };\n /**\n * Starts the rendering loop if it has been previously stopped. If the\n * renderer is already active, then this will have zero effect.\n */\n Rive.prototype.startRendering = function () {\n if (this.loaded && this.artboard && !this.frameRequestId) {\n if (this.runtime.requestAnimationFrame) {\n this.frameRequestId = this.runtime.requestAnimationFrame(this._boundDraw);\n }\n else {\n this.frameRequestId = requestAnimationFrame(this._boundDraw);\n }\n }\n };\n /**\n * Enables frames-per-second (FPS) reporting for the runtime\n * If no callback is provided, Rive will append a fixed-position div at the top-right corner of\n * the page with the FPS reading\n * @param fpsCallback - Callback from the runtime during the RAF loop that supplies the FPS value\n */\n Rive.prototype.enableFPSCounter = function (fpsCallback) {\n this.runtime.enableFPSCounter(fpsCallback);\n };\n /**\n * Disables frames-per-second (FPS) reporting for the runtime\n */\n Rive.prototype.disableFPSCounter = function () {\n this.runtime.disableFPSCounter();\n };\n Object.defineProperty(Rive.prototype, \"contents\", {\n /**\n * Returns the contents of a Rive file: the artboards, animations, and state machines\n */\n get: function () {\n if (!this.loaded) {\n return undefined;\n }\n var riveContents = {\n artboards: [],\n };\n for (var i = 0; i < this.file.artboardCount(); i++) {\n var artboard = this.file.artboardByIndex(i);\n var artboardContents = {\n name: artboard.name,\n animations: [],\n stateMachines: [],\n };\n for (var j = 0; j < artboard.animationCount(); j++) {\n var animation = artboard.animationByIndex(j);\n artboardContents.animations.push(animation.name);\n }\n for (var k = 0; k < artboard.stateMachineCount(); k++) {\n var stateMachine = artboard.stateMachineByIndex(k);\n var name_1 = stateMachine.name;\n var instance = new this.runtime.StateMachineInstance(stateMachine, artboard);\n var inputContents = [];\n for (var l = 0; l < instance.inputCount(); l++) {\n var input = instance.input(l);\n inputContents.push({ name: input.name, type: input.type });\n }\n artboardContents.stateMachines.push({\n name: name_1,\n inputs: inputContents,\n });\n }\n riveContents.artboards.push(artboardContents);\n }\n return riveContents;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"volume\", {\n /**\n * Getter / Setter for the volume of the artboard\n */\n get: function () {\n if (this.artboard && this.artboard.volume !== this._volume) {\n this._volume = this.artboard.volume;\n }\n return this._volume;\n },\n set: function (value) {\n this._volume = value;\n if (this.artboard) {\n this.artboard.volume = value * audioManager.systemVolume;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"artboardWidth\", {\n /**\n * The width of the artboard.\n *\n * This will return 0 if the artboard is not loaded yet and a custom\n * width has not been set.\n *\n * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard width is\n * automatically set.\n */\n get: function () {\n var _a;\n if (this.artboard) {\n return this.artboard.width;\n }\n return (_a = this._artboardWidth) !== null && _a !== void 0 ? _a : 0;\n },\n set: function (value) {\n this._artboardWidth = value;\n if (this.artboard) {\n this.artboard.width = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"artboardHeight\", {\n /**\n * The height of the artboard.\n *\n * This will return 0 if the artboard is not loaded yet and a custom\n * height has not been set.\n *\n * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard height is\n * automatically set.\n */\n get: function () {\n var _a;\n if (this.artboard) {\n return this.artboard.height;\n }\n return (_a = this._artboardHeight) !== null && _a !== void 0 ? _a : 0;\n },\n set: function (value) {\n this._artboardHeight = value;\n if (this.artboard) {\n this.artboard.height = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Reset the artboard size to its original values.\n */\n Rive.prototype.resetArtboardSize = function () {\n if (this.artboard) {\n this.artboard.resetArtboardSize();\n this._artboardWidth = this.artboard.width;\n this._artboardHeight = this.artboard.height;\n }\n else {\n // If the artboard isn't loaded, we need to reset the custom width and height\n this._artboardWidth = undefined;\n this._artboardHeight = undefined;\n }\n };\n Object.defineProperty(Rive.prototype, \"devicePixelRatioUsed\", {\n /**\n * The device pixel ratio used in rendering and canvas/artboard resizing.\n *\n * This value will be overidden by the device pixel ratio used in\n * {@link resizeDrawingSurfaceToCanvas}. If you use that method, do not set this value.\n */\n get: function () {\n return this._devicePixelRatioUsed;\n },\n set: function (value) {\n this._devicePixelRatioUsed = value;\n },\n enumerable: false,\n configurable: true\n });\n // Error message for missing source or buffer\n Rive.missingErrorMessage = \"Rive source file or data buffer required\";\n // Error message for removed rive file\n Rive.cleanupErrorMessage = \"Attempt to use file after calling cleanup.\";\n return Rive;\n}());\n\n// Loads Rive data from a URI via fetch.\nvar loadRiveFile = function (src) { return __awaiter(void 0, void 0, void 0, function () {\n var req, res, buffer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n req = new Request(src);\n return [4 /*yield*/, fetch(req)];\n case 1:\n res = _a.sent();\n return [4 /*yield*/, res.arrayBuffer()];\n case 2:\n buffer = _a.sent();\n return [2 /*return*/, buffer];\n }\n });\n}); };\n// #endregion\n// #region utility functions\n/*\n * Utility function to ensure an object is a string array\n */\nvar mapToStringArray = function (obj) {\n if (typeof obj === \"string\") {\n return [obj];\n }\n else if (obj instanceof Array) {\n return obj;\n }\n // If obj is undefined, return empty array\n return [];\n};\n// #endregion\n// #region testing utilities\n// Exports to only be used for tests\nvar Testing = {\n EventManager: EventManager,\n TaskQueueManager: TaskQueueManager,\n};\n// #endregion\n// #region asset loaders\n/**\n * Decodes bytes into an audio asset.\n *\n * Be sure to call `.unref()` on the audio once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeAudio = function (bytes) {\n return new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeAudio(bytes, resolve);\n });\n });\n};\n/**\n * Decodes bytes into an image.\n *\n * Be sure to call `.unref()` on the image once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeImage = function (bytes) {\n return new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeImage(bytes, resolve);\n });\n });\n};\n/**\n * Decodes bytes into a font.\n *\n * Be sure to call `.unref()` on the font once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeFont = function (bytes) {\n return new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeFont(bytes, resolve);\n });\n });\n};\n// #endregion\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=rive.js.map","import { Controller } from \"@hotwired/stimulus\"\nimport { Rive } from \"@rive-app/canvas\"\n\n// Connects to data-controller=\"rive--button\"\nexport default class extends Controller {\n static targets = [\"canvas\"]\n static values = {\n src: String,\n stateMachine: { type: String, default: \"State Machine 1\" },\n autoplay: { type: Boolean, default: true },\n }\n\n connect() {\n this.canvas = this.hasCanvasTarget ? this.canvasTarget : this.element\n\n this.riveInstance = new Rive({\n src: this.srcValue,\n canvas: this.canvas,\n autoplay: this.autoplayValue,\n stateMachines: this.stateMachineValue,\n onLoad: () => {\n this.riveInstance.resizeDrawingSurfaceToCanvas()\n },\n })\n }\n\n disconnect() {\n this.riveInstance.cleanup()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Rive } from \"@rive-app/canvas\"\n\n// Connects to data-controller=\"rive--eyes\"\nexport default class extends Controller {\n static targets = [\"canvas\"]\n static values = {\n src: String,\n stateMachine: { type: String, default: \"State Machine 1\" },\n autoplay: { type: Boolean, default: true },\n }\n\n connect() {\n this.canvas = this.hasCanvasTarget ? this.canvasTarget : this.element\n\n this.riveInstance = new Rive({\n src: this.srcValue,\n canvas: this.canvas,\n autoplay: this.autoplayValue,\n stateMachines: this.stateMachineValue,\n onLoad: () => {\n this.riveInstance.resizeDrawingSurfaceToCanvas()\n this.initStateMachineInputs()\n },\n })\n }\n\n initStateMachineInputs() {\n const inputs = this.riveInstance.stateMachineInputs(this.stateMachineValue)\n this.closeEyesBoolean = inputs.find((input) => input.name === \"CloseEyesBoolean\")\n }\n\n openEyes() {\n if (this.closeEyesBoolean) {\n this.closeEyesBoolean.value = false\n }\n }\n\n closeEyes() {\n if (this.closeEyesBoolean) {\n this.closeEyesBoolean.value = true\n }\n }\n\n disconnect() {\n this.riveInstance.cleanup()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Rive } from \"@rive-app/canvas\"\n\n// Connects to data-controller=\"rive--file\"\nexport default class extends Controller {\n static targets = [\"canvas\"]\n static values = {\n src: String,\n stateMachine: { type: String, default: \"State Machine 1\" },\n autoplay: { type: Boolean, default: true },\n }\n\n connect() {\n this.canvas = this.hasCanvasTarget ? this.canvasTarget : this.element\n\n this.riveInstance = new Rive({\n src: this.srcValue,\n canvas: this.canvas,\n autoplay: this.autoplayValue,\n stateMachines: this.stateMachineValue,\n onLoad: () => {\n this.riveInstance.resizeDrawingSurfaceToCanvas()\n },\n })\n }\n\n disconnect() {\n this.riveInstance.cleanup()\n }\n}\n","/**!\n * Sortable 1.15.6\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.6\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._onDrop);\n // Native D&D triggers pointercancel\n !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n } else {\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n }\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n } else {\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n }\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = getParentOrHost(parent));\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n window.getSelection().removeAllRanges();\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'pointercancel', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild,\n expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n (function () {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n var filter = options.filter;\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n // Check if element is draggable\n if (!closest(children[i], options.draggable, parentEl, false)) continue;\n // Check if element is filtered\n var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n return closest(children[i], criteria.trim(), parentEl, false);\n }));\n if (filtered) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n })();\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import { Controller } from \"@hotwired/stimulus\";\nimport { put } from \"@rails/request.js\";\nimport Sortable from \"sortablejs\";\n\n// Connects to data-controller=\"sortable\"\nexport default class extends Controller {\n static values = { url: String };\n\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.onEnd.bind(this),\n animation: 300,\n draggable: \".sortable-element:not(.no-sortable-element)\",\n });\n }\n\n disconnect() {\n this.sortable.destroy();\n }\n\n onEnd(event) {\n const { newIndex, item } = event;\n const id = item.dataset.sortableId;\n const url = this.urlValue.replace(\"sortableIdReplacement\", id);\n put(url, {\n body: JSON.stringify({ position: newIndex, sortable_request: true }),\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"submit-form\"\nexport default class extends Controller {\n static targets = [\"form\"];\n static values = {\n timeout: { type: Number, default: 300 }\n };\n\n connect() {\n this.form = this.hasFormTarget ? this.formTarget : this.element;\n }\n\n submit() {\n if (this.timeoutValue === 0) {\n this.form.requestSubmit();\n return\n }\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.form.requestSubmit();\n }, this.timeoutValue);\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport Utils from \"../lib/utils.js\";\n\n// Connects to data-controller=\"theme\"\nexport default class extends Controller {\n // Toggle gets currently only used by the web app.\n toggle() {\n const currentTheme = Utils.getCookie(\"theme\");\n const newTheme = currentTheme === \"dark\" ? \"light\" : \"dark\";\n\n this._saveNewTheme(newTheme);\n }\n\n turboNativeThemeSelection() {\n swal(I18n.choose_theme, {\n className: \"center-swal-modal-footer\",\n buttons: {\n dark: I18n.theme_options.dark,\n light: I18n.theme_options.light,\n system_default: I18n.theme_options.system,\n },\n }).then((value) => {\n this._updateTurboNativeTheme(value);\n window.bridge.postJSToNative(\"setCurrentTheme\", { theme: value });\n });\n }\n\n _updateTurboNativeTheme(newTheme) {\n // If the theme is changed to \"system\", we have to reload the page so that\n // the server can set the correct theme based on the user-agent.\n // (we don't know what the system-default is from here)\n if (newTheme === \"system_default\") {\n Utils.setCookie(\"theme_choice\", \"system_default\");\n Turbo.visit(\"/?force_full_page_reload=true\")\n } else {\n Utils.setCookie(\"theme_choice\", \"manual\");\n this._saveNewTheme(newTheme);\n }\n }\n\n _saveNewTheme(newTheme) {\n Utils.setCookie(\"theme\", newTheme);\n document.documentElement.dataset.bsTheme = newTheme;\n\n // We clear the Turbo cache, so the theme toggle button won't flicker while navigation around.\n window.Turbo.cache.clear();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"toast-handler\"\nexport default class extends Controller {\n connect() {\n this.toast = bootstrap.Toast.getOrCreateInstance(this.element, this.toastOptions)\n this.toast.show()\n }\n\n disconnect() {\n this.toast.dispose()\n }\n\n beforeTurboCache() {\n this.element.remove()\n }\n\n get toastOptions() {\n return {\n animation: false,\n autohide: true,\n delay: 2000,\n }\n }\n}\n","/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events, callback) {\n events.split(/\\s+/).forEach((event) => {\n callback(event);\n });\n}\nexport default class MicroEvent {\n constructor() {\n this._events = {};\n }\n on(events, fct) {\n forEvents(events, (event) => {\n const event_array = this._events[event] || [];\n event_array.push(fct);\n this._events[event] = event_array;\n });\n }\n off(events, fct) {\n var n = arguments.length;\n if (n === 0) {\n this._events = {};\n return;\n }\n forEvents(events, (event) => {\n if (n === 1) {\n delete this._events[event];\n return;\n }\n const event_array = this._events[event];\n if (event_array === undefined)\n return;\n event_array.splice(event_array.indexOf(fct), 1);\n this._events[event] = event_array;\n });\n }\n trigger(events, ...args) {\n var self = this;\n forEvents(events, (event) => {\n const event_array = self._events[event];\n if (event_array === undefined)\n return;\n event_array.forEach(fct => {\n fct.apply(self, args);\n });\n });\n }\n}\n;\n//# sourceMappingURL=microevent.js.map","/**\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 */\nexport default function MicroPlugin(Interface) {\n Interface.plugins = {};\n return class extends Interface {\n constructor() {\n super(...arguments);\n this.plugins = {\n names: [],\n settings: {},\n requested: {},\n loaded: {}\n };\n }\n /**\n * Registers a plugin.\n *\n * @param {function} fn\n */\n static define(name, fn) {\n Interface.plugins[name] = {\n 'name': name,\n 'fn': fn\n };\n }\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 {array|object} plugins\n */\n initializePlugins(plugins) {\n var key, name;\n const self = this;\n const queue = [];\n if (Array.isArray(plugins)) {\n plugins.forEach((plugin) => {\n if (typeof plugin === 'string') {\n queue.push(plugin);\n }\n else {\n self.plugins.settings[plugin.name] = plugin.options;\n queue.push(plugin.name);\n }\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 while (name = queue.shift()) {\n self.require(name);\n }\n }\n loadPlugin(name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\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 */\n require(name) {\n var self = this;\n var plugins = self.plugins;\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n self.loadPlugin(name);\n }\n return plugins.loaded[name];\n }\n };\n}\n//# sourceMappingURL=microplugin.js.map","/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const arrayToPattern = (chars) => {\n chars = chars.filter(Boolean);\n if (chars.length < 2) {\n return chars[0] || '';\n }\n return (maxValueLength(chars) == 1) ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\nexport const sequencePattern = (array) => {\n if (!hasDuplicates(array)) {\n return array.join('');\n }\n let pattern = '';\n let prev_char_count = 0;\n const prev_pattern = () => {\n if (prev_char_count > 1) {\n pattern += '{' + prev_char_count + '}';\n }\n };\n array.forEach((char, i) => {\n if (char === array[i - 1]) {\n prev_char_count++;\n return;\n }\n prev_pattern();\n pattern += char;\n prev_char_count = 1;\n });\n prev_pattern();\n return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const setToPattern = (chars) => {\n let array = Array.from(chars);\n return arrayToPattern(array);\n};\n/**\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n */\nexport const hasDuplicates = (array) => {\n return (new Set(array)).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str) => {\n return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n */\nexport const maxValueLength = (array) => {\n return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\nexport const unicodeLength = (str) => {\n return Array.from(str).length;\n};\n//# sourceMappingURL=regex.js.map","/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n */\nexport const allSubstrings = (input) => {\n if (input.length === 1)\n return [[input]];\n let result = [];\n const start = input.substring(1);\n const suba = allSubstrings(start);\n suba.forEach(function (subresult) {\n let tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n};\n//# sourceMappingURL=strings.js.map","import { setToPattern, arrayToPattern, escape_regex, sequencePattern } from \"./regex.js\";\nimport { allSubstrings } from \"./strings.js\";\nexport const code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\nexport let unicode_map;\nlet multi_char_reg;\nconst max_char_length = 3;\nconst latin_convert = {};\nconst latin_condensed = {\n '/': 'â„∕',\n '0': '߀',\n \"a\": \"â±¥ÉÉ‘\",\n \"aa\": \"ꜳ\",\n \"ae\": \"æǽǣ\",\n \"ao\": \"ꜵ\",\n \"au\": \"ꜷ\",\n \"av\": \"ꜹꜻ\",\n \"ay\": \"ꜽ\",\n \"b\": \"ƀɓƃ\",\n \"c\": \"ꜿƈȼↄ\",\n \"d\": \"đɗɖᴅƌꮷÔɦ\",\n \"e\": \"É›Çᴇɇ\",\n \"f\": \"ê¼Æ’\",\n \"g\": \"Ç¥É êž¡áµ¹ê¿É¢\",\n \"h\": \"ħⱨⱶɥ\",\n \"i\": \"ɨı\",\n \"j\": \"ɉȷ\",\n \"k\": \"ƙⱪêêƒê…ꞣ\",\n \"l\": \"łƚɫⱡê‰ê‡êžÉ\",\n \"m\": \"ɱɯϻ\",\n \"n\": \"ꞥƞɲꞑᴎлԉ\",\n \"o\": \"øǿɔɵê‹êá´‘\",\n \"oe\": \"Å“\",\n \"oi\": \"Æ£\",\n \"oo\": \"ê\",\n \"ou\": \"È£\",\n \"p\": \"ƥᵽê‘ê“ê•Ï\",\n \"q\": \"ê—ê™É‹\",\n \"r\": \"Éɽê›êž§êžƒ\",\n \"s\": \"ßȿꞩꞅʂ\",\n \"t\": \"ŧÆʈⱦꞇ\",\n \"th\": \"þ\",\n \"tz\": \"ꜩ\",\n \"u\": \"ʉ\",\n \"v\": \"Ê‹êŸÊŒ\",\n \"vy\": \"ê¡\",\n \"w\": \"â±³\",\n \"y\": \"Æ´Éỿ\",\n \"z\": \"ƶȥɀⱬê£\",\n \"hv\": \"Æ•\"\n};\nfor (let latin in latin_condensed) {\n let unicode = latin_condensed[latin] || '';\n for (let i = 0; i < unicode.length; i++) {\n let char = unicode.substring(i, i + 1);\n latin_convert[char] = latin;\n }\n}\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n */\nexport const initialize = (_code_points) => {\n if (unicode_map !== undefined)\n return;\n unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n */\nexport const normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n */\nexport const asciifold = (str) => {\n return Array.from(str).reduce(\n /**\n * @param {string} result\n * @param {string} char\n */\n (result, char) => {\n return result + _asciifold(char);\n }, '');\n};\nexport const _asciifold = (str) => {\n str = normalize(str)\n .toLowerCase()\n .replace(convert_pat, (/** @type {string} */ char) => {\n return latin_convert[char] || '';\n });\n //return str;\n return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n */\nexport function* generator(code_points) {\n for (const [code_point_min, code_point_max] of code_points) {\n for (let i = code_point_min; i <= code_point_max; i++) {\n let composed = String.fromCharCode(i);\n let folded = asciifold(composed);\n if (folded == composed.toLowerCase()) {\n continue;\n }\n // skip when folded is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // folded صلى الله عليه وسلم length 18 code point 65018\n // folded جل جلاله length 8 code point 65019\n if (folded.length > max_char_length) {\n continue;\n }\n if (folded.length == 0) {\n continue;\n }\n yield { folded: folded, composed: composed, code_point: i };\n }\n }\n}\n/**\n * Generate a unicode map from the list of code points\n */\nexport const generateSets = (code_points) => {\n const unicode_sets = {};\n const addMatching = (folded, to_add) => {\n /** @type {Set<string>} */\n const folded_set = unicode_sets[folded] || new Set();\n const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n if (to_add.match(patt)) {\n return;\n }\n folded_set.add(escape_regex(to_add));\n unicode_sets[folded] = folded_set;\n };\n for (let value of generator(code_points)) {\n addMatching(value.folded, value.folded);\n addMatching(value.folded, value.composed);\n }\n return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ç¢)|(?:A|â’¶|A...)(?:E|É›|â’º...))\n */\nexport const generateMap = (code_points) => {\n const unicode_sets = generateSets(code_points);\n const unicode_map = {};\n let multi_char = [];\n for (let folded in unicode_sets) {\n let set = unicode_sets[folded];\n if (set) {\n unicode_map[folded] = setToPattern(set);\n }\n if (folded.length > 1) {\n multi_char.push(escape_regex(folded));\n }\n }\n multi_char.sort((a, b) => b.length - a.length);\n const multi_char_patt = arrayToPattern(multi_char);\n multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n return unicode_map;\n};\n/**\n * Map each element of an array from its folded value to all possible unicode matches\n */\nexport const mapSequence = (strings, min_replacement = 1) => {\n let chars_replaced = 0;\n strings = strings.map((str) => {\n if (unicode_map[str]) {\n chars_replaced += str.length;\n }\n return unicode_map[str] || str;\n });\n if (chars_replaced >= min_replacement) {\n return sequencePattern(strings);\n }\n return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n */\nexport const substringsToPattern = (str, min_replacement = 1) => {\n min_replacement = Math.max(min_replacement, str.length - 1);\n return arrayToPattern(allSubstrings(str).map((sub_pat) => {\n return mapSequence(sub_pat, min_replacement);\n }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n */\nconst sequencesToPattern = (sequences, all = true) => {\n let min_replacement = sequences.length > 1 ? 1 : 0;\n return arrayToPattern(sequences.map((sequence) => {\n let seq = [];\n const len = all ? sequence.length() : sequence.length() - 1;\n for (let j = 0; j < len; j++) {\n seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n }\n return sequencePattern(seq);\n }));\n};\n/**\n * Return true if the sequence is already in the sequences\n */\nconst inSequences = (needle_seq, sequences) => {\n for (const seq of sequences) {\n if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n continue;\n }\n if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n continue;\n }\n let needle_parts = needle_seq.parts;\n const filter = (part) => {\n for (const needle_part of needle_parts) {\n if (needle_part.start === part.start && needle_part.substr === part.substr) {\n return false;\n }\n if (part.length == 1 || needle_part.length == 1) {\n continue;\n }\n // check for overlapping parts\n // a = ['::=','==']\n // b = ['::','===']\n // a = ['r','sm']\n // b = ['rs','m']\n if (part.start < needle_part.start && part.end > needle_part.start) {\n return true;\n }\n if (needle_part.start < part.start && needle_part.end > part.start) {\n return true;\n }\n }\n return false;\n };\n let filtered = seq.parts.filter(filter);\n if (filtered.length > 0) {\n continue;\n }\n return true;\n }\n return false;\n};\nclass Sequence {\n parts;\n substrs;\n start;\n end;\n constructor() {\n this.parts = [];\n this.substrs = [];\n this.start = 0;\n this.end = 0;\n }\n add(part) {\n if (part) {\n this.parts.push(part);\n this.substrs.push(part.substr);\n this.start = Math.min(part.start, this.start);\n this.end = Math.max(part.end, this.end);\n }\n }\n last() {\n return this.parts[this.parts.length - 1];\n }\n length() {\n return this.parts.length;\n }\n clone(position, last_piece) {\n let clone = new Sequence();\n let parts = JSON.parse(JSON.stringify(this.parts));\n let last_part = parts.pop();\n for (const part of parts) {\n clone.add(part);\n }\n let last_substr = last_piece.substr.substring(0, position - last_part.start);\n let clone_last_len = last_substr.length;\n clone.add({ start: last_part.start, end: last_part.start + clone_last_len, length: clone_last_len, substr: last_substr });\n return clone;\n }\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aâ“ï½áºšÃ áâầấẫẩãÄăằắẵẳȧǡäǟảåǻǎÈȃạáºáº·á¸Ä…â±¥ÉÉ‘AⒶAÀÃÃ‚áº¦áº¤áºªáº¨ÃƒÄ€Ä‚áº°áº®áº´áº²È¦Ç Ã„Çžáº¢Ã…ÇºÇȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n * ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tÙŠÙ”ÙŠÙ” [ 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}', 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}' ]\n *\n *\tİIJ = IIJ = â…¡J\n *\n * \t1/2/4\n */\nexport const getPattern = (str) => {\n initialize();\n str = asciifold(str);\n let pattern = '';\n let sequences = [new Sequence()];\n for (let i = 0; i < str.length; i++) {\n let substr = str.substring(i);\n let match = substr.match(multi_char_reg);\n const char = str.substring(i, i + 1);\n const match_str = match ? match[0] : null;\n // loop through sequences\n // add either the char or multi_match\n let overlapping = [];\n let added_types = new Set();\n for (const sequence of sequences) {\n const last_piece = sequence.last();\n if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n // if we have a multi match\n if (match_str) {\n const len = match_str.length;\n sequence.add({ start: i, end: i + len, length: len, substr: match_str });\n added_types.add('1');\n }\n else {\n sequence.add({ start: i, end: i + 1, length: 1, substr: char });\n added_types.add('2');\n }\n }\n else if (match_str) {\n let clone = sequence.clone(i, last_piece);\n const len = match_str.length;\n clone.add({ start: i, end: i + len, length: len, substr: match_str });\n overlapping.push(clone);\n }\n else {\n // don't add char\n // adding would create invalid patterns: 234 => [2,34,4]\n added_types.add('3');\n }\n }\n // if we have overlapping\n if (overlapping.length > 0) {\n // ['ii','iii'] before ['i','i','iii']\n overlapping = overlapping.sort((a, b) => {\n return a.length() - b.length();\n });\n for (let clone of overlapping) {\n // don't add if we already have an equivalent sequence\n if (inSequences(clone, sequences)) {\n continue;\n }\n sequences.push(clone);\n }\n continue;\n }\n // if we haven't done anything unique\n // clean up the patterns\n // helps keep patterns smaller\n // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n pattern += sequencesToPattern(sequences, false);\n let new_seq = new Sequence();\n const old_seq = sequences[0];\n if (old_seq) {\n new_seq.add(old_seq.last());\n }\n sequences = [new_seq];\n }\n }\n pattern += sequencesToPattern(sequences, true);\n return pattern;\n};\nexport { escape_regex };\n//# sourceMappingURL=index.js.map","import { asciifold } from '@orchidjs/unicode-variants';\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 * @return {Object} The resolved property value\n */\nexport const getAttr = (obj, name) => {\n if (!obj)\n return;\n return obj[name];\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 * @return {Object} The resolved property value\n */\nexport const getAttrNesting = (obj, name) => {\n if (!obj)\n return;\n var part, names = name.split(\".\");\n while ((part = names.shift()) && (obj = obj[part]))\n ;\n return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value)\n return 0;\n value = value + '';\n if (token.regex == null)\n return 0;\n pos = value.search(token.regex);\n if (pos === -1)\n return 0;\n score = token.string.length / value.length;\n if (pos === 0)\n score += 0.5;\n return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function')\n return value;\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n }\n else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nexport const cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : (a < b ? -1 : 0);\n }\n a = asciifold(a + '').toLowerCase();\n b = asciifold(b + '').toLowerCase();\n if (a > b)\n return 1;\n if (b > a)\n return -1;\n return 0;\n};\n//# sourceMappingURL=utils.js.map","/**\n * sifter.js\n * Copyright (c) 2013–2020 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 */\nimport { scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp } from \"./utils.js\";\nimport { getPattern, escape_regex } from '@orchidjs/unicode-variants';\nclass Sifter {\n items; // []|{};\n settings;\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = items;\n this.settings = settings || { 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 */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length)\n return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n }\n words.forEach((word) => {\n let field_match;\n let field = null;\n let regex = null;\n // look for \"field:query\" tokens\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = getPattern(word) || null;\n }\n else {\n regex = escape_regex(word);\n }\n if (regex && respect_word_boundaries)\n regex = \"\\\\b\" + regex;\n }\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field,\n });\n });\n return tokens;\n }\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 * @returns {T.ScoreFn}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n /**\n * @returns {T.ScoreFn}\n *\n */\n _getScoreFunction(search) {\n const tokens = search.tokens, token_count = tokens.length;\n if (!token_count) {\n return function () { return 0; };\n }\n const fields = search.options.fields, weights = search.weights, field_count = fields.length, getAttrFn = search.getAttrFn;\n if (!field_count) {\n return function () { return 1; };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n const scoreObject = (function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n };\n }\n return function (token, data) {\n var sum = 0;\n // is the token specific to a field?\n if (token.field) {\n const value = getAttrFn(data, token.field);\n if (!token.regex && value) {\n sum += (1 / field_count);\n }\n else {\n sum += scoreValue(value, token, 1);\n }\n }\n else {\n iterate(weights, (weight, field) => {\n sum += scoreValue(getAttrFn(data, field), token, weight);\n });\n }\n return sum / field_count;\n };\n })();\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score, sum = 0;\n for (let token of tokens) {\n score = scoreObject(token, data);\n if (score <= 0)\n return 0;\n sum += score;\n }\n return sum / token_count;\n };\n }\n else {\n return function (data) {\n var sum = 0;\n iterate(tokens, (token) => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\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 * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n _getSortFunction(search) {\n var implicit_score, sort_flds = [];\n const self = this, options = search.options, sort = (!search.query && options.sort_empty) ? options.sort_empty : options.sort;\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n const get_field = function (name, result) {\n if (name === '$score')\n return result.score;\n return search.getAttrFn(self.items[result.id], name);\n };\n // parse options\n if (sort) {\n for (let s of sort) {\n if (search.query || s.field !== '$score') {\n sort_flds.push(s);\n }\n }\n }\n // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n if (search.query) {\n implicit_score = true;\n for (let fld of sort_flds) {\n if (fld.field === '$score') {\n implicit_score = false;\n break;\n }\n }\n if (implicit_score) {\n sort_flds.unshift({ field: '$score', direction: 'desc' });\n }\n // without a search.query, all items will have the same score\n }\n else {\n sort_flds = sort_flds.filter((fld) => fld.field !== '$score');\n }\n // build function\n const sort_flds_count = sort_flds.length;\n if (!sort_flds_count) {\n return null;\n }\n return function (a, b) {\n var result, field;\n for (let sort_fld of sort_flds) {\n field = sort_fld.field;\n let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n result = multiplier * cmp(get_field(field, a), get_field(field, b));\n if (result)\n return result;\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 */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n propToArray(options, 'sort');\n propToArray(options, 'sort_empty');\n // convert fields to new format\n if (options.fields) {\n propToArray(options, 'fields');\n const fields = [];\n options.fields.forEach((field) => {\n if (typeof field == 'string') {\n field = { field: field, weight: 1 };\n }\n fields.push(field);\n weights[field.field] = ('weight' in field) ? field.weight : 1;\n });\n options.fields = fields;\n }\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: (options.nesting) ? getAttrNesting : getAttr,\n };\n }\n ;\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this, score, search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query;\n // generate result scoring function\n const fn_score = options.score || self._getScoreFunction(search);\n // perform search and sort\n if (query.length) {\n iterate(self.items, (item, id) => {\n score = fn_score(item);\n if (options.filter === false || score > 0) {\n search.items.push({ 'score': score, 'id': id });\n }\n });\n }\n else {\n iterate(self.items, (_, id) => {\n search.items.push({ 'score': 1, 'id': id });\n });\n }\n const fn_sort = self._getSortFunction(search);\n if (fn_sort)\n search.items.sort(fn_sort);\n // apply limits\n search.total = search.items.length;\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n return search;\n }\n ;\n}\nexport { Sifter, scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp, getPattern };\nexport * from \"./types.js\";\n//# sourceMappingURL=sifter.js.map","/**\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 */\nexport const hash_key = (value) => {\n if (typeof value === 'undefined' || value === null)\n return null;\n return get_hash(value);\n};\nexport const get_hash = (value) => {\n if (typeof value === 'boolean')\n return value ? '1' : '0';\n return value + '';\n};\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str) => {\n return (str + '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n};\n/**\n * use setTimeout if timeout > 0\n */\nexport const timeout = (fn, timeout) => {\n if (timeout > 0) {\n return window.setTimeout(fn, timeout);\n }\n fn.call(null);\n return null;\n};\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn, delay) => {\n var timeout;\n return function (value, callback) {\n var self = this;\n if (timeout) {\n self.loading = Math.max(self.loading - 1, 0);\n clearTimeout(timeout);\n }\n timeout = setTimeout(function () {\n timeout = null;\n self.loadedSearches[value] = true;\n fn.call(self, value, callback);\n }, delay);\n };\n};\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = (self, types, fn) => {\n var type;\n var trigger = self.trigger;\n var event_args = {};\n // override trigger method\n self.trigger = function () {\n var type = arguments[0];\n if (types.indexOf(type) !== -1) {\n event_args[type] = arguments;\n }\n else {\n return trigger.apply(self, arguments);\n }\n };\n // invoke provided function\n fn.apply(self, []);\n self.trigger = trigger;\n // trigger queued events\n for (type of types) {\n if (type in event_args) {\n trigger.apply(self, event_args[type]);\n }\n }\n};\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nexport const getSelection = (input) => {\n return {\n start: input.selectionStart || 0,\n length: (input.selectionEnd || 0) - (input.selectionStart || 0),\n };\n};\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = (key_name, evt) => {\n if (!evt) {\n return false;\n }\n if (!evt[key_name]) {\n return false;\n }\n var count = (evt.altKey ? 1 : 0) + (evt.ctrlKey ? 1 : 0) + (evt.shiftKey ? 1 : 0) + (evt.metaKey ? 1 : 0);\n if (count === 1) {\n return true;\n }\n return false;\n};\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el, id) => {\n const existing_id = el.getAttribute('id');\n if (existing_id) {\n return existing_id;\n }\n el.setAttribute('id', id);\n return id;\n};\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str) => {\n return str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n/**\n *\n */\nexport const append = (parent, node) => {\n if (node)\n parent.append(node);\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n }\n else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\n//# sourceMappingURL=utils.js.map","import { iterate } from \"./utils.js\";\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = (query) => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nexport const isHtmlString = (arg) => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\nexport const escapeQuery = (query) => {\n return query.replace(/['\"\\\\]/g, '\\\\$&');\n};\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = (dom_el, event_name) => {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(event_name, true, false);\n dom_el.dispatchEvent(event);\n};\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = (dom_el, css) => {\n Object.assign(dom_el.style, css);\n};\n/**\n * Add css classes\n *\n */\nexport const addClasses = (elmts, ...classes) => {\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.add(cls);\n });\n });\n};\n/**\n * Remove css classes\n *\n */\nexport const removeClasses = (elmts, ...classes) => {\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.remove(cls);\n });\n });\n};\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args) => {\n var classes = [];\n iterate(args, (_classes) => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n};\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg) => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n};\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = (target, selector, wrapper) => {\n if (wrapper && !wrapper.contains(target)) {\n return;\n }\n while (target && target.matches) {\n if (target.matches(selector)) {\n return target;\n }\n target = target.parentNode;\n }\n};\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = (list, direction = 0) => {\n if (direction > 0) {\n return list[list.length - 1];\n }\n return list[0];\n};\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj) => {\n return (Object.keys(obj).length === 0);\n};\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = (el, amongst) => {\n if (!el)\n return -1;\n amongst = amongst || el.nodeName;\n var i = 0;\n while (el = el.previousElementSibling) {\n if (el.matches(amongst)) {\n i++;\n }\n }\n return i;\n};\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el, attrs) => {\n iterate(attrs, (val, attr) => {\n if (val == null) {\n el.removeAttribute(attr);\n }\n else {\n el.setAttribute(attr, '' + val);\n }\n });\n};\n/**\n * Replace a node\n */\nexport const replaceNode = (existing, replacement) => {\n if (existing.parentNode)\n existing.parentNode.replaceChild(replacement, existing);\n};\n//# sourceMappingURL=vanilla.js.map","/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\nimport { replaceNode } from \"../vanilla.js\";\nexport const highlight = (element, regex) => {\n if (regex === null)\n return;\n // convet string to regex\n if (typeof regex === 'string') {\n if (!regex.length)\n return;\n regex = new RegExp(regex, 'i');\n }\n // Wrap matching part of text node with highlighting <span>, e.g.\n // Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n const highlightText = (node) => {\n var match = node.data.match(regex);\n if (match && node.data.length > 0) {\n var spannode = document.createElement('span');\n spannode.className = 'highlight';\n var middlebit = node.splitText(match.index);\n middlebit.splitText(match[0].length);\n var middleclone = middlebit.cloneNode(true);\n spannode.appendChild(middleclone);\n replaceNode(middlebit, spannode);\n return 1;\n }\n return 0;\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 const highlightChildren = (node) => {\n if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && (node.className !== 'highlight' || node.tagName !== 'SPAN')) {\n Array.from(node.childNodes).forEach(element => {\n highlightRecursive(element);\n });\n }\n };\n const highlightRecursive = (node) => {\n if (node.nodeType === 3) {\n return highlightText(node);\n }\n highlightChildren(node);\n return 0;\n };\n highlightRecursive(element);\n};\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el) => {\n var elements = el.querySelectorAll(\"span.highlight\");\n Array.prototype.forEach.call(elements, function (el) {\n var parent = el.parentNode;\n parent.replaceChild(el.firstChild, el);\n parent.normalize();\n });\n};\n//# sourceMappingURL=highlight.js.map","export const KEY_A = 65;\nexport const KEY_RETURN = 13;\nexport const KEY_ESC = 27;\nexport const KEY_LEFT = 37;\nexport const KEY_UP = 38;\nexport const KEY_RIGHT = 39;\nexport const KEY_DOWN = 40;\nexport const KEY_BACKSPACE = 8;\nexport const KEY_DELETE = 46;\nexport const KEY_TAB = 9;\nexport const IS_MAC = typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT = IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n//# sourceMappingURL=constants.js.map","export default {\n options: [],\n optgroups: [],\n plugins: [],\n delimiter: ',',\n splitOn: null, // regexp or string for splitting up values from a paste command\n persist: true,\n diacritics: true,\n create: null,\n createOnBlur: false,\n createFilter: null,\n highlight: true,\n openOnFocus: true,\n shouldOpen: null,\n maxOptions: 50,\n maxItems: null,\n hideSelected: null,\n duplicates: false,\n addPrecedence: false,\n selectOnTab: false,\n preload: null,\n allowEmptyOption: false,\n //closeAfterSelect: false,\n refreshThrottle: 300,\n loadThrottle: 300,\n loadingClass: 'loading',\n dataAttr: null, //'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: 'ts-wrapper',\n controlClass: 'ts-control',\n dropdownClass: 'ts-dropdown',\n dropdownContentClass: 'ts-dropdown-content',\n itemClass: 'item',\n optionClass: 'option',\n dropdownParent: null,\n controlInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n copyClassesToDropdown: false,\n placeholder: null,\n hidePlaceholder: null,\n shouldLoad: function (query) {\n return query.length > 0;\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//# sourceMappingURL=defaults.js.map","import defaults from \"./defaults.js\";\nimport { hash_key, iterate } from \"./utils.js\";\nexport default function getSettings(input, settings_user) {\n var settings = Object.assign({}, 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 var tag_name = input.tagName.toLowerCase();\n var placeholder = input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n if (!placeholder && !settings.allowEmptyOption) {\n let option = input.querySelector('option[value=\"\"]');\n if (option) {\n placeholder = option.textContent;\n }\n }\n var settings_element = {\n placeholder: placeholder,\n options: [],\n optgroups: [],\n items: [],\n maxItems: null,\n };\n /**\n * Initialize from a <select> element.\n *\n */\n var init_select = () => {\n var tagName;\n var options = settings_element.options;\n var optionsMap = {};\n var group_count = 1;\n let $order = 0;\n var readData = (el) => {\n var data = Object.assign({}, el.dataset); // get plain object from DOMStringMap\n var json = attr_data && data[attr_data];\n if (typeof json === 'string' && json.length) {\n data = Object.assign(data, JSON.parse(json));\n }\n return data;\n };\n var addOption = (option, group) => {\n var value = hash_key(option.value);\n if (value == null)\n return;\n if (!value && !settings.allowEmptyOption)\n return;\n // 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 if (optionsMap.hasOwnProperty(value)) {\n if (group) {\n var arr = optionsMap[value][field_optgroup];\n if (!arr) {\n optionsMap[value][field_optgroup] = group;\n }\n else if (!Array.isArray(arr)) {\n optionsMap[value][field_optgroup] = [arr, group];\n }\n else {\n arr.push(group);\n }\n }\n }\n else {\n var option_data = readData(option);\n option_data[field_label] = option_data[field_label] || option.textContent;\n option_data[field_value] = option_data[field_value] || value;\n option_data[field_disabled] = option_data[field_disabled] || option.disabled;\n option_data[field_optgroup] = option_data[field_optgroup] || group;\n option_data.$option = option;\n option_data.$order = option_data.$order || ++$order;\n optionsMap[value] = option_data;\n options.push(option_data);\n }\n if (option.selected) {\n settings_element.items.push(value);\n }\n };\n var addGroup = (optgroup) => {\n var id, optgroup_data;\n optgroup_data = readData(optgroup);\n optgroup_data[field_optgroup_label] = optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n optgroup_data[field_optgroup_value] = optgroup_data[field_optgroup_value] || group_count++;\n optgroup_data[field_disabled] = optgroup_data[field_disabled] || optgroup.disabled;\n optgroup_data.$order = optgroup_data.$order || ++$order;\n settings_element.optgroups.push(optgroup_data);\n id = optgroup_data[field_optgroup_value];\n iterate(optgroup.children, (option) => {\n addOption(option, id);\n });\n };\n settings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n iterate(input.children, (child) => {\n tagName = child.tagName.toLowerCase();\n if (tagName === 'optgroup') {\n addGroup(child);\n }\n else if (tagName === 'option') {\n addOption(child);\n }\n });\n };\n /**\n * Initialize from a <input type=\"text\"> element.\n *\n */\n var init_textbox = () => {\n const data_raw = input.getAttribute(attr_data);\n if (!data_raw) {\n var value = input.value.trim() || '';\n if (!settings.allowEmptyOption && !value.length)\n return;\n const values = value.split(settings.delimiter);\n iterate(values, (value) => {\n const option = {};\n option[field_label] = value;\n option[field_value] = value;\n settings_element.options.push(option);\n });\n settings_element.items = values;\n }\n else {\n settings_element.options = JSON.parse(data_raw);\n iterate(settings_element.options, (opt) => {\n settings_element.items.push(opt[field_value]);\n });\n }\n };\n if (tag_name === 'select') {\n init_select();\n }\n else {\n init_textbox();\n }\n return Object.assign({}, defaults, settings_element, settings_user);\n}\n;\n//# sourceMappingURL=getSettings.js.map","import MicroEvent from \"./contrib/microevent.js\";\nimport MicroPlugin from \"./contrib/microplugin.js\";\nimport { Sifter } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { highlight, removeHighlight } from \"./contrib/highlight.js\";\nimport * as constants from \"./constants.js\";\nimport getSettings from \"./getSettings.js\";\nimport { hash_key, get_hash, escape_html, debounce_events, getSelection, preventDefault, addEvent, loadDebounce, timeout, isKeyDown, getId, addSlashes, append, iterate } from \"./utils.js\";\nimport { getDom, isHtmlString, escapeQuery, triggerEvent, applyCSS, addClasses, removeClasses, parentMatch, getTail, isEmptyObject, nodeIndex, setAttr, replaceNode } from \"./vanilla.js\";\nvar instance_i = 0;\nexport default class TomSelect extends MicroPlugin(MicroEvent) {\n constructor(input_arg, user_settings) {\n super();\n this.order = 0;\n this.isOpen = false;\n this.isDisabled = false;\n this.isReadOnly = false;\n this.isInvalid = false; // @deprecated 1.8\n this.isValid = true;\n this.isLocked = false;\n this.isFocused = false;\n this.isInputHidden = false;\n this.isSetup = false;\n this.ignoreFocus = false;\n this.ignoreHover = false;\n this.hasOptions = false;\n this.lastValue = '';\n this.caretPos = 0;\n this.loading = 0;\n this.loadedSearches = {};\n this.activeOption = null;\n this.activeItems = [];\n this.optgroups = {};\n this.options = {};\n this.userOptions = {};\n this.items = [];\n this.refreshTimeout = null;\n instance_i++;\n var dir;\n var input = getDom(input_arg);\n if (input.tomselect) {\n throw new Error('Tom Select already initialized on this element');\n }\n input.tomselect = this;\n // detect rtl environment\n var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n dir = computedStyle.getPropertyValue('direction');\n // setup default state\n const settings = getSettings(input, user_settings);\n this.settings = settings;\n this.input = input;\n this.tabIndex = input.tabIndex || 0;\n this.is_select_tag = input.tagName.toLowerCase() === 'select';\n this.rtl = /rtl/i.test(dir);\n this.inputId = getId(input, 'tomselect-' + instance_i);\n this.isRequired = input.required;\n // search system\n this.sifter = new Sifter(this.options, { diacritics: settings.diacritics });\n // option-dependent defaults\n settings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n if (typeof settings.hideSelected !== 'boolean') {\n settings.hideSelected = settings.mode === 'multi';\n }\n if (typeof settings.hidePlaceholder !== 'boolean') {\n settings.hidePlaceholder = settings.mode !== 'multi';\n }\n // set up createFilter callback\n var filter = settings.createFilter;\n if (typeof filter !== 'function') {\n if (typeof filter === 'string') {\n filter = new RegExp(filter);\n }\n if (filter instanceof RegExp) {\n settings.createFilter = (input) => filter.test(input);\n }\n else {\n settings.createFilter = (value) => {\n return this.settings.duplicates || !this.options[value];\n };\n }\n }\n this.initializePlugins(settings.plugins);\n this.setupCallbacks();\n this.setupTemplates();\n // Create all elements\n const wrapper = getDom('<div>');\n const control = getDom('<div>');\n const dropdown = this._render('dropdown');\n const dropdown_content = getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n const classes = this.input.getAttribute('class') || '';\n const inputMode = settings.mode;\n var control_input;\n addClasses(wrapper, settings.wrapperClass, classes, inputMode);\n addClasses(control, settings.controlClass);\n append(wrapper, control);\n addClasses(dropdown, settings.dropdownClass, inputMode);\n if (settings.copyClassesToDropdown) {\n addClasses(dropdown, classes);\n }\n addClasses(dropdown_content, settings.dropdownContentClass);\n append(dropdown, dropdown_content);\n getDom(settings.dropdownParent || wrapper).appendChild(dropdown);\n // default controlInput\n if (isHtmlString(settings.controlInput)) {\n control_input = getDom(settings.controlInput);\n // set attributes\n var attrs = ['autocorrect', 'autocapitalize', 'autocomplete', 'spellcheck'];\n iterate(attrs, (attr) => {\n if (input.getAttribute(attr)) {\n setAttr(control_input, { [attr]: input.getAttribute(attr) });\n }\n });\n control_input.tabIndex = -1;\n control.appendChild(control_input);\n this.focus_node = control_input;\n // dom element\n }\n else if (settings.controlInput) {\n control_input = getDom(settings.controlInput);\n this.focus_node = control_input;\n }\n else {\n control_input = getDom('<input/>');\n this.focus_node = control;\n }\n this.wrapper = wrapper;\n this.dropdown = dropdown;\n this.dropdown_content = dropdown_content;\n this.control = control;\n this.control_input = control_input;\n this.setup();\n }\n /**\n * set up event bindings.\n *\n */\n setup() {\n const self = this;\n const settings = self.settings;\n const control_input = self.control_input;\n const dropdown = self.dropdown;\n const dropdown_content = self.dropdown_content;\n const wrapper = self.wrapper;\n const control = self.control;\n const input = self.input;\n const focus_node = self.focus_node;\n const passive_event = { passive: true };\n const listboxId = self.inputId + '-ts-dropdown';\n setAttr(dropdown_content, {\n id: listboxId\n });\n setAttr(focus_node, {\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': 'false',\n 'aria-controls': listboxId\n });\n const control_id = getId(focus_node, self.inputId + '-ts-control');\n const query = \"label[for='\" + escapeQuery(self.inputId) + \"']\";\n const label = document.querySelector(query);\n const label_click = self.focus.bind(self);\n if (label) {\n addEvent(label, 'click', label_click);\n setAttr(label, { for: control_id });\n const label_id = getId(label, self.inputId + '-ts-label');\n setAttr(focus_node, { 'aria-labelledby': label_id });\n setAttr(dropdown_content, { 'aria-labelledby': label_id });\n }\n wrapper.style.width = input.style.width;\n if (self.plugins.names.length) {\n const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n addClasses([wrapper, dropdown], classes_plugins);\n }\n if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {\n setAttr(input, { multiple: 'multiple' });\n }\n if (settings.placeholder) {\n setAttr(control_input, { placeholder: settings.placeholder });\n }\n // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n if (!settings.splitOn && settings.delimiter) {\n settings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n }\n // debounce user defined load() if loadThrottle > 0\n // after initializePlugins() so plugins can create/modify user defined loaders\n if (settings.load && settings.loadThrottle) {\n settings.load = loadDebounce(settings.load, settings.loadThrottle);\n }\n addEvent(dropdown, 'mousemove', () => {\n self.ignoreHover = false;\n });\n addEvent(dropdown, 'mouseenter', (e) => {\n var target_match = parentMatch(e.target, '[data-selectable]', dropdown);\n if (target_match)\n self.onOptionHover(e, target_match);\n }, { capture: true });\n // clicking on an option should select it\n addEvent(dropdown, 'click', (evt) => {\n const option = parentMatch(evt.target, '[data-selectable]');\n if (option) {\n self.onOptionSelect(evt, option);\n preventDefault(evt, true);\n }\n });\n addEvent(control, 'click', (evt) => {\n var target_match = parentMatch(evt.target, '[data-ts-item]', control);\n if (target_match && self.onItemSelect(evt, target_match)) {\n preventDefault(evt, true);\n return;\n }\n // retain focus (see control_input mousedown)\n if (control_input.value != '') {\n return;\n }\n self.onClick();\n preventDefault(evt, true);\n });\n // keydown on focus_node for arrow_down/arrow_up\n addEvent(focus_node, 'keydown', (e) => self.onKeyDown(e));\n // keypress and input/keyup\n addEvent(control_input, 'keypress', (e) => self.onKeyPress(e));\n addEvent(control_input, 'input', (e) => self.onInput(e));\n addEvent(focus_node, 'blur', (e) => self.onBlur(e));\n addEvent(focus_node, 'focus', (e) => self.onFocus(e));\n addEvent(control_input, 'paste', (e) => self.onPaste(e));\n const doc_mousedown = (evt) => {\n // blur if target is outside of this instance\n // dropdown is not always inside wrapper\n const target = evt.composedPath()[0];\n if (!wrapper.contains(target) && !dropdown.contains(target)) {\n if (self.isFocused) {\n self.blur();\n }\n self.inputState();\n return;\n }\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 // Fixes bug #212 which is no covered by tests\n if (target == control_input && self.isOpen) {\n evt.stopPropagation();\n // clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n }\n else {\n preventDefault(evt, true);\n }\n };\n const win_scroll = () => {\n if (self.isOpen) {\n self.positionDropdown();\n }\n };\n addEvent(document, 'mousedown', doc_mousedown);\n addEvent(window, 'scroll', win_scroll, passive_event);\n addEvent(window, 'resize', win_scroll, passive_event);\n this._destroy = () => {\n document.removeEventListener('mousedown', doc_mousedown);\n window.removeEventListener('scroll', win_scroll);\n window.removeEventListener('resize', win_scroll);\n if (label)\n label.removeEventListener('click', label_click);\n };\n // store original html and tab index so that they can be\n // restored when the destroy() method is called.\n this.revertSettings = {\n innerHTML: input.innerHTML,\n tabIndex: input.tabIndex\n };\n input.tabIndex = -1;\n input.insertAdjacentElement('afterend', self.wrapper);\n self.sync(false);\n settings.items = [];\n delete settings.optgroups;\n delete settings.options;\n addEvent(input, 'invalid', () => {\n if (self.isValid) {\n self.isValid = false;\n self.isInvalid = true;\n self.refreshState();\n }\n });\n self.updateOriginalInput();\n self.refreshItems();\n self.close(false);\n self.inputState();\n self.isSetup = true;\n if (input.disabled) {\n self.disable();\n }\n else if (input.readOnly) {\n self.setReadOnly(true);\n }\n else {\n self.enable(); //sets tabIndex\n }\n self.on('change', this.onChange);\n addClasses(input, 'tomselected', 'ts-hidden-accessible');\n self.trigger('initialize');\n // preload options\n if (settings.preload === true) {\n self.preload();\n }\n }\n /**\n * Register options and optgroups\n *\n */\n setupOptions(options = [], optgroups = []) {\n // build options table\n this.addOptions(options);\n // build optgroup table\n iterate(optgroups, (optgroup) => {\n this.registerOptionGroup(optgroup);\n });\n }\n /**\n * Sets up default rendering functions.\n */\n setupTemplates() {\n var self = this;\n var field_label = self.settings.labelField;\n var field_optgroup = self.settings.optgroupLabelField;\n var templates = {\n 'optgroup': (data) => {\n let optgroup = document.createElement('div');\n optgroup.className = 'optgroup';\n optgroup.appendChild(data.options);\n return optgroup;\n },\n 'optgroup_header': (data, escape) => {\n return '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n },\n 'option': (data, escape) => {\n return '<div>' + escape(data[field_label]) + '</div>';\n },\n 'item': (data, escape) => {\n return '<div>' + escape(data[field_label]) + '</div>';\n },\n 'option_create': (data, escape) => {\n return '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n },\n 'no_results': () => {\n return '<div class=\"no-results\">No results found</div>';\n },\n 'loading': () => {\n return '<div class=\"spinner\"></div>';\n },\n 'not_loading': () => { },\n 'dropdown': () => {\n return '<div></div>';\n }\n };\n self.settings.render = Object.assign({}, templates, self.settings.render);\n }\n /**\n * Maps fired events to callbacks provided\n * in the settings used when creating the control.\n */\n setupCallbacks() {\n var key, fn;\n var callbacks = {\n 'initialize': 'onInitialize',\n 'change': 'onChange',\n 'item_add': 'onItemAdd',\n 'item_remove': 'onItemRemove',\n 'item_select': 'onItemSelect',\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 for (key in callbacks) {\n fn = this.settings[callbacks[key]];\n if (fn)\n this.on(key, fn);\n }\n }\n /**\n * Sync the Tom Select instance with the original input or select\n *\n */\n sync(get_settings = true) {\n const self = this;\n const settings = get_settings ? getSettings(self.input, { delimiter: self.settings.delimiter }) : self.settings;\n self.setupOptions(settings.options, settings.optgroups);\n self.setValue(settings.items || [], true); // silent prevents recursion\n self.lastQuery = null; // so updated options will be displayed in dropdown\n }\n /**\n * Triggered when the main control element\n * has a click event.\n *\n */\n onClick() {\n var self = this;\n if (self.activeItems.length > 0) {\n self.clearActiveItems();\n self.focus();\n return;\n }\n if (self.isFocused && self.isOpen) {\n self.blur();\n }\n else {\n self.focus();\n }\n }\n /**\n * @deprecated v1.7\n *\n */\n onMouseDown() { }\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() {\n triggerEvent(this.input, 'input');\n triggerEvent(this.input, 'change');\n }\n /**\n * Triggered on <input> paste.\n *\n */\n onPaste(e) {\n var self = this;\n if (self.isInputHidden || self.isLocked) {\n preventDefault(e);\n return;\n }\n // If a regex or string is included, this will split the pasted\n // input and create Items for each separate value\n if (!self.settings.splitOn) {\n return;\n }\n // Wait for pasted text to be recognized in value\n setTimeout(() => {\n var pastedText = self.inputValue();\n if (!pastedText.match(self.settings.splitOn)) {\n return;\n }\n var splitInput = pastedText.trim().split(self.settings.splitOn);\n iterate(splitInput, (piece) => {\n const hash = hash_key(piece);\n if (hash) {\n if (this.options[piece]) {\n self.addItem(piece);\n }\n else {\n self.createItem(piece);\n }\n }\n });\n }, 0);\n }\n /**\n * Triggered on <input> keypress.\n *\n */\n onKeyPress(e) {\n var self = this;\n if (self.isLocked) {\n preventDefault(e);\n return;\n }\n var character = String.fromCharCode(e.keyCode || e.which);\n if (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n self.createItem();\n preventDefault(e);\n return;\n }\n }\n /**\n * Triggered on <input> keydown.\n *\n */\n onKeyDown(e) {\n var self = this;\n self.ignoreHover = true;\n if (self.isLocked) {\n if (e.keyCode !== constants.KEY_TAB) {\n preventDefault(e);\n }\n return;\n }\n switch (e.keyCode) {\n // ctrl+A: select all\n case constants.KEY_A:\n if (isKeyDown(constants.KEY_SHORTCUT, e)) {\n if (self.control_input.value == '') {\n preventDefault(e);\n self.selectAll();\n return;\n }\n }\n break;\n // esc: close dropdown\n case constants.KEY_ESC:\n if (self.isOpen) {\n preventDefault(e, true);\n self.close();\n }\n self.clearActiveItems();\n return;\n // down: open dropdown or move selection down\n case constants.KEY_DOWN:\n if (!self.isOpen && self.hasOptions) {\n self.open();\n }\n else if (self.activeOption) {\n let next = self.getAdjacent(self.activeOption, 1);\n if (next)\n self.setActiveOption(next);\n }\n preventDefault(e);\n return;\n // up: move selection up\n case constants.KEY_UP:\n if (self.activeOption) {\n let prev = self.getAdjacent(self.activeOption, -1);\n if (prev)\n self.setActiveOption(prev);\n }\n preventDefault(e);\n return;\n // return: select active option\n case constants.KEY_RETURN:\n if (self.canSelect(self.activeOption)) {\n self.onOptionSelect(e, self.activeOption);\n preventDefault(e);\n // if the option_create=null, the dropdown might be closed\n }\n else if (self.settings.create && self.createItem()) {\n preventDefault(e);\n // don't submit form when searching for a value\n }\n else if (document.activeElement == self.control_input && self.isOpen) {\n preventDefault(e);\n }\n return;\n // left: modifiy item selection to the left\n case constants.KEY_LEFT:\n self.advanceSelection(-1, e);\n return;\n // right: modifiy item selection to the right\n case constants.KEY_RIGHT:\n self.advanceSelection(1, e);\n return;\n // tab: select active option and/or create item\n case constants.KEY_TAB:\n if (self.settings.selectOnTab) {\n if (self.canSelect(self.activeOption)) {\n self.onOptionSelect(e, self.activeOption);\n // prevent default [tab] behaviour of jump to the next field\n // if select isFull, then the dropdown won't be open and [tab] will work normally\n preventDefault(e);\n }\n if (self.settings.create && self.createItem()) {\n preventDefault(e);\n }\n }\n return;\n // delete|backspace: delete items\n case constants.KEY_BACKSPACE:\n case constants.KEY_DELETE:\n self.deleteSelection(e);\n return;\n }\n // don't enter text in the control_input when active items are selected\n if (self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT, e)) {\n preventDefault(e);\n }\n }\n /**\n * Triggered on <input> keyup.\n *\n */\n onInput(e) {\n if (this.isLocked) {\n return;\n }\n const value = this.inputValue();\n if (this.lastValue === value)\n return;\n this.lastValue = value;\n if (value == '') {\n this._onInput();\n return;\n }\n if (this.refreshTimeout) {\n window.clearTimeout(this.refreshTimeout);\n }\n this.refreshTimeout = timeout(() => {\n this.refreshTimeout = null;\n this._onInput();\n }, this.settings.refreshThrottle);\n }\n _onInput() {\n const value = this.lastValue;\n if (this.settings.shouldLoad.call(this, value)) {\n this.load(value);\n }\n this.refreshOptions();\n this.trigger('type', value);\n }\n /**\n * Triggered when the user rolls over\n * an option in the autocomplete dropdown menu.\n *\n */\n onOptionHover(evt, option) {\n if (this.ignoreHover)\n return;\n this.setActiveOption(option, false);\n }\n /**\n * Triggered on <input> focus.\n *\n */\n onFocus(e) {\n var self = this;\n var wasFocused = self.isFocused;\n if (self.isDisabled || self.isReadOnly) {\n self.blur();\n preventDefault(e);\n return;\n }\n if (self.ignoreFocus)\n return;\n self.isFocused = true;\n if (self.settings.preload === 'focus')\n self.preload();\n if (!wasFocused)\n self.trigger('focus');\n if (!self.activeItems.length) {\n self.inputState();\n self.refreshOptions(!!self.settings.openOnFocus);\n }\n self.refreshState();\n }\n /**\n * Triggered on <input> blur.\n *\n */\n onBlur(e) {\n if (document.hasFocus() === false)\n return;\n var self = this;\n if (!self.isFocused)\n return;\n self.isFocused = false;\n self.ignoreFocus = false;\n var deactivate = () => {\n self.close();\n self.setActiveItem();\n self.setCaret(self.items.length);\n self.trigger('blur');\n };\n if (self.settings.create && self.settings.createOnBlur) {\n self.createItem(null, deactivate);\n }\n else {\n deactivate();\n }\n }\n /**\n * Triggered when the user clicks on an option\n * in the autocomplete dropdown menu.\n *\n */\n onOptionSelect(evt, option) {\n var value, self = this;\n // should not be possible to trigger a option under a disabled optgroup\n if (option.parentElement && option.parentElement.matches('[data-disabled]')) {\n return;\n }\n if (option.classList.contains('create')) {\n self.createItem(null, () => {\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n });\n }\n else {\n value = option.dataset.value;\n if (typeof value !== 'undefined') {\n self.lastQuery = null;\n self.addItem(value);\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n if (!self.settings.hideSelected && evt.type && /click/.test(evt.type)) {\n self.setActiveOption(option);\n }\n }\n }\n }\n /**\n * Return true if the given option can be selected\n *\n */\n canSelect(option) {\n if (this.isOpen && option && this.dropdown_content.contains(option)) {\n return true;\n }\n return false;\n }\n /**\n * Triggered when the user clicks on an item\n * that has been selected.\n *\n */\n onItemSelect(evt, item) {\n var self = this;\n if (!self.isLocked && self.settings.mode === 'multi') {\n preventDefault(evt);\n self.setActiveItem(item, evt);\n return true;\n }\n return false;\n }\n /**\n * Determines whether or not to invoke\n * the user-provided option provider / loader\n *\n * Note, there is a subtle difference between\n * this.canLoad() and this.settings.shouldLoad();\n *\n *\t- settings.shouldLoad() is a user-input validator.\n *\tWhen false is returned, the not_loading template\n *\twill be added to the dropdown\n *\n *\t- canLoad() is lower level validator that checks\n * \tthe Tom Select instance. There is no inherent user\n *\tfeedback when canLoad returns false\n *\n */\n canLoad(value) {\n if (!this.settings.load)\n return false;\n if (this.loadedSearches.hasOwnProperty(value))\n return false;\n return true;\n }\n /**\n * Invokes the user-provided option provider / loader.\n *\n */\n load(value) {\n const self = this;\n if (!self.canLoad(value))\n return;\n addClasses(self.wrapper, self.settings.loadingClass);\n self.loading++;\n const callback = self.loadCallback.bind(self);\n self.settings.load.call(self, value, callback);\n }\n /**\n * Invoked by the user-provided option provider\n *\n */\n loadCallback(options, optgroups) {\n const self = this;\n self.loading = Math.max(self.loading - 1, 0);\n self.lastQuery = null;\n self.clearActiveOption(); // when new results load, focus should be on first option\n self.setupOptions(options, optgroups);\n self.refreshOptions(self.isFocused && !self.isInputHidden);\n if (!self.loading) {\n removeClasses(self.wrapper, self.settings.loadingClass);\n }\n self.trigger('load', options, optgroups);\n }\n preload() {\n var classList = this.wrapper.classList;\n if (classList.contains('preloaded'))\n return;\n classList.add('preloaded');\n this.load('');\n }\n /**\n * Sets the input field of the control to the specified value.\n *\n */\n setTextboxValue(value = '') {\n var input = this.control_input;\n var changed = input.value !== value;\n if (changed) {\n input.value = value;\n triggerEvent(input, 'update');\n this.lastValue = value;\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 */\n getValue() {\n if (this.is_select_tag && this.input.hasAttribute('multiple')) {\n return this.items;\n }\n return this.items.join(this.settings.delimiter);\n }\n /**\n * Resets the selected items to the given value.\n *\n */\n setValue(value, silent) {\n var events = silent ? [] : ['change'];\n debounce_events(this, events, () => {\n this.clear(silent);\n this.addItems(value, silent);\n });\n }\n /**\n * Resets the number of max items to the given value\n *\n */\n setMaxItems(value) {\n if (value === 0)\n value = null; //reset to unlimited items.\n this.settings.maxItems = value;\n this.refreshState();\n }\n /**\n * Sets the selected item.\n *\n */\n setActiveItem(item, e) {\n var self = this;\n var eventName;\n var i, begin, end, swap;\n var last;\n if (self.settings.mode === 'single')\n return;\n // clear the active selection\n if (!item) {\n self.clearActiveItems();\n if (self.isFocused) {\n self.inputState();\n }\n return;\n }\n // modify selection\n eventName = e && e.type.toLowerCase();\n if (eventName === 'click' && isKeyDown('shiftKey', e) && self.activeItems.length) {\n last = self.getLastActive();\n begin = Array.prototype.indexOf.call(self.control.children, last);\n end = Array.prototype.indexOf.call(self.control.children, item);\n if (begin > end) {\n swap = begin;\n begin = end;\n end = swap;\n }\n for (i = begin; i <= end; i++) {\n item = self.control.children[i];\n if (self.activeItems.indexOf(item) === -1) {\n self.setActiveItemClass(item);\n }\n }\n preventDefault(e);\n }\n else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT, e)) || (eventName === 'keydown' && isKeyDown('shiftKey', e))) {\n if (item.classList.contains('active')) {\n self.removeActiveItem(item);\n }\n else {\n self.setActiveItemClass(item);\n }\n }\n else {\n self.clearActiveItems();\n self.setActiveItemClass(item);\n }\n // ensure control has focus\n self.inputState();\n if (!self.isFocused) {\n self.focus();\n }\n }\n /**\n * Set the active and last-active classes\n *\n */\n setActiveItemClass(item) {\n const self = this;\n const last_active = self.control.querySelector('.last-active');\n if (last_active)\n removeClasses(last_active, 'last-active');\n addClasses(item, 'active last-active');\n self.trigger('item_select', item);\n if (self.activeItems.indexOf(item) == -1) {\n self.activeItems.push(item);\n }\n }\n /**\n * Remove active item\n *\n */\n removeActiveItem(item) {\n var idx = this.activeItems.indexOf(item);\n this.activeItems.splice(idx, 1);\n removeClasses(item, 'active');\n }\n /**\n * Clears all the active items\n *\n */\n clearActiveItems() {\n removeClasses(this.activeItems, 'active');\n this.activeItems = [];\n }\n /**\n * Sets the selected item in the dropdown menu\n * of available options.\n *\n */\n setActiveOption(option, scroll = true) {\n if (option === this.activeOption) {\n return;\n }\n this.clearActiveOption();\n if (!option)\n return;\n this.activeOption = option;\n setAttr(this.focus_node, { 'aria-activedescendant': option.getAttribute('id') });\n setAttr(option, { 'aria-selected': 'true' });\n addClasses(option, 'active');\n if (scroll)\n this.scrollToOption(option);\n }\n /**\n * Sets the dropdown_content scrollTop to display the option\n *\n */\n scrollToOption(option, behavior) {\n if (!option)\n return;\n const content = this.dropdown_content;\n const height_menu = content.clientHeight;\n const scrollTop = content.scrollTop || 0;\n const height_item = option.offsetHeight;\n const y = option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n if (y + height_item > height_menu + scrollTop) {\n this.scroll(y - height_menu + height_item, behavior);\n }\n else if (y < scrollTop) {\n this.scroll(y, behavior);\n }\n }\n /**\n * Scroll the dropdown to the given position\n *\n */\n scroll(scrollTop, behavior) {\n const content = this.dropdown_content;\n if (behavior) {\n content.style.scrollBehavior = behavior;\n }\n content.scrollTop = scrollTop;\n content.style.scrollBehavior = '';\n }\n /**\n * Clears the active option\n *\n */\n clearActiveOption() {\n if (this.activeOption) {\n removeClasses(this.activeOption, 'active');\n setAttr(this.activeOption, { 'aria-selected': null });\n }\n this.activeOption = null;\n setAttr(this.focus_node, { 'aria-activedescendant': null });\n }\n /**\n * Selects all items (CTRL + A).\n */\n selectAll() {\n const self = this;\n if (self.settings.mode === 'single')\n return;\n const activeItems = self.controlChildren();\n if (!activeItems.length)\n return;\n self.inputState();\n self.close();\n self.activeItems = activeItems;\n iterate(activeItems, (item) => {\n self.setActiveItemClass(item);\n });\n }\n /**\n * Determines if the control_input should be in a hidden or visible state\n *\n */\n inputState() {\n var self = this;\n if (!self.control.contains(self.control_input))\n return;\n setAttr(self.control_input, { placeholder: self.settings.placeholder });\n if (self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0)) {\n self.setTextboxValue();\n self.isInputHidden = true;\n }\n else {\n if (self.settings.hidePlaceholder && self.items.length > 0) {\n setAttr(self.control_input, { placeholder: '' });\n }\n self.isInputHidden = false;\n }\n self.wrapper.classList.toggle('input-hidden', self.isInputHidden);\n }\n /**\n * Get the input value\n */\n inputValue() {\n return this.control_input.value.trim();\n }\n /**\n * Gives the control focus.\n */\n focus() {\n var self = this;\n if (self.isDisabled || self.isReadOnly)\n return;\n self.ignoreFocus = true;\n if (self.control_input.offsetWidth) {\n self.control_input.focus();\n }\n else {\n self.focus_node.focus();\n }\n setTimeout(() => {\n self.ignoreFocus = false;\n self.onFocus();\n }, 0);\n }\n /**\n * Forces the control out of focus.\n *\n */\n blur() {\n this.focus_node.blur();\n this.onBlur();\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 * @return {function}\n */\n getScoreFunction(query) {\n return this.sifter.getScoreFunction(query, this.getSearchOptions());\n }\n /**\n * Returns search options for sifter (the system\n * for scoring and sorting results).\n *\n * @see https://github.com/orchidjs/sifter.js\n * @return {object}\n */\n getSearchOptions() {\n var settings = this.settings;\n var sort = settings.sortField;\n if (typeof settings.sortField === 'string') {\n sort = [{ field: settings.sortField }];\n }\n return {\n fields: settings.searchField,\n conjunction: settings.searchConjunction,\n sort: sort,\n nesting: settings.nesting\n };\n }\n /**\n * Searches through available options and returns\n * a sorted array of matches.\n *\n */\n search(query) {\n var result, calculateScore;\n var self = this;\n var options = this.getSearchOptions();\n // validate user-provided result scoring function\n if (self.settings.score) {\n calculateScore = self.settings.score.call(self, query);\n if (typeof calculateScore !== 'function') {\n throw new Error('Tom Select \"score\" setting must be a function that returns a function');\n }\n }\n // perform search\n if (query !== self.lastQuery) {\n self.lastQuery = query;\n result = self.sifter.search(query, Object.assign(options, { score: calculateScore }));\n self.currentResults = result;\n }\n else {\n result = Object.assign({}, self.currentResults);\n }\n // filter out selected items\n if (self.settings.hideSelected) {\n result.items = result.items.filter((item) => {\n let hashed = hash_key(item.id);\n return !(hashed && self.items.indexOf(hashed) !== -1);\n });\n }\n return result;\n }\n /**\n * Refreshes the list of available options shown\n * in the autocomplete dropdown menu.\n *\n */\n refreshOptions(triggerDropdown = true) {\n var i, j, k, n, optgroup, optgroups, html, has_create_option, active_group;\n var create;\n const groups = {};\n const groups_order = [];\n var self = this;\n var query = self.inputValue();\n const same_query = query === self.lastQuery || (query == '' && self.lastQuery == null);\n var results = self.search(query);\n var active_option = null;\n var show_dropdown = self.settings.shouldOpen || false;\n var dropdown_content = self.dropdown_content;\n if (same_query) {\n active_option = self.activeOption;\n if (active_option) {\n active_group = active_option.closest('[data-group]');\n }\n }\n // build markup\n n = results.items.length;\n if (typeof self.settings.maxOptions === 'number') {\n n = Math.min(n, self.settings.maxOptions);\n }\n if (n > 0) {\n show_dropdown = true;\n }\n // get fragment for group and the position of the group in group_order\n const getGroupFragment = (optgroup, order) => {\n let group_order_i = groups[optgroup];\n if (group_order_i !== undefined) {\n let order_group = groups_order[group_order_i];\n if (order_group !== undefined) {\n return [group_order_i, order_group.fragment];\n }\n }\n let group_fragment = document.createDocumentFragment();\n group_order_i = groups_order.length;\n groups_order.push({ fragment: group_fragment, order, optgroup });\n return [group_order_i, group_fragment];\n };\n // render and group available options individually\n for (i = 0; i < n; i++) {\n // get option dom element\n let item = results.items[i];\n if (!item)\n continue;\n let opt_value = item.id;\n let option = self.options[opt_value];\n if (option === undefined)\n continue;\n let opt_hash = get_hash(opt_value);\n let option_el = self.getOption(opt_hash, true);\n // toggle 'selected' class\n if (!self.settings.hideSelected) {\n option_el.classList.toggle('selected', self.items.includes(opt_hash));\n }\n optgroup = option[self.settings.optgroupField] || '';\n optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n for (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n optgroup = optgroups[j];\n let order = option.$order;\n let self_optgroup = self.optgroups[optgroup];\n if (self_optgroup === undefined) {\n optgroup = '';\n }\n else {\n order = self_optgroup.$order;\n }\n const [group_order_i, group_fragment] = getGroupFragment(optgroup, order);\n // nodes can only have one parent, so if the option is in mutple groups, we need a clone\n if (j > 0) {\n option_el = option_el.cloneNode(true);\n setAttr(option_el, { id: option.$id + '-clone-' + j, 'aria-selected': null });\n option_el.classList.add('ts-cloned');\n removeClasses(option_el, 'active');\n // make sure we keep the activeOption in the same group\n if (self.activeOption && self.activeOption.dataset.value == opt_value) {\n if (active_group && active_group.dataset.group === optgroup.toString()) {\n active_option = option_el;\n }\n }\n }\n group_fragment.appendChild(option_el);\n if (optgroup != '') {\n groups[optgroup] = group_order_i;\n }\n }\n }\n // sort optgroups\n if (self.settings.lockOptgroupOrder) {\n groups_order.sort((a, b) => {\n return a.order - b.order;\n });\n }\n // render optgroup headers & join groups\n html = document.createDocumentFragment();\n iterate(groups_order, (group_order) => {\n let group_fragment = group_order.fragment;\n let optgroup = group_order.optgroup;\n if (!group_fragment || !group_fragment.children.length)\n return;\n let group_heading = self.optgroups[optgroup];\n if (group_heading !== undefined) {\n let group_options = document.createDocumentFragment();\n let header = self.render('optgroup_header', group_heading);\n append(group_options, header);\n append(group_options, group_fragment);\n let group_html = self.render('optgroup', { group: group_heading, options: group_options });\n append(html, group_html);\n }\n else {\n append(html, group_fragment);\n }\n });\n dropdown_content.innerHTML = '';\n append(dropdown_content, html);\n // highlight matching terms inline\n if (self.settings.highlight) {\n removeHighlight(dropdown_content);\n if (results.query.length && results.tokens.length) {\n iterate(results.tokens, (tok) => {\n highlight(dropdown_content, tok.regex);\n });\n }\n }\n // helper method for adding templates to dropdown\n var add_template = (template) => {\n let content = self.render(template, { input: query });\n if (content) {\n show_dropdown = true;\n dropdown_content.insertBefore(content, dropdown_content.firstChild);\n }\n return content;\n };\n // add loading message\n if (self.loading) {\n add_template('loading');\n // invalid query\n }\n else if (!self.settings.shouldLoad.call(self, query)) {\n add_template('not_loading');\n // add no_results message\n }\n else if (results.items.length === 0) {\n add_template('no_results');\n }\n // add create option\n has_create_option = self.canCreate(query);\n if (has_create_option) {\n create = add_template('option_create');\n }\n // activate\n self.hasOptions = results.items.length > 0 || has_create_option;\n if (show_dropdown) {\n if (results.items.length > 0) {\n if (!active_option && self.settings.mode === 'single' && self.items[0] != undefined) {\n active_option = self.getOption(self.items[0]);\n }\n if (!dropdown_content.contains(active_option)) {\n let active_index = 0;\n if (create && !self.settings.addPrecedence) {\n active_index = 1;\n }\n active_option = self.selectable()[active_index];\n }\n }\n else if (create) {\n active_option = create;\n }\n if (triggerDropdown && !self.isOpen) {\n self.open();\n self.scrollToOption(active_option, 'auto');\n }\n self.setActiveOption(active_option);\n }\n else {\n self.clearActiveOption();\n if (triggerDropdown && self.isOpen) {\n self.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n }\n }\n }\n /**\n * Return list of selectable options\n *\n */\n selectable() {\n return this.dropdown_content.querySelectorAll('[data-selectable]');\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 */\n addOption(data, user_created = false) {\n const self = this;\n // @deprecated 1.7.7\n // use addOptions( array, user_created ) for adding multiple options\n if (Array.isArray(data)) {\n self.addOptions(data, user_created);\n return false;\n }\n const key = hash_key(data[self.settings.valueField]);\n if (key === null || self.options.hasOwnProperty(key)) {\n return false;\n }\n data.$order = data.$order || ++self.order;\n data.$id = self.inputId + '-opt-' + data.$order;\n self.options[key] = data;\n self.lastQuery = null;\n if (user_created) {\n self.userOptions[key] = user_created;\n self.trigger('option_add', key, data);\n }\n return key;\n }\n /**\n * Add multiple options\n *\n */\n addOptions(data, user_created = false) {\n iterate(data, (dat) => {\n this.addOption(dat, user_created);\n });\n }\n /**\n * @deprecated 1.7.7\n */\n registerOption(data) {\n return this.addOption(data);\n }\n /**\n * Registers an option group to the pool of option groups.\n *\n * @return {boolean|string}\n */\n registerOptionGroup(data) {\n var key = hash_key(data[this.settings.optgroupValueField]);\n if (key === null)\n return false;\n data.$order = data.$order || ++this.order;\n this.optgroups[key] = data;\n return key;\n }\n /**\n * Registers a new optgroup for options\n * to be bucketed into.\n *\n */\n addOptionGroup(id, data) {\n var hashed_id;\n data[this.settings.optgroupValueField] = id;\n if (hashed_id = this.registerOptionGroup(data)) {\n this.trigger('optgroup_add', hashed_id, data);\n }\n }\n /**\n * Removes an existing option group.\n *\n */\n removeOptionGroup(id) {\n if (this.optgroups.hasOwnProperty(id)) {\n delete this.optgroups[id];\n this.clearCache();\n this.trigger('optgroup_remove', id);\n }\n }\n /**\n * Clears all existing option groups.\n */\n clearOptionGroups() {\n this.optgroups = {};\n this.clearCache();\n this.trigger('optgroup_clear');\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 */\n updateOption(value, data) {\n const self = this;\n var item_new;\n var index_item;\n const value_old = hash_key(value);\n const value_new = hash_key(data[self.settings.valueField]);\n // sanity checks\n if (value_old === null)\n return;\n const data_old = self.options[value_old];\n if (data_old == undefined)\n return;\n if (typeof value_new !== 'string')\n throw new Error('Value must be set in option data');\n const option = self.getOption(value_old);\n const item = self.getItem(value_old);\n data.$order = data.$order || data_old.$order;\n delete self.options[value_old];\n // invalidate render cache\n // don't remove existing node yet, we'll remove it after replacing it\n self.uncacheValue(value_new);\n self.options[value_new] = data;\n // update the option if it's in the dropdown\n if (option) {\n if (self.dropdown_content.contains(option)) {\n const option_new = self._render('option', data);\n replaceNode(option, option_new);\n if (self.activeOption === option) {\n self.setActiveOption(option_new);\n }\n }\n option.remove();\n }\n // update the item if we have one\n if (item) {\n index_item = self.items.indexOf(value_old);\n if (index_item !== -1) {\n self.items.splice(index_item, 1, value_new);\n }\n item_new = self._render('item', data);\n if (item.classList.contains('active'))\n addClasses(item_new, 'active');\n replaceNode(item, item_new);\n }\n // invalidate last query because we might have updated the sortField\n self.lastQuery = null;\n }\n /**\n * Removes a single option.\n *\n */\n removeOption(value, silent) {\n const self = this;\n value = get_hash(value);\n self.uncacheValue(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 * Clears all options.\n */\n clearOptions(filter) {\n const boundFilter = (filter || this.clearFilter).bind(this);\n this.loadedSearches = {};\n this.userOptions = {};\n this.clearCache();\n const selected = {};\n iterate(this.options, (option, key) => {\n if (boundFilter(option, key)) {\n selected[key] = option;\n }\n });\n this.options = this.sifter.items = selected;\n this.lastQuery = null;\n this.trigger('option_clear');\n }\n /**\n * Used by clearOptions() to decide whether or not an option should be removed\n * Return true to keep an option, false to remove\n *\n */\n clearFilter(option, value) {\n if (this.items.indexOf(value) >= 0) {\n return true;\n }\n return false;\n }\n /**\n * Returns the dom element of the option\n * matching the given value.\n *\n */\n getOption(value, create = false) {\n const hashed = hash_key(value);\n if (hashed === null)\n return null;\n const option = this.options[hashed];\n if (option != undefined) {\n if (option.$div) {\n return option.$div;\n }\n if (create) {\n return this._render('option', option);\n }\n }\n return null;\n }\n /**\n * Returns the dom element of the next or previous dom element of the same type\n * Note: adjacent options may not be adjacent DOM elements (optgroups)\n *\n */\n getAdjacent(option, direction, type = 'option') {\n var self = this, all;\n if (!option) {\n return null;\n }\n if (type == 'item') {\n all = self.controlChildren();\n }\n else {\n all = self.dropdown_content.querySelectorAll('[data-selectable]');\n }\n for (let i = 0; i < all.length; i++) {\n if (all[i] != option) {\n continue;\n }\n if (direction > 0) {\n return all[i + 1];\n }\n return all[i - 1];\n }\n return null;\n }\n /**\n * Returns the dom element of the item\n * matching the given value.\n *\n */\n getItem(item) {\n if (typeof item == 'object') {\n return item;\n }\n var value = hash_key(item);\n return value !== null\n ? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n : null;\n }\n /**\n * \"Selects\" multiple items at once. Adds them to the list\n * at the current caret position.\n *\n */\n addItems(values, silent) {\n var self = this;\n var items = Array.isArray(values) ? values : [values];\n items = items.filter(x => self.items.indexOf(x) === -1);\n const last_item = items[items.length - 1];\n items.forEach(item => {\n self.isPending = (item !== last_item);\n self.addItem(item, silent);\n });\n }\n /**\n * \"Selects\" an item. Adds it to the list\n * at the current caret position.\n *\n */\n addItem(value, silent) {\n var events = silent ? [] : ['change', 'dropdown_close'];\n debounce_events(this, events, () => {\n var item, wasFull;\n const self = this;\n const inputMode = self.settings.mode;\n const hashed = hash_key(value);\n if (hashed && self.items.indexOf(hashed) !== -1) {\n if (inputMode === 'single') {\n self.close();\n }\n if (inputMode === 'single' || !self.settings.duplicates) {\n return;\n }\n }\n if (hashed === null || !self.options.hasOwnProperty(hashed))\n return;\n if (inputMode === 'single')\n self.clear(silent);\n if (inputMode === 'multi' && self.isFull())\n return;\n item = self._render('item', self.options[hashed]);\n if (self.control.contains(item)) { // duplicates\n item = item.cloneNode(true);\n }\n wasFull = self.isFull();\n self.items.splice(self.caretPos, 0, hashed);\n self.insertAtCaret(item);\n if (self.isSetup) {\n // update menu / remove the option (if this is not one item being added as part of series)\n if (!self.isPending && self.settings.hideSelected) {\n let option = self.getOption(hashed);\n let next = self.getAdjacent(option, 1);\n if (next) {\n self.setActiveOption(next);\n }\n }\n // refreshOptions after setActiveOption(),\n // otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n if (!self.isPending && !self.settings.closeAfterSelect) {\n self.refreshOptions(self.isFocused && inputMode !== 'single');\n }\n // hide the menu if the maximum number of items have been selected or no options are left\n if (self.settings.closeAfterSelect != false && self.isFull()) {\n self.close();\n }\n else if (!self.isPending) {\n self.positionDropdown();\n }\n self.trigger('item_add', hashed, item);\n if (!self.isPending) {\n self.updateOriginalInput({ silent: silent });\n }\n }\n if (!self.isPending || (!wasFull && self.isFull())) {\n self.inputState();\n self.refreshState();\n }\n });\n }\n /**\n * Removes the selected item matching\n * the provided value.\n *\n */\n removeItem(item = null, silent) {\n const self = this;\n item = self.getItem(item);\n if (!item)\n return;\n var i, idx;\n const value = item.dataset.value;\n i = nodeIndex(item);\n item.remove();\n if (item.classList.contains('active')) {\n idx = self.activeItems.indexOf(item);\n self.activeItems.splice(idx, 1);\n removeClasses(item, 'active');\n }\n self.items.splice(i, 1);\n self.lastQuery = null;\n if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n self.removeOption(value, silent);\n }\n if (i < self.caretPos) {\n self.setCaret(self.caretPos - 1);\n }\n self.updateOriginalInput({ silent: silent });\n self.refreshState();\n self.positionDropdown();\n self.trigger('item_remove', value, item);\n }\n /**\n * Invokes the `create` method provided in the\n * TomSelect 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 */\n createItem(input = null, callback = () => { }) {\n // triggerDropdown parameter @deprecated 2.1.1\n if (arguments.length === 3) {\n callback = arguments[2];\n }\n if (typeof callback != 'function') {\n callback = () => { };\n }\n var self = this;\n var caret = self.caretPos;\n var output;\n input = input || self.inputValue();\n if (!self.canCreate(input)) {\n callback();\n return false;\n }\n self.lock();\n var created = false;\n var create = (data) => {\n self.unlock();\n if (!data || typeof data !== 'object')\n return callback();\n var value = hash_key(data[self.settings.valueField]);\n if (typeof value !== 'string') {\n return callback();\n }\n self.setTextboxValue();\n self.addOption(data, true);\n self.setCaret(caret);\n self.addItem(value);\n callback(data);\n created = true;\n };\n if (typeof self.settings.create === 'function') {\n output = self.settings.create.call(this, input, create);\n }\n else {\n output = {\n [self.settings.labelField]: input,\n [self.settings.valueField]: input,\n };\n }\n if (!created) {\n create(output);\n }\n return true;\n }\n /**\n * Re-renders the selected item lists.\n */\n refreshItems() {\n var self = this;\n self.lastQuery = null;\n if (self.isSetup) {\n self.addItems(self.items);\n }\n self.updateOriginalInput();\n self.refreshState();\n }\n /**\n * Updates all state-dependent attributes\n * and CSS classes.\n */\n refreshState() {\n const self = this;\n self.refreshValidityState();\n const isFull = self.isFull();\n const isLocked = self.isLocked;\n self.wrapper.classList.toggle('rtl', self.rtl);\n const wrap_classList = self.wrapper.classList;\n wrap_classList.toggle('focus', self.isFocused);\n wrap_classList.toggle('disabled', self.isDisabled);\n wrap_classList.toggle('readonly', self.isReadOnly);\n wrap_classList.toggle('required', self.isRequired);\n wrap_classList.toggle('invalid', !self.isValid);\n wrap_classList.toggle('locked', isLocked);\n wrap_classList.toggle('full', isFull);\n wrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden);\n wrap_classList.toggle('dropdown-active', self.isOpen);\n wrap_classList.toggle('has-options', isEmptyObject(self.options));\n wrap_classList.toggle('has-items', self.items.length > 0);\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() {\n var self = this;\n if (!self.input.validity) {\n return;\n }\n self.isValid = self.input.validity.valid;\n self.isInvalid = !self.isValid;\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() {\n return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n }\n /**\n * Refreshes the original <select> or <input>\n * element to reflect the current state.\n *\n */\n updateOriginalInput(opts = {}) {\n const self = this;\n var option, label;\n const empty_option = self.input.querySelector('option[value=\"\"]');\n if (self.is_select_tag) {\n const selected = [];\n const has_selected = self.input.querySelectorAll('option:checked').length;\n function AddSelected(option_el, value, label) {\n if (!option_el) {\n option_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>');\n }\n // don't move empty option from top of list\n // fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n if (option_el != empty_option) {\n self.input.append(option_el);\n }\n selected.push(option_el);\n // marking empty option as selected can break validation\n // fixes https://github.com/orchidjs/tom-select/issues/303\n if (option_el != empty_option || has_selected > 0) {\n option_el.selected = true;\n }\n return option_el;\n }\n // unselect all selected options\n self.input.querySelectorAll('option:checked').forEach((option_el) => {\n option_el.selected = false;\n });\n // nothing selected?\n if (self.items.length == 0 && self.settings.mode == 'single') {\n AddSelected(empty_option, \"\", \"\");\n // order selected <option> tags for values in self.items\n }\n else {\n self.items.forEach((value) => {\n option = self.options[value];\n label = option[self.settings.labelField] || '';\n if (selected.includes(option.$option)) {\n const reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`);\n AddSelected(reuse_opt, value, label);\n }\n else {\n option.$option = AddSelected(option.$option, value, label);\n }\n });\n }\n }\n else {\n self.input.value = self.getValue();\n }\n if (self.isSetup) {\n if (!opts.silent) {\n self.trigger('change', self.getValue());\n }\n }\n }\n /**\n * Shows the autocomplete dropdown containing\n * the available options.\n */\n open() {\n var self = this;\n if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull()))\n return;\n self.isOpen = true;\n setAttr(self.focus_node, { 'aria-expanded': 'true' });\n self.refreshState();\n applyCSS(self.dropdown, { visibility: 'hidden', display: 'block' });\n self.positionDropdown();\n applyCSS(self.dropdown, { visibility: 'visible', display: 'block' });\n self.focus();\n self.trigger('dropdown_open', self.dropdown);\n }\n /**\n * Closes the autocomplete dropdown menu.\n */\n close(setTextboxValue = true) {\n var self = this;\n var trigger = self.isOpen;\n if (setTextboxValue) {\n // before blur() to prevent form onchange event\n self.setTextboxValue();\n if (self.settings.mode === 'single' && self.items.length) {\n self.inputState();\n }\n }\n self.isOpen = false;\n setAttr(self.focus_node, { 'aria-expanded': 'false' });\n applyCSS(self.dropdown, { display: 'none' });\n if (self.settings.hideSelected) {\n self.clearActiveOption();\n }\n self.refreshState();\n if (trigger)\n self.trigger('dropdown_close', self.dropdown);\n }\n /**\n * Calculates and applies the appropriate\n * position of the dropdown if dropdownParent = 'body'.\n * Otherwise, position is determined by css\n */\n positionDropdown() {\n if (this.settings.dropdownParent !== 'body') {\n return;\n }\n var context = this.control;\n var rect = context.getBoundingClientRect();\n var top = context.offsetHeight + rect.top + window.scrollY;\n var left = rect.left + window.scrollX;\n applyCSS(this.dropdown, {\n width: rect.width + 'px',\n top: top + 'px',\n left: left + 'px'\n });\n }\n /**\n * Resets / clears all selected items\n * from the control.\n *\n */\n clear(silent) {\n var self = this;\n if (!self.items.length)\n return;\n var items = self.controlChildren();\n iterate(items, (item) => {\n self.removeItem(item, true);\n });\n self.inputState();\n if (!silent)\n self.updateOriginalInput();\n self.trigger('clear');\n }\n /**\n * A helper method for inserting an element\n * at the current caret position.\n *\n */\n insertAtCaret(el) {\n const self = this;\n const caret = self.caretPos;\n const target = self.control;\n target.insertBefore(el, target.children[caret] || null);\n self.setCaret(caret + 1);\n }\n /**\n * Removes the current selected item(s).\n *\n */\n deleteSelection(e) {\n var direction, selection, caret, tail;\n var self = this;\n direction = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n selection = getSelection(self.control_input);\n // determine items that will be removed\n const rm_items = [];\n if (self.activeItems.length) {\n tail = getTail(self.activeItems, direction);\n caret = nodeIndex(tail);\n if (direction > 0) {\n caret++;\n }\n iterate(self.activeItems, (item) => rm_items.push(item));\n }\n else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n const items = self.controlChildren();\n let rm_item;\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\n rm_item = items[self.caretPos - 1];\n }\n else if (direction > 0 && selection.start === self.inputValue().length) {\n rm_item = items[self.caretPos];\n }\n if (rm_item !== undefined) {\n rm_items.push(rm_item);\n }\n }\n if (!self.shouldDelete(rm_items, e)) {\n return false;\n }\n preventDefault(e, true);\n // perform removal\n if (typeof caret !== 'undefined') {\n self.setCaret(caret);\n }\n while (rm_items.length) {\n self.removeItem(rm_items.pop());\n }\n self.inputState();\n self.positionDropdown();\n self.refreshOptions(false);\n return true;\n }\n /**\n * Return true if the items should be deleted\n */\n shouldDelete(items, evt) {\n const values = items.map(item => item.dataset.value);\n // allow the callback to abort\n if (!values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values, evt) === false)) {\n return false;\n }\n return true;\n }\n /**\n * Selects the previous / next item (depending on the `direction` argument).\n *\n * > 0 - right\n * < 0 - left\n *\n */\n advanceSelection(direction, e) {\n var last_active, adjacent, self = this;\n if (self.rtl)\n direction *= -1;\n if (self.inputValue().length)\n return;\n // add or remove to active items\n if (isKeyDown(constants.KEY_SHORTCUT, e) || isKeyDown('shiftKey', e)) {\n last_active = self.getLastActive(direction);\n if (last_active) {\n if (!last_active.classList.contains('active')) {\n adjacent = last_active;\n }\n else {\n adjacent = self.getAdjacent(last_active, direction, 'item');\n }\n // if no active item, get items adjacent to the control input\n }\n else if (direction > 0) {\n adjacent = self.control_input.nextElementSibling;\n }\n else {\n adjacent = self.control_input.previousElementSibling;\n }\n if (adjacent) {\n if (adjacent.classList.contains('active')) {\n self.removeActiveItem(last_active);\n }\n self.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n }\n // move caret to the left or right\n }\n else {\n self.moveCaret(direction);\n }\n }\n moveCaret(direction) { }\n /**\n * Get the last active item\n *\n */\n getLastActive(direction) {\n let last_active = this.control.querySelector('.last-active');\n if (last_active) {\n return last_active;\n }\n var result = this.control.querySelectorAll('.active');\n if (result) {\n return getTail(result, direction);\n }\n }\n /**\n * Moves the caret to the specified index.\n *\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 *\n */\n setCaret(new_pos) {\n this.caretPos = this.items.length;\n }\n /**\n * Return list of item dom elements\n *\n */\n controlChildren() {\n return Array.from(this.control.querySelectorAll('[data-ts-item]'));\n }\n /**\n * Disables user input on the control. Used while\n * items are being asynchronously created.\n */\n lock() {\n this.setLocked(true);\n }\n /**\n * Re-enables user input on the control.\n */\n unlock() {\n this.setLocked(false);\n }\n /**\n * Disable or enable user input on the control\n */\n setLocked(lock = this.isReadOnly || this.isDisabled) {\n this.isLocked = lock;\n this.refreshState();\n }\n /**\n * Disables user input on the control completely.\n * While disabled, it cannot receive focus.\n */\n disable() {\n this.setDisabled(true);\n this.close();\n }\n /**\n * Enables the control so that it can respond\n * to focus and user input.\n */\n enable() {\n this.setDisabled(false);\n }\n setDisabled(disabled) {\n this.focus_node.tabIndex = disabled ? -1 : this.tabIndex;\n this.isDisabled = disabled;\n this.input.disabled = disabled;\n this.control_input.disabled = disabled;\n this.setLocked();\n }\n setReadOnly(isReadOnly) {\n this.isReadOnly = isReadOnly;\n this.input.readOnly = isReadOnly;\n this.control_input.readOnly = isReadOnly;\n this.setLocked();\n }\n /**\n * Completely destroys the control and\n * unbinds all event listeners so that it can\n * be garbage collected.\n */\n destroy() {\n var self = this;\n var revertSettings = self.revertSettings;\n self.trigger('destroy');\n self.off();\n self.wrapper.remove();\n self.dropdown.remove();\n self.input.innerHTML = revertSettings.innerHTML;\n self.input.tabIndex = revertSettings.tabIndex;\n removeClasses(self.input, 'tomselected', 'ts-hidden-accessible');\n self._destroy();\n delete self.input.tomselect;\n }\n /**\n * A helper method for rendering \"item\" and\n * \"option\" templates, given the data.\n *\n */\n render(templateName, data) {\n var id, html;\n const self = this;\n if (typeof this.settings.render[templateName] !== 'function') {\n return null;\n }\n // render markup\n html = self.settings.render[templateName].call(this, data, escape_html);\n if (!html) {\n return null;\n }\n html = getDom(html);\n // add mandatory attributes\n if (templateName === 'option' || templateName === 'option_create') {\n if (data[self.settings.disabledField]) {\n setAttr(html, { 'aria-disabled': 'true' });\n }\n else {\n setAttr(html, { 'data-selectable': '' });\n }\n }\n else if (templateName === 'optgroup') {\n id = data.group[self.settings.optgroupValueField];\n setAttr(html, { 'data-group': id });\n if (data.group[self.settings.disabledField]) {\n setAttr(html, { 'data-disabled': '' });\n }\n }\n if (templateName === 'option' || templateName === 'item') {\n const value = get_hash(data[self.settings.valueField]);\n setAttr(html, { 'data-value': value });\n // make sure we have some classes if a template is overwritten\n if (templateName === 'item') {\n addClasses(html, self.settings.itemClass);\n setAttr(html, { 'data-ts-item': '' });\n }\n else {\n addClasses(html, self.settings.optionClass);\n setAttr(html, {\n role: 'option',\n id: data.$id\n });\n // update cache\n data.$div = html;\n self.options[value] = data;\n }\n }\n return html;\n }\n /**\n * Type guarded rendering\n *\n */\n _render(templateName, data) {\n const html = this.render(templateName, data);\n if (html == null) {\n throw 'HTMLElement expected';\n }\n return html;\n }\n /**\n * Clears the render cache for a template. If\n * no template is given, clears all render\n * caches.\n *\n */\n clearCache() {\n iterate(this.options, (option) => {\n if (option.$div) {\n option.$div.remove();\n delete option.$div;\n }\n });\n }\n /**\n * Removes a value from item and option caches\n *\n */\n uncacheValue(value) {\n const option_el = this.getOption(value);\n if (option_el)\n option_el.remove();\n }\n /**\n * Determines whether or not to display the\n * create item prompt, given a user input.\n *\n */\n canCreate(input) {\n return this.settings.create && (input.length > 0) && this.settings.createFilter.call(this, input);\n }\n /**\n * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n *\n * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n *\n * });\n */\n hook(when, method, new_fn) {\n var self = this;\n var orig_method = self[method];\n self[method] = function () {\n var result, result_new;\n if (when === 'after') {\n result = orig_method.apply(self, arguments);\n }\n result_new = new_fn.apply(self, arguments);\n if (when === 'instead') {\n return result_new;\n }\n if (when === 'before') {\n result = orig_method.apply(self, arguments);\n }\n return result;\n };\n }\n}\n;\n//# sourceMappingURL=tom-select.js.map","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n\n/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin () {\n addEvent(this.input, 'change', () => {\n this.sync();\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\nconst hash_key = value => {\n if (typeof value === 'undefined' || value === null) return null;\n return get_hash(value);\n};\nconst get_hash = value => {\n if (typeof value === 'boolean') return value ? '1' : '0';\n return value + '';\n};\n\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Plugin: \"checkbox_options\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin (userOptions) {\n var self = this;\n var orig_onOptionSelect = self.onOptionSelect;\n self.settings.hideSelected = false;\n const cbOptions = Object.assign({\n // so that the user may add different ones as well\n className: \"tomselect-checkbox\",\n // the following default to the historic plugin's values\n checkedClassNames: undefined,\n uncheckedClassNames: undefined\n }, userOptions);\n var UpdateChecked = function UpdateChecked(checkbox, toCheck) {\n if (toCheck) {\n checkbox.checked = true;\n if (cbOptions.uncheckedClassNames) {\n checkbox.classList.remove(...cbOptions.uncheckedClassNames);\n }\n if (cbOptions.checkedClassNames) {\n checkbox.classList.add(...cbOptions.checkedClassNames);\n }\n } else {\n checkbox.checked = false;\n if (cbOptions.checkedClassNames) {\n checkbox.classList.remove(...cbOptions.checkedClassNames);\n }\n if (cbOptions.uncheckedClassNames) {\n checkbox.classList.add(...cbOptions.uncheckedClassNames);\n }\n }\n };\n\n // update the checkbox for an option\n var UpdateCheckbox = function UpdateCheckbox(option) {\n setTimeout(() => {\n var checkbox = option.querySelector('input.' + cbOptions.className);\n if (checkbox instanceof HTMLInputElement) {\n UpdateChecked(checkbox, option.classList.contains('selected'));\n }\n }, 1);\n };\n\n // add checkbox to option template\n self.hook('after', 'setupTemplates', () => {\n var orig_render_option = self.settings.render.option;\n self.settings.render.option = (data, escape_html) => {\n var rendered = getDom(orig_render_option.call(self, data, escape_html));\n var checkbox = document.createElement('input');\n if (cbOptions.className) {\n checkbox.classList.add(cbOptions.className);\n }\n checkbox.addEventListener('click', function (evt) {\n preventDefault(evt);\n });\n checkbox.type = 'checkbox';\n const hashed = hash_key(data[self.settings.valueField]);\n UpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1));\n rendered.prepend(checkbox);\n return rendered;\n };\n });\n\n // uncheck when item removed\n self.on('item_remove', value => {\n var option = self.getOption(value);\n if (option) {\n // if dropdown hasn't been opened yet, the option won't exist\n option.classList.remove('selected'); // selected class won't be removed yet\n UpdateCheckbox(option);\n }\n });\n\n // check when item added\n self.on('item_add', value => {\n var option = self.getOption(value);\n if (option) {\n // if dropdown hasn't been opened yet, the option won't exist\n UpdateCheckbox(option);\n }\n });\n\n // remove items when selected option is clicked\n self.hook('instead', 'onOptionSelect', (evt, option) => {\n if (option.classList.contains('selected')) {\n option.classList.remove('selected');\n self.removeItem(option.dataset.value);\n self.refreshOptions();\n preventDefault(evt, true);\n return;\n }\n orig_onOptionSelect.call(self, evt, option);\n UpdateCheckbox(option);\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin (userOptions) {\n const self = this;\n const options = Object.assign({\n className: 'clear-button',\n title: 'Clear All',\n html: data => {\n return `<div class=\"${data.className}\" title=\"${data.title}\">⨯</div>`;\n }\n }, userOptions);\n self.on('initialize', () => {\n var button = getDom(options.html(options));\n button.addEventListener('click', evt => {\n if (self.isLocked) return;\n self.clear();\n if (self.settings.mode === 'single' && self.settings.allowEmptyOption) {\n self.addItem('');\n }\n evt.preventDefault();\n evt.stopPropagation();\n });\n self.control.appendChild(button);\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Set attributes of an element\n *\n */\nconst setAttr = (el, attrs) => {\n iterate(attrs, (val, attr) => {\n if (val == null) {\n el.removeAttribute(attr);\n } else {\n el.setAttribute(attr, '' + val);\n }\n });\n};\n\n/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) 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 */\n\nconst insertAfter = (referenceNode, newNode) => {\n var _referenceNode$parent;\n (_referenceNode$parent = referenceNode.parentNode) == null || _referenceNode$parent.insertBefore(newNode, referenceNode.nextSibling);\n};\nconst insertBefore = (referenceNode, newNode) => {\n var _referenceNode$parent2;\n (_referenceNode$parent2 = referenceNode.parentNode) == null || _referenceNode$parent2.insertBefore(newNode, referenceNode);\n};\nconst isBefore = (referenceNode, newNode) => {\n do {\n var _newNode;\n newNode = (_newNode = newNode) == null ? void 0 : _newNode.previousElementSibling;\n if (referenceNode == newNode) {\n return true;\n }\n } while (newNode && newNode.previousElementSibling);\n return false;\n};\nfunction plugin () {\n var self = this;\n if (self.settings.mode !== 'multi') return;\n var orig_lock = self.lock;\n var orig_unlock = self.unlock;\n let sortable = true;\n let drag_item;\n\n /**\n * Add draggable attribute to item\n */\n self.hook('after', 'setupTemplates', () => {\n var orig_render_item = self.settings.render.item;\n self.settings.render.item = (data, escape) => {\n const item = getDom(orig_render_item.call(self, data, escape));\n setAttr(item, {\n 'draggable': 'true'\n });\n\n // prevent doc_mousedown (see tom-select.ts)\n const mousedown = evt => {\n if (!sortable) preventDefault(evt);\n evt.stopPropagation();\n };\n const dragStart = evt => {\n drag_item = item;\n setTimeout(() => {\n item.classList.add('ts-dragging');\n }, 0);\n };\n const dragOver = evt => {\n evt.preventDefault();\n item.classList.add('ts-drag-over');\n moveitem(item, drag_item);\n };\n const dragLeave = () => {\n item.classList.remove('ts-drag-over');\n };\n const moveitem = (targetitem, dragitem) => {\n if (dragitem === undefined) return;\n if (isBefore(dragitem, item)) {\n insertAfter(targetitem, dragitem);\n } else {\n insertBefore(targetitem, dragitem);\n }\n };\n const dragend = () => {\n var _drag_item;\n document.querySelectorAll('.ts-drag-over').forEach(el => el.classList.remove('ts-drag-over'));\n (_drag_item = drag_item) == null || _drag_item.classList.remove('ts-dragging');\n drag_item = undefined;\n var values = [];\n self.control.querySelectorAll(`[data-value]`).forEach(el => {\n if (el.dataset.value) {\n let value = el.dataset.value;\n if (value) {\n values.push(value);\n }\n }\n });\n self.setValue(values);\n };\n addEvent(item, 'mousedown', mousedown);\n addEvent(item, 'dragstart', dragStart);\n addEvent(item, 'dragenter', dragOver);\n addEvent(item, 'dragover', dragOver);\n addEvent(item, 'dragleave', dragLeave);\n addEvent(item, 'dragend', dragend);\n return item;\n };\n });\n self.hook('instead', 'lock', () => {\n sortable = false;\n return orig_lock.call(self);\n });\n self.hook('instead', 'unlock', () => {\n sortable = true;\n return orig_unlock.call(self);\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin (userOptions) {\n const self = this;\n const options = Object.assign({\n title: 'Untitled',\n headerClass: 'dropdown-header',\n titleRowClass: 'dropdown-header-title',\n labelClass: 'dropdown-header-label',\n closeClass: 'dropdown-header-close',\n html: data => {\n return '<div class=\"' + data.headerClass + '\">' + '<div class=\"' + data.titleRowClass + '\">' + '<span class=\"' + data.labelClass + '\">' + data.title + '</span>' + '<a class=\"' + data.closeClass + '\">×</a>' + '</div>' + '</div>';\n }\n }, userOptions);\n self.on('initialize', () => {\n var header = getDom(options.html(options));\n var close_link = header.querySelector('.' + options.closeClass);\n if (close_link) {\n close_link.addEventListener('click', evt => {\n preventDefault(evt, true);\n self.close();\n });\n }\n self.dropdown.insertBefore(header, self.dropdown.firstChild);\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\n\n/**\n * Remove css classes\n *\n */\nconst removeClasses = (elmts, ...classes) => {\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.remove(cls);\n });\n });\n};\n\n/**\n * Return arguments\n *\n */\nconst classesArray = args => {\n var classes = [];\n iterate(args, _classes => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n};\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nconst castAsArray = arg => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n};\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nconst nodeIndex = (el, amongst) => {\n if (!el) return -1;\n amongst = amongst || el.nodeName;\n var i = 0;\n while (el = el.previousElementSibling) {\n if (el.matches(amongst)) {\n i++;\n }\n }\n return i;\n};\n\n/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin () {\n var self = this;\n\n /**\n * Moves the caret to the specified index.\n *\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 *\n */\n self.hook('instead', 'setCaret', new_pos => {\n if (self.settings.mode === 'single' || !self.control.contains(self.control_input)) {\n new_pos = self.items.length;\n } else {\n new_pos = Math.max(0, Math.min(self.items.length, new_pos));\n if (new_pos != self.caretPos && !self.isPending) {\n self.controlChildren().forEach((child, j) => {\n if (j < new_pos) {\n self.control_input.insertAdjacentElement('beforebegin', child);\n } else {\n self.control.appendChild(child);\n }\n });\n }\n }\n self.caretPos = new_pos;\n });\n self.hook('instead', 'moveCaret', direction => {\n if (!self.isFocused) return;\n\n // move caret before or after selected items\n const last_active = self.getLastActive(direction);\n if (last_active) {\n const idx = nodeIndex(last_active);\n self.setCaret(direction > 0 ? idx + 1 : idx);\n self.setActiveItem();\n removeClasses(last_active, 'last-active');\n\n // move caret left or right of current position\n } else {\n self.setCaret(self.caretPos + direction);\n }\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\nconst KEY_ESC = 27;\nconst KEY_TAB = 9;\n // ctrl key or apple key for ma\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 */\n\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Add css classes\n *\n */\nconst addClasses = (elmts, ...classes) => {\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.add(cls);\n });\n });\n};\n\n/**\n * Return arguments\n *\n */\nconst classesArray = args => {\n var classes = [];\n iterate(args, _classes => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n};\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nconst castAsArray = arg => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n};\n\n/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin () {\n const self = this;\n self.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n self.hook('before', 'setup', () => {\n self.focus_node = self.control;\n addClasses(self.control_input, 'dropdown-input');\n const div = getDom('<div class=\"dropdown-input-wrap\">');\n div.append(self.control_input);\n self.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n // set a placeholder in the select control\n const placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />');\n placeholder.placeholder = self.settings.placeholder || '';\n self.control.append(placeholder);\n });\n self.on('initialize', () => {\n // set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n self.control_input.addEventListener('keydown', evt => {\n //addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n switch (evt.keyCode) {\n case KEY_ESC:\n if (self.isOpen) {\n preventDefault(evt, true);\n self.close();\n }\n self.clearActiveItems();\n return;\n case KEY_TAB:\n self.focus_node.tabIndex = -1;\n break;\n }\n return self.onKeyDown.call(self, evt);\n });\n self.on('blur', () => {\n self.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n });\n\n // give the control_input focus when the dropdown is open\n self.on('dropdown_open', () => {\n self.control_input.focus();\n });\n\n // prevent onBlur from closing when focus is on the control_input\n const orig_onBlur = self.onBlur;\n self.hook('instead', 'onBlur', evt => {\n if (evt && evt.relatedTarget == self.control_input) return;\n return orig_onBlur.call(self);\n });\n addEvent(self.control_input, 'blur', () => self.onBlur());\n\n // return focus to control to allow further keyboard input\n self.hook('before', 'close', () => {\n if (!self.isOpen) return;\n self.focus_node.focus({\n preventScroll: true\n });\n });\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n\n/**\n * Plugin: \"input_autogrow\" (Tom Select)\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 */\n\nfunction plugin () {\n var self = this;\n self.on('initialize', () => {\n var test_input = document.createElement('span');\n var control = self.control_input;\n test_input.style.cssText = 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n self.wrapper.appendChild(test_input);\n var transfer_styles = ['letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform'];\n for (const style_name of transfer_styles) {\n // @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n test_input.style[style_name] = control.style[style_name];\n }\n\n /**\n * Set the control width\n *\n */\n var resize = () => {\n test_input.textContent = control.value;\n control.style.width = test_input.clientWidth + 'px';\n };\n resize();\n self.on('update item_add item_remove', resize);\n addEvent(control, 'input', resize);\n addEvent(control, 'keyup', resize);\n addEvent(control, 'blur', resize);\n addEvent(control, 'update', resize);\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\n/**\n * Plugin: \"input_autogrow\" (Tom Select)\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 */\n\nfunction plugin () {\n var self = this;\n var orig_deleteSelection = self.deleteSelection;\n this.hook('instead', 'deleteSelection', evt => {\n if (self.activeItems.length) {\n return orig_deleteSelection.call(self, evt);\n }\n return false;\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\n/**\n * Plugin: \"no_active_items\" (Tom Select)\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 */\n\nfunction plugin () {\n this.hook('instead', 'setActiveItem', () => {});\n this.hook('instead', 'selectAll', () => {});\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\nconst KEY_LEFT = 37;\nconst KEY_RIGHT = 39;\n // ctrl key or apple key for ma\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nconst parentMatch = (target, selector, wrapper) => {\n while (target && target.matches) {\n if (target.matches(selector)) {\n return target;\n }\n target = target.parentNode;\n }\n};\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nconst nodeIndex = (el, amongst) => {\n if (!el) return -1;\n amongst = amongst || el.nodeName;\n var i = 0;\n while (el = el.previousElementSibling) {\n if (el.matches(amongst)) {\n i++;\n }\n }\n return i;\n};\n\n/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) 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 */\n\nfunction plugin () {\n var self = this;\n var orig_keydown = self.onKeyDown;\n self.hook('instead', 'onKeyDown', evt => {\n var index, option, options, optgroup;\n if (!self.isOpen || !(evt.keyCode === KEY_LEFT || evt.keyCode === KEY_RIGHT)) {\n return orig_keydown.call(self, evt);\n }\n self.ignoreHover = true;\n optgroup = parentMatch(self.activeOption, '[data-group]');\n index = nodeIndex(self.activeOption, '[data-selectable]');\n if (!optgroup) {\n return;\n }\n if (evt.keyCode === KEY_LEFT) {\n optgroup = optgroup.previousSibling;\n } else {\n optgroup = optgroup.nextSibling;\n }\n if (!optgroup) {\n return;\n }\n options = optgroup.querySelectorAll('[data-selectable]');\n option = options[Math.min(options.length - 1, index)];\n if (option) {\n self.setActiveOption(option);\n }\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nconst escape_html = str => {\n return (str + '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n};\n\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\n\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nconst isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\n\n/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin (userOptions) {\n const options = Object.assign({\n label: '×',\n title: 'Remove',\n className: 'remove',\n append: true\n }, userOptions);\n\n //options.className = 'remove-single';\n var self = this;\n\n // override the render method to add remove button to each item\n if (!options.append) {\n return;\n }\n var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n self.hook('after', 'setupTemplates', () => {\n var orig_render_item = self.settings.render.item;\n self.settings.render.item = (data, escape) => {\n var item = getDom(orig_render_item.call(self, data, escape));\n var close_button = getDom(html);\n item.appendChild(close_button);\n addEvent(close_button, 'mousedown', evt => {\n preventDefault(evt, true);\n });\n addEvent(close_button, 'click', evt => {\n if (self.isLocked) return;\n\n // propagating will trigger the dropdown to show for single mode\n preventDefault(evt, true);\n if (self.isLocked) return;\n if (!self.shouldDelete([item], evt)) return;\n self.removeItem(item);\n self.refreshOptions(false);\n self.inputState();\n });\n return item;\n };\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\n/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin (userOptions) {\n const self = this;\n const options = Object.assign({\n text: option => {\n return option[self.settings.labelField];\n }\n }, userOptions);\n self.on('item_remove', function (value) {\n if (!self.isFocused) {\n return;\n }\n if (self.control_input.value.trim() === '') {\n var option = self.options[value];\n if (option) {\n self.setTextboxValue(options.text.call(self, option));\n }\n }\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","/**\n* Tom Select v2.4.2\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\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 */\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\n\n/**\n * Add css classes\n *\n */\nconst addClasses = (elmts, ...classes) => {\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.add(cls);\n });\n });\n};\n\n/**\n * Return arguments\n *\n */\nconst classesArray = args => {\n var classes = [];\n iterate(args, _classes => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n};\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nconst castAsArray = arg => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n};\n\n/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) 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 */\n\nfunction plugin () {\n const self = this;\n const orig_canLoad = self.canLoad;\n const orig_clearActiveOption = self.clearActiveOption;\n const orig_loadCallback = self.loadCallback;\n var pagination = {};\n var dropdown_content;\n var loading_more = false;\n var load_more_opt;\n var default_values = [];\n if (!self.settings.shouldLoadMore) {\n // return true if additional results should be loaded\n self.settings.shouldLoadMore = () => {\n const scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n if (scroll_percent > 0.9) {\n return true;\n }\n if (self.activeOption) {\n var selectable = self.selectable();\n var index = Array.from(selectable).indexOf(self.activeOption);\n if (index >= selectable.length - 2) {\n return true;\n }\n }\n return false;\n };\n }\n if (!self.settings.firstUrl) {\n throw 'virtual_scroll plugin requires a firstUrl() method';\n }\n\n // in order for virtual scrolling to work,\n // options need to be ordered the same way they're returned from the remote data source\n self.settings.sortField = [{\n field: '$order'\n }, {\n field: '$score'\n }];\n\n // can we load more results for given query?\n const canLoadMore = query => {\n if (typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions) {\n return false;\n }\n if (query in pagination && pagination[query]) {\n return true;\n }\n return false;\n };\n const clearFilter = (option, value) => {\n if (self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0) {\n return true;\n }\n return false;\n };\n\n // set the next url that will be\n self.setNextUrl = (value, next_url) => {\n pagination[value] = next_url;\n };\n\n // getUrl() to be used in settings.load()\n self.getUrl = query => {\n if (query in pagination) {\n const next_url = pagination[query];\n pagination[query] = false;\n return next_url;\n }\n\n // if the user goes back to a previous query\n // we need to load the first page again\n self.clearPagination();\n return self.settings.firstUrl.call(self, query);\n };\n\n // clear pagination\n self.clearPagination = () => {\n pagination = {};\n };\n\n // don't clear the active option (and cause unwanted dropdown scroll)\n // while loading more results\n self.hook('instead', 'clearActiveOption', () => {\n if (loading_more) {\n return;\n }\n return orig_clearActiveOption.call(self);\n });\n\n // override the canLoad method\n self.hook('instead', 'canLoad', query => {\n // first time the query has been seen\n if (!(query in pagination)) {\n return orig_canLoad.call(self, query);\n }\n return canLoadMore(query);\n });\n\n // wrap the load\n self.hook('instead', 'loadCallback', (options, optgroups) => {\n if (!loading_more) {\n self.clearOptions(clearFilter);\n } else if (load_more_opt) {\n const first_option = options[0];\n if (first_option !== undefined) {\n load_more_opt.dataset.value = first_option[self.settings.valueField];\n }\n }\n orig_loadCallback.call(self, options, optgroups);\n loading_more = false;\n });\n\n // add templates to dropdown\n //\tloading_more if we have another url in the queue\n //\tno_more_results if we don't have another url in the queue\n self.hook('after', 'refreshOptions', () => {\n const query = self.lastValue;\n var option;\n if (canLoadMore(query)) {\n option = self.render('loading_more', {\n query: query\n });\n if (option) {\n option.setAttribute('data-selectable', ''); // so that navigating dropdown with [down] keypresses can navigate to this node\n load_more_opt = option;\n }\n } else if (query in pagination && !dropdown_content.querySelector('.no-results')) {\n option = self.render('no_more_results', {\n query: query\n });\n }\n if (option) {\n addClasses(option, self.settings.optionClass);\n dropdown_content.append(option);\n }\n });\n\n // add scroll listener and default templates\n self.on('initialize', () => {\n default_values = Object.keys(self.options);\n dropdown_content = self.dropdown_content;\n\n // default templates\n self.settings.render = Object.assign({}, {\n loading_more: () => {\n return `<div class=\"loading-more-results\">Loading more results ... </div>`;\n },\n no_more_results: () => {\n return `<div class=\"no-more-results\">No more results</div>`;\n }\n }, self.settings.render);\n\n // watch dropdown content scroll position\n dropdown_content.addEventListener('scroll', () => {\n if (!self.settings.shouldLoadMore.call(self)) {\n return;\n }\n\n // !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n if (!canLoadMore(self.lastValue)) {\n return;\n }\n\n // don't call load() too much\n if (loading_more) return;\n loading_more = true;\n self.load.call(self, self.lastValue);\n });\n });\n}\n\nexport { plugin as default };\n//# sourceMappingURL=plugin.js.map\n","import TomSelect from \"./tom-select.js\";\nimport change_listener from \"./plugins/change_listener/plugin.js\";\nimport checkbox_options from \"./plugins/checkbox_options/plugin.js\";\nimport clear_button from \"./plugins/clear_button/plugin.js\";\nimport drag_drop from \"./plugins/drag_drop/plugin.js\";\nimport dropdown_header from \"./plugins/dropdown_header/plugin.js\";\nimport caret_position from \"./plugins/caret_position/plugin.js\";\nimport dropdown_input from \"./plugins/dropdown_input/plugin.js\";\nimport input_autogrow from \"./plugins/input_autogrow/plugin.js\";\nimport no_backspace_delete from \"./plugins/no_backspace_delete/plugin.js\";\nimport no_active_items from \"./plugins/no_active_items/plugin.js\";\nimport optgroup_columns from \"./plugins/optgroup_columns/plugin.js\";\nimport remove_button from \"./plugins/remove_button/plugin.js\";\nimport restore_on_backspace from \"./plugins/restore_on_backspace/plugin.js\";\nimport virtual_scroll from \"./plugins/virtual_scroll/plugin.js\";\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\nexport default TomSelect;\n//# sourceMappingURL=tom-select.complete.js.map","import { Controller } from \"@hotwired/stimulus\"\nimport TomSelect from \"tom-select\"\n\n// Connects to data-controller=\"tom-select\"\nexport default class extends Controller {\n static values = {\n create: { type: Boolean, default: false },\n }\n\n connect() {\n this.select = new TomSelect(this.element, this.options)\n }\n\n disconnect() {\n this.destroy()\n }\n\n clear() {\n this.select.clear()\n }\n\n destroy() {\n this.select.destroy()\n }\n\n get options() {\n return {\n create: this.createValue,\n createOnBlur: this.createValue,\n }\n }\n}\n","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","// src/index.ts\nvar CONTROLLER_FILENAME_REGEX = /^(?:.*?(?:controllers|components)\\/|\\.?\\.\\/)?(.+)(?:[/_-]controller\\..+?)$/;\nfunction registerControllers(application, controllerModules) {\n application.load(definitionsFromGlob(controllerModules));\n}\nfunction definitionsFromGlob(controllerModules) {\n return Object.entries(controllerModules).map(definitionFromEntry).filter((value) => value);\n}\nfunction definitionFromEntry([name, controllerModule]) {\n var _a;\n const identifier = identifierForGlobKey(name);\n const controllerConstructor = (_a = controllerModule.default) != null ? _a : controllerModule;\n if (identifier && typeof controllerConstructor === \"function\")\n return { identifier, controllerConstructor };\n}\nfunction identifierForGlobKey(key) {\n const logicalName = (key.match(CONTROLLER_FILENAME_REGEX) || [])[1];\n if (logicalName)\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n}\nexport {\n CONTROLLER_FILENAME_REGEX,\n definitionsFromGlob,\n identifierForGlobKey,\n registerControllers\n};\n","import { application } from \"./application.js\"\n\nimport { registerControllers } from \"stimulus-vite-helpers\"\nconst controllers = import.meta.glob(\"./**/*_controller.js\", { eager: true })\n\nregisterControllers(application, controllers)\n"],"file":"assets/application-Bm4llRFX.js"}