{"version":3,"mappings":"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","names":["EventListener","eventTarget","eventName","eventOptions","binding","event","extendedEvent","extendEvent","left","right","leftIndex","rightIndex","stopImmediatePropagation","Dispatcher","application","eventListener","listeners","map","clearEventListeners","error","message","detail","eventListenerMap","cacheKey","parts","key","defaultActionDescriptorFilters","value","element","descriptorPattern","parseActionDescriptorString","descriptorString","matches","keyFilter","parseEventTarget","parseEventOptions","eventTargetName","options","token","stringifyEventTarget","camelize","_","char","namespaceCamelize","capitalize","dasherize","tokenize","isSomething","object","hasProperty","property","allModifiers","Action","index","descriptor","schema","getDefaultEventNameForElement","eventFilter","filters","standardFilter","params","pattern","name","match","typecast","meta","ctrl","alt","shift","modifier","defaultEventNames","e","tagName","Binding","context","action","actionEvent","method","actionDescriptorFilters","controller","passes","filter","target","currentTarget","identifier","ElementObserver","delegate","mutations","callback","mutation","attributeName","nodes","node","tree","processor","AttributeObserver","add","fetch","del","prune","values","Multimap","set","size","_key","_values","SelectorObserver","selector","details","selectors","_attributeName","matchedBefore","StringMapObserver","oldValue","attribute","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","tokenString","parseTokenString","content","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","defaultValue","writer","rawValue","rawOldValue","changedMethodName","changedMethod","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","_a","readInheritableStaticArrayValues","constructor","propertyName","ancestors","getAncestorsForConstructor","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","definition","OutletObserver","outletName","observer","_selector","outlet","hasOutlet","hasOutletController","_element","selectorObserver","attributeObserver","dependencies","module","identifiers","Context","scope","functionName","methodName","args","bless","shadow","getBlessedProperties","properties","shadowConstructor","extend","shadowProperties","getShadowProperties","blessedProperties","blessing","prototype","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","extendWithReflect","extended","testReflectExtension","b","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","c","n","array","memo","k","v","Application","domReady","controllerConstructor","head","rest","resolve","ClassPropertiesBlessing","classDefinition","propertiesForClassDefinition","classes","OutletPropertiesBlessing","outletDefinition","propertiesForOutletDefinition","getOutletController","getControllerAndEnsureConnectedScope","outletController","camelizedName","outletElement","TargetPropertiesBlessing","targetDefinition","propertiesForTargetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","propertiesForValueDefinitionPair","read","write","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","payload","typeObject","hasType","hasDefault","fullObject","onlyType","onlyDefault","typeFromObject","typeFromDefaultValue","propertyPath","parseValueTypeDefinition","typeFromConstant","type","defaultValueForDefinition","defaultValuesByType","constantFromType","readers","writers","writeString","writeJSON","Controller","_identifier","_application","prefix","bubbles","cancelable","FetchResponse$1","response","RequestInterceptor","interceptor","getCookie","cookies","cookie","compact","metaContent","stringEntriesFromFormData","formData","entries","mergeEntries","searchParams","FetchRequest$1","url","requestInterceptor","FetchResponse","headers","baseHeaders","originalQuery","requestQuery","query","bodyIsAString","get","FetchRequest","post","put","authentication_method_toggle_controller","field","__publicField","DebounceController","defaultWait$1","debounce","fn","wait","timeoutId","arg","useDebounce","composableController","func","ThrottleController","alpineNames","defaultOptions","useTransition","_b","_c","targetFromAttribute","targetElement","dataset","leaveAfter","transitioned","hiddenClass","preserveOriginalClass","removeToClasses","controllerEnter","controllerLeave","controllerToggleTransition","enter","enterFromClasses","getAttribute","enterActiveClasses","enterToClasses","leaveToClasses","removeClasses","transition","leave","leaveFromClasses","leaveActiveClasses","toggleTransition","initialClasses","activeClasses","endClasses","removeEndClasses","stashedClasses","cls","addClasses","nextAnimationFrame","afterTransition","initialState","datasetName","datasetAlpineName","isEmpty","duration","str","directive_availability_controller","taken","upKey","downKey","enterKey","navigationKeys","marketplace_search_controller","html","marketplace_search_results_controller","i","nested_parameter_form_controller","wrapper","user_connection_controller","performRequest","spinner","endpoint","_shouldRestore","shouldRestore_get","_isFirstHistoryEntry","isFirstHistoryEntry_get","back_controller","__privateAdd","__privateGet","clipboard_controller","DELIMITER","pluck","expression","delimiter","keys","item","dirty_pluck_controller","input","plucked","filter_controller","hello_controller","modal_toggle_controller","primary_controller","checkbox","Gt","Zt","r","t","P","gt","Jt","Qt","te","ee","o","ot","ft","lt","ht","ut","$t","ie","Lt","st","pt","se","s","a","l","h","g","ne","It","_t","Dt","zt","re","Wt","qt","ae","wt","oe","dt","le","u","he","ue","ce","E","de","Mt","G","mt","ge","Nt","pe","_e","me","ve","Bt","fe","Ft","we","ye","Ve","kt","vt","rt","yt","Vt","be","Pe","Ee","p","bt","Pt","at","Et","Re","xe","Ae","Te","Rt","xt","Se","Ce","Le","At","it","Ie","Ot","Z","Me","Ne","Be","Fe","ke","f","V","B","M","x","I","O","S","z","D","U","Y","X","et","$","d","m","j","w","T","C","H","R","Q","tt","A","L","Oe","ze","De","$e","We","qe","Tt","He","Ht","Ut","Ue","Ye","Xe","je","Ke","Ge","Yt","nt","Xt","jt","Kt","J","Ze","N","K","y","W","Ct","ct","St","q","F","Je","Qe","ti","ei","ii","ri","si","positioning_controller","container","items","slot","createSwapy","id","reveal_controller","dropdown_controller","shouldHide","hidden","mobile_menu_toggle_controller","linkClickSelector","buttonClickSelector","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","metaTag","cspNonce","EXPANDO","getData","setData","isContentEditable","isEditable","csrfToken","csrfParam","CSRFProtection","xhr","refreshCSRFTokens","param","AcceptHeaders","ajax","prepareOptions","createXHR","processResponse","done","script","parser","href","isCrossDomain","originAnchor","urlAnchor","preventDefault","CustomEvent","evt","fire","obj","data","stopEverything","eventType","handler","toArray","serializeElement","additionalParam","inputs","option","formElements","form","el","handleConfirmWithRails","rails","allowAction","confirm","answer","handleDisabledElement","enableElement","isXhrRedirect","enableLinkElement","enableFormElement","enableFormElements","disableElement","disableLinkElement","disableFormElement","disableFormElements","replacement","originalText","handleMethodWithRails","link","csrfToken$1","csrfParam$1","formContent","isRemote","handleRemoteWithRails","withCredentials","dataType","button","formSubmitButtonClick","preventInsignificantClick","insignificantMetaClick","Rails","handleConfirm","handleMethod","handleRemote","start","originalOptions","remote_request_button_controller","UP","DOWN","ENTER","NAVIGATORS","search_controller","decodedResponse","clone","top","bottom","auto","basePlacements","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","state","style","attributes","effect","_ref2","initialStyles","styleProperties","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","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","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","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","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","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","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_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$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","visited","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","tooltip_controller","slideshow_controller","smooth_scroll_controller","modal_controller","submitter","validateSubmitter","raise","errorConstructor","submittersByForm","findSubmitterFromClickTarget","candidate","clickCaptured","prototypeOfSubmitEvent","FrameLoadingStyle","_FrameElement","frameLoadingStyleFromString","FrameElement","expandURL","locatable","getAnchor","anchorMatch","getAction$1","getExtension","getLastPathComponent","isHTML","isPrefixedBy","baseURL","getPrefix","locationIsVisitable","location","rootLocation","getRequestURL","anchor","toCacheKey","urlsAreEqual","getPathComponents","addTrailingSlash","activateScriptElement","createdScriptElement","getMetaContent","copyElementAttributes","destinationElement","sourceElement","createDocumentFragment","template","dispatch","nextRepaint","nextEventLoopTick","nextMicrotask","parseHTMLDocument","unindent","strings","lines","interpolate","indent","line","string","uuid","elements","hasAttribute","markAsBusy","clearBusyState","waitForLoad","timeoutInMilliseconds","onComplete","getHistoryMethodForAction","isAction","getVisitAction","getMetaElement","setMetaContent","findClosestRecursively","elementIsFocusable","queryAutofocusableElement","elementOrDocumentFragment","around","reader","before","after","doesNotTargetIFrame","findLinkFromClickTarget","getLocationForLink","delay","LimitedSet","maxSize","oldestValue","recentRequests","nativeFetch","fetchWithTurboHeaders","modifiedHeaders","requestUID","fetchMethodFromString","FetchMethod","fetchEnctypeFromString","encoding","FetchEnctype","_resolveRequestPromise","_allowRequestToBeIntercepted","allowRequestToBeIntercepted_fn","_willDelegateErrorHandling","willDelegateErrorHandling_fn","requestBody","enctype","_value","buildResourceAndBody","fetchBody","fetchMethod","fetchOptions","__privateMethod","fetchResponse","isSafe","mimeType","requestInterception","__privateSet","resource","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","_submitter","initialized","requesting","confirmationMessage","stopping","stopped","getCookieValue","_request","responseSucceededWithoutRedirect","cookieName","formElementAction","formAction","Snapshot","queryPermanentElementsAll","getPermanentElementById","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","FormSubmitObserver","submissionDoesNotDismissDialog","submissionDoesNotTargetIFrame","_resolveRenderPromise","_resolveInterceptionPromise","View","renderer","isPreview","shouldRender","willRender","shouldInvalidate","renderInterception","reason","direction","FrameView","LinkInterceptor","_event","LinkClickObserver","FormLinkClickObserver","originalEvent","turboFrame","turboAction","turboConfirm","Bardo","bardo","permanentElement","placeholder","createPlaceholderForPermanentElement","_activeElement","Renderer","currentSnapshot","newSnapshot","renderElement","reject","FrameRenderer","currentElement","newElement","destinationRange","frameElement","sourceRange","block","readScrollLogicalPosition","behavior","readScrollBehavior","activatedScriptElement","_ProgressBar","ProgressBar","HeadSnapshot","elementIsNoscript","elementWithoutNonce","outerHTML","elementType","elementIsTracked","matchedType","tracked","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","headSnapshot","clonedElement","selectElements","clonedSelectElements","source","clonedPasswordInput","root","_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","_shouldSubmit","shouldSubmit_fn","_shouldRedirect","shouldRedirect_fn","_findFrameElement","findFrameElement_fn","FrameRedirector","_location","frame","History","turbo","restorationIndex","additionalData","restorationData","_prefetchedLink","_enable","_tryToPrefetchRequest","_cancelRequestIfObsolete","_cancelPrefetchRequest","_tryToUsePrefetchedRequest","_cacheTtl","cacheTtl_get","_isPrefetchable","isPrefetchable_fn","LinkPrefetchObserver","fetchRequest","cached","turboFrameTarget","unfetchableLink","linkToTheSamePage","linkOptsOut","nonSafeLink","eventPrevented","turboPrefetchParent","turboMethod","isUJS","_getActionForFormSubmission","getActionForFormSubmission_fn","_getDefaultAction","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","Idiomorph","EMPTY_SET","defaults","noOp","elt","morph","oldNode","newContent","config","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","contentWithSvgsRemoved","htmlElement","dummyParent","stack","bestElement","score","newScore","scoreElement","isIdInConsideration","idIsWithinNode","targetNode","idSet","sourceSet","matchCount","populateIdMapForNode","idMap","nodeParent","idElements","oldContent","_setLanguage","setLanguage_fn","PageRenderer","mergedHeadElements","newStylesheetElements","loadingElements","newHeadElements","elementList","lang","_morphBody","morphBody_fn","_morphElements","morphElements_fn","_shouldAddElement","_shouldMorphElement","_shouldUpdateAttribute","_didMorphElement","_shouldRemoveElement","_reloadRemoteFrames","reloadRemoteFrames_fn","_renderFrameWithMorph","renderFrameWithMorph_fn","_morphFrameUpdate","_isFrameReloadedWithMorph","isFrameReloadedWithMorph_fn","_remoteFrames","remoteFrames_fn","MorphRenderer","mutationType","morphStyle","SnapshotCache","PageView","rendererClass","cachedSnapshot","_preloadAll","Preloader","snapshotCache","_setCacheControl","setCacheControl_fn","Cache","_pageRefreshDebouncePeriod","Session","adapter","requestId","mode","isUnsafe","isStream","frameTarget","extendURLWithDeprecatedProperties","defaultPrevented","_snapshot","_isPreview","renderMethod","ev","newBody","timing","submitterIsNavigatable","withinFrame","deprecatedLocationPropertyDescriptors","cache","navigator$1","registerAdapter","connectStreamSource","disconnectStreamSource","renderStreamMessage","clearCache","setProgressBarDelay","setConfirmMethod","confirmMethod","setFormMode","Turbo","TurboFrameMissingError","_currentFetchRequest","_resolveVisitPromise","_connected","_hasBeenLoaded","_ignoredAttributes","_loadSourceURL","loadSourceURL_fn","_loadFrameResponse","loadFrameResponse_fn","visit_fn","_navigateFrame","navigateFrame_fn","_handleUnvisitableFrameResponse","handleUnvisitableFrameResponse_fn","_willHandleFrameMissingFromResponse","willHandleFrameMissingFromResponse_fn","_handleFrameMissingFromResponse","handleFrameMissingFromResponse_fn","_throwFrameMissingError","throwFrameMissingError_fn","_visitResponse","visitResponse_fn","_formActionIsVisitable","formActionIsVisitable_fn","_shouldInterceptNavigation","shouldInterceptNavigation_fn","_isIgnoringChangesTo","isIgnoringChangesTo_fn","_ignoringChangesToAttribute","ignoringChangesToAttribute_fn","_withCurrentNavigationElement","withCurrentNavigationElement_fn","FrameController","_fetchResponse","src","document","newFrame","_renderMethod","_newElement","pageSnapshot","activateElement","sourceURL","newFrameElement","wrapped","getFrameElementById","currentURL","StreamActions","_raise","raise_fn","_StreamElement","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","CONTROLLER_FILENAME_REGEX","registerControllers","controllerModules","definitionsFromGlob","definitionFromEntry","controllerModule","identifierForGlobKey","logicalName","_Notification","Notification","controllers"],"ignoreList":[0,1,2,3,4,5,7,15,21,26,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,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94],"sources":["../../../../../shared/node_modules/@hotwired/stimulus/dist/stimulus.js","../../../../../shared/node_modules/@rails/request.js/src/fetch_response.js","../../../../../shared/node_modules/@rails/request.js/src/request_interceptor.js","../../../../../shared/node_modules/@rails/request.js/src/lib/utils.js","../../../../../shared/node_modules/@rails/request.js/src/fetch_request.js","../../../../../shared/node_modules/@rails/request.js/src/verbs.js","../../../app/javascript/controllers/apps/authentication_method_toggle_controller.js","../../../../../shared/node_modules/stimulus-use/dist/index.js","../../../app/javascript/controllers/apps/directive_availability_controller.js","../../../app/javascript/controllers/apps/marketplace_search_controller.js","../../../app/javascript/controllers/apps/marketplace_search_results_controller.js","../../../app/javascript/controllers/apps/nested_parameter_form_controller.js","../../../app/javascript/controllers/apps/user_connection_controller.js","../../../app/javascript/controllers/back_controller.js","../../../app/javascript/controllers/clipboard_controller.js","../../../../../shared/node_modules/dirty-pluck/index.js","../../../app/javascript/controllers/dirty_pluck_controller.js","../../../app/javascript/controllers/filter_controller.js","../../../app/javascript/controllers/hello_controller.js","../../../app/javascript/controllers/modal_toggle_controller.js","../../../app/javascript/controllers/parameters/primary_controller.js","../../../../../shared/node_modules/swapy/dist/swapy.js","../../../app/javascript/controllers/positioning_controller.js","../../../app/javascript/controllers/reveal_controller.js","../../../app/javascript/controllers/shared/dropdown_controller.js","../../../app/javascript/controllers/shared/mobile_menu_toggle_controller.js","../../../../../shared/node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js","../../../app/javascript/controllers/shared/remote_request_button_controller.js","../../../app/javascript/controllers/shared/search_controller.js","../../../../../shared/node_modules/@popperjs/core/lib/enums.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/math.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/within.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../../../shared/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/debounce.js","../../../../../shared/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../../../shared/node_modules/@popperjs/core/lib/createPopper.js","../../../../../shared/node_modules/@popperjs/core/lib/popper.js","../../../app/javascript/controllers/shared/tooltip_controller.js","../../../app/javascript/controllers/slideshow_controller.js","../../../app/javascript/controllers/smooth_scroll_controller.js","../../../app/javascript/controllers/turbo/modal_controller.js","../../../../../shared/node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","../../../../../shared/node_modules/stimulus-vite-helpers/dist/index.js","../../../../../shared/node_modules/@stimulus-components/notification/dist/stimulus-notification.mjs","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["/*\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","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 { post } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static targets = [\"field\", \"select\"]\n\n connect () {\n this.toggle()\n }\n\n toggle () {\n this.fieldTargets.forEach(field => {\n field.classList.toggle(\"hidden\", !field.dataset.fieldScope.includes(this.selectTarget.value))\n })\n }\n}\n","/*\n * stimulus-use 0.52.1\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.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.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 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 { get } from \"@rails/request.js\"\nimport { useDebounce } from \"stimulus-use\"\n\nexport default class extends Controller {\n static targets = [\"success\", \"failure\"]\n static debounces = [\"check\"]\n\n connect () {\n useDebounce(this)\n }\n\n async check (event) {\n if (!event.target.value) return\n\n const response = await get(`/apps/directive_availability?directive=${event.target.value}`)\n \n if (response.ok) {\n let taken = (await response.json).taken\n this.successTarget.classList.toggle(\"hidden\", taken)\n this.failureTarget.classList.toggle(\"hidden\", !taken)\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst upKey = 38\nconst downKey = 40\nconst enterKey = 13\nconst navigationKeys = [upKey, downKey, enterKey]\n\nexport default class extends Controller {\n static targets = [\"query\", \"results\"]\n static values = { url: String }\n\n disconnect () {\n this.reset()\n }\n\n fetchResults (event) {\n if (navigationKeys.includes(event.keyCode)) return\n\n if (this.query == \"\") {\n this.reset()\n return\n }\n\n if (this.query == this.previousQuery) return\n\n this.previousQuery = this.query\n\n const url = new URL(this.urlValue)\n url.searchParams.append(\"query\", this.query)\n\n this.abortPreviousFetchRequest()\n\n this.abortController = new AbortController()\n fetch(url, { signal: this.abortController.signal })\n .then(response => response.text())\n .then(html => {\n this.resultsTarget.innerHTML = html\n })\n .catch(() => {})\n }\n\n navigateResults (event) {\n if (this.searchResultsController) this.searchResultsController.navigateResults(event)\n }\n\n hideOnOffclick (event) {\n if (this.resultsTarget.contains(event.target) || this.queryTarget.contains(event.target)) {\n return\n } else {\n this.reset()\n }\n }\n\n // private\n\n reset () {\n this.resultsTarget.innerHTML = \"\"\n this.queryTarget.value = \"\"\n this.previousQuery = null\n }\n\n abortPreviousFetchRequest () {\n if (this.abortController) {\n this.abortController.abort()\n }\n }\n\n get query () {\n return this.queryTarget.value\n }\n\n get searchResultsController () {\n return this.application.getControllerForElementAndIdentifier(this.resultsTarget.firstElementChild, \"apps--marketplace-search-results\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst upKey = 38\nconst downKey = 40\nconst enterKey = 13\nconst navigationKeys = [upKey, downKey, enterKey]\n\nexport default class extends Controller {\n static classes = [\"current\"]\n static targets = [\"result\"]\n\n connect () {\n this.currentResultIndex = 0\n this.selectCurrentResult()\n }\n\n navigateResults (event) {\n if (!navigationKeys.includes(event.keyCode)) {\n return\n }\n event.preventDefault()\n\n switch (event.keyCode) {\n case downKey:\n this.selectNextResult()\n break\n case upKey:\n this.selectPreviousResult()\n break\n case enterKey:\n this.goToSelectedResult()\n break\n }\n }\n\n // private\n\n selectCurrentResult () {\n this.resultTargets.forEach((element, i) => {\n this.currentResultIndex == i ? element.classList.add(...this.currentClasses) : element.classList.remove(...this.currentClasses)\n })\n }\n\n selectNextResult () {\n this.currentResultIndex += 1\n if (this.currentResultIndex > this.resultTargets.length - 1) this.currentResultIndex -= this.resultTargets.length\n\n this.selectCurrentResult()\n }\n\n selectPreviousResult () {\n this.currentResultIndex -= 1\n if (this.currentResultIndex < 0) this.currentResultIndex += this.resultTargets.length\n\n this.selectCurrentResult()\n }\n\n goToSelectedResult () {\n this.resultTargets[this.currentResultIndex].click()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"template\", \"parameterForms\"]\n\n connect () {}\n addAssociation () {\n let content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, new Date().getTime())\n this.parameterFormsTarget.insertAdjacentHTML(\"beforeend\", content)\n }\n removeAssociation (event) {\n let wrapper = event.target.closest(\".nested-fields\")\n console.log(wrapper)\n if (wrapper.dataset.newRecord == \"true\") {\n wrapper.remove()\n } else {\n wrapper.querySelector(\"input[name*='_destroy'\").value = 1\n wrapper.style.display = \"none\"\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { post } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static targets = [\"connected\", \"notConnected\", \"connectSpinner\", \"disconnectSpinner\", \"connectButtonContent\", \"disconnectButtonContent\"]\n static values = {\n appDirective: String\n }\n\n connect () {\n this.inProcess = false\n }\n\n async toggle (event) {\n if (this.inProcess) return\n this.inProcess = true\n\n const performRequest = event.detail.performRequest !== undefined ? event.detail.performRequest : true\n\n const spinner = event.params.connect ? this.connectSpinnerTarget : this.disconnectSpinnerTarget\n const content = event.params.connect ? this.connectButtonContentTarget : this.disconnectButtonContentTarget\n const endpoint = event.params.connect ? \"connect\" : \"disconnect\"\n\n spinner.classList.remove(\"hidden\")\n content.classList.add(\"hidden\")\n \n if (performRequest) {\n const response = await post(`/apps/${this.appDirectiveValue}/${endpoint}`, { body: JSON.stringify({}) })\n\n if (response.ok) {\n this.connectedTarget.classList.toggle(\"hidden\", !event.params.connect)\n this.notConnectedTarget.classList.toggle(\"hidden\", event.params.connect)\n }\n } else {\n this.connectedTarget.classList.remove(\"hidden\")\n this.notConnectedTarget.classList.add(\"hidden\")\n }\n\n spinner.classList.add(\"hidden\")\n content.classList.remove(\"hidden\")\n\n this.inProcess = false\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"back\"\nexport default class extends Controller {\n navigate(event) {\n if (this.#shouldRestore) {\n event.preventDefault()\n window.history.back()\n }\n }\n\n get #shouldRestore() {\n return !this.#isFirstHistoryEntry\n }\n\n get #isFirstHistoryEntry() {\n return !window.history.state.turbo || window.history.state.turbo.restorationIndex === 0\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"source\"]\n copy (event) {\n navigator.clipboard.writeText(event.params.value.trim())\n }\n}\n","const DELIMITER = \".\";\n\n/**\n * Extracts the value from a nested object based on a dot-separated expression string.\n *\n * @param {Object} object - The object to pluck the value from.\n * @param {string} expression - The dot-separated string representing the path to the value.\n * @param {string=} delimiter - The delimiter used to separate the keys in the expression string.\n * @returns {*[]} result - The value found at the path specified by the expression string. Always returns an array.\n */\n\nexport function pluck(object, expression, delimiter = DELIMITER) {\n let values = Array.isArray(object) ? object : [object];\n if (!expression) return values;\n const keys = expression.split(delimiter);\n\n for (const key of keys) {\n values = values.flatMap((item) => item[key] ?? []);\n }\n return values;\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { pluck } from \"dirty-pluck\"\n\nexport default class extends Controller {\n static targets = [\"expression\", \"input\", \"output\"]\n connect() {}\n\n call() {\n const input = JSON.parse(this.inputTarget.value)\n const plucked = pluck(input, this.expressionTarget.value)\n this.outputTarget.innerHTML = JSON.stringify(plucked)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"filterable\"]\n static classes = [\"filteredOut\"]\n\n handleInput () {\n this.filterableTargets.forEach(element => {\n if (element.dataset.filterableAttribute.toLowerCase().includes(this.inputTarget.value)) {\n element.classList.remove(this.filteredOutClass)\n } else {\n element.classList.add(this.filteredOutClass)\n }\n })\n }\n}\n","// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//
\n//

\n//
\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n console.log(\"Hello from hello_controller\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"button\"]\n static values = {\n modalId: String\n }\n\n connect() { \n console.log(this.modalIdValue)\n }\n\n toggle () {\n document.querySelector(`#${this.modalIdValue}`).classList.toggle(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"checkbox\"]\n\n toggleCheckbox (event) {\n const checkboxes = document.querySelectorAll(\".is-primary-checkbox\")\n checkboxes.forEach(checkbox => {\n checkbox.checked = checkbox === event.target\n })\n }\n}\n","var Gt = Object.defineProperty;\nvar Zt = (r, t, e) => t in r ? Gt(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar P = (r, t, e) => Zt(r, typeof t != \"symbol\" ? t + \"\" : t, e);\nfunction gt(r, t) {\n if (r.size !== t.size)\n return !1;\n for (let [e, i] of r)\n if (!t.has(e) || t.get(e) !== i)\n return !1;\n return !0;\n}\nlet Jt = 0;\nfunction Qt() {\n return Jt++ + \"\";\n}\nvar te = Object.defineProperty, ee = (r, t, e) => t in r ? te(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, o = (r, t, e) => ee(r, typeof t != \"symbol\" ? t + \"\" : t, e);\nclass ot {\n constructor(t) {\n o(this, \"x\"), o(this, \"y\"), o(this, \"target\"), this.x = t.x, this.y = t.y, this.target = t.target;\n }\n}\nclass ft extends ot {\n}\nclass lt extends ot {\n}\nclass ht extends ot {\n}\nclass ut extends ot {\n}\nclass $t {\n constructor(t) {\n o(this, \"pluginId\"), o(this, \"pluginName\"), o(this, \"viewName\"), o(this, \"dataName\"), o(this, \"dataValue\"), this.event = t, this.pluginId = t.pluginId, this.pluginName = t.pluginName, this.viewName = t.viewName, this.dataName = t.dataName, this.dataValue = t.dataValue;\n }\n}\nfunction ie(r) {\n return r.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function(t, e) {\n return e === 0 ? t.toLowerCase() : t.toUpperCase();\n }).replace(/\\s+/g, \"\").replace(/-+/g, \"\");\n}\nfunction Lt(r) {\n return r.split(\"\").map((t, e) => t.toUpperCase() === t ? `${e !== 0 ? \"-\" : \"\"}${t.toLowerCase()}` : t).join(\"\");\n}\nclass st {\n constructor(t) {\n o(this, \"node\"), this.node = t.node;\n }\n}\nclass pt {\n constructor(t) {\n o(this, \"node\"), this.node = t.node;\n }\n}\nclass se {\n constructor(t) {\n o(this, \"_eventBus\"), o(this, \"_observer\"), this._eventBus = t, this._observer = new MutationObserver(this._handler.bind(this)), this._observer.observe(document.body, {\n childList: !0,\n subtree: !0,\n attributes: !0,\n attributeOldValue: !0\n });\n }\n _handler(t) {\n t.forEach((e) => {\n e.addedNodes.forEach((s) => {\n if (!(s instanceof HTMLElement) || s.dataset.velViewId || s.parentElement && typeof s.parentElement.dataset.velAdded < \"u\")\n return;\n let n = s;\n if (s.dataset.velView || (n = s.querySelector(\"[data-vel-view][data-vel-plugin]\")), !n) return;\n this._eventBus.emitEvent(st, { node: n });\n const a = n.querySelectorAll(\"[data-vel-plugin]\");\n a.length && a.forEach((l) => {\n this._eventBus.emitEvent(st, { node: l });\n });\n }), e.removedNodes.forEach((s) => {\n if (!(s instanceof HTMLElement) || typeof s.dataset.velProcessing < \"u\") return;\n const n = s.querySelectorAll(\"[data-vel-plugin]\");\n n.length && n.forEach((a) => {\n this._eventBus.emitEvent(pt, { node: a });\n }), this._eventBus.emitEvent(pt, { node: s });\n });\n const i = e.attributeName;\n if (i === \"data-vel-view\" && this._eventBus.emitEvent(st, {\n node: e.target\n }), i && /data-vel-data-.+/gi.test(i)) {\n const s = e.target, n = s.dataset.velPluginId || \"\", a = s.dataset.velPlugin || \"\", l = s.dataset.velView || \"\", h = s.getAttribute(i);\n if (h && h !== e.oldValue) {\n const g = ie(\n i.replace(\"data-vel-data-\", \"\")\n );\n this._eventBus.emitEvent($t, {\n pluginId: n,\n pluginName: a,\n viewName: l,\n dataName: g,\n dataValue: h\n });\n }\n }\n });\n }\n}\nclass ne {\n execute(t) {\n this.call(t);\n }\n}\nclass It extends ne {\n constructor(t) {\n super(), o(this, \"_handler\"), this._handler = t;\n }\n getHandler() {\n return this._handler;\n }\n call(t) {\n this._handler(t);\n }\n}\nclass _t {\n constructor() {\n o(this, \"_listeners\", /* @__PURE__ */ new Map()), o(this, \"_keyedListeners\", /* @__PURE__ */ new Map());\n }\n subscribeToEvent(t, e, i) {\n if (i) {\n this._subscribeToKeyedEvent(t, e, i);\n return;\n }\n let s = this._listeners.get(t);\n s || (s = [], this._listeners.set(t, s)), s.push(new It(e));\n }\n removeEventListener(t, e, i) {\n if (i) {\n this._removeKeyedEventListener(t, e, i);\n return;\n }\n let s = this._listeners.get(t);\n s && (s = s.filter(\n (n) => n.getHandler() !== e\n ), this._listeners.set(t, s));\n }\n _subscribeToKeyedEvent(t, e, i) {\n let s = this._keyedListeners.get(t);\n s || (s = /* @__PURE__ */ new Map(), this._keyedListeners.set(t, s));\n let n = s.get(i);\n n || (n = [], s.set(i, n)), n.push(new It(e));\n }\n _removeKeyedEventListener(t, e, i) {\n let s = this._keyedListeners.get(t);\n if (!s)\n return;\n let n = s.get(i);\n n && (n = n.filter(\n (a) => a.getHandler() !== e\n ), s.set(i, n));\n }\n emitEvent(t, e, i) {\n if (i) {\n this._emitKeyedEvent(t, e, i);\n return;\n }\n const s = this._listeners.get(t);\n s && s.forEach((n) => {\n n.execute(e);\n });\n }\n _emitKeyedEvent(t, e, i) {\n const s = this._keyedListeners.get(t);\n if (!s) return;\n const n = s.get(i);\n n && n.forEach((a) => {\n a.execute(e);\n });\n }\n _convertListener(t) {\n return (e) => t(e);\n }\n subscribeToPluginReadyEvent(t, e, i = !1) {\n if (i) {\n this.subscribeToEvent(\n Dt,\n this._convertListener(t),\n e\n );\n return;\n }\n this.subscribeToEvent(\n zt,\n this._convertListener(t),\n e\n );\n }\n emitPluginReadyEvent(t, e, i = !1) {\n if (i) {\n this.emitEvent(\n Dt,\n e,\n t\n );\n return;\n }\n this.emitEvent(\n zt,\n e,\n t\n );\n }\n reset() {\n this._listeners.clear();\n }\n}\nlet re = 0;\nfunction Wt() {\n return re++ + \"\";\n}\nclass qt {\n constructor(t, e, i, s, n, a, l) {\n o(this, \"_registry\"), o(this, \"_eventBus\"), o(this, \"_appEventBus\"), o(this, \"_internalEventBus\"), o(this, \"_initialized\", !1), o(this, \"_config\"), o(this, \"_pluginFactory\"), o(this, \"_pluginName\"), o(this, \"_id\"), o(this, \"_pluginKey\"), o(this, \"_layoutIdViewMapWaitingToEnter\"), o(this, \"_apiData\"), o(this, \"_isReady\", !1), this._id = Wt(), this._pluginFactory = t, this._pluginName = e, this._registry = i, this._eventBus = s, this._appEventBus = n, this._internalEventBus = new _t(), this._config = a, this._layoutIdViewMapWaitingToEnter = /* @__PURE__ */ new Map(), this._pluginKey = l, this._apiData = {}, this._appEventBus.subscribeToPluginReadyEvent(\n () => {\n this._isReady = !0;\n },\n this._pluginName,\n !0\n );\n }\n get api() {\n return this._apiData;\n }\n _setApi(t) {\n this._apiData = t;\n }\n get pluginName() {\n return this._pluginName;\n }\n get pluginFactory() {\n return this._pluginFactory;\n }\n get pluginKey() {\n return this._pluginKey;\n }\n get id() {\n return this._id;\n }\n get config() {\n return { ...this._config };\n }\n getViews(t) {\n return t ? this._registry.getViewsByNameForPlugin(this, t) : this._registry.getViewsForPlugin(this);\n }\n getView(t) {\n return t ? this._registry.getViewsByNameForPlugin(this, t)[0] : this._registry.getViewsForPlugin(this)[0];\n }\n getViewById(t) {\n return this._registry.getViewById(t);\n }\n addView(t) {\n this._registry.assignViewToPlugin(t, this);\n }\n setInternalEventBus(t) {\n this._internalEventBus = t;\n }\n get internalBusEvent() {\n return this._internalEventBus;\n }\n emit(t, e) {\n this._internalEventBus.emitEvent(t, e, this.pluginKey);\n }\n on(t, e) {\n this._internalEventBus.subscribeToEvent(t, e, this.pluginKey);\n }\n removeListener(t, e) {\n this._internalEventBus.removeEventListener(t, e);\n }\n useEventPlugin(t, e = {}) {\n const i = this._registry.createPlugin(\n t,\n this._eventBus,\n e\n );\n return this._registry.associateEventPluginWithPlugin(this.id, i.id), i;\n }\n notifyAboutDataChanged(t) {\n this.onDataChanged(t);\n }\n // @ts-ignore\n onDataChanged(t) {\n }\n removeView(t) {\n t.onRemoveCallback ? this._invokeRemoveCallback(t) : this._deleteView(t), t.removeListeners(), this.onViewRemoved(t);\n }\n _invokeRemoveCallback(t) {\n const e = this._createTemporaryView(t);\n requestAnimationFrame(() => {\n var i;\n (i = e.onRemoveCallback) == null || i.call(e, e, () => {\n var s, n;\n if ((s = t.onAddCallbacks) != null && s.afterRemoved && t.layoutId) {\n const a = this._layoutIdViewMapWaitingToEnter.get(\n t.layoutId\n );\n (n = a == null ? void 0 : a.onAddCallbacks) == null || n.afterEnter(a), this._layoutIdViewMapWaitingToEnter.delete(t.layoutId);\n }\n this._deleteView(e, !0), t.removeListeners();\n }), setTimeout(() => {\n e.element.parentElement && (this._deleteView(e, !0), t.removeListeners());\n }, 1e4);\n });\n }\n _deleteView(t, e = !1) {\n (e || !t.layoutId) && (this._registry.removeViewById(t.id, this.id), t.element.remove(), t.destroy());\n }\n // This is a temporary view for deleted view. We need to create it\n // to show it again so the user can animate it before it disappears.\n _createTemporaryView(t) {\n const e = t.previousRect.viewportOffset, i = t.previousRect.size, s = t.rotation.degrees < 0 ? 0 : Math.sin(t.rotation.radians) * i.height * t.scale.y, n = t.rotation.degrees > 0 ? 0 : Math.sin(t.rotation.radians) * i.width * t.scale.y, a = t.element.cloneNode(!0);\n t.element.remove(), a.style.cssText = \"\", a.style.position = \"absolute\", a.style.left = `${e.left + s}px`, a.style.top = `${e.top - n}px`, a.style.width = `${i.width}px`, a.style.height = `${i.height}px`, a.style.transform = `\n scale3d(${t.scale.x}, ${t.scale.y}, 1) rotate(${t.rotation.degrees}deg)\n `, a.style.pointerEvents = \"none\", a.dataset.velRemoved = \"\", document.body.appendChild(a);\n const l = this._registry.createView(a, t.name);\n return l.setAsTemporaryView(), l.styles.position = \"absolute\", l.styles.left = `${e.left + s}px`, l.styles.top = `${e.top - n}px`, l.rotation.setDegrees(t.rotation.degrees, !1), l.scale.set({ x: t.scale.x, y: t.scale.y }, !1), l.size.set(\n { width: t._localWidth, height: t._localHeight },\n !1\n ), t._copyAnimatorsToAnotherView(l), t.onRemoveCallback && l.onRemove(t.onRemoveCallback), l;\n }\n // @ts-ignore\n onViewRemoved(t) {\n }\n notifyAboutViewAdded(t) {\n this.onViewAdded(t), this._invokeAddCallbacks(t);\n }\n _invokeAddCallbacks(t) {\n var e, i, s;\n !((e = t.onAddCallbacks) != null && e.onInitialLoad) && !this._initialized || ((i = t.onAddCallbacks) == null || i.beforeEnter(t), !((s = t.onAddCallbacks) != null && s.afterRemoved) || !this._initialized ? requestAnimationFrame(() => {\n var n;\n (n = t.onAddCallbacks) == null || n.afterEnter(t);\n }) : t.layoutId && this._layoutIdViewMapWaitingToEnter.set(t.layoutId, t));\n }\n // @ts-ignore\n onViewAdded(t) {\n }\n init() {\n !this._initialized && this._isReady && (this.setup(), this._initialized = !0);\n }\n setup() {\n }\n // @ts-ignore\n subscribeToEvents(t) {\n }\n}\nclass ae extends qt {\n isRenderable() {\n return !0;\n }\n isInitialized() {\n return this._initialized;\n }\n get initialized() {\n return this._initialized;\n }\n // @ts-ignore\n update(t, e) {\n }\n render() {\n }\n addView(t) {\n t.setPluginId(this.id), super.addView(t);\n }\n}\nclass wt extends qt {\n isRenderable() {\n return !1;\n }\n}\nclass oe {\n constructor(t) {\n o(this, \"_plugin\"), this._plugin = t;\n }\n get initialized() {\n return this._plugin.isInitialized();\n }\n get config() {\n return this._plugin.config;\n }\n setup(t) {\n this._plugin.setup = t;\n }\n api(t) {\n this._plugin._setApi(t);\n }\n update(t) {\n this._plugin.update = t;\n }\n render(t) {\n this._plugin.render = t;\n }\n getViews(t) {\n return this._plugin.getViews(t);\n }\n getView(t) {\n return this._plugin.getView(t);\n }\n getViewById(t) {\n return this._plugin.getViewById(t);\n }\n useEventPlugin(t, e = {}) {\n return this._plugin.useEventPlugin(t, e);\n }\n emit(t, e) {\n this._plugin.emit(t, e);\n }\n on(t, e) {\n this._plugin.on(t, e);\n }\n onDataChanged(t) {\n this._plugin.onDataChanged = t;\n }\n onViewRemoved(t) {\n this._plugin.onViewRemoved = t;\n }\n onViewAdded(t) {\n this._plugin.onViewAdded = t;\n }\n subscribeToEvents(t) {\n this._plugin.subscribeToEvents = t;\n }\n}\nfunction dt(r, t, e, i, s, n) {\n if (le(r))\n return new r(\n r,\n r.pluginName,\n t,\n e,\n i,\n s,\n n\n );\n const a = new ae(\n r,\n r.pluginName,\n t,\n e,\n i,\n s,\n n\n ), l = new oe(a);\n return r(l), a;\n}\nfunction le(r) {\n var t;\n return ((t = r.prototype) == null ? void 0 : t.constructor.toString().indexOf(\"class \")) === 0;\n}\nclass u {\n constructor(t, e) {\n o(this, \"x\"), o(this, \"y\"), this.x = t, this.y = e;\n }\n get magnitudeSquared() {\n return this.x * this.x + this.y * this.y;\n }\n get magnitude() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n get unitVector() {\n const t = new u(0, 0), e = this.magnitude;\n return e !== 0 && (t.x = this.x / e, t.y = this.y / e), t;\n }\n add(t) {\n this.x += t.x, this.y += t.y;\n }\n sub(t) {\n this.x -= t.x, this.y -= t.y;\n }\n scale(t) {\n this.x *= t, this.y *= t;\n }\n dot(t) {\n return this.x * t.x + this.y * t.y;\n }\n equals(t) {\n return this.x === t.x && this.y === t.y;\n }\n clone() {\n return new u(this.x, this.y);\n }\n static scale(t, e) {\n return new u(t.x * e, t.y * e);\n }\n static sub(t, e) {\n return new u(t.x - e.x, t.y - e.y);\n }\n static add(t, e) {\n return new u(t.x + e.x, t.y + e.y);\n }\n}\nclass he {\n constructor(t) {\n o(this, \"_element\"), o(this, \"_callback\"), o(this, \"_windowScrollHandler\"), o(this, \"_windowResizeHandler\"), o(this, \"_parentElementScrollHandler\"), this._element = t, this._observe();\n }\n setElement(t) {\n this._element = t, this._observe();\n }\n _observe() {\n var t;\n const e = new MutationObserver(() => {\n var n;\n (n = this._callback) == null || n.call(this, !1);\n }), i = {\n attributes: !0,\n childList: !0,\n attributeOldValue: !0\n };\n e.observe(this._element, i), new ResizeObserver(() => {\n var n;\n (n = this._callback) == null || n.call(this, !0);\n }).observe(this._element);\n function s(n, a) {\n let l, h = !0;\n return function() {\n h && (n(), h = !1), clearTimeout(l), l = setTimeout(() => {\n n(), h = !0;\n }, a);\n };\n }\n this._parentElementScrollHandler = s(() => {\n var n;\n (n = this._callback) == null || n.call(this, !0);\n }, 30), (t = this._element.parentElement) == null || t.addEventListener(\n \"scroll\",\n this._parentElementScrollHandler\n ), this._windowScrollHandler = s(() => {\n var n;\n (n = this._callback) == null || n.call(this, !0);\n }, 30), window.addEventListener(\"scroll\", this._windowScrollHandler), this._windowResizeHandler = s(() => {\n var n;\n (n = this._callback) == null || n.call(this, !0);\n }, 30), window.addEventListener(\"resize\", this._windowResizeHandler);\n }\n onChange(t) {\n this._callback = t;\n }\n destroy() {\n var t;\n this._parentElementScrollHandler && ((t = this._element.parentElement) == null || t.removeEventListener(\n \"scroll\",\n this._parentElementScrollHandler\n )), this._windowScrollHandler && window.removeEventListener(\"scroll\", this._windowScrollHandler), this._windowResizeHandler && window.removeEventListener(\"resize\", this._windowResizeHandler);\n }\n}\nfunction ue(r) {\n return new he(r);\n}\nfunction ce(r, t) {\n const e = t.x - r.x, i = t.y - r.y;\n return Math.sqrt(e * e + i * i);\n}\nfunction _(r, t) {\n const e = r - t;\n return Math.abs(e) <= 0.01;\n}\nfunction E(r) {\n let t = r.match(/^([\\d.]+)([a-zA-Z%]*)$/);\n t || (t = \"0px\".match(/^([\\d.]+)([a-zA-Z%]*)$/));\n const e = parseFloat(t[1]), i = t[2];\n return { value: e, unit: i, valueWithUnit: r };\n}\nfunction de(r, t, e = !1) {\n if (r === t) return !0;\n if (r.length !== t.length) return !1;\n for (let i = 0; i < r.length; i++)\n if (e && !_(r[i].value, t[i].value) || r[i].value !== t[i].value)\n return !1;\n return !0;\n}\nfunction Mt(r, t) {\n return de(r, t, !0);\n}\nclass G {\n constructor(t, e, i, s) {\n o(this, \"_topLeft\"), o(this, \"_topRight\"), o(this, \"_bottomLeft\"), o(this, \"_bottomRight\"), this._topLeft = t, this._topRight = e, this._bottomLeft = i, this._bottomRight = s;\n }\n get value() {\n return {\n topLeft: this._topLeft,\n topRight: this._topRight,\n bottomRight: this._bottomRight,\n bottomLeft: this._bottomLeft\n };\n }\n equals(t) {\n return _(this.value.topLeft.value, t.value.topLeft.value) && _(this.value.topRight.value, t.value.topRight.value) && _(this.value.bottomRight.value, t.value.bottomRight.value) && _(this.value.bottomLeft.value, t.value.bottomLeft.value);\n }\n toCssPercentageForNewSize(t) {\n const e = this._convertToPercentage(this._topLeft, t), i = this._convertToPercentage(this._topRight, t), s = this._convertToPercentage(this._bottomLeft, t), n = this._convertToPercentage(this._bottomRight, t);\n return `${e.h} ${i.h} ${n.h} ${s.h} / ${e.v} ${i.v} ${n.v} ${s.v}`;\n }\n _convertToPercentage(t, e) {\n if (t.unit === \"%\")\n return { h: `${t.value}%`, v: `${t.value}%` };\n const i = t.value / e.width * 100, s = t.value / e.height * 100;\n return { h: `${i}%`, v: `${s}%` };\n }\n}\nfunction mt(r) {\n const t = r.split(\" \").map((i) => E(i)), e = {\n value: 0,\n unit: \"\",\n valueWithUnit: \"0\"\n };\n switch (t.length) {\n case 1:\n return new G(t[0], t[0], t[0], t[0]);\n case 2:\n return new G(t[0], t[1], t[0], t[1]);\n case 3:\n return new G(t[0], t[1], t[2], t[1]);\n case 4:\n return new G(t[0], t[1], t[3], t[2]);\n default:\n return new G(\n e,\n e,\n e,\n e\n );\n }\n}\nfunction ge(r, t) {\n const e = a(r.topLeft, t), i = a(r.topRight, t), s = a(r.bottomLeft, t), n = a(r.bottomRight, t);\n return {\n v: {\n topLeft: e.v,\n topRight: i.v,\n bottomRight: n.v,\n bottomLeft: s.v\n },\n h: {\n topLeft: e.h,\n topRight: i.h,\n bottomRight: n.h,\n bottomLeft: s.h\n }\n };\n function a(l, h) {\n if (l.unit === \"%\")\n return {\n h: E(`${l.value}%`),\n v: E(`${l.value}%`)\n };\n const g = l.value / h.width * 100, c = l.value / h.height * 100;\n return { h: E(`${g}%`), v: E(`${c}%`) };\n }\n}\nfunction Nt(r, t) {\n return _(r.topLeft.value, t.topLeft.value) && _(r.topRight.value, t.topRight.value) && _(r.bottomRight.value, t.bottomRight.value) && _(r.bottomLeft.value, t.bottomLeft.value);\n}\nclass pe {\n constructor(t) {\n o(this, \"_value\"), this._value = t;\n }\n get value() {\n return this._value;\n }\n equals(t) {\n return _(this.value, t.value);\n }\n}\nfunction _e(r) {\n return new pe(parseFloat(r));\n}\nclass me {\n constructor(t, e) {\n o(this, \"_x\"), o(this, \"_y\"), this._x = t, this._y = e;\n }\n get value() {\n return new u(this._x, this._y);\n }\n}\nfunction ve(r, t) {\n const [e, i] = r.split(\" \"), s = E(e), n = E(i);\n return new me(\n s.value / t.width,\n n.value / t.height\n );\n}\nfunction Bt(r, t) {\n const e = fe(r), i = r.offsetWidth, s = r.offsetHeight;\n return {\n viewportOffset: {\n left: Math.round(e.left),\n top: Math.round(e.top),\n right: Math.round(e.right),\n bottom: Math.round(e.bottom)\n },\n pageOffset: t.read({\n width: i,\n height: s\n }),\n size: {\n width: i,\n height: s\n }\n };\n}\nfunction fe(r) {\n const t = r.getBoundingClientRect();\n return {\n left: t.left,\n top: t.top,\n right: t.right,\n bottom: t.bottom,\n width: t.width,\n height: t.height\n };\n}\nfunction Ft(r) {\n let t = r, e = 0, i = 0;\n for (; t; )\n e += t.offsetTop, i += t.offsetLeft, t = t.offsetParent;\n return { top: e, left: i };\n}\nclass we {\n constructor(t) {\n o(this, \"_currentPageRect\"), o(this, \"_view\"), o(this, \"_element\"), o(this, \"_offsetLeft\"), o(this, \"_offsetTop\"), o(this, \"_width\"), o(this, \"_height\"), o(this, \"_parentWidth\"), o(this, \"_parentHeight\"), o(this, \"_parentEl\"), o(this, \"_isSvg\"), o(this, \"_invalid\"), o(this, \"_windowResizeHandler\"), this._invalid = !0, this._view = t, this._element = t.element, this._isSvg = !!this._element.closest(\"svg\"), this._offsetLeft = 0, this._offsetTop = 0, this._width = 0, this._height = 0, this._parentWidth = 0, this._parentHeight = 0, this._offsetLeft = 0, this._parentEl = this._element.parentElement, this._windowResizeHandler = () => {\n this.invalidate();\n }, window.addEventListener(\"resize\", this._windowResizeHandler);\n }\n destroy() {\n this._windowResizeHandler && window.removeEventListener(\"resize\", this._windowResizeHandler);\n }\n invalidate() {\n this._invalid = !0;\n }\n read(t) {\n if (this._isSvg)\n return this._currentPageRect || (this._currentPageRect = Ft(this._element)), this._currentPageRect;\n const e = this._element.parentElement, i = this._element.offsetLeft, s = this._element.offsetTop, n = t.width, a = t.height, l = (e == null ? void 0 : e.offsetWidth) || 0, h = (e == null ? void 0 : e.offsetHeight) || 0;\n return (this._offsetLeft !== i || this._offsetTop !== s || !_(this._width, n) || !_(this._height, a)) && this._view._children.forEach(\n (g) => g.elementReader.invalidatePageRect()\n ), !this._invalid && this._currentPageRect && this._offsetLeft === i && this._offsetTop === s && _(this._width, n) && _(this._height, a) && _(this._parentWidth, l) && _(this._parentHeight, h) && this._parentEl === e ? this._currentPageRect : (this._offsetLeft = i, this._offsetTop = s, this._width = n, this._height = a, this._parentWidth = l, this._parentHeight = h, this._parentEl = e, this._currentPageRect = Ft(this._element), this._invalid = !1, this._currentPageRect);\n }\n}\nfunction ye(r) {\n return new we(r);\n}\nclass Ve {\n constructor(t) {\n o(this, \"_element\"), o(this, \"_rect\"), o(this, \"_computedStyle\"), o(this, \"_pageRectReader\"), o(this, \"_scroll\"), this._element = t.element, this._pageRectReader = ye(t), this._rect = Bt(this._element, this._pageRectReader), this._computedStyle = getComputedStyle(this._element), this._scroll = this._calculateScroll();\n }\n destroy() {\n this._pageRectReader.destroy();\n }\n invalidatePageRect() {\n this._pageRectReader.invalidate();\n }\n update(t = !1) {\n this._rect = Bt(this._element, this._pageRectReader), this._computedStyle = getComputedStyle(this._element), t && (this._scroll = this._calculateScroll());\n }\n get rect() {\n return this._rect;\n }\n get opacity() {\n return _e(this._computedStyle.opacity);\n }\n get borderRadius() {\n return mt(this._computedStyle.borderRadius);\n }\n get origin() {\n return ve(\n this._computedStyle.transformOrigin,\n this._rect.size\n );\n }\n _calculateScroll() {\n let t = this._element, e = 0, i = 0;\n for (; t; )\n e += t.scrollTop, i += t.scrollLeft, t = t.offsetParent;\n return i += window.scrollX, e += window.scrollY, { y: e, x: i };\n }\n get scroll() {\n return this._scroll;\n }\n}\nfunction kt(r) {\n return new Ve(r);\n}\nfunction vt(r, t) {\n const e = {\n set: (i, s, n) => (typeof i[s] == \"object\" && i[s] !== null ? i[s] = vt(n, t) : (t(), i[s] = n), !0),\n get: (i, s) => typeof i[s] == \"object\" && i[s] !== null ? vt(i[s], t) : i[s]\n };\n return new Proxy(r, e);\n}\nconst rt = 0.01, yt = {\n speed: 15\n};\nclass Vt {\n constructor(t) {\n o(this, \"name\", \"dynamic\"), o(this, \"_config\"), this._config = t;\n }\n get config() {\n return this._config;\n }\n}\nclass be extends Vt {\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n const n = u.sub(i, e), a = u.scale(n, this._config.speed);\n let l = u.add(e, u.scale(a, s));\n return this._shouldFinish(i, e, a) && (l = i, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), t.callUpdateCallback(), l;\n }\n _shouldFinish(t, e, i) {\n return u.sub(t, e).magnitude < rt && i.magnitude < rt;\n }\n}\nclass Pe extends Vt {\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n const n = (i - e) * this._config.speed;\n let a = e + n * s;\n return _(a, i) && (a = i, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), t.callUpdateCallback(), a;\n }\n}\nclass Ee extends Vt {\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n return i.map((n, a) => {\n const l = e[a], h = n.value === 0 ? l.unit : n.unit, g = (n.value - l.value) * this._config.speed, c = l.value + g * s;\n let p = E(`${c}${h}`);\n return this._shouldFinish(n.value, l.value, g) && (p = n, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), t.callUpdateCallback(), p;\n });\n }\n _shouldFinish(t, e, i) {\n return Math.abs(t - e) < rt && Math.abs(i) < rt;\n }\n}\nclass bt {\n constructor() {\n o(this, \"name\", \"instant\"), o(this, \"_config\", {});\n }\n get config() {\n return this._config;\n }\n update(t) {\n return requestAnimationFrame(() => {\n t.animatorProp.callCompleteCallback();\n }), t.target;\n }\n}\nconst Pt = {\n stiffness: 0.5,\n damping: 0.75,\n speed: 10\n}, at = 0.01;\nclass Et {\n constructor(t) {\n o(this, \"name\", \"spring\"), o(this, \"_config\"), this._config = t;\n }\n get config() {\n return this._config;\n }\n}\nclass Re extends Et {\n constructor() {\n super(...arguments), o(this, \"_velocity\", new u(0, 0));\n }\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n const n = u.scale(\n u.scale(u.sub(e, i), -1),\n this._config.stiffness\n );\n this._velocity = u.add(this._velocity, n), this._velocity = u.scale(this._velocity, this._config.damping);\n let a = u.add(\n e,\n u.scale(this._velocity, s * this._config.speed)\n );\n return this._shouldFinish(i, e) && (a = i, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), a;\n }\n _shouldFinish(t, e) {\n return u.sub(t, e).magnitude < at && this._velocity.magnitude < at;\n }\n}\nclass xe extends Et {\n constructor() {\n super(...arguments), o(this, \"_velocity\", 0);\n }\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n const n = -(e - i) * this._config.stiffness;\n this._velocity += n, this._velocity *= this._config.damping;\n let a = e + this._velocity * s * this._config.speed;\n return _(a, i) && (a = i, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), a;\n }\n}\nclass Ae extends Et {\n constructor() {\n super(...arguments), o(this, \"_velocity\", 0);\n }\n update({ animatorProp: t, current: e, target: i, dt: s }) {\n return i.map((n, a) => {\n const l = e[a], h = n.value === 0 ? l.unit : n.unit, g = -(l.value - n.value) * this._config.stiffness;\n this._velocity += g, this._velocity *= this._config.damping;\n const c = l.value + this._velocity * s * this._config.speed;\n let p = E(`${c}${h}`);\n return this._shouldFinish(n.value, l.value) && (p = n, requestAnimationFrame(() => {\n t.callCompleteCallback();\n })), p;\n });\n }\n _shouldFinish(t, e) {\n return Math.abs(t - e) < at && Math.abs(this._velocity) < at;\n }\n}\nfunction Te(r) {\n return r;\n}\nconst Rt = {\n duration: 350,\n ease: Te\n};\nclass xt {\n constructor(t) {\n o(this, \"name\", \"tween\"), o(this, \"_config\"), o(this, \"_startTime\"), this._config = t;\n }\n get config() {\n return this._config;\n }\n reset() {\n this._startTime = void 0;\n }\n}\nclass Se extends xt {\n update({ animatorProp: t, initial: e, target: i, ts: s }) {\n this._startTime || (this._startTime = s);\n const n = Math.min(1, (s - this._startTime) / this._config.duration);\n return _(n, 1) ? (requestAnimationFrame(() => {\n t.callCompleteCallback();\n }), i) : u.add(\n e,\n u.scale(u.sub(i, e), this._config.ease(n))\n );\n }\n}\nclass Ce extends xt {\n update({ animatorProp: t, initial: e, target: i, ts: s }) {\n this._startTime || (this._startTime = s);\n const n = Math.min(1, (s - this._startTime) / this._config.duration);\n return _(n, 1) ? (requestAnimationFrame(() => {\n t.callCompleteCallback();\n }), i) : e.map((a, l) => {\n const h = i[l], g = h.value === 0 ? a.unit : h.unit, c = a.value + this._config.ease(n) * (i[l].value - a.value);\n return E(`${c}${g}`);\n });\n }\n}\nclass Le extends xt {\n update({ animatorProp: t, initial: e, target: i, ts: s }) {\n this._startTime || (this._startTime = s);\n const n = Math.min(1, (s - this._startTime) / this._config.duration);\n return _(n, 1) ? (requestAnimationFrame(() => {\n t.callCompleteCallback();\n }), i) : e + (i - e) * this._config.ease(n);\n }\n}\nclass At {\n createAnimatorByName(t, e) {\n switch (t) {\n case \"instant\":\n return this.createInstantAnimator();\n case \"dynamic\":\n return this.createDynamicAnimator(e);\n case \"tween\":\n return this.createTweenAnimator(e);\n case \"spring\":\n return this.createSpringAnimator(e);\n }\n return this.createInstantAnimator();\n }\n}\nclass it extends At {\n createInstantAnimator() {\n return new bt();\n }\n createTweenAnimator(t) {\n return new Se({ ...Rt, ...t });\n }\n createDynamicAnimator(t) {\n return new be({ ...yt, ...t });\n }\n createSpringAnimator(t) {\n return new Re({ ...Pt, ...t });\n }\n}\nclass Ie extends At {\n createInstantAnimator() {\n return new bt();\n }\n createTweenAnimator(t) {\n return new Ce({ ...Rt, ...t });\n }\n createDynamicAnimator(t) {\n return new Ee({\n ...yt,\n ...t\n });\n }\n createSpringAnimator(t) {\n return new Ae({ ...Pt, ...t });\n }\n}\nclass Ot extends At {\n createInstantAnimator() {\n return new bt();\n }\n createDynamicAnimator(t) {\n return new Pe({ ...yt, ...t });\n }\n createTweenAnimator(t) {\n return new Le({ ...Rt, ...t });\n }\n createSpringAnimator(t) {\n return new xe({ ...Pt, ...t });\n }\n}\nfunction Z(r) {\n return structuredClone(r);\n}\nclass Me {\n constructor(t) {\n o(this, \"_viewProp\"), o(this, \"_completeCallback\"), o(this, \"_updateCallback\"), o(this, \"_isAnimating\"), this._viewProp = t, this._isAnimating = !1;\n }\n set(t, e) {\n this._viewProp.setAnimator(t, e);\n }\n get name() {\n return this._viewProp.getAnimator().name;\n }\n onComplete(t) {\n this._completeCallback = t;\n }\n get isAnimating() {\n return this._isAnimating;\n }\n markAsAnimating() {\n this._isAnimating = !0;\n }\n callCompleteCallback() {\n var t;\n (t = this._completeCallback) == null || t.call(this), this._isAnimating = !1;\n }\n onUpdate(t) {\n this._updateCallback = t;\n }\n callUpdateCallback() {\n var t;\n (t = this._updateCallback) == null || t.call(this);\n }\n}\nclass k {\n constructor(t, e, i) {\n o(this, \"_animatorProp\"), o(this, \"_animator\"), o(this, \"_initialValue\"), o(this, \"_previousValue\"), o(this, \"_targetValue\"), o(this, \"_currentValue\"), o(this, \"_hasChanged\"), o(this, \"_view\"), o(this, \"_animatorFactory\"), o(this, \"_previousRenderValue\"), this._animatorProp = new Me(this), this._animatorFactory = t, this._initialValue = Z(e), this._previousValue = Z(e), this._targetValue = Z(e), this._currentValue = Z(e), this._hasChanged = !1, this._previousRenderValue = void 0, this._view = i, this._animator = this._animatorFactory.createInstantAnimator();\n }\n get shouldRender() {\n return !0;\n }\n get isAnimating() {\n return this.animator.isAnimating;\n }\n getAnimator() {\n return this._animator;\n }\n get animator() {\n return this._animatorProp;\n }\n get _rect() {\n return this._view.rect;\n }\n get _previousRect() {\n return this._view.previousRect;\n }\n setAnimator(t, e) {\n this._animator = this._animatorFactory.createAnimatorByName(\n t,\n e\n );\n }\n _setTarget(t, e = !0) {\n var i, s;\n this._previousValue = Z(this._currentValue), this._targetValue = t, e ? ((s = (i = this._animator).reset) == null || s.call(i), this.animator.markAsAnimating()) : this._currentValue = t, this._hasChanged = !0;\n }\n hasChanged() {\n return this._hasChanged;\n }\n destroy() {\n this._hasChanged = !1;\n }\n // @ts-ignore\n update(t, e) {\n }\n}\nclass Ne extends k {\n constructor() {\n super(...arguments), o(this, \"_invertedBorderRadius\"), o(this, \"_forceStyleUpdateThisFrame\", !1), o(this, \"_updateWithScale\", !1);\n }\n setFromElementPropValue(t) {\n this._setTarget(\n [\n t.value.topLeft,\n t.value.topRight,\n t.value.bottomRight,\n t.value.bottomLeft\n ],\n !0\n );\n }\n enableUpdateWithScale() {\n this._updateWithScale = !0;\n }\n disableUpdateWithScale() {\n this._updateWithScale = !1;\n }\n get value() {\n return {\n topLeft: this._currentValue[0],\n topRight: this._currentValue[1],\n bottomRight: this._currentValue[2],\n bottomLeft: this._currentValue[3]\n };\n }\n get invertedBorderRadius() {\n return this._invertedBorderRadius;\n }\n set(t, e = !0) {\n let i;\n if (typeof t == \"string\") {\n const h = mt(t.trim());\n i = {\n topLeft: h.value.topLeft.valueWithUnit,\n topRight: h.value.topRight.valueWithUnit,\n bottomRight: h.value.bottomRight.valueWithUnit,\n bottomLeft: h.value.bottomLeft.valueWithUnit\n };\n } else\n i = t;\n const s = i.topLeft ? E(i.topLeft) : this._currentValue[0], n = i.topRight ? E(i.topRight) : this._currentValue[1], a = i.bottomRight ? E(i.bottomRight) : this._currentValue[2], l = i.bottomLeft ? E(i.bottomLeft) : this._currentValue[3];\n this._setTarget([s, n, a, l], e);\n }\n reset(t = !0) {\n this._setTarget(this._initialValue, t);\n }\n update(t, e) {\n if (this._forceStyleUpdateThisFrame)\n this._hasChanged = !0, this._forceStyleUpdateThisFrame = !1;\n else if (this._view.scale.isAnimating && this._updateWithScale)\n this._hasChanged = !0;\n else if (Mt(this._targetValue, this._currentValue)) {\n this._hasChanged = !Mt(\n this._targetValue,\n this._initialValue\n );\n return;\n }\n this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: this._currentValue,\n target: this._targetValue,\n initial: this._previousValue,\n ts: t,\n dt: e\n }), this._updateWithScale && this._applyScaleInverse();\n }\n applyScaleInverse() {\n this._updateWithScale && (this._forceStyleUpdateThisFrame = !0);\n }\n _applyScaleInverse() {\n if (_(this._view.scale.x, 1) && _(this._view.scale.y, 1))\n return;\n const t = this._rect.size.width * this._view.scale.x, e = this._rect.size.height * this._view.scale.y;\n this._invertedBorderRadius = ge(\n mt(\n `${this._currentValue[0].valueWithUnit} ${this._currentValue[1].valueWithUnit} ${this._currentValue[2].valueWithUnit} ${this._currentValue[3].valueWithUnit}`\n ).value,\n {\n width: t,\n height: e\n }\n );\n }\n get shouldRender() {\n return this._hasChanged ? this._previousRenderValue ? !(Nt(\n this.renderValue.v,\n this._previousRenderValue.v\n ) && Nt(this.renderValue.h, this._previousRenderValue.h)) : !0 : !1;\n }\n get renderValue() {\n return this.invertedBorderRadius ? {\n v: {\n topLeft: this.invertedBorderRadius.v.topLeft,\n topRight: this.invertedBorderRadius.v.topRight,\n bottomLeft: this.invertedBorderRadius.v.bottomLeft,\n bottomRight: this.invertedBorderRadius.v.bottomRight\n },\n h: {\n topLeft: this.invertedBorderRadius.h.topLeft,\n topRight: this.invertedBorderRadius.h.topRight,\n bottomLeft: this.invertedBorderRadius.h.bottomLeft,\n bottomRight: this.invertedBorderRadius.h.bottomRight\n }\n } : {\n v: {\n topLeft: this.value.topLeft,\n topRight: this.value.topRight,\n bottomLeft: this.value.bottomLeft,\n bottomRight: this.value.bottomRight\n },\n h: {\n topLeft: this.value.topLeft,\n topRight: this.value.topRight,\n bottomLeft: this.value.bottomLeft,\n bottomRight: this.value.bottomRight\n }\n };\n }\n projectStyles() {\n const t = this.renderValue, e = `border-radius: ${t.h.topLeft.valueWithUnit} ${t.h.topRight.valueWithUnit} ${t.h.bottomRight.valueWithUnit} ${t.h.bottomLeft.valueWithUnit} / ${t.v.topLeft.valueWithUnit} ${t.v.topRight.valueWithUnit} ${t.v.bottomRight.valueWithUnit} ${t.v.bottomLeft.valueWithUnit};`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !1;\n }\n}\nclass Be extends k {\n setFromElementPropValue(t) {\n this._setTarget(t.value, !0);\n }\n get value() {\n return this._currentValue;\n }\n set(t, e = !0) {\n this._setTarget(t, e);\n }\n reset(t = !0) {\n this._setTarget(1, t);\n }\n update(t, e) {\n if (_(this._targetValue, this._currentValue)) {\n this._hasChanged = !_(this._targetValue, this._initialValue);\n return;\n }\n this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: this._currentValue,\n target: this._targetValue,\n initial: this._previousValue,\n ts: t,\n dt: e\n });\n }\n get shouldRender() {\n return this._hasChanged ? typeof this._previousRenderValue > \"u\" ? !0 : this.renderValue !== this._previousRenderValue : !1;\n }\n get renderValue() {\n return this.value;\n }\n projectStyles() {\n const t = this.renderValue, e = `opacity: ${t};`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !1;\n }\n}\nclass Fe extends k {\n get x() {\n return this._currentValue.x;\n }\n get y() {\n return this._currentValue.y;\n }\n set(t) {\n const e = { x: this.x, y: this.y, ...t };\n if (e.x < 0 || e.x > 1) {\n console.log(\n `%c WARNING: ${this._view.name}.origin.x property can only be a value from 0 to 1`,\n \"background: #885500\"\n );\n return;\n }\n if (e.y < 0 || e.y > 1) {\n console.log(\n `%c WARNING: ${this._view.name}.origin.y property can only be a value from 0 to 1`,\n \"background: #885500\"\n );\n return;\n }\n this._setTarget(new u(e.x, e.y), !1);\n }\n reset() {\n this._setTarget(this._initialValue, !1);\n }\n get shouldRender() {\n if (!this._hasChanged)\n return !1;\n if (!this._previousRenderValue)\n return !0;\n const t = this.renderValue;\n return !(_(t.x, this._previousRenderValue.x) && _(t.y, this._previousRenderValue.y));\n }\n get renderValue() {\n return new u(this.x * 100, this.y * 100);\n }\n projectStyles() {\n const t = this.renderValue, e = `transform-origin: ${t.x}% ${t.y}%;`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !1;\n }\n}\nclass ke extends k {\n constructor() {\n super(...arguments), o(this, \"_animateLayoutUpdateNextFrame\", !1), o(this, \"_parentScaleInverse\", new u(1, 1));\n }\n get _parentDiff() {\n let t = this._view._parent, e = 0, i = 0;\n if (t) {\n const s = t.rect.pageOffset, n = t.getScroll(), a = {\n left: t.previousRect.viewportOffset.left + n.x,\n top: t.previousRect.viewportOffset.top + n.y\n };\n e = a.left - s.left, i = a.top - s.top;\n }\n return { parentDx: e, parentDy: i };\n }\n get x() {\n return this._currentValue.x + this._rect.pageOffset.left + this._parentDiff.parentDx;\n }\n get y() {\n return this._currentValue.y + this._rect.pageOffset.top + this._parentDiff.parentDy;\n }\n get initialX() {\n return this._rect.pageOffset.left;\n }\n get initialY() {\n return this._rect.pageOffset.top;\n }\n progressTo(t) {\n const e = typeof t.x > \"u\" ? this.initialX : t.x, i = typeof t.y > \"u\" ? this.initialY : t.y, s = new u(e, i), n = new u(this.initialX, this.initialY), a = new u(this.x, this.y), l = u.sub(a, n), h = u.sub(s, n);\n return 1 - u.sub(h, l).magnitude / h.magnitude;\n }\n set(t, e = !0) {\n const i = { x: this.x, y: this.y, ...t };\n this._setTarget(\n new u(\n i.x - this._rect.pageOffset.left,\n i.y - this._rect.pageOffset.top\n ),\n e\n );\n }\n reset(t = !0) {\n this._setTarget(new u(0, 0), t);\n }\n update(t, e) {\n if ((this._view.isInverseEffectEnabled || this._view.isLayoutTransitionEnabled) && !this._view.isTemporaryView && this._runLayoutTransition(), this._view.isInverseEffectEnabled) {\n const h = this._view._parent, g = h ? h.scale.x : 1, c = h ? h.scale.y : 1;\n this._parentScaleInverse = new u(1 / g, 1 / c), this._parentScaleInverse.equals(new u(1, 1)) || (this._hasChanged = !0);\n }\n if (this._targetValue.x === this._currentValue.x && this._targetValue.y === this._currentValue.y)\n return;\n const i = this._view._parent, s = i ? i.scale.x : 1, n = i ? i.scale.y : 1, a = i ? i.scale._previousValue.x : 1, l = i ? i.scale._previousValue.y : 1;\n this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: new u(\n this._currentValue.x * s,\n this._currentValue.y * n\n ),\n target: this._targetValue,\n initial: new u(\n this._previousValue.x * a,\n this._previousValue.y * l\n ),\n ts: t,\n dt: e\n }), this._currentValue = new u(\n this._currentValue.x / s,\n this._currentValue.y / n\n );\n }\n _runLayoutTransition() {\n const t = !(this._targetValue.x === this._currentValue.x && this._targetValue.y === this._currentValue.y), e = !(this._view.scale._targetValue.x === this._view.scale._currentValue.x && this._view.scale._targetValue.y === this._view.scale._currentValue.y), i = t || e, s = this._rect.pageOffset.left - this._previousRect.pageOffset.left, n = this._rect.pageOffset.top - this._previousRect.pageOffset.top, a = this._previousRect.size.width / this._rect.size.width, l = this._previousRect.size.height / this._rect.size.height;\n let h = !1;\n if (s !== 0 || n !== 0 || !Number.isNaN(a) && a !== 1 || !Number.isNaN(l) && l !== 1 ? h = !0 : h = (() => {\n const g = this._view._parents;\n for (let c = 0; c < g.length; c++) {\n const p = g[c], f = p.previousRect.size.width / p.rect.size.width, V = p.previousRect.size.height / p.rect.size.height;\n if (f !== 1 || V !== 1)\n return !0;\n }\n return !1;\n })(), h) {\n if (this._currentValue.x !== 0 || this._currentValue.y !== 0 || this._view.scale._currentValue.x !== 1 || this._view.scale._currentValue.y !== 1) {\n if (!i) {\n const B = this._rect.pageOffset.left - this._previousRect.pageOffset.left, M = this._rect.pageOffset.top - this._previousRect.pageOffset.top;\n this._setTarget(\n new u(this._currentValue.x - B, this._currentValue.y - M),\n !1\n );\n return;\n }\n const x = this._view._parent, I = this._rect.pageOffset, O = this._view.getScroll(), S = {\n left: this._previousRect.viewportOffset.left + O.x,\n top: this._previousRect.viewportOffset.top + O.y\n }, z = S.left - I.left, D = S.top - I.top;\n let U = 0, Y = 0, X = 0, et = 0;\n if (x) {\n const B = x.rect.pageOffset, M = x.getScroll(), $ = {\n left: x.previousRect.viewportOffset.left + M.x,\n top: x.previousRect.viewportOffset.top + M.y\n };\n U = $.left - B.left, Y = $.top - B.top;\n const d = S.top - $.top, m = S.left - $.left, v = x.scale.y * d;\n X = (d - v) / x.scale.y;\n const j = x.scale.x * m;\n et = (m - j) / x.scale.x;\n }\n this._setTarget(\n new u(z - U + et, D - Y + X),\n !1\n ), i && (this._animateLayoutUpdateNextFrame = !0);\n return;\n }\n this._animateLayoutUpdateNextFrame = !0;\n const g = this._previousRect, c = this._rect, p = this._view._parent;\n let f = 0, V = 0;\n p && (f = p.previousRect.viewportOffset.left - p.rect.viewportOffset.left), p && (V = p.previousRect.viewportOffset.top - p.rect.viewportOffset.top);\n let w = 1, b = 1;\n p && (w = p.previousRect.size.width / p.rect.size.width, b = p.previousRect.size.height / p.rect.size.height);\n const T = p ? p.previousRect.viewportOffset.left : 0, C = p ? p.previousRect.viewportOffset.top : 0, H = g.viewportOffset.left - T, R = g.viewportOffset.top - C, Q = H / w - H, tt = R / b - R;\n let A = g.viewportOffset.left - c.viewportOffset.left - f + Q, L = g.viewportOffset.top - c.viewportOffset.top - V + tt;\n A = Number.isFinite(A) ? A : 0, L = Number.isFinite(L) ? L : 0, this._setTarget(new u(A, L), !1);\n } else this._animateLayoutUpdateNextFrame && (this._setTarget(this._initialValue, !0), this._animateLayoutUpdateNextFrame = !1);\n }\n get shouldRender() {\n if (!this._hasChanged)\n return !1;\n if (!this._previousRenderValue)\n return !0;\n const t = this.renderValue;\n return !(_(t.x, this._previousRenderValue.x) && _(t.y, this._previousRenderValue.y));\n }\n get renderValue() {\n let t = 0, e = 0;\n return (this._view.isInverseEffectEnabled || this._view.isLayoutTransitionEnabled) && (t = (this._rect.size.width * this._parentScaleInverse.x * this._view.scale.x - this._rect.size.width) * this._view.origin.x, e = (this._rect.size.height * this._parentScaleInverse.y * this._view.scale.y - this._rect.size.height) * this._view.origin.y), new u(\n this._currentValue.x + t,\n this._currentValue.y + e\n );\n }\n projectStyles() {\n const t = this.renderValue, e = `translate3d(${t.x}px, ${t.y}px, 0px)`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !0;\n }\n}\nclass Oe extends k {\n constructor() {\n super(...arguments), o(this, \"_unit\", \"deg\");\n }\n get degrees() {\n let t = this._currentValue;\n return this._unit === \"rad\" && (t = t * (180 / Math.PI)), t;\n }\n get radians() {\n let t = this._currentValue;\n return this._unit === \"deg\" && (t = t * (Math.PI / 180)), t;\n }\n setDegrees(t, e = !0) {\n this._unit = \"deg\", this._setTarget(t, e);\n }\n setRadians(t, e = !0) {\n this._unit = \"rad\", this._setTarget(t, e);\n }\n reset(t = !0) {\n this._setTarget(0, t);\n }\n update(t, e) {\n this._targetValue !== this._currentValue && (this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: this._currentValue,\n target: this._targetValue,\n initial: this._previousValue,\n ts: t,\n dt: e\n }));\n }\n get shouldRender() {\n if (!this._hasChanged)\n return !1;\n if (typeof this._previousRenderValue > \"u\")\n return !0;\n const t = this.renderValue;\n return !_(t, this._previousRenderValue);\n }\n get renderValue() {\n return this._currentValue;\n }\n projectStyles() {\n const t = this.renderValue, e = `rotate(${t}${this._unit})`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !0;\n }\n}\nclass ze extends k {\n constructor() {\n super(...arguments), o(this, \"_animateLayoutUpdateNextFrame\", !1);\n }\n get x() {\n return this._currentValue.x;\n }\n get y() {\n return this._currentValue.y;\n }\n set(t, e = !0) {\n const i = { x: this._currentValue.x, y: this._currentValue.y, ...typeof t == \"number\" ? { x: t, y: t } : t };\n this._setTarget(new u(i.x, i.y), e);\n }\n setWithSize(t, e = !0) {\n let i = this._currentValue.x, s = this._currentValue.y;\n t.width && (i = t.width / this._rect.size.width), t.height && (s = t.height / this._rect.size.height), !t.width && t.height && (i = s), !t.height && t.width && (s = i);\n const n = { x: i, y: s };\n this._setTarget(new u(n.x, n.y), e);\n }\n reset(t = !0) {\n this._setTarget(new u(1, 1), t);\n }\n update(t, e) {\n if (this._view.layoutOption !== \"position\") {\n if ((this._view.isInverseEffectEnabled || this._view.isLayoutTransitionEnabled) && !this._view.isTemporaryView && this._runLayoutTransition(), this._view.isInverseEffectEnabled) {\n const i = this._view._parent, s = i ? i.scale.x : 1, n = i ? i.scale.y : 1;\n this._hasChanged = s !== 1 || n !== 1;\n }\n this._targetValue.x === this._currentValue.x && this._targetValue.y === this._currentValue.y || (this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: this._currentValue,\n target: this._targetValue,\n initial: new u(this._previousValue.x, this._previousValue.y),\n ts: t,\n dt: e\n }));\n }\n }\n _runLayoutTransition() {\n const t = !(this._targetValue.x === this._currentValue.x && this._targetValue.y === this._currentValue.y), e = this._previousRect.size.width / this._rect.size.width, i = this._previousRect.size.height / this._rect.size.height;\n let s = !1;\n if ((!Number.isNaN(e) && e !== 1 || !Number.isNaN(i) && i !== 1) && (s = !0), s) {\n if (this._currentValue.x !== 1 || this._currentValue.y !== 1) {\n const g = this._view.previousRect.size.width / this._view.rect.size.width, c = this._view.previousRect.size.height / this._view.rect.size.height;\n this._setTarget(\n new u(this._currentValue.x * g, this._currentValue.y * c),\n !1\n ), t && (this._animateLayoutUpdateNextFrame = !0);\n return;\n }\n const n = this._previousRect.size.width / this._rect.size.width, a = this._previousRect.size.height / this._rect.size.height, l = n, h = a;\n this._view.viewProps.borderRadius.applyScaleInverse(), this._setTarget(new u(l, h), !1), this._animateLayoutUpdateNextFrame = !0;\n } else this._animateLayoutUpdateNextFrame && (this._setTarget(this._initialValue, !0), this._animateLayoutUpdateNextFrame = !1);\n }\n get shouldRender() {\n if (!this._hasChanged)\n return !1;\n if (!this._previousRenderValue)\n return !0;\n const t = this.renderValue;\n return !(_(t.x, this._previousRenderValue.x) && _(t.y, this._previousRenderValue.y));\n }\n get renderValue() {\n const t = this._view._parent ? this._view._parent.scale.x : 1, e = this._view._parent ? this._view._parent.scale.y : 1, i = this._currentValue.x / t, s = this._currentValue.y / e;\n return new u(i, s);\n }\n projectStyles() {\n const t = this.renderValue, e = `scale3d(${t.x}, ${t.y}, 1)`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !0;\n }\n}\nclass De extends k {\n get width() {\n return this._view.rect.size.width;\n }\n get height() {\n return this._view.rect.size.height;\n }\n get localWidth() {\n return this._currentValue.x;\n }\n get localHeight() {\n return this._currentValue.y;\n }\n get widthAfterScale() {\n const t = this._view.scale.x;\n return this.localWidth * t;\n }\n get heightAfterScale() {\n const t = this._view.scale.y;\n return this.localHeight * t;\n }\n get initialWidth() {\n return this._initialValue.x;\n }\n get initialHeight() {\n return this._initialValue.y;\n }\n set(t, e = !0) {\n const i = { width: this._currentValue.x, height: this._currentValue.y, ...t };\n this._setTarget(new u(i.width, i.height), e);\n }\n setWidth(t, e = !0) {\n const i = { width: this._currentValue.x, height: this._currentValue.y, width: t };\n this._setTarget(new u(i.width, i.height), e);\n }\n setHeight(t, e = !0) {\n const i = { width: this._currentValue.x, height: this._currentValue.y, height: t };\n this._setTarget(new u(i.width, i.height), e);\n }\n reset(t = !0) {\n this._setTarget(\n new u(this.initialWidth, this.initialHeight),\n t\n );\n }\n update(t, e) {\n this._targetValue.x === this._currentValue.x && this._targetValue.y === this._currentValue.y || (this._currentValue = this._animator.update({\n animatorProp: this._animatorProp,\n current: this._currentValue,\n target: this._targetValue,\n initial: this._previousValue,\n ts: t,\n dt: e\n }));\n }\n get shouldRender() {\n if (!this._hasChanged)\n return !1;\n if (!this._previousRenderValue)\n return !0;\n const t = this.renderValue;\n return !(_(t.x, this._previousRenderValue.x) && _(t.y, this._previousRenderValue.y));\n }\n get renderValue() {\n return new u(this._currentValue.x, this._currentValue.y);\n }\n projectStyles() {\n const t = this.renderValue, e = `width: ${t.x}px; height: ${t.y}px;`;\n return this._previousRenderValue = t, e;\n }\n isTransform() {\n return !1;\n }\n}\nclass $e {\n constructor(t) {\n o(this, \"_props\", /* @__PURE__ */ new Map()), this._props.set(\n \"position\",\n new ke(new it(), new u(0, 0), t)\n ), this._props.set(\n \"scale\",\n new ze(new it(), new u(1, 1), t)\n ), this._props.set(\n \"rotation\",\n new Oe(new Ot(), 0, t)\n ), this._props.set(\n \"size\",\n new De(\n new it(),\n new u(t.rect.size.width, t.rect.size.height),\n t\n )\n ), this._props.set(\n \"opacity\",\n new Be(\n new Ot(),\n t.elementReader.opacity.value,\n t\n )\n ), this._props.set(\n \"borderRadius\",\n new Ne(\n new Ie(),\n [\n t.elementReader.borderRadius.value.topLeft,\n t.elementReader.borderRadius.value.topRight,\n t.elementReader.borderRadius.value.bottomRight,\n t.elementReader.borderRadius.value.bottomLeft\n ],\n t\n )\n ), this._props.set(\n \"origin\",\n new Fe(\n new it(),\n t.elementReader.origin.value,\n t\n )\n );\n }\n allProps() {\n return Array.from(this._props.values());\n }\n allPropNames() {\n return Array.from(this._props.keys());\n }\n getPropByName(t) {\n return this._props.get(t);\n }\n get position() {\n return this._props.get(\"position\");\n }\n get scale() {\n return this._props.get(\"scale\");\n }\n get rotation() {\n return this._props.get(\"rotation\");\n }\n get size() {\n return this._props.get(\"size\");\n }\n get opacity() {\n return this._props.get(\"opacity\");\n }\n get borderRadius() {\n return this._props.get(\"borderRadius\");\n }\n get origin() {\n return this._props.get(\"origin\");\n }\n}\nclass We {\n constructor(t, e, i, s) {\n o(this, \"id\"), o(this, \"name\"), o(this, \"element\"), o(this, \"styles\", {}), o(this, \"_viewProps\"), o(this, \"_previousRect\"), o(this, \"_onAddCallbacks\"), o(this, \"_onRemoveCallback\"), o(this, \"_skipFirstRenderFrame\"), o(this, \"_layoutTransition\"), o(this, \"_registry\"), o(this, \"_layoutId\"), o(this, \"_elementReader\"), o(this, \"_viewParents\"), o(this, \"_temporaryView\"), o(this, \"_inverseEffect\"), o(this, \"_renderNextTick\"), o(this, \"_layoutOption\"), o(this, \"_elementObserver\"), o(this, \"_hasReadElement\"), o(this, \"_shouldReadRect\"), o(this, \"_readWithScroll\"), o(this, \"_externalUserStyles\"), this._registry = i, this.id = Wt(), this.name = e, this.element = t, this.element.dataset.velViewId = this.id, this._elementReader = kt(this), this._viewParents = this._getParents(), this._previousRect = this._elementReader.rect, this._viewProps = new $e(this), this._skipFirstRenderFrame = !0, this._layoutId = s, this._layoutTransition = !1, this._temporaryView = !1, this.styles = vt(this.styles, () => {\n this._renderNextTick = !0;\n }), this._externalUserStyles = this._getExternalUserStyles(), this._renderNextTick = !1, this._layoutOption = this._getLayoutOption(), this._hasReadElement = !1, this._shouldReadRect = !1, this._readWithScroll = !1, this._elementObserver = ue(t), this._elementObserver.onChange((n) => {\n if (this._hasReadElement) {\n this._shouldReadRect = !1;\n return;\n }\n this._externalUserStyles = this._getExternalUserStyles(), this._shouldReadRect = !0, this._readWithScroll = n;\n });\n }\n removeListeners() {\n this._elementObserver.destroy(), this._elementReader.destroy();\n }\n destroy() {\n this.removeListeners(), this._viewProps.allProps().forEach((t) => t.destroy()), this.element.removeAttribute(\"data-vel-view-id\"), this.element.removeAttribute(\"data-vel-plugin-id\"), this._renderNextTick = !0;\n }\n get elementReader() {\n return this._elementReader;\n }\n get layoutOption() {\n return this._layoutOption;\n }\n _getLayoutOption() {\n return this.element.closest(\"[data-vel-layout-position]\") ? \"position\" : this.element.closest(\"[data-vel-layout-size]\") ? \"size\" : \"all\";\n }\n setElement(t) {\n this.element = t, this._elementReader = kt(this), this.element.dataset.velViewId = this.id, this._elementObserver.setElement(t), this._viewParents = this._getParents();\n }\n get layoutId() {\n return this._layoutId;\n }\n get position() {\n return this._viewProps.position;\n }\n get scale() {\n return this._viewProps.scale;\n }\n get _children() {\n const t = this.element.querySelectorAll(\"*\");\n return Array.from(t).map((e) => e.dataset.velViewId).filter((e) => e && typeof e == \"string\").map((e) => this._registry.getViewById(e)).filter((e) => !!e);\n }\n get _parent() {\n return this._parents[0];\n }\n get _parents() {\n return this._viewParents;\n }\n _getParents() {\n var t;\n const e = [];\n let i = this.element.parentElement;\n if (!i) return e;\n for (i = i.closest(\"[data-vel-view-id]\"); i; ) {\n const s = i.dataset.velViewId;\n if (s) {\n const n = this._registry.getViewById(s);\n n && e.push(n);\n }\n i = (t = i.parentElement) == null ? void 0 : t.closest(\n \"[data-vel-view-id]\"\n );\n }\n return e;\n }\n get rotation() {\n return this._viewProps.rotation;\n }\n get size() {\n return this._viewProps.size;\n }\n get _localWidth() {\n return this._viewProps.size.localWidth;\n }\n get _localHeight() {\n return this._viewProps.size.localHeight;\n }\n get opacity() {\n return this._viewProps.opacity;\n }\n get borderRadius() {\n return this._viewProps.borderRadius;\n }\n get origin() {\n return this._viewProps.origin;\n }\n get data() {\n const t = this.element.dataset;\n return Object.keys(t).filter((e) => e.includes(\"velData\")).map((e) => e.replace(\"velData\", \"\")).map((e) => `${e[0].toLowerCase()}${e.slice(1)}`).reduce((e, i) => {\n const s = t[`velData${i[0].toUpperCase()}${i.slice(1)}`];\n return !e[i] && s && (e[i] = s), e;\n }, {});\n }\n get onAddCallbacks() {\n return this._onAddCallbacks;\n }\n get onRemoveCallback() {\n return this._onRemoveCallback;\n }\n get isLayoutTransitionEnabled() {\n return this._layoutTransition;\n }\n get hasLayoutTransitionEnabledForParents() {\n return this._parents.some((t) => t.isLayoutTransitionEnabled);\n }\n get isInverseEffectEnabled() {\n let t = !1;\n for (let e = 0; e < this._parents.length; e++) {\n const i = this._parents[e];\n if (typeof i._inverseEffect < \"u\") {\n t = i._inverseEffect;\n break;\n }\n }\n return t;\n }\n layoutTransition(t) {\n this._layoutTransition = t, this.inverseEffect(t);\n }\n inverseEffect(t) {\n this._inverseEffect = t, t && this._children.forEach((e) => {\n if (e.position.animator.name === \"instant\") {\n const i = this.viewProps.position.getAnimator();\n e.position.setAnimator(\n i.name,\n i.config\n );\n }\n if (e.scale.animator.name === \"instant\") {\n const i = this.viewProps.scale.getAnimator();\n e.scale.setAnimator(i.name, i.config);\n }\n });\n }\n setAnimatorsFromParent() {\n let t = this._parent;\n for (; t && !t._inverseEffect; )\n t = t._parent;\n if (t) {\n if (this.position.animator.name === \"instant\") {\n const e = t.viewProps.position.getAnimator();\n this.position.setAnimator(e.name, e.config);\n }\n if (this.scale.animator.name === \"instant\") {\n const e = t.viewProps.scale.getAnimator();\n this.scale.setAnimator(e.name, e.config);\n }\n }\n }\n get _isRemoved() {\n return !this._registry.getViewById(this.id);\n }\n setPluginId(t) {\n this.element.dataset.velPluginId = t;\n }\n hasElement(t) {\n return this.element.contains(t);\n }\n getScroll() {\n return this._elementReader.scroll;\n }\n intersects(t, e) {\n const i = this.element.getBoundingClientRect(), s = {\n x: i.left,\n y: i.top\n };\n return t >= s.x && t <= s.x + i.width && e >= s.y && e <= s.y + i.height;\n }\n // Using AABB collision detection\n overlapsWith(t) {\n const e = t._localWidth * t.scale.x, i = t._localHeight * t.scale.y, s = this._localWidth * this.scale.x, n = this._localHeight * this.scale.y;\n return this.position.x < t.position.x + e && this.position.x + s > t.position.x && this.position.y < t.position.y + i && this.position.y + n > t.position.y;\n }\n distanceTo(t) {\n const e = new u(this.position.x, this.position.y), i = new u(t.position.x, t.position.y);\n return u.sub(i, e).magnitude;\n }\n read() {\n this._shouldReadRect && (this._elementReader.update(this._readWithScroll), this._children.forEach((t) => {\n t.setHasReadElement(!0), t.elementReader.update(this._readWithScroll);\n }), this._shouldReadRect = !1, this._readWithScroll = !1), this.setHasReadElement(!1);\n }\n setHasReadElement(t) {\n this._hasReadElement = t;\n }\n get rect() {\n return this._elementReader.rect;\n }\n get previousRect() {\n return this._previousRect;\n }\n update(t, e) {\n this._viewProps.allProps().forEach((i) => i.update(t, e));\n }\n _updatePreviousRect() {\n this._previousRect = this._elementReader.rect;\n }\n setAsTemporaryView() {\n this._temporaryView = !0;\n }\n get isTemporaryView() {\n return this._temporaryView;\n }\n get shouldRender() {\n return this._renderNextTick || this._viewProps.allProps().some((t) => t.shouldRender);\n }\n _cleanCssText(t) {\n const e = /* @__PURE__ */ new Map(), i = /([-\\w]+)\\s*:\\s*([^;]+)\\s*;?/g;\n let s;\n for (; (s = i.exec(t)) !== null; ) {\n const [n, a, l] = s;\n if (!l.trim()) continue;\n const h = a.replace(/^-\\w+-/, \"\");\n (!e.has(h) || !a.startsWith(\"-\")) && e.set(\n h,\n `${h}: ${l.trim()}`\n );\n }\n return Array.from(e.values()).join(\"; \");\n }\n render() {\n if (!this.shouldRender)\n return;\n if (this._isRemoved && this._skipFirstRenderFrame) {\n this._skipFirstRenderFrame = !1;\n return;\n }\n let t = \"\";\n const e = this._viewProps.allProps(), i = e.filter((n) => n.isTransform()), s = e.filter((n) => !n.isTransform());\n if (i.some((n) => n.hasChanged())) {\n const n = i.reduce((a, l, h) => (a += l.projectStyles(), h < i.length - 1 && (a += \" \"), h === i.length - 1 && (a += \";\"), a), \"transform: \");\n t += n;\n }\n s.forEach((n) => {\n n.hasChanged() && (t += n.projectStyles());\n }), t += this._getUserStyles(), this._cleanCssText(this.element.style.cssText) !== this._cleanCssText(t) && (this.element.style.cssText = t), this._renderNextTick = !1;\n }\n _getExternalUserStyles() {\n const t = this.element.style.cssText, e = this.styles;\n if (t.length === 0)\n return \"\";\n const i = [\n \"transform\",\n \"transform-origin\",\n \"opacity\",\n \"width\",\n \"height\",\n \"border-radius\"\n ], s = {};\n for (const n in e)\n e.hasOwnProperty(n) && (s[Lt(n)] = e[n]);\n return t.split(\";\").map((n) => n.trim()).filter(Boolean).filter((n) => {\n const a = n.indexOf(\":\");\n if (a === -1) return !1;\n const l = n.slice(0, a).trim();\n return !s.hasOwnProperty(l) && !i.includes(l);\n }).join(\"; \");\n }\n _getUserStyles() {\n return Object.keys(this.styles).reduce((t, e) => {\n if (!e) return t;\n const i = Lt(e).replace(\"webkit\", \"-webkit\").replace(\"moz\", \"-moz\");\n return t + `${i}: ${this.styles[e]}; `;\n }, this._externalUserStyles);\n }\n markAsAdded() {\n delete this.element.dataset.velProcessing;\n }\n onAdd(t) {\n this._onAddCallbacks = t;\n }\n onRemove(t) {\n this._onRemoveCallback = t;\n }\n get viewProps() {\n return this._viewProps;\n }\n getPropByName(t) {\n return this._viewProps.getPropByName(t);\n }\n _copyAnimatorsToAnotherView(t) {\n t.viewProps.allPropNames().forEach((e) => {\n var i, s;\n const n = (i = this.viewProps.getPropByName(e)) == null ? void 0 : i.getAnimator();\n n && ((s = t.viewProps.getPropByName(e)) == null || s.setAnimator(n.name, n.config));\n });\n }\n getChildren(t) {\n const e = this.element.querySelectorAll(\"*\"), i = Array.from(e).filter((s) => {\n const n = s;\n return typeof n.dataset.velViewId < \"u\" && n.dataset.velView === t;\n }).map((s) => s.dataset.velViewId);\n return this._registry.getViewsById(i);\n }\n getChild(t) {\n return this.getChildren(t)[0];\n }\n getParent(t) {\n const e = this.element.closest(\n `[data-vel-view=\"${t}\"]`\n );\n if (!e) return;\n const i = e.dataset.velViewId;\n if (i)\n return this._registry.getViewById(i);\n }\n}\nclass qe {\n constructor(t, e) {\n o(this, \"_appEventBus\"), o(this, \"_eventBus\"), o(this, \"_plugins\", []), o(this, \"_views\", []), o(this, \"_viewsPerPlugin\", /* @__PURE__ */ new Map()), o(this, \"_viewsToBeCreated\", []), o(this, \"_viewsToBeRemoved\", []), o(this, \"_viewsCreatedInPreviousFrame\", []), o(this, \"_layoutIdToViewMap\", /* @__PURE__ */ new Map()), o(this, \"_eventPluginsPerPlugin\", /* @__PURE__ */ new Map()), o(this, \"_pluginNameToPluginFactoryMap\", /* @__PURE__ */ new Map()), o(this, \"_pluginNameToPluginConfigMap\", /* @__PURE__ */ new Map()), this._appEventBus = t, this._eventBus = e;\n }\n update() {\n this._handleRemovedViews(), this._handleAddedViews();\n }\n associateEventPluginWithPlugin(t, e) {\n let i = this._eventPluginsPerPlugin.get(t);\n i || (i = [], this._eventPluginsPerPlugin.set(t, i)), i.push(e);\n }\n _handleRemovedViews() {\n const t = this._viewsToBeRemoved.filter((e) => e.dataset.velViewId);\n t.length && (t.forEach((e) => {\n const i = e.dataset.velViewId;\n i && (this._handleRemoveView(i), e.querySelectorAll(\"*\").forEach((s) => {\n const n = s.dataset.velViewId;\n n && this._plugins.forEach((a) => {\n if (!this._viewsPerPlugin.get(a.id)) return;\n const l = this._getPluginViewById(a, n);\n l && l.removeListeners();\n });\n }));\n }), this._viewsToBeRemoved = []);\n }\n _getPluginNameForElement(t) {\n const e = t.dataset.velPlugin;\n if (e && e.length > 0) return e;\n const i = t.closest(\"[data-vel-plugin]\");\n if (i)\n return i.dataset.velPlugin;\n }\n _getPluginIdForElement(t) {\n const e = this._getPluginNameForElement(t);\n if (!e)\n return;\n const i = t.closest(\"[data-vel-plugin-id]\");\n if (i)\n return i.dataset.velPluginId;\n const s = this.getPluginByName(e);\n if (s)\n return s.id;\n }\n _isScopedElement(t) {\n const e = this._getPluginNameForElement(t);\n if (!e)\n return !1;\n const i = this._pluginNameToPluginFactoryMap.get(e), s = i == null ? void 0 : i.scope;\n return t.dataset.velView === s;\n }\n _removeElementsWithParent(t) {\n const e = new Set(t);\n return t.filter((i) => {\n let s = i.parentElement;\n for (; s; ) {\n if (e.has(s))\n return !1;\n s = s.parentElement;\n }\n return !0;\n });\n }\n _handleAddedViews() {\n this._viewsCreatedInPreviousFrame.forEach((n) => {\n n.markAsAdded();\n }), this._viewsCreatedInPreviousFrame = [];\n const t = this._removeElementsWithParent(\n this._viewsToBeCreated\n ), e = Array.from(\n new Set(\n t.filter(\n (n) => this._isScopedElement(n) && !this._isElementIgnored(n)\n )\n )\n ), i = t.filter(\n (n) => !this._isScopedElement(n) && !this._isElementIgnored(n)\n );\n this._viewsToBeCreated = [], e.forEach((n) => {\n const a = this._getPluginNameForElement(n), l = this._pluginNameToPluginFactoryMap.get(a), h = this._pluginNameToPluginConfigMap.get(a), g = n.dataset.velPluginKey, c = dt(\n l,\n this,\n this._eventBus,\n this._appEventBus,\n h,\n g\n );\n this._plugins.push(c);\n const p = n.dataset.velView, f = this._createNewView(n, p, c);\n f.isInverseEffectEnabled && f.setAnimatorsFromParent(), c.notifyAboutViewAdded(f);\n });\n const s = i.filter((n) => !!this._getPluginIdForElement(n));\n s.length !== 0 && s.forEach((n) => {\n const a = this._getPluginIdForElement(n), l = n.dataset.velView;\n if (!l || !a) return;\n const h = this._getPluginById(a);\n if (!h)\n return;\n const g = this._getLayoutIdForElement(n, h);\n let c;\n g && this._layoutIdToViewMap.has(g) ? (c = this._layoutIdToViewMap.get(g), c.setElement(n), c.setPluginId(h.id), this._createChildrenForView(c, h)) : c = this._createNewView(n, l, h), c.isInverseEffectEnabled && c.setAnimatorsFromParent(), h.notifyAboutViewAdded(c);\n });\n }\n _getLayoutIdForElement(t, e) {\n const i = t.dataset.velLayoutId;\n if (i)\n return `${i}-${e.id}`;\n }\n _createNewView(t, e, i) {\n const s = this._getLayoutIdForElement(t, i), n = this.createView(t, e, s);\n return i.addView(n), n.layoutId && this._layoutIdToViewMap.set(n.layoutId, n), this._createChildrenForView(n, i), this._appEventBus.emitPluginReadyEvent(i.pluginName, i.api, !0), requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n this._appEventBus.emitPluginReadyEvent(i.pluginName, i.api);\n });\n }), n;\n }\n _createChildrenForView(t, e) {\n const i = t.element.querySelectorAll(\"*\");\n if (i.length) {\n if (Array.from(i).some(\n (s) => this._getPluginNameForElement(s) !== e.pluginName\n )) {\n console.log(\n `%c WARNING: The plugin \"${e.pluginName}\" has view(s) created for a different plugin. Make sure all views inside that plugin don't have data-vel-plugin set or the pluginName is set to \"${e.pluginName}\"`,\n \"background: #885500\"\n );\n return;\n }\n Array.from(i).filter((s) => !this._isElementIgnored(s)).forEach((s) => {\n const n = s, a = n.dataset.velView ? n.dataset.velView : `${t.name}-child`, l = this._getLayoutIdForElement(n, e);\n let h;\n l && this._layoutIdToViewMap.has(l) ? (h = this._layoutIdToViewMap.get(l), h.setElement(n), h.setPluginId(e.id)) : h = this.createView(n, a, l), l && !this._layoutIdToViewMap.has(l) && this._layoutIdToViewMap.set(l, h), e.addView(h), e.notifyAboutViewAdded(h);\n });\n }\n }\n _handleRemoveView(t) {\n this._plugins.forEach((e) => {\n if (!this._viewsPerPlugin.get(e.id)) return;\n const i = this._getPluginViewById(e, t);\n i && e.removeView(i);\n });\n }\n removeViewById(t, e) {\n this._unassignViewFromPlugin(t, e), this._views = this._views.filter((i) => i.id !== t);\n }\n _unassignViewFromPlugin(t, e) {\n const i = this._viewsPerPlugin.get(e);\n if (!i) return;\n const s = i.indexOf(t);\n s !== -1 && i.splice(s, 1);\n }\n getViewById(t) {\n return this._views.find((e) => e.id === t);\n }\n getViewsById(t) {\n return this._views.filter((e) => t.includes(e.id));\n }\n _getPluginById(t) {\n return this._plugins.find((e) => e.id === t);\n }\n _getPluginViewById(t, e) {\n return this.getViewsForPlugin(t).find((i) => i.id === e);\n }\n destroy(t, e) {\n if (!t) {\n this._destroyAll(e);\n return;\n }\n let i = [];\n if (t && t.length > 0) {\n const s = this.getPluginByName(t);\n if (s) {\n const n = (this._eventPluginsPerPlugin.get(s.id) || []).map((a) => this._getPluginById(a)).filter((a) => typeof a < \"u\");\n i.push(s), i.push(...n);\n }\n } else\n i = this._plugins;\n i.forEach((s) => {\n this._destroyPlugin(s);\n }), requestAnimationFrame(() => {\n e == null || e();\n });\n }\n _destroyPlugin(t) {\n const e = this.getViewsForPlugin(t);\n e.forEach((i) => {\n i.layoutId && this._layoutIdToViewMap.delete(i.layoutId), i.destroy();\n }), this._views = this._views.filter(\n (i) => !e.find((s) => s.id === i.id)\n ), this._viewsPerPlugin.delete(t.id), this._plugins = this._plugins.filter((i) => i.id !== t.id);\n }\n _destroyAll(t) {\n this._views.forEach((e) => e.destroy()), requestAnimationFrame(() => {\n this._plugins = [], this._views = [], this._viewsPerPlugin.clear(), this._viewsToBeCreated = [], this._viewsToBeRemoved = [], this._viewsCreatedInPreviousFrame = [], this._layoutIdToViewMap.clear(), this._eventPluginsPerPlugin.clear(), t == null || t();\n });\n }\n reset(t, e) {\n let i = [];\n if (t && t.length > 0) {\n const s = this.getPluginByName(t);\n if (s) {\n const n = (this._eventPluginsPerPlugin.get(s.id) || []).map((a) => this._getPluginById(a)).filter((a) => typeof a < \"u\");\n i.push(s), i.push(...n);\n }\n } else\n i = this._plugins;\n requestAnimationFrame(() => {\n i.forEach((s) => {\n this._resetPlugin(s);\n }), requestAnimationFrame(() => {\n e == null || e();\n });\n });\n }\n _resetPlugin(t) {\n const e = t.config, i = t.pluginFactory, s = t.internalBusEvent, n = !t.isRenderable(), a = this.getViewsForPlugin(t);\n a.forEach((l) => {\n l.layoutId && this._layoutIdToViewMap.delete(l.layoutId), l.destroy();\n }), this._views = this._views.filter(\n (l) => !a.find((h) => h.id === l.id)\n ), this._viewsPerPlugin.delete(t.id), this._plugins = this._plugins.filter((l) => l.id !== t.id), n || requestAnimationFrame(() => {\n this.createPlugin(\n i,\n this._eventBus,\n e\n ).setInternalEventBus(s);\n });\n }\n queueNodeToBeCreated(t) {\n this._viewsToBeCreated.push(t);\n }\n queueNodeToBeRemoved(t) {\n this._viewsToBeRemoved.push(t);\n }\n notifyPluginAboutDataChange(t) {\n const e = this._plugins.filter(\n (i) => i.id === t.pluginId\n );\n !e || !e.length || e.forEach((i) => {\n i.notifyAboutDataChanged({\n dataName: t.dataName,\n dataValue: t.dataValue,\n viewName: t.viewName\n });\n });\n }\n getPlugins() {\n return this._plugins;\n }\n getRenderablePlugins() {\n function t(e) {\n return e.isRenderable();\n }\n return this._plugins.filter(t);\n }\n getPluginByName(t, e) {\n return this._plugins.find((i) => e ? i.pluginKey === e && i.pluginName === t : i.pluginName === t);\n }\n getPluginsByName(t, e) {\n return this._plugins.filter((i) => e ? i.pluginKey === e && i.pluginName === t : i.pluginName === t);\n }\n hasPlugin(t) {\n return t.pluginName ? !!this.getPluginByName(t.pluginName) : !1;\n }\n createPlugin(t, e, i = {}, s = !1) {\n if (!t.pluginName)\n throw Error(\n `Plugin ${t.name} must contain a pluginName field`\n );\n let n = [];\n if (t.scope) {\n const h = s ? `[data-vel-plugin=${t.pluginName}][data-vel-view=${t.scope}]:not([data-vel-plugin-id])` : `[data-vel-plugin=${t.pluginName}][data-vel-view=${t.scope}]`, g = document.querySelectorAll(h);\n this._pluginNameToPluginFactoryMap.has(t.pluginName) || this._pluginNameToPluginFactoryMap.set(\n t.pluginName,\n t\n ), this._pluginNameToPluginConfigMap.has(t.pluginName) || this._pluginNameToPluginConfigMap.set(t.pluginName, i), g ? n = Array.from(g) : n = [document.documentElement];\n } else\n n = [document.documentElement];\n const a = n.map((h) => {\n const g = h.dataset.velPluginKey, c = dt(\n t,\n this,\n e,\n this._appEventBus,\n i,\n g\n );\n this._plugins.push(c);\n let p = [];\n h !== document.documentElement && p.push(h);\n const f = h.querySelectorAll(\n `[data-vel-plugin=${c.pluginName}]`\n );\n p = [...p, ...f];\n const V = p.filter((w) => {\n if (this._isElementIgnored(w))\n return !1;\n if (!w.parentElement)\n return !0;\n const b = this._getPluginNameForElement(w.parentElement);\n return !(b && b.length > 0);\n });\n return V.length && V.forEach((w) => {\n const b = w.dataset.velView;\n if (!b) return;\n const T = this._createNewView(w, b, c);\n c.notifyAboutViewAdded(T);\n }), c;\n });\n if (a && a.length > 0)\n return a[0];\n const l = dt(\n t,\n this,\n e,\n this._appEventBus,\n i\n );\n return t.scope || console.log(\n `%c WARNING: The plugin \"${l.pluginName}\" is created but there are no elements using it on the page`,\n \"background: #885500\"\n ), l;\n }\n updatePlugin(t, e, i = {}) {\n return this.createPlugin(t, e, i, !0);\n }\n getViews() {\n return this._views;\n }\n createView(t, e, i) {\n const s = new We(t, e, this, i);\n return this._views.push(s), this._viewsCreatedInPreviousFrame.push(s), s;\n }\n _isElementIgnored(t) {\n return t.closest(\"[data-vel-ignore]\");\n }\n assignViewToPlugin(t, e) {\n this._viewsPerPlugin.has(e.id) || this._viewsPerPlugin.set(e.id, []);\n const i = this._viewsPerPlugin.get(e.id);\n i.includes(t.id) || i.push(t.id);\n }\n getViewsForPlugin(t) {\n const e = this._viewsPerPlugin.get(t.id);\n return e ? e.map((i) => this._views.find((s) => s.id === i)).filter((i) => !!i) : [];\n }\n getViewsByNameForPlugin(t, e) {\n return this.getViewsForPlugin(t).filter(\n (i) => i.name === e\n );\n }\n}\nclass zt {\n constructor(t) {\n o(this, \"pluginApi\"), this.pluginApi = t.pluginApi;\n }\n}\nclass Dt {\n constructor(t) {\n o(this, \"pluginApi\"), this.pluginApi = t.pluginApi;\n }\n}\nclass Tt {\n constructor() {\n o(this, \"previousTime\", 0), o(this, \"registry\"), o(this, \"eventBus\"), o(this, \"appEventBus\"), this.eventBus = new _t(), this.appEventBus = new _t(), this.registry = new qe(this.appEventBus, this.eventBus), new se(this.eventBus);\n }\n static create() {\n return new Tt();\n }\n addPlugin(t, e = {}) {\n this.registry.hasPlugin(t) || this.registry.createPlugin(t, this.eventBus, e);\n }\n updatePlugin(t, e = {}) {\n this.registry.hasPlugin(t) && this.registry.updatePlugin(t, this.eventBus, e);\n }\n reset(t, e) {\n this.registry.reset(t, e);\n }\n destroy(t, e) {\n this.registry.destroy(t, e);\n }\n getPlugin(t, e) {\n let i = typeof t == \"string\" ? t : t.pluginName;\n const s = this.registry.getPluginByName(i, e);\n if (!s)\n throw new Error(\n `You can't call getPlugin for ${i} with key: ${e} because it does not exist in your app`\n );\n return s.api;\n }\n getPlugins(t, e) {\n let i = typeof t == \"string\" ? t : t.pluginName;\n const s = this.registry.getPluginsByName(i, e);\n if (s.length === 0)\n throw new Error(\n `You can't call getPlugins for ${i} with key: ${e} because they don't exist in your app`\n );\n return s.map((n) => n.api);\n }\n onPluginEvent(t, e, i, s) {\n requestAnimationFrame(() => {\n const n = this.registry.getPluginByName(\n t.pluginName,\n s\n );\n n && n.on(e, i);\n });\n }\n removePluginEventListener(t, e, i) {\n const s = this.registry.getPluginByName(t.pluginName);\n s && s.removeListener(e, i);\n }\n run() {\n document.readyState === \"loading\" ? document.addEventListener(\"DOMContentLoaded\", this.start.bind(this)) : this.start();\n }\n start() {\n this.setup(), requestAnimationFrame(this.tick.bind(this));\n }\n setup() {\n this.listenToNativeEvents(), this.subscribeToEvents();\n }\n listenToNativeEvents() {\n document.addEventListener(\"click\", (t) => {\n this.eventBus.emitEvent(ft, {\n x: t.clientX,\n y: t.clientY,\n target: t.target\n });\n }), document.addEventListener(\"pointermove\", (t) => {\n this.eventBus.emitEvent(lt, {\n x: t.clientX,\n y: t.clientY,\n target: t.target\n });\n }), document.addEventListener(\"pointerdown\", (t) => {\n this.eventBus.emitEvent(ht, {\n x: t.clientX,\n y: t.clientY,\n target: t.target\n });\n }), document.addEventListener(\"pointerup\", (t) => {\n this.eventBus.emitEvent(ut, {\n x: t.clientX,\n y: t.clientY,\n target: t.target\n });\n });\n }\n tick(t) {\n let e = (t - this.previousTime) / 1e3;\n e > 0.016 && (e = 1 / 60), this.previousTime = t, this.eventBus.reset(), this.subscribeToEvents(), this.read(), this.update(t, e), this.render(), requestAnimationFrame(this.tick.bind(this));\n }\n subscribeToEvents() {\n this.eventBus.subscribeToEvent(st, this.onNodeAdded.bind(this)), this.eventBus.subscribeToEvent(\n pt,\n this.onNodeRemoved.bind(this)\n ), this.eventBus.subscribeToEvent(\n $t,\n this.onDataChanged.bind(this)\n ), this.registry.getPlugins().forEach((t) => {\n t.subscribeToEvents(this.eventBus);\n });\n }\n onNodeAdded({ node: t }) {\n this.registry.queueNodeToBeCreated(t);\n }\n onNodeRemoved({ node: t }) {\n this.registry.queueNodeToBeRemoved(t);\n }\n onDataChanged(t) {\n this.registry.notifyPluginAboutDataChange(t);\n }\n read() {\n this.registry.getViews().forEach((t) => {\n t.read();\n });\n }\n update(t, e) {\n this.registry.update(), this.registry.getPlugins().slice().reverse().forEach((i) => {\n i.init();\n }), this.registry.getRenderablePlugins().forEach((i) => {\n i.update(t, e);\n }), this.registry.getViews().forEach((i) => {\n i.update(t, e);\n }), this.registry.getViews().forEach((i) => {\n i._updatePreviousRect();\n });\n }\n render() {\n this.registry.getRenderablePlugins().forEach((t) => {\n t.render();\n }), this.registry.getViews().forEach((t) => {\n t.render();\n });\n }\n}\nfunction He() {\n return Tt.create();\n}\nclass Ht {\n constructor(t) {\n o(this, \"view\"), o(this, \"previousX\"), o(this, \"previousY\"), o(this, \"x\"), o(this, \"y\"), o(this, \"pointerX\"), o(this, \"pointerY\"), o(this, \"isDragging\"), o(this, \"target\"), o(this, \"directions\", []), o(this, \"width\"), o(this, \"height\"), o(this, \"distance\"), o(this, \"stopped\"), o(this, \"hasMoved\"), this.props = t, this.previousX = t.previousX, this.previousY = t.previousY, this.x = t.x, this.y = t.y, this.pointerX = t.pointerX, this.pointerY = t.pointerY, this.width = t.width, this.height = t.height, this.distance = t.distance, this.view = t.view, this.isDragging = t.isDragging, this.stopped = t.stopped, this.target = t.target, this.directions = t.directions, this.hasMoved = t.hasMoved;\n }\n}\nclass Ut extends wt {\n constructor() {\n super(...arguments), o(this, \"_pointerX\", 0), o(this, \"_pointerY\", 0), o(this, \"_initialPointer\", new u(0, 0)), o(this, \"_initialPointerPerView\", /* @__PURE__ */ new Map()), o(this, \"_pointerDownPerView\", /* @__PURE__ */ new Map()), o(this, \"_viewPointerPositionLog\", /* @__PURE__ */ new Map()), o(this, \"_stopTimer\", 0);\n }\n setup() {\n document.addEventListener(\"selectstart\", this.onSelect.bind(this));\n }\n onSelect(t) {\n this._isDragging && t.preventDefault();\n }\n get _isDragging() {\n return Array.from(this._pointerDownPerView.values()).some(\n (t) => !!t\n );\n }\n subscribeToEvents(t) {\n t.subscribeToEvent(ht, ({ x: e, y: i }) => {\n this._initialPointer = new u(e, i), this.getViews().forEach((s) => {\n this._pointerDownPerView.set(s.id, s.intersects(e, i));\n const n = s.isLayoutTransitionEnabled ? s.position.initialX : s.position.x, a = s.isLayoutTransitionEnabled ? s.position.initialY : s.position.y, l = new u(e - n, i - a);\n this._pointerX = e, this._pointerY = i, this._initialPointerPerView.set(s.id, l);\n });\n }), t.subscribeToEvent(ut, () => {\n this.getViews().forEach((e) => {\n this._pointerDownPerView.get(e.id) && this._initialPointerPerView.get(e.id) && (this._pointerDownPerView.set(e.id, !1), this._emitEvent(e, []));\n });\n }), t.subscribeToEvent(lt, ({ x: e, y: i }) => {\n this._pointerX = e, this._pointerY = i, this.getViews().forEach((s) => {\n if (this._pointerDownPerView.get(s.id) && this._initialPointerPerView.get(s.id)) {\n this._viewPointerPositionLog.has(s.id) || this._viewPointerPositionLog.set(s.id, []);\n const n = new u(e, i), a = this._viewPointerPositionLog.get(s.id);\n a && a.push(new u(e, i));\n const l = a && a.length >= 2 ? a[a.length - 2] : n.clone(), h = this._calculateDirections(\n l,\n n\n );\n this._emitEvent(s, h), clearTimeout(this._stopTimer), this._stopTimer = setTimeout(() => {\n this._pointerDownPerView.get(s.id) === !0 && this._emitEvent(s, h, !0);\n }, 120);\n }\n });\n });\n }\n _emitEvent(t, e, i = !1) {\n const s = this._viewPointerPositionLog.get(t.id), n = !(typeof s > \"u\" || s.length <= 1), a = s && s.length >= 2 ? s[s.length - 2] : null, l = this._pointerX - this._initialPointerPerView.get(t.id).x, h = this._pointerY - this._initialPointerPerView.get(t.id).y, g = this._pointerX, c = this._pointerY, p = a ? a.x - this._initialPointerPerView.get(t.id).x : l, f = a ? a.y - this._initialPointerPerView.get(t.id).y : h, V = this._pointerY - this._initialPointer.y, w = this._pointerX - this._initialPointer.x, b = ce(this._initialPointer, {\n x: this._pointerX,\n y: this._pointerY\n }), T = this._pointerDownPerView.get(t.id) === !0;\n T || this._viewPointerPositionLog.clear();\n const C = {\n view: t,\n target: t.element,\n previousX: p,\n previousY: f,\n x: l,\n y: h,\n pointerX: g,\n pointerY: c,\n distance: b,\n width: w,\n height: V,\n isDragging: T,\n directions: e,\n stopped: i,\n hasMoved: n\n };\n this.emit(Ht, C);\n }\n _calculateDirections(t, e) {\n const i = {\n up: u.sub(new u(t.x, t.y - 1), t),\n down: u.sub(new u(t.x, t.y + 1), t),\n left: u.sub(new u(t.x - 1, t.y), t),\n right: u.sub(new u(t.x + 1, t.y), t)\n }, s = u.sub(e, t).unitVector;\n return [\n { direction: \"up\", projection: s.dot(i.up) },\n {\n direction: \"down\",\n projection: s.dot(i.down)\n },\n {\n direction: \"left\",\n projection: s.dot(i.left)\n },\n {\n direction: \"right\",\n projection: s.dot(i.right)\n }\n ].filter(\n (n) => n.projection > 0\n ).map(\n (n) => n.direction\n );\n }\n}\no(Ut, \"pluginName\", \"DragEventPlugin\");\nclass Ue {\n constructor(t) {\n o(this, \"view\"), o(this, \"direction\"), this.props = t, this.view = t.view, this.direction = t.direction;\n }\n}\nclass Ye extends wt {\n constructor() {\n super(...arguments), o(this, \"_viewIsPointerDownMap\", /* @__PURE__ */ new Map()), o(this, \"_viewPointerPositionLog\", /* @__PURE__ */ new Map()), o(this, \"_targetPerView\", /* @__PURE__ */ new Map());\n }\n subscribeToEvents(t) {\n t.subscribeToEvent(ht, ({ x: e, y: i, target: s }) => {\n this.getViews().forEach((n) => {\n this._targetPerView.set(n.id, s), n.intersects(e, i) && this._viewIsPointerDownMap.set(n.id, !0);\n });\n }), t.subscribeToEvent(lt, ({ x: e, y: i }) => {\n this.getViews().forEach((s) => {\n this._viewIsPointerDownMap.get(s.id) && (this._viewPointerPositionLog.has(s.id) || this._viewPointerPositionLog.set(s.id, []), this._viewPointerPositionLog.get(s.id).push(new u(e, i)));\n });\n }), t.subscribeToEvent(ut, ({ x: e, y: i }) => {\n this.getViews().forEach((n) => {\n if (!this._viewIsPointerDownMap.get(n.id) || !this._viewPointerPositionLog.has(n.id))\n return;\n const a = new u(e, i), l = this._viewPointerPositionLog.get(n.id), h = l[l.length - 2] || a.clone(), g = this._targetPerView.get(n.id), c = s(h, a);\n g && n.hasElement(g) && c.hasSwiped && this.emit(Ue, {\n view: n,\n direction: c.direction\n }), this._viewPointerPositionLog.set(n.id, []), this._viewIsPointerDownMap.set(n.id, !1);\n });\n function s(n, a) {\n const l = {\n up: u.sub(new u(n.x, n.y - 1), n),\n down: u.sub(new u(n.x, n.y + 1), n),\n left: u.sub(new u(n.x - 1, n.y), n),\n right: u.sub(new u(n.x + 1, n.y), n)\n }, h = u.sub(a, n).unitVector, g = [\n \"up\",\n \"down\",\n \"left\",\n \"right\"\n ], c = [\n h.dot(l.up),\n h.dot(l.down),\n h.dot(l.left),\n h.dot(l.right)\n ], p = Math.max(...c), f = c.indexOf(p), V = g[f], w = u.sub(a, n).magnitude;\n return {\n hasSwiped: h.dot(l[V]) * w > 30,\n direction: V\n };\n }\n });\n }\n}\no(Ye, \"pluginName\", \"SwipeEventPlugin\");\nclass Xe {\n constructor(t) {\n o(this, \"view\"), this.props = t, this.view = t.view;\n }\n}\nclass je extends wt {\n subscribeToEvents(t) {\n t.subscribeToEvent(ft, ({ x: e, y: i, target: s }) => {\n this.getViews().forEach((n) => {\n const a = s, l = n.element === a || n.element.contains(a);\n n.intersects(e, i) && l && this.emit(Xe, {\n view: n\n });\n });\n });\n }\n}\no(je, \"pluginName\", \"ClickEventPlugin\");\nconst Ke = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n PointerClickEvent: ft,\n PointerDownEvent: ht,\n PointerMoveEvent: lt,\n PointerUpEvent: ut\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction Ge(r) {\n let t = Yt(r) || window;\n t === document.body && (t = window);\n let e = 0, i = 0, s = !1, n = () => {\n };\n return t.addEventListener(\"scroll\", () => {\n s && n();\n }), {\n container: t,\n onScroll(a) {\n n = a;\n },\n startScrollTracking() {\n s || (e = t instanceof Element ? t.scrollTop : t.scrollY, i = t instanceof Element ? t.scrollLeft : t.scrollX, s = !0);\n },\n getScrollOffset() {\n const a = t instanceof Element ? t.scrollTop : t.scrollY;\n return {\n x: (t instanceof Element ? t.scrollLeft : t.scrollX) - i,\n y: a - e\n };\n },\n endScrollTracking() {\n e = 0, i = 0, s = !1;\n },\n width: t instanceof Element ? t.clientWidth : t.innerWidth,\n height: t instanceof Element ? t.clientHeight : t.innerHeight\n };\n}\nfunction Yt(r) {\n const e = r instanceof HTMLElement && window.getComputedStyle(r).overflowY, i = e !== \"visible\" && e !== \"hidden\";\n if (r) {\n if (i && r.scrollHeight >= r.clientHeight)\n return r;\n } else return null;\n return Yt(r.parentNode) || document.body;\n}\nclass nt {\n constructor(t) {\n P(this, \"data\");\n this.data = t.data;\n }\n}\nclass Xt {\n constructor(t) {\n P(this, \"data\");\n P(this, \"hasChanged\");\n this.data = t.data, this.hasChanged = t.hasChanged;\n }\n}\nclass jt {\n}\nclass Kt {\n constructor(t) {\n P(this, \"data\");\n this.data = t.data;\n }\n}\nfunction J(r) {\n return {\n map: new Map(r),\n array: Array.from(r).map(([e, i]) => ({ slotId: e, itemId: i })),\n object: Array.from(r).reduce(\n (e, [i, s]) => (e[i] = s, e),\n {}\n )\n };\n}\nfunction Ze(r) {\n if (r.map)\n return {\n map: new Map(r.map),\n array: Array.from(r.map).map(([e, i]) => ({\n slotId: e,\n itemId: i\n })),\n object: Array.from(r.map).reduce(\n (e, [i, s]) => (e[i] = s, e),\n {}\n )\n };\n if (r.object) {\n const t = { ...r.object };\n return {\n map: new Map(Object.entries(t)),\n array: Object.entries(t).map(([e, i]) => ({\n slotId: e,\n itemId: i\n })),\n object: t\n };\n } else {\n const t = [...r.array];\n return {\n map: new Map(t.map(({ slotId: e, itemId: i }) => [e, i])),\n array: t,\n object: t.reduce((e, { slotId: i, itemId: s }) => (e[i] = s, e), {})\n };\n }\n}\nconst N = (r) => {\n const t = r.useEventPlugin(Ut);\n t.on(Ht, $);\n const e = 20, i = 100;\n let s, n, a, l, h, g = null, c = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), f, V, w = null, b = null, T, C, H = !0, R, Q, tt, A, L = !1, x = !1, I = () => {\n }, O = !1, S = 0, z = 0;\n r.api({\n setEnabled(d) {\n H = d;\n },\n setData(d) {\n const m = Ze(d);\n c = new Map(m.map), p = new Map(c);\n },\n setAutoScrollOnDrag(d) {\n O = d;\n }\n });\n function D() {\n return {\n animation: s.data.configAnimation,\n continuousMode: typeof s.data.configContinuousMode < \"u\",\n manualSwap: typeof s.data.configManualSwap < \"u\",\n swapMode: s.data.configSwapMode,\n autoScrollOnDrag: O\n };\n }\n function U() {\n const d = D().animation;\n return d === \"dynamic\" ? {\n animator: \"dynamic\",\n config: {}\n } : d === \"spring\" ? {\n animator: \"spring\",\n config: {\n damping: 0.7,\n stiffness: 0.62\n }\n } : d === \"none\" ? {\n animator: \"instant\",\n config: {}\n } : {\n animator: \"instant\",\n config: {}\n };\n }\n function Y(d) {\n return () => {\n c = d, p = new Map(c);\n };\n }\n r.setup(() => {\n s = r.getView(\"root\"), a = r.getViews(\"slot\"), l = r.getViews(\"item\"), n = Ge(l[0].element), n.onScroll(() => {\n M();\n }), Q = D().continuousMode, tt = D().manualSwap, a.forEach((d) => {\n X(d);\n }), B(), p = new Map(c), requestAnimationFrame(() => {\n r.emit(Kt, { data: J(c) });\n });\n });\n function X(d) {\n const m = d.getChild(\"item\");\n m && et(m), c.set(\n d.element.dataset.swapySlot,\n m ? m.element.dataset.swapyItem : null\n );\n }\n function et(d) {\n const m = U();\n d.styles.position = \"relative\", d.styles.userSelect = \"none\", d.styles.webkitUserSelect = \"none\", d.position.setAnimator(m.animator, m.config), d.scale.setAnimator(m.animator, m.config), d.layoutTransition(!0), requestAnimationFrame(() => {\n const v = d.getChild(\"handle\");\n v ? (t.addView(v), v.styles.touchAction = \"none\") : (t.addView(d), d.styles.touchAction = \"none\");\n });\n }\n r.onViewAdded((d) => {\n if (r.initialized)\n if (d.name === \"item\") {\n l = r.getViews(\"item\");\n const m = d.getParent(\"slot\");\n X(m), B(), p = new Map(c), r.emit(nt, { data: J(c) });\n } else d.name === \"slot\" && (a = r.getViews(\"slot\"));\n });\n function B() {\n const d = U();\n r.getViews(\"root-child\").forEach((v) => {\n v.position.setAnimator(d.animator, d.config), v.scale.setAnimator(d.animator, d.config), v.layoutTransition(!0);\n });\n }\n function M() {\n if (!R) return;\n if (!f || !V) {\n const K = h.getScroll();\n f = R.pointerX - h.position.x + K.x, V = R.pointerY - h.position.y + K.y;\n }\n (!T || !C) && (T = h.size.width, C = h.size.height);\n const d = h.size.width / T, m = h.size.height / C, v = f * (d - 1), j = V * (m - 1), { x: y, y: W } = n.getScrollOffset();\n h.position.set(\n {\n x: R.x - v - (w || 0) + y,\n y: R.y - j - (b || 0) + W\n },\n h.scale.x !== 1 || h.scale.y !== 1\n );\n }\n r.subscribeToEvents((d) => {\n d.subscribeToEvent(Ke.PointerMoveEvent, ({ x: m, y: v }) => {\n n && (n.height - v <= i ? S = Math.max(\n 0,\n e * (1 - Math.min(n.height - v, i) / i)\n ) : v <= i ? S = -1 * Math.max(\n 0,\n e * (1 - Math.min(v, i) / i)\n ) : S = 0, n.width - m <= i ? z = Math.max(\n 0,\n e * (1 - Math.min(n.width - m, i) / i)\n ) : m <= i ? z = -1 * Math.max(\n 0,\n e * (1 - Math.min(m, i) / i)\n ) : z = 0);\n });\n }), r.update(() => {\n R != null && R.isDragging && O && n.container.scrollBy({ top: S, left: z });\n });\n function $(d) {\n if (!H || !d.hasMoved) return;\n const m = D().swapMode, v = d.view.name === \"handle\";\n if (h = v ? d.view.getParent(\"item\") : d.view, A || (A = h.getParent(\"slot\")), w === null && b === null) {\n const y = v ? d.view.position.initialX - d.view.position.x : 0, W = v ? d.view.position.initialY - d.view.position.y : 0;\n w = d.view.position.x - h.position.x - y, b = d.view.position.y - h.position.y - W;\n }\n const j = a.some(\n (y) => y.intersects(d.pointerX, d.pointerY)\n );\n d.isDragging ? (n.startScrollTracking(), L || (L = !0, r.emit(jt, {})), g === null && (g = new Map(c)), R = d, M(), a.forEach((y) => {\n var Ct;\n if (!y.intersects(d.pointerX, d.pointerY)) {\n y !== A && y.element.removeAttribute(\"data-swapy-highlighted\");\n return;\n }\n if (typeof y.element.dataset.swapyHighlighted > \"u\" && (y.element.dataset.swapyHighlighted = \"\"), !A || (m === \"stop\" || m !== \"drop\" && !Q) && !d.stopped)\n return;\n const W = y.element.dataset.swapySlot, K = (Ct = y.getChild(\"item\")) == null ? void 0 : Ct.element.dataset.swapyItem, ct = A.element.dataset.swapySlot, St = h.element.dataset.swapyItem;\n if (!W || !ct || !St)\n return;\n const q = new Map(c);\n q.set(W, St), K ? q.set(ct, K) : q.set(ct, null), I = Y(new Map(q)), gt(q, p) || (!tt && m !== \"drop\" && I(), A = null, m !== \"drop\" && r.emit(nt, { data: J(q) }));\n }), l.forEach((y) => {\n y.styles.zIndex = y === h ? \"2\" : \"\";\n })) : (a.forEach((y) => {\n y.element.removeAttribute(\"data-swapy-highlighted\");\n }), h.position.reset(), A = null, f = null, V = null, T = null, C = null, R = null, w = null, b = null, L = !1, m === \"drop\" && (j || (I = Y(new Map(c))), I(), r.emit(nt, { data: J(c) })), I = () => {\n }, x = !gt(c, g), r.emit(Xt, {\n data: J(c),\n hasChanged: x\n }), x = !1, g = null, n.endScrollTracking()), requestAnimationFrame(() => {\n M();\n });\n }\n};\nN.pluginName = \"Swapy\";\nN.scope = \"root\";\nlet F;\nfunction Je() {\n return F ? (F.updatePlugin(N), F) : (F = He(), F.addPlugin(N), F.run(), F);\n}\nconst Qe = {\n animation: \"dynamic\",\n continuousMode: !0,\n manualSwap: !1,\n swapMode: \"hover\",\n autoScrollOnDrag: !1\n};\nfunction ti(r) {\n let t = !0;\n const e = r.querySelectorAll(\"[data-swapy-slot]\");\n return e.length === 0 && (console.error(\"There are no slots defined in your root element:\", r), t = !1), e.forEach((i) => {\n const s = i, n = s.dataset.swapySlot;\n (!n || n.length === 0) && (console.error(i, \"does not contain a slotId using data-swapy-slot\"), t = !1);\n const a = s.children;\n a.length > 1 && (console.error(\n \"slot:\",\n `\"${n}\"`,\n \"cannot contain more than one element\"\n ), t = !1);\n const l = a[0];\n l && (!l.dataset.swapyItem || l.dataset.swapyItem.length === 0) && (console.error(\n \"slot:\",\n `\"${n}\"`,\n \"does not contain an element with item id using data-swapy-item\"\n ), t = !1);\n }), t;\n}\nfunction ei(r, t = {}) {\n const e = Qt();\n return r.dataset.velPluginKey = e, r.dataset.velPlugin = \"Swapy\", r.dataset.velView = \"root\", r.dataset.velDataConfigAnimation = t.animation, r.dataset.velDataConfigSwapMode = t.swapMode, t.continuousMode && (r.dataset.velDataConfigContinuousMode = \"true\"), t.manualSwap && (r.dataset.velDataConfigManualSwap = \"true\"), Array.from(\n r.querySelectorAll(\"[data-swapy-slot]\")\n ).forEach((l) => {\n l.dataset.velView = \"slot\";\n }), Array.from(\n r.querySelectorAll(\"[data-swapy-item]\")\n ).forEach((l) => {\n l.dataset.velView = \"item\", l.dataset.velLayoutId = l.dataset.swapyItem;\n const h = l.querySelector(\"[data-swapy-handle]\");\n h && (h.dataset.velView = \"handle\");\n }), Array.from(\n r.querySelectorAll(\"[data-swapy-text]\")\n ).forEach((l) => {\n l.dataset.velLayoutPosition = \"\";\n }), Array.from(\n r.querySelectorAll(\"[data-swapy-exclude]\")\n ).forEach((l) => {\n l.dataset.velIgnore = \"\";\n }), e;\n}\nfunction ii(r) {\n const t = Array.from(\n r.querySelectorAll(\"[data-swapy-slot]:not([data-vel-view])\")\n );\n t.forEach((i) => {\n i.dataset.velView = \"slot\";\n });\n const e = Array.from(\n r.querySelectorAll(\"[data-swapy-item]:not([data-vel-view])\")\n );\n return e.forEach((i) => {\n i.dataset.velView = \"item\", i.dataset.velLayoutId = i.dataset.swapyItem;\n const s = i.querySelector(\"[data-swapy-handle]\");\n s && (s.dataset.velView = \"handle\"), Array.from(\n i.querySelectorAll(\"[data-swapy-text]\")\n ).forEach((l) => {\n l.dataset.velLayoutPosition = \"\";\n }), Array.from(\n i.querySelectorAll(\"[data-swapy-exclude]\")\n ).forEach((l) => {\n l.dataset.velIgnore = \"\";\n });\n }), e.length > 0 || t.length > 0;\n}\nfunction ri(r, t = {}) {\n if (!r)\n throw new Error(\n \"Cannot create a Swapy instance because the element you provided does not exist on the page!\"\n );\n const e = { ...Qe, ...t }, i = r;\n if (!ti(i))\n throw new Error(\n \"Cannot create a Swapy instance because your HTML structure is invalid. Fix all above errors and then try!\"\n );\n const s = ei(i, e), n = new si(i, s, e);\n return {\n onSwap(a) {\n n.setSwapCallback(a);\n },\n onSwapEnd(a) {\n n.setSwapEndCallback(a);\n },\n onSwapStart(a) {\n n.setSwapStartCallback(a);\n },\n enable(a) {\n n.setEnabled(a);\n },\n destroy() {\n n.destroy();\n },\n setData(a) {\n n.setData(a);\n }\n };\n}\nclass si {\n constructor(t, e, i) {\n P(this, \"_rootEl\");\n P(this, \"_veloxiApp\");\n P(this, \"_slotElMap\");\n P(this, \"_itemElMap\");\n P(this, \"_swapCallback\");\n P(this, \"_swapEndCallback\");\n P(this, \"_swapStartCallback\");\n P(this, \"_previousMap\");\n P(this, \"_pluginKey\");\n this._rootEl = t, this._veloxiApp = Je(), this._slotElMap = this._createSlotElMap(), this._itemElMap = this._createItemElMap(), this.setAutoScrollOnDrag(i.autoScrollOnDrag), this._pluginKey = e, this._veloxiApp.onPluginEvent(\n N,\n Kt,\n ({ data: s }) => {\n this._previousMap = s.map;\n },\n e\n ), this._veloxiApp.onPluginEvent(\n N,\n nt,\n (s) => {\n var n;\n this._previousMap && gt(this._previousMap, s.data.map) || (i.manualSwap || this._applyOrder(s.data.map), this._previousMap = s.data.map, (n = this._swapCallback) == null || n.call(this, s));\n },\n e\n ), this._veloxiApp.onPluginEvent(\n N,\n Xt,\n (s) => {\n var n;\n (n = this._swapEndCallback) == null || n.call(this, s);\n },\n e\n ), this._veloxiApp.onPluginEvent(\n N,\n jt,\n () => {\n var s;\n (s = this._swapStartCallback) == null || s.call(this);\n },\n e\n ), this.setupMutationObserver();\n }\n setupMutationObserver() {\n new MutationObserver((e) => {\n e.some((i) => i.type === \"childList\") && ii(this._rootEl) && (this._slotElMap = this._createSlotElMap(), this._itemElMap = this._createItemElMap());\n }).observe(this._rootEl, {\n childList: !0,\n subtree: !0\n });\n }\n setData(t) {\n try {\n this._veloxiApp.getPlugin(\n \"Swapy\",\n this._pluginKey\n ).setData(t);\n } catch {\n }\n }\n destroy() {\n this._veloxiApp.destroy(\"Swapy\");\n }\n setEnabled(t) {\n requestAnimationFrame(() => {\n try {\n this._veloxiApp.getPlugin(\n \"Swapy\",\n this._pluginKey\n ).setEnabled(t);\n } catch {\n }\n });\n }\n setAutoScrollOnDrag(t) {\n requestAnimationFrame(() => {\n try {\n this._veloxiApp.getPlugin(\n \"Swapy\",\n this._pluginKey\n ).setAutoScrollOnDrag(t);\n } catch {\n }\n });\n }\n setSwapCallback(t) {\n this._swapCallback = t;\n }\n setSwapEndCallback(t) {\n this._swapEndCallback = t;\n }\n setSwapStartCallback(t) {\n this._swapStartCallback = t;\n }\n _applyOrder(t) {\n Array.from(t.keys()).forEach((e) => {\n var a;\n if (t.get(e) === ((a = this._previousMap) == null ? void 0 : a.get(e)))\n return;\n const i = t.get(e);\n if (!i) return;\n const s = this._slotElMap.get(e), n = this._itemElMap.get(i);\n !s || !n || (s.innerHTML = \"\", s.appendChild(n));\n });\n }\n _createSlotElMap() {\n return Array.from(\n this._rootEl.querySelectorAll(\"[data-swapy-slot]\")\n ).reduce((t, e) => (t.set(e.dataset.swapySlot, e), t), /* @__PURE__ */ new Map());\n }\n _createItemElMap() {\n return Array.from(\n this._rootEl.querySelectorAll(\"[data-swapy-item]\")\n ).reduce((t, e) => (t.set(e.dataset.swapyItem, e), t), /* @__PURE__ */ new Map());\n }\n}\nexport {\n ri as createSwapy\n};\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createSwapy } from \"swapy\"\nimport { put } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static targets = [\"container\"]\n\n connect() {\n const container = this.hasContainerTarget ? this.containerTarget : this.element\n const items = container.querySelectorAll(\"[data-swapy-item]\")\n\n this.positions = Array.from(items).map(slot => slot.dataset.swapyItem)\n this.itemId = null\n\n this.swapy = createSwapy(container, { animation: \"dynamic\" })\n this.swapy.onSwap(this.handleSwap) // Handle swap event\n }\n\n async release(event) {\n this.itemId = event.params.id\n const url = event.params.url\n const newItemPosition = parseInt(this.positions.findIndex(id => id === this.itemId.toString()))\n const payload = { position: newItemPosition }\n await put(url, { body: JSON.stringify(payload), responseKind: \"json\" })\n }\n\n handleSwap = event => {\n this.positions = Object.values(event.data.object)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"reveal\"\nexport default class extends Controller {\n static targets = [\"revealable\", \"openButton\", \"closeButton\"]\n\n toggle(event) {\n if (this.hasOpenButtonTarget) this.openButtonTarget.classList.toggle(\"hidden\")\n if (this.hasCloseButtonTarget) this.closeButtonTarget.classList.toggle(\"hidden\")\n\n const target = this.hasRevealableTarget ? this.revealableTarget : document.getElementById(event.params.elementId)\n target.classList.toggle(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"button\", \"dropdown\"]\n\n toggle (event, shouldHide) {\n let hidden = !!shouldHide ? shouldHide : this.dropdownTarget.classList.contains(\"hidden\")\n\n this.dropdownTarget.classList.toggle(\"hidden\", !hidden)\n this.dropdownTarget.setAttribute(\"aria-expanded\", !hidden.toString())\n\n hidden ? addEventListener(\"click\", this.hide, true) : removeEventListener(\"click\", this.hide, true)\n }\n\n hide = event => {\n if (!this.buttonTarget.contains(event.target)) this.toggle(true)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"mobileMenu\", \"menuIcon\", \"closeIcon\"]\n \n toggle () {\n this.mobileMenuTarget.classList.toggle(\"hidden\")\n this.menuIconTarget.classList.toggle(\"hidden\")\n this.closeIconTarget.classList.toggle(\"hidden\")\n }\n}\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nexport { Rails as default };\n","import { Controller } from \"@hotwired/stimulus\"\nimport { FetchRequest } from \"@rails/request.js\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n static targets = [\"button\", \"spinner\"]\n static values = {\n url: String,\n appId: String,\n payload: String,\n method: String,\n followRedirect: Boolean\n }\n\n async perform () {\n this.spinnerTarget.classList.add(\"animate-spin\")\n\n const payload = JSON.parse(this.payloadValue)\n const formData = new FormData()\n\n for (var key in payload) {\n formData.append(key, payload[key])\n }\n\n Rails.ajax({\n type: this.methodValue,\n url: this.urlValue,\n data: formData,\n success: () => {\n this.spinnerTarget.classList.remove(\"animate-spin\")\n }\n })\n\n // const request = new FetchRequest('post', '/apps/1/connect', {\n // body: JSON.stringify({ name: 'Request.JS' })\n // })\n // const response = await request.perform()\n\n // if (response.ok) {\n // console.log(\"OK\")\n // }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst UP = 38\nconst DOWN = 40\nconst ENTER = 13\nconst NAVIGATORS = [UP, DOWN, ENTER]\n\nexport default class extends Controller {\n static targets = [\"input\", \"reference\", \"results\", \"result\", \"resultTemplate\"]\n static values = {\n kind: { type: String, default: \"get\" },\n response: { type: String, default: \"json\" },\n payload: { type: Object, default: {} },\n endpointUrl: String,\n destinationUrl: String,\n debounce: { type: Boolean, default: false },\n enterAction: { type: String, default: \"select\" }, // \"select\", \"destination\",\n displayAttribute: String\n }\n\n connect () {\n this.isLoading = false\n this.selectedResultIndex = -1\n }\n\n async fetchResults (event) {\n if (this.query === \"\") {\n this.clear()\n return\n }\n\n this.isLoading = true\n const response = await fetch(this.endpointUrlValue)\n\n if (response.ok) {\n this.resultsTarget.innerHTML = \"\"\n if (this.responseValue === \"json\") {\n const decodedResponse = await response.json()\n this.presentJsonResponse(decodedResponse)\n }\n } else {\n return\n }\n this.isLoading = false\n }\n\n navigate (event) {\n if (NAVIGATORS.includes(event.keyCode)) {\n event.keyCode === ENTER ? this.handleEnter() : this.handleDirection(event)\n } else {\n return\n }\n }\n\n handleEnter () {\n if (this.enterActionValue === \"select\") {\n } else {\n }\n }\n\n handleDirection (event) {\n if (event.keyCode === UP) {\n this.selectedResultIndex -= 1\n } else {\n this.selectedResultIndex += 1\n }\n }\n\n presentJsonResponse (response) {\n response.forEach(result => {\n let clone = this.resultTemplateTarget.content.cloneNode(true)\n clone.querySelector(\"li\").innerHTML = result[this.displayAttributeValue]\n this.resultsTarget.appendChild(clone)\n })\n this.resultsTarget.classList.toggle(\"hidden\", false)\n }\n\n clear () {\n this.resultsTarget.classList.toggle(\"hidden\", true)\n this.resultsTarget.innerHTML = \"\"\n }\n \n get query () {\n return this.inputTarget.value\n }\n}\n","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 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 \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 `` and `` 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\";\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\";","import { Controller } from \"@hotwired/stimulus\"\nimport { createPopper } from '@popperjs/core';\n// import tippy from 'tippy.js';\n// import 'tippy.js/dist/tippy.css';\n\n\nexport default class extends Controller {\n static targets = [\"tooltip\", \"reference\"]\n static values = {\n content: String\n }\n\n connect () {\n // tippy(this.referenceTarget, {\n // content: this.contentValue,\n // placement: \"top\"\n // })\n }\n\n pop () {\n createPopper(this.referenceTarget, this.tooltipTarget, {\n placement: \"top-end\"\n })\n this.tooltipTarget.classList.toggle(\"hidden\")\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"slide\" ]\n static values = { index: Number }\n\n next() {\n this.indexValue++\n if (this.indexValue === this.slideTargets.length) { this.indexValue -= this.slideTargets.length }\n }\n\n previous() {\n this.indexValue--\n if (this.indexValue < 0) { this.indexValue += this.slideTargets.length }\n }\n\n indexValueChanged() {\n this.showCurrentSlide()\n }\n\n showCurrentSlide() {\n this.slideTargets.forEach((element, index) => {\n element.hidden = index != this.indexValue\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n scroll (event) {\n event.preventDefault()\n\n document.querySelector(this.element.getAttribute(\"href\")).scrollIntoView({\n behavior: \"smooth\"\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"modal\"]\n static values = {\n callback: String\n }\n\n keyboardClear (event) {\n if (event.code === \"Escape\") this.clear()\n }\n\n backgroundClear (event) {\n if (!this.modalTarget.contains(event.target)) this.clear()\n }\n\n submitEnd (event) {\n if (event.detail.success) {\n if (!!this.callbackValue && this.callbackValue === \"app_connection\")\n this.dispatch(\"app-connect-success\", { detail: { performRequest: false } })\n this.clear()\n }\n }\n\n clear () {\n this.element.remove()\n }\n}\n","/*!\nTurbo 8.0.4\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 * \n * \n * Show all expanded messages in this frame.\n * \n *\n *
\n * Show response from this form within this frame.\n *
\n *
\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 /**\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\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 isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/)\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) && isHTML(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\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 = getMetaContent(\"csp-nonce\");\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 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 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(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n }\n\n return true\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\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,\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;\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, _element, _submitter) {\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 answer = await FormSubmission.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 this.submitter?.setAttribute(\"disabled\", \"\");\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 this.submitter?.removeAttribute(\"disabled\");\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 if (submitter?.hasAttribute(\"formtarget\") || form.hasAttribute(\"target\")) {\n const target = submitter?.getAttribute(\"formtarget\") || form.target;\n\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\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 = `Content missing`;\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.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\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 respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return 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)) {\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 constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\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 const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\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\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 if (this.cspNonce) {\n element.nonce = this.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 get cspNonce() {\n return getMetaContent(\"csp-nonce\")\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 this.frame = await nextRepaint();\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 }\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\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(/]*>|>)([\\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(\"\", \"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>} 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>} 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\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 MorphRenderer extends PageRenderer {\n async render() {\n if (this.willRender) await this.#morphBody();\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n // Private\n\n async #morphBody() {\n this.#morphElements(this.currentElement, this.newElement);\n this.#reloadRemoteFrames();\n\n dispatch(\"turbo:morph\", {\n detail: {\n currentElement: this.currentElement,\n newElement: this.newElement\n }\n });\n }\n\n #morphElements(currentElement, newElement, morphStyle = \"outerHTML\") {\n this.isMorphingTurboFrame = this.#isFrameReloadedWithMorph(currentElement);\n\n Idiomorph.morph(currentElement, newElement, {\n morphStyle: morphStyle,\n callbacks: {\n beforeNodeAdded: this.#shouldAddElement,\n beforeNodeMorphed: this.#shouldMorphElement,\n beforeAttributeUpdated: this.#shouldUpdateAttribute,\n beforeNodeRemoved: this.#shouldRemoveElement,\n afterNodeMorphed: this.#didMorphElement\n }\n });\n }\n\n #shouldAddElement = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n #shouldMorphElement = (oldNode, newNode) => {\n if (oldNode instanceof HTMLElement) {\n if (!oldNode.hasAttribute(\"data-turbo-permanent\") && (this.isMorphingTurboFrame || !this.#isFrameReloadedWithMorph(oldNode))) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: oldNode,\n detail: {\n newElement: newNode\n }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n #shouldUpdateAttribute = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", { cancelable: true, target, detail: { attributeName, mutationType } });\n\n return !event.defaultPrevented\n }\n\n #didMorphElement = (oldNode, newNode) => {\n if (newNode instanceof HTMLElement) {\n dispatch(\"turbo:morph-element\", {\n target: oldNode,\n detail: {\n newElement: newNode\n }\n });\n }\n }\n\n #shouldRemoveElement = (node) => {\n return this.#shouldMorphElement(node)\n }\n\n #reloadRemoteFrames() {\n this.#remoteFrames().forEach((frame) => {\n if (this.#isFrameReloadedWithMorph(frame)) {\n this.#renderFrameWithMorph(frame);\n frame.reload();\n }\n });\n }\n\n #renderFrameWithMorph(frame) {\n frame.addEventListener(\"turbo:before-frame-render\", (event) => {\n event.detail.render = this.#morphFrameUpdate;\n }, { once: true });\n }\n\n #morphFrameUpdate = (currentElement, newElement) => {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n this.#morphElements(currentElement, newElement.children, \"innerHTML\");\n }\n\n #isFrameReloadedWithMorph(element) {\n return element.src && element.refresh === \"morph\"\n }\n\n #remoteFrames() {\n return Array.from(document.querySelectorAll('turbo-frame[src]')).filter(frame => {\n return !frame.closest('[data-turbo-permanent]')\n })\n }\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 ? MorphRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, PageRenderer.renderElement, 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, ErrorRenderer.renderElement, 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 drive = true\n enabled = true\n progressBarDelay = 500\n started = false\n formMode = \"on\"\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) {\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 this.progressBarDelay = delay;\n }\n\n setFormMode(mode) {\n this.formMode = 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 (this.formMode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (this.formMode == \"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 (this.drive || 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 session.setProgressBarDelay(delay);\n}\n\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n session.setFormMode(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 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 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 { src } = this.element;\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.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 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\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, 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 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 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 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 this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n },\n\n update() {\n this.targetElements.forEach((targetElement) => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n//