{"version":3,"mappings":"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","names":["prototype","submitter","validateSubmitter","form","raise","errorConstructor","message","name","submittersByForm","findSubmitterFromClickTarget","target","element","candidate","clickCaptured","event","prototypeOfSubmitEvent","FrameLoadingStyle","_FrameElement","__publicField","value","frameLoadingStyleFromString","_b","_a","FrameElement","style","drive","activateScriptElement","createdScriptElement","cspNonce","getCspNonce","copyElementAttributes","destinationElement","sourceElement","createDocumentFragment","html","template","dispatch","eventName","cancelable","detail","cancelEvent","nextRepaint","nextEventLoopTick","nextAnimationFrame","resolve","nextMicrotask","parseHTMLDocument","unindent","strings","values","lines","interpolate","match","indent","line","result","string","i","uuid","_","getAttribute","attributeName","elements","hasAttribute","markAsBusy","clearBusyState","waitForLoad","timeoutInMilliseconds","onComplete","getHistoryMethodForAction","action","isAction","getVisitAction","getMetaElement","getMetaContent","nonce","content","setMetaContent","findClosestRecursively","selector","elementIsFocusable","queryAutofocusableElement","elementOrDocumentFragment","around","callback","reader","before","after","doesNotTargetIFrame","findLinkFromClickTarget","getLocationForLink","link","expandURL","debounce","fn","delay","timeoutId","args","Config","config","__privateAdd","_submitter","__privateGet","__privateSet","forms","locatable","getAnchor","url","anchorMatch","getAction$1","getExtension","getLastPathComponent","isPrefixedBy","baseURL","prefix","getPrefix","locationIsVisitable","location","rootLocation","getRequestURL","anchor","toCacheKey","urlsAreEqual","left","right","getPathComponents","addTrailingSlash","FetchResponse$1","response","LimitedSet","maxSize","oldestValue","recentRequests","nativeFetch","fetchWithTurboHeaders","options","modifiedHeaders","requestUID","fetchMethodFromString","method","FetchMethod","fetchEnctypeFromString","encoding","FetchEnctype","FetchRequest$1","delegate","requestBody","enctype","_allowRequestToBeIntercepted","_willDelegateErrorHandling","_resolveRequestPromise","_value","body","buildResourceAndBody","fetchBody","fetchMethod","fetchOptions","__privateMethod","allowRequestToBeIntercepted_fn","error","willDelegateErrorHandling_fn","fetchResponse","FetchResponse","isSafe","mimeType","requestInterception","resource","searchParams","entriesExcludingFiles","mergeIntoURLSearchParams","entries","AppearanceObserver","lastEntry","StreamMessage","fragment","importStreamElements","streamElement","inertScriptElement","PREFETCH_DELAY","PrefetchCache","_prefetchTimeout","_prefetched","request","ttl","cacheTtl","prefetchCache","FormSubmissionState","FormSubmission","formElement","mustRedirect","getMethod","getAction","getFormAction","buildFormData","getEnctype","FetchRequest","initialized","requesting","confirmationMessage","stopping","stopped","token","getCookieValue","_request","responseSucceededWithoutRedirect","input","formData","cookieName","cookie","formElementAction","formAction","Snapshot","queryPermanentElementsAll","id","getPermanentElementById","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","node","FormSubmitObserver","eventTarget","submissionDoesNotDismissDialog","submissionDoesNotTargetIFrame","View","_resolveRenderPromise","_resolveInterceptionPromise","x","y","renderer","isPreview","shouldRender","willRender","shouldInvalidate","renderInterception","reason","direction","FrameView","LinkInterceptor","_event","LinkClickObserver","FormLinkClickObserver","originalEvent","type","turboFrame","turboAction","turboConfirm","Bardo","bardo","permanentElement","placeholder","createPlaceholderForPermanentElement","clone","Renderer","currentSnapshot","newSnapshot","_activeElement","reject","currentElement","newElement","FrameRenderer","destinationRange","frameElement","sourceRange","renderElement","block","readScrollLogicalPosition","behavior","readScrollBehavior","activatedScriptElement","defaultValue","Idiomorph","EMPTY_SET","defaults","noOp","elt","morph","oldNode","newContent","parseContent","normalizedContent","normalizeContent","ctx","createMorphContext","morphNormalizedContent","normalizedNewContent","oldHead","newHead","promises","handleHeadElement","morphChildren","bestMatch","findBestNodeMatch","previousSibling","nextSibling","morphedNode","morphOldNodeTo","insertSiblings","ignoreValueOfActiveElement","possibleActiveElement","isSoftMatch","syncNodeFrom","newParent","oldParent","nextNewChild","insertionPoint","newChild","removeIdsFromConsideration","isIdSetMatch","idSetMatch","findIdSetMatch","removeNodesBetween","softMatch","findSoftMatch","tempNode","removeNode","ignoreAttribute","attr","to","updateType","from","fromAttributes","toAttributes","fromAttribute","toAttribute","syncInputValue","syncBooleanAttribute","ignoreUpdate","fromValue","toValue","newHeadTag","currentHead","added","removed","preserved","nodesToAppend","headMergeStyle","srcToNewHeadNodes","newHeadChild","currentHeadElt","inNewContent","isReAppended","isPreserved","newNode","newElt","promise","_resolve","removedElement","mergeDefaults","finalConfig","createIdMap","node1","node2","getIdIntersectionCount","startInclusive","endExclusive","newChildPotentialIdCount","potentialMatch","otherMatchCount","potentialSoftMatch","siblingSoftMatchCount","parser","contentWithSvgsRemoved","htmlElement","dummyParent","stack","bestElement","score","newScore","scoreElement","isIdInConsideration","idIsWithinNode","targetNode","idSet","sourceSet","matchCount","populateIdMapForNode","idMap","nodeParent","idElements","current","oldContent","morphElements","callbacks","DefaultIdiomorphCallbacks","beforeNodeMorphed","_beforeNodeMorphed","mutationType","MorphingFrameRenderer","_ProgressBar","ProgressBar","HeadSnapshot","elementIsNoscript","elementWithoutNonce","outerHTML","details","elementType","elementIsTracked","matchedType","tracked","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","tagName","PageSnapshot","documentElement","head","headSnapshot","clonedElement","selectElements","clonedSelectElements","index","source","option","clonedPasswordInput","root","ViewTransitioner","_viewTransitionStarted","_lastOperation","useViewTransition","render","defaultOptions","TimingMetric","VisitState","SystemStatusCode","Direction","Visit","restorationIdentifier","historyChanged","referrer","snapshotHTML","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","actionForHistory","statusCode","isSuccessful","responseHTML","_response","redirected","_error","scrollPosition","metric","BrowserAdapter","session","visit","_visit","_formSubmission","CacheObserver","FrameRedirector","_shouldSubmit","_shouldRedirect","_findFrameElement","_location","shouldRedirect_fn","frame","findFrameElement_fn","shouldSubmit_fn","meta","History$1","turbo","restorationIndex","state","additionalData","restorationData","LinkPrefetchObserver","_cacheTtl","_isPrefetchable","_prefetchedLink","_enable","_tryToPrefetchRequest","_cancelRequestIfObsolete","_tryToUsePrefetchedRequest","isPrefetchable_fn","fetchRequest","cacheTtl_get","_cancelPrefetchRequest","cached","turboFrameTarget","unfetchableLink","linkToTheSamePage","linkOptsOut","nonSafeLink","eventPrevented","turboPrefetchParent","turboMethod","isUJS","Navigator","_getActionForFormSubmission","_getDefaultAction","formSubmission","visitOptions","getActionForFormSubmission_fn","currentAnchor","isRestorationToTop","oldURL","newURL","getDefaultAction_fn","PageStage","PageObserver","readyState","ScrollObserver","position","StreamMessageRenderer","getPermanentElementMapForFragment","withAutofocusFromFragment","withPreservedFocus","permanentElementsInDocument","permanentElementInDocument","elementInStream","generatedID","turboStreams","elementWithAutofocus","firstAutofocusableElementInStreams","willAutofocusId","elementToAutofocus","activeElementBeforeRender","activeElementAfterRender","restoreFocusTo","elementToFocus","nodeListOfStreamElements","StreamObserver","_started","fetchResponseFromEvent","fetchResponseIsStream","ErrorRenderer","replaceableElement","parentNode","PageRenderer","_setLanguage","setLanguage_fn","mergedHeadElements","newStylesheetElements","loadingElements","newHeadElements","elementList","lang","MorphingPageRenderer","canRefreshFrame","SnapshotCache","size","key","PageView","rendererClass","cachedSnapshot","Preloader","snapshotCache","_preloadAll","Cache","_setCacheControl","setCacheControl_fn","Session","History","_pageRefreshDebouncePeriod","adapter","requestId","isUnsafe","isStream","frameTarget","extendURLWithDeprecatedProperties","defaultPrevented","_snapshot","_isPreview","renderMethod","ev","newBody","timing","submitterIsNavigatable","container","withinFrame","deprecatedLocationPropertyDescriptors","cache","navigator$1","start","registerAdapter","connectStreamSource","disconnectStreamSource","renderStreamMessage","clearCache","setProgressBarDelay","setConfirmMethod","confirmMethod","setFormMode","mode","Turbo","TurboFrameMissingError","FrameController","_loadSourceURL","_loadFrameResponse","_navigateFrame","_handleUnvisitableFrameResponse","_willHandleFrameMissingFromResponse","_handleFrameMissingFromResponse","_throwFrameMissingError","_visitResponse","_formActionIsVisitable","_shouldInterceptNavigation","_isIgnoringChangesTo","_ignoringChangesToAttribute","_withCurrentNavigationElement","_fetchResponse","_currentFetchRequest","_resolveVisitPromise","_connected","_hasBeenLoaded","_ignoredAttributes","_shouldMorphFrame","loadSourceURL_fn","isIgnoringChangesTo_fn","refresh","src","document","loadFrameResponse_fn","handleUnvisitableFrameResponse_fn","shouldInterceptNavigation_fn","navigateFrame_fn","newFrame","_renderMethod","_newElement","pageSnapshot","activateElement","sourceURL","ignoringChangesToAttribute_fn","visit_fn","newFrameElement","willHandleFrameMissingFromResponse_fn","handleFrameMissingFromResponse_fn","withCurrentNavigationElement_fn","visitResponse_fn","throwFrameMissingError_fn","wrapped","getFrameElementById","formActionIsVisitable_fn","currentURL","StreamActions","e","targetElement","_StreamElement","_raise","c","existingChildren","newChildrenIds","actionFunction","raise_fn","StreamElement","StreamSourceElement","consumer","getConsumer","setConsumer","createConsumer","newConsumer","__vitePreload","subscribeTo","channel","mixin","subscriptions","walk","obj","acc","camel","m","TurboCableStreamSourceElement","data","signed_stream_name","snakeize","encodeMethodIntoRequestBody","isBodyInit","determineFetchMethod","formMethod","determineFormMethod","overrideMethod","top","bottom","auto","basePlacements","end","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","attributes","effect","_ref2","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","item","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","v","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","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","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","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","a","b","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","order","modifiers","map","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","mergeByName","merged","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","BOX_CLASS","CONTENT_CLASS","BACKDROP_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","TIPPY_DEFAULT_APPEND_TO","hasOwnProperty","getValueAtIndexOrReturn","isType","str","invokeWithArgsOrReturn","ms","timeout","arg","removeProperties","splitBySpaces","normalizeToArray","pushIfUnique","arr","unique","arrayFrom","removeUndefinedProps","div","isNodeList","isMouseEvent","isReferenceElement","getArrayOfElements","setTransitionDuration","els","el","setVisibilityState","getOwnerDocument","elementOrElements","_normalizeToArray","isCursorOutsideInteractiveBorder","popperTreeData","clientX","clientY","popperState","props","interactiveBorder","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","updateTransitionEndListener","box","listener","actualContains","_target$getRootNode","currentInput","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","now","onWindowBlur","activeElement","bindGlobalEventListeners","isBrowser","isIE11","createMemoryLeakWarning","txt","clean","spacesAndTabs","lineStartWithSpaces","getDevMessage","getFormattedMessage","visitedMessages","resetVisitedMessages","warnWhen","condition","_console","errorWhen","_console2","validateTargets","targets","didPassFalsyValue","didPassPlainObject","pluginProps","renderProps","defaultProps","defaultKeys","setDefaultProps","partialProps","validateProps","getExtendedPassedProps","passedProps","plugins","plugin","_name","getDataAttributeProps","propKeys","valueAsString","evaluateProps","out","prop","nonPluginProps","didPassUnknownProp","innerHTML","dangerouslySetInnerHTML","createArrowElement","setContent","getChildren","boxChildren","onUpdate","prevProps","nextProps","_getChildren","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","lastTriggerEvent","currentTransitionEndListener","onFirstUpdate","listeners","debouncedOnMouseMove","onMouseMove","currentTarget","popperInstance","clearDelayTimeouts","setProps","show","hideWithInteractivity","enable","disable","unmount","destroy","_props$render","pluginsHooks","hasAriaExpanded","addListeners","handleAriaExpandedAttribute","handleStyles","invokeHook","scheduleShow","getDocument","getNormalizedTouchSettings","touch","getIsCustomTouchBehavior","getIsDefaultRenderFn","_instance$props$rende","getCurrentTarget","getDefaultTemplateChildren","getDelay","isShow","fromHide","hook","shouldInvokePropsHook","pluginHooks","_instance$props","handleAriaContentAttribute","aria","nodes","currentValue","nextValue","cleanupInteractiveMouseListeners","onDocumentPress","actualTarget","removeDocumentPress","onTouchMove","onTouchStart","addDocumentPress","doc","onTransitionedOut","duration","onTransitionEnd","onTransitionedIn","on","eventType","handler","onTrigger","onMouseLeave","onBlurOrFocusOut","removeListeners","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","getNestedPopperTree","_instance$popperInsta","shouldBail","createPopperInstance","destroyPopperInstance","_instance$props2","popperOptions","getReferenceClientRect","moveTransition","computedReference","tippyModifier","_getDefaultTemplateCh","mount","appendTo","_getNormalizedTouchSe","touchValue","touchDelay","nestedPopper","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","_getDefaultTemplateCh2","_instance$popperInsta2","_getDefaultTemplateCh3","_box","_content","isAlreadyHidden","_getDefaultTemplateCh4","tippy","optionalProps","isSingleContentElement","isMoreThanOneReferenceElement","instances","TooltipManager","activeTooltips","addTooltip","removeTooltip","hideAll","initAllTooltips","initTooltips","dataset","tippyPlacement","tippyTrigger","tippyOffset","tippyInteractive","tippyAllowHtml","tippyTargetContent","tippyContent","tippyTemplate","tippyToggleClass","enhanceWithToggleClass","toggleClass","trigger","handleClickInsideTooltip","originalOnShow","originalOnHide","className","_sfc_main","inject","approvalType","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","_ctx","$setup","ticketType","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","$data","_normalizeClass","_createTextVNode","_toDisplayString","$options","$props","_cache","$event","_createCommentVNode","t","useI18n","__props","summary","hideModal","organizationId","dataSpaceSlug","ticketId","onSubmit","actionReq","csrfToken","buttons","reactive","actionButton","computed","Modal","Instructions","Summary","ApprovalOptions","Actions","closeModal","open","newValue","resp","tasks","_hoisted_7","_hoisted_9","_createBlock","_component_Modal","_createVNode","_component_Instructions","_hoisted_8","_component_Summary","_component_ApprovalOptions","_component_Actions","__default__","ref","provide","onMounted","assignStaticValues","onOpen","onBeforeUnmount","resetState","payload","setup","modalElement","app","createApp","AttributeExtractionTicketApprovalModal","useTranslations","extractionType","toRef","projectCount","fileCount","isSelectionExtraction","isWholeScopeExtraction","selectionCount","labelString","isMultipleSelection","isMultipleNestedExtraction","isPlural","targetString","composition","getNameAndCount","getContext","isEmpty","opt","not","fun","params","includes","query","filterOptions","search","label","customLabel","stripGroups","flattenOptions","prev","curr","filterGroups","groupLabel","groups","group","groupOptions","flow","fns","f","multiselectMixin","normalizedSearch","selectedGroup","groupValues","val","optionsToAdd","shouldClose","spaceAbove","spaceBelow","pointerMixin","script","count","openBlock","createBlock","withKeys","withModifiers","renderSlot","createVNode","withDirectives","Fragment","renderList","toDisplayString","vShow","createCommentVNode","Transition","withCtx","createTextVNode","Multiselect","fileAttributesOptions","projectAttributesOptions","optionName","_hoisted_10","_component_Multiselect","remove","_withCtx","context","selectedTargetOptions","getEventData","fireEvent","extractAttributes","youWillExtractString","loadingStringWithPlaceholder","targetOptionsData","targetOptions","getIcon","getPathSegment","path","segment","segments","segmentIndex","removeQueryParams","enforceSelectedAttributes","isEditable","countDataUrl","isFetchingCountData","selectedAttributes","isInitializingAttributes","extractableAttrCount","total","optionId","targetType","watch","fetchCountData","nextTick","oldValue","onSelect","setValue","currentUrlParams","inputFileId","projectAttribute","fileAttribute","hydratePayload","selectAllCheckboxDom","selectedValuesDom","datasetAttr","getSelectorNames","isAllExtraction","selectAllCheckbox","detectIfIsAllExtraction","switchTargetIfAllCheckboxIsSelected","handleSelectionExtraction","multiTargetManager","AttributeExtractionConfirmationModal","initPluginJs","initMetisMenu","initLeftMenuCollapse","currentSIdebarSize","verticalButton","initMenuItemScroll","initActiveMenu","menuItems","pageUrl","parent2","parent3","parent4","parent5","sidebarMenu","activeMenu","verticalMenu","initModeSetting","lightDarkBtn","initAlert","alertDismiss","initDropdown","dropdownElem","dropupElem","dropStartElem","dropendElem","isShowDropMenu","isMenuInside","dropdownEvent","elem","place","subitem","modifyZIdexForToggleStickyParent","dismissDropdownMenu","menuEl","dropdownMenu","toggle_element","_d","_c","_f","_e","_h","_g","_j","_l","_k","initModalTrigger","modalTrigger","isModalShow","modalWindow","closeButton","subElem","modalElem","modalOverlay","subItem","initCollapseAction","triggers","elm","collapse","fnmap","cmd","initLtrRtl","isChangeMode","themeMode","initTabs","tabID","tabContents","activeElem","init","setupExtractionTicketApprovalModal","setupExtractionConfirmationModal","originalRender","tooltipElements","streamTarget","EventListener","eventOptions","binding","extendedEvent","extendEvent","leftIndex","rightIndex","stopImmediatePropagation","Dispatcher","application","eventListener","clearEventListeners","eventListenerMap","cacheKey","parts","defaultActionDescriptorFilters","descriptorPattern","parseActionDescriptorString","descriptorString","matches","keyFilter","parseEventTarget","parseEventOptions","eventTargetName","stringifyEventTarget","camelize","char","namespaceCamelize","capitalize","dasherize","tokenize","isSomething","object","hasProperty","allModifiers","Action","descriptor","schema","getDefaultEventNameForElement","eventFilter","filters","standardFilter","pattern","typecast","ctrl","alt","shift","defaultEventNames","Binding","actionEvent","actionDescriptorFilters","controller","passes","filter","identifier","ElementObserver","mutations","mutation","tree","processor","AttributeObserver","add","fetch","del","prune","Multimap","set","_values","SelectorObserver","selectors","_attributeName","matchedBefore","StringMapObserver","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","tokenString","parseTokenString","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","writer","rawValue","rawOldValue","changedMethodName","changedMethod","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","readInheritableStaticArrayValues","constructor","propertyName","ancestors","getAncestorsForConstructor","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getOwnStaticArrayValues","definition","OutletObserver","outletName","observer","_selector","outlet","hasOutlet","hasOutletController","_element","selectorObserver","attributeObserver","dependencies","module","identifiers","Context","scope","functionName","methodName","bless","shadow","getBlessedProperties","properties","shadowConstructor","extend","shadowProperties","getShadowProperties","blessedProperties","blessing","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","extendWithReflect","extended","testReflectExtension","blessDefinition","Module","ClassMap","DataMap","Guide","logger","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","targetDescriptor","revisedAttributeName","OutletSet","controllerElement","outletNames","outlets","controllerAttribute","Scope","ScopeObserver","scopesByIdentifier","referenceCount","Router","contexts","afterLoad","defaultSchema","objectFromEntries","n","array","memo","k","Application","domReady","controllerConstructor","rest","ClassPropertiesBlessing","classDefinition","propertiesForClassDefinition","classes","OutletPropertiesBlessing","outletDefinition","propertiesForOutletDefinition","getOutletController","getControllerAndEnsureConnectedScope","outletController","camelizedName","outletElement","TargetPropertiesBlessing","targetDefinition","propertiesForTargetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","propertiesForValueDefinitionPair","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","typeObject","hasType","hasDefault","fullObject","onlyType","onlyDefault","typeFromObject","typeFromDefaultValue","propertyPath","parseValueTypeDefinition","typeFromConstant","defaultValueForDefinition","defaultValuesByType","constantFromType","readers","writers","writeString","writeJSON","Controller$1","_identifier","_application","bubbles","Controller","accordion_controller","FileAttributeExtractionOnSettingPageController","organizationIdValue","dataSpaceSlugValue","fileAttributeId","extractFileAttributeButtonTarget","button","status","all_file_attribute_extraction_on_setting_page_controller","fileAttributeIds","ProjectAttributeExtractionOnSettingPageController","projectAttributeId","extractProjectAttributeButtonTarget","all_project_attribute_extraction_on_setting_page_controller","entityAttributeIds","entityAttributeId","cancelButton","attribute_extraction_prompt_form_controller","fileExtension","needUpdateAnalyzeModels","whiteLisModels","firstAvailableOption","attributes_extraction_controller","projectIdValue","projectId","selectedTargets","selectedTargetIds","file","attributeIds","isSingleFileEndpoint","urlParts","searchRecordId","fullUrl","isSingleProjExtraction","isMultipleProjExtraction","RequestInterceptor","interceptor","getCookie","cookies","compact","metaContent","stringEntriesFromFormData","mergeEntries","requestInterceptor","headers","baseHeaders","originalQuery","requestQuery","bodyIsAString","patch","auth_token_controller","bim_viewer_controller","objectId","DefaultViewerParams","viewer","LegacyViewer","CameraController","SelectionExtension","loader","SpeckleLoader","blur_controller","canvas_controller","boundingBox","highestScore","highestScoreIndex","firstHighlightBlockId","firstHighlightBlock","s","targetBoundingBox","page_number","pixelWidth","inchWidth","pixelHeight","inchHeight","top_left_x","top_left_y","styles","w","h","wrh","newWidth","newHeight","xOffset","yOffset","canvasOffset","tipCtx","mouseX","mouseY","hit","hitBoundingBox","formatedBoudingBox","mouseXValid","mouseYValid","textWidth","blockId","deltaX","deltaY","oldWidth","oldHeight","scale","scaleOffsetX","scaleOffsetY","chat_history_bar_controller","click_utility_controller","collapse_item_controller","collapsible_project_row_controller","row","collapsible_sidebar_container_controller","sidebarWrapperWidth","isObject","ssrDocument","ssrWindow","classesToTokens","deleteProps","getTranslate","matrix","curTransform","transformMatrix","curStyle","o","isNode","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","swiper","targetPosition","startPosition","startTime","time","dir","isOutOfBound","animate","progress","easeProgress","currentPosition","getSlideTransformEl","slideEl","elementChildren","showWarning","text","createElement","tag","elementOffset","clientTop","clientLeft","elementPrevAll","prevEls","elementNextAll","nextEls","elementStyle","elementIndex","elementParents","parents","elementTransitionEnd","fireCallBack","elementOuterSize","includeMargins","makeElementsArray","support","calcSupport","getSupport","deviceCached","calcDevice","_temp","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","major","minor","num","isWebView","isSafariBrowser","need3dFix","getBrowser","Resize","emit","animationFrame","resizeHandler","createObserver","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","ObserverFunc","observerUpdate","containerParents","eventsEmitter","events","priority","self","onceHandler","eventHandler","_len2","_key2","updateSize","updateSlides","getDirectionPropertyValue","wrapperEl","slidesEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","groupSize","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","minusOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","toggleSlideClasses","updateSlidesClasses","activeIndex","getFilteredSlide","activeSlide","prevSlide","nextSlide","processLazyPreloader","imageEl","slideSelector","lazyEl","unlazy","preload","amount","slidesPerView","activeColumn","preloadColumns","slideIndexLastInView","realIndex","getActiveIndexByTranslate","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","updateClickedSlide","pathEl","slideFound","update","getSwiperTranslate","currentTranslate","setTranslate","byController","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","step","transitionStart","transitionEnd","transition","slideTo","initial","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","slideToLoop","newIndex","targetSlideIndex","cols","centeredSlides","needLoopFix","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slideToIndex","loopCreate","slideRealIndex","initSlides","slidesPerGroup","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slidesToAdd","loopFix","byMousewheel","allowSlidePrev","allowSlideNext","loopedSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","currentSlideTranslate","diff","loopParams","loopDestroy","newSlidesOrder","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","found","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","touches","targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startY","preventDefault","shouldPreventDefault","targetTouch","pageX","pageY","diffX","diffY","touchAngle","touchesDiff","prevTouchesDirection","isLoop","allowLoopFix","evt","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","onResize","isVirtualLoop","onClick","onScroll","onLoad","capture","domMethod","swiperMethod","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","isEnabled","hasLoop","getBreakpoint","containerEl","currentHeight","points","point","minRatio","prepareClasses","resultClasses","classNames","addClasses","suffixes","removeClasses","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideRightEdge","checkOverflow$1","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","cls","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","lazyElements","deleteInstance","cleanStyles","newDefaults","modules","prototypeGroup","protoMethod","Virtual","cssModeTimeout","tempDOM","renderSlide","force","beforeInit","initialSlide","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","getSlideIndex","loopFrom","loopTo","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","domSlidesAssigned","Keyboard","handle","kc","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","sX","sY","pX","pY","handleMouseEnter","handleMouseLeave","animateSlider","newEvent","releaseScroll","targetElContainsTarget","delta","rtlFactor","positions","prevEvent","ignoreWheelEvents","firstEvent","snapToThreshold","createElementIfNotDefined","originalParams","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","nextEl","prevEl","onPrevClick","onNextClick","initButton","destroyButton","_s","isHidden","classesToSelector","Pagination","pfx","number","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","bulletActiveClass","onBulletClick","bullets","firstIndex","midIndex","classesToRemove","suffix","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","Scrollbar","isTouched","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","Parallax","elementsSelector","setTransform","p","opacity","rotate","currentOpacity","transform","currentScale","currentRotate","hostEl","parallaxEl","parallaxDuration","_swiper","Zoom","isScaling","fakeGestureTouched","fakeGestureMoved","evCache","gesture","image","velocity","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","maxRatio","imageMaxRatio","getScaleOrigin","getSlideSelector","eventWithinSlide","eventWithinZoomContainer","onGestureStart","originX","originY","onGestureChange","zoom","pointerIndex","cachedEv","onGestureEnd","allowTouchMoveTimeout","allowTouchMove","preventTouchMove","scaledWidth","scaledHeight","scaleRatio","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","zoomIn","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","slideWidth","slideHeight","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","getInterpolateFunction","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","controlElement","onControllerSwiper","A11y","liveRegion","preventFocusHandler","focusTargetSlideEl","visibilityChangedTimestamp","notify","notification","getRandomNumber","randomChar","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","updateNavigation","hasPagination","hasClickablePagination","updatePagination","initNavEl","wrapperId","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","isVisible","ariaLabelMessage","paths","slugify","getPathValues","urlOverride","pathArray","part","setHistory","currentState","scrollToSlide","setHistoryPopState","HashNavigation","slideWithHash","onHashChange","newHash","activeSlideEl","activeSlideHash","setHash","Autoplay","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","resume","calcTimeLeft","timeLeft","getSlideDelay","run","delayForce","currentSlideDelay","proceed","stop","pause","reset","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","Thumb","swiperCreated","onThumbClick","thumbsSwiper","clickedIndex","clickedSlide","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","autoScrollOffset","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","thumbs","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","freeMode","once","lastMoveEvent","velocityEvent","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","rows","fill","unsetSlides","updateSlide","newSlideOrderIndex","column","groupIndex","slideIndexInGroup","columnsInGroup","updateWrapperSize","roundLengths","onInit","appendElement","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","Manipulation","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","overwriteParamsResult","shadowEl","requireUpdateOnVirtual","effectTarget","effectParams","transformEl","effectVirtualTransitionEnd","transformElements","allSlides","getSlide","eventTriggered","transitionEndTarget","EffectFade","tx","ty","slideOpacity","EffectCube","createSlideShadows","isHorizontal","shadowBefore","shadowAfter","wrapperRotate","cubeShadowEl","slideAngle","tz","shadowAngle","scale1","scale2","zFactor","createShadow","shadowClass","shadowContainer","EffectFlip","rotateY","rotateX","EffectCoverflow","centerOffset","offsetMultiplier","translateZ","stretch","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","getTranslateValue","isCenteredSlides","margin","originalProgress","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","startTranslate","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","_Carousel","Carousel","carousel_controller","date_type_input_auto_complete_controller","datetime_type_input_auto_complete_controller","document_messages_container_controller","documentMessagesTarget","RoomController","typingAnimation","chatSubContainer","animation","bubbleArrow","chatContainer","isFromGpt","chatBubble","footerContainer","logContainer","messageContent","messageLog","message_from","debugModeIsOn","messages","chatMessages","doc_talk_controller","targetLink","targetBtn","roomId","first_message","chatHistoryBtnTarget","btn","listItem","wrapper","iconWrapper","icon","chatMessageBg","avatarContainer","avatar","messageContainer","messageBody","systemPromptsContainerTarget","excel_file_viewer_controller","file_move_panel_controller","folders","L","optionDom","appendToBody","file_preview_modal_controller","InputFilesPreviewModal","VueQueryPlugin","VueTippy","isForceShowHighlightBlocks","inputFilesWithInfo","fileButton","highlightBlockIds","attributesData","fileData","attributeSlugToInfo","fileName","fileExt","fileFrom","fileId","slug","highlightBlockScores","existingFileIndex","existingScoresMap","mergedHighlightBlockIds","mergedHighlightBlockScores","isClickedFile","currentPage","firstHighlightPage","sparkMd5","exports","factory","undefined$1","hex_chr","md5cycle","d","md5blk","md5blks","md5blk_array","md51","tail","tmp","lo","hi","md51_array","rhex","hex","clamp","begin","targetArray","sourceArray","toUtf8","utf8Str2ArrayBuffer","returnUInt8Array","buff","arrayBuffer2Utf8Str","concatenateArrayBuffers","first","second","hexToBinaryString","bytes","SparkMD5","contents","raw","ret","fileSlice","FileChecksum","binaryDigest","base64digest","getMetaValue","findElement","findElements","toArray","dispatchEvent","eventInit","BlobRecord","checksum","customHeaders","headerKey","responseType","direct_upload","BlobUpload","blob","DirectUpload","upload","DirectUploadController","hiddenInput","xhr","inputSelector","DirectUploadsController","controllers","startNextController","processingAttribute","submitButtonsByForm","started","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","inputs","submitForm","autostart","file_upload_section_controller","files","fileNames","totalNoOfFiles","totalNoOfProcessedFiles","performUpload","progressInPercent","fileBlobField","fileNameField","processUploadBatch","batch","fileSizeLimits","fileType","ext","fileSize","maxFileSize","fileReader","pdf","typedarray","batchsize","results","displayed","percentage","percentageText","flash_controller","form_controller","inline_form_controller","input_file_canvas_controller","entry","naturalWidth","naturalHeight","boundingBoxes","items","fontSize","fontFamily","angle","brElement","topLeftX","topLeftY","highlightBlockIndex","isInsideX","isInsideY","tooltipWidth","tooltipHeight","boxTop","boxLeft","containerRect","containerWidth","containerHeight","containerScrollTop","containerScrollLeft","frameWidth","frameLeftMargin","frameHeight","currentId","input_file_dae_viewer_controller","input_file_image_viewer_controller","ImageApp","input_file_menu_controller","input_file_pdf_viewer_controller","PdfApp","input_file_pdf_viewer_on_detail_page_controller","pageNumber","positional_text","isPresenting","input_file_status_controller","inputFileRow","td","inputFileCheckbox","input_file_tickets_selection_controller","selected","ticket","ticketIds","checkbox","selectBox","input_files_preview_controller","resultId","thumbnailsElement","attributeSlug","rowElement","nameElement","valueElement","selectedItemTarget","input_selector_controller","_activate","_deactivateOtherSelectors","_configureMultiFilesManager","_configureMultiProjectsManager","_itemInputElement","_handleFilesChanged","_setupItemCheckboxes","_resetOutlets","configureMultiFilesManager_fn","configureMultiProjectsManager_fn","resetOutlets_fn","activate_fn","existingInput","itemInputElement_fn","deactivateOtherSelectors_fn","currentController","setupItemCheckboxes_fn","handleFilesChanged_fn","itemIds","items_selector_controller","Turbo.visit","large_modal_base_controller","thumbnailTarget","imgTag","divTag","iframeTag","attributeRenderingTarget","resultValue","img","message_comment_controller","multifiles_manager_controller","_checkFileCheckbox","_enableFileCheckbox","_disableFileCheckbox","_enableButtons","_enableButton","_disableButton","_downloadFile","allSelected","fileCheckbox","checkFileCheckbox_fn","enableFileCheckbox_fn","folder","enableButtons_fn","disableFileCheckbox_fn","fileIdIndex","descendantFolderId","descendantFolderIdIndex","inputFileIds","return_url","downloadFile_fn","disableButton_fn","enableButton_fn","isPrimary","download_url","multiprojects_manager_controller","projectCheckbox","projectName","project","selectedProjectsValues","activeSelector","searchedItems","theRestOfTheItems","searched","selectedSearched","itemToRemove","itemToUncheck","itemToCheck","newSelectedArray","sibling","def","addedItem","previouslySelected","checked","itemsTemplate","multiselect_controller","hasSelectedItems","deselectTranslation","selectTranslation","isSelected","searchInput","allButtonContainer","checkAllButton","isClickOnSearchInput","isClickOnAllButtonBackground","navigation_controller","nested_form_controller","NestedForm","attributeTarget","attributeRow","_RailsNestedForm","RailsNestedForm","nested_form_text_controller","_updateAddButtonState","updateAddButtonState_fn","default_model_controller","sourceOption","idx","model","modelSelectorOptions","page_thumbnail_controller","_setupMouseEvents","_handleMouseMove","_handleMouseOut","_cleanupEventListeners","_showTooltip","_removeTooltip","_renderThumbnail","_setupCanvas","_calculateScaleAndPosition","_calculateFocusedView","_adjustHorizontalOffset","_adjustVerticalOffset","_drawImage","_drawHighlights","_getHighlightColor","_calculateHighlightDimensions","_updateHighlights","_getHighestScoredBlock","_findHighlightBlockAtPoint","_isPointInsideBlock","_getBlockScreenPosition","setupMouseEvents_fn","updateHighlights_fn","renderThumbnail_fn","removeTooltip_fn","cleanupEventListeners_fn","handleMouseMove_fn","handleMouseOut_fn","findHighlightBlockAtPoint_fn","tooltipContent","showTooltip_fn","getBlockScreenPosition_fn","tippyConfig","canvas","setupCanvas_fn","calculateScaleAndPosition_fn","drawImage_fn","highestScoredBlock","getHighestScoredBlock_fn","adjustedScale","adjustedOffsetX","adjustedOffsetY","calculateFocusedView_fn","page","blockX","blockY","blockWidth","blockHeight","verticalContext","horizontalContext","visibleWidth","visibleHeight","scaledImgWidth","scaledImgHeight","adjustHorizontalOffset_fn","adjustVerticalOffset_fn","drawHighlights_fn","getHighlightColor_fn","calculateHighlightDimensions_fn","pageContentIds","highestBlock","isInside","isPointInsideBlock_fn","imageX","imageY","screenX","screenY","polling_file_attribute_status_on_setting_page_controller","polling_project_attribute_status_on_setting_page_controller","ProjectSettingdropdownButtonController","itemRow","dom","stage","dotTyping","input_file_id","settingDropdownbuttonContainer","projectSettingDropdownButton","tooltipContainer","entityId","rowText","polling_project_status_controller","prompt_test_record_controller","logs","log","logDom","title","register_building_form_controller","required_fields_controller","_serializeForm","_enableSubmit","_disableSubmit","_handleFormChanged","_updateInputs","field","serializeForm_fn","enableSubmit_fn","updateInputs_fn","disableSubmit_fn","handleFormChanged_fn","serialized","currentFormData","scope_controller","scroll_to_bottom_controller","search_condition_controller","_disableSearchButton","_enableSearchButton","_setSearching","_updateUIForSearching","_startComposition","_endComposition","isTextarea","hasModifier","_handleSearchRecordsStateChange","disableSearchButton_fn","enableSearchButton_fn","setSearching_fn","updateUIForSearching_fn","isSearching","search_group_controller","mutationsList","searchGroupTarget","searchCondition","info","targetSelector","firstTargetValue","secondTargetValue","dateValueTarget","targetValue","targetSimilarity","search_group_entity_attribute_form_controller","selectedOptionAttributeType","isSimilaritySearch","attributeType","isShown","tableColumns","parsedTableColumns","tableColumn","search_group_range_field_controller","operator","isObject_1","freeGlobal","global","_freeGlobal","require$$0","freeSelf","_root","now_1","reWhitespace","trimmedEndIndex","_trimmedEndIndex","reTrimStart","baseTrim","_baseTrim","Symbol","_Symbol","objectProto","nativeObjectToString","symToStringTag","getRawTag","isOwn","unmasked","_getRawTag","objectToString","_objectToString","require$$1","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObjectLike","isObjectLike_1","symbolTag","isSymbol","isSymbol_1","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","other","isBinary","toNumber_1","FUNC_ERROR_TEXT","nativeMax","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","debounce_1","wordSplitor","search_group_string_type_search_field_controller","li","span","search_records_controller","_disableSubmitButton","_enableSubmitButton","_setFocused","_handleSearchConditionStateChange","disableSubmitButton_fn","enableSubmitButton_fn","setFocused_fn","isFocused","search_records_item_controller","maxLabelWidth","search_results_controller","_Dialog","Dialog","selectable_dialog_controller","templateKey","selectable_input_controller","templateId","sidebar_controller","_updateSidebarState","_toggleAnimation","_tabIsDirty","currentTabButton","selectedTab","currentTab","tab","tabIsDirty_fn","toggleAnimation_fn","updateSidebarState_fn","tabButton","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_typeof","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","version","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","off","getParentOrHost","closest","includeCTX","R_SPACE","selfOnly","appliedTransforms","matrixFn","find","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","children","Sortable","lastChild","last","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","indexOfObject","includeSelf","gotSelf","elemCSS","dst","isRectEqual","rect1","rect2","_throttleTimeout","throttle","_this","cancelThrottle","scrollBy","Polymer","$","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","expando","AnimationStateManager","animationStates","animationCallbackId","fromRect","childMatrix","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","repaint","PluginManager","sortable","eventNameGlobal","pluginName","modified","eventProperties","modifiedValue","rootEl","cloneEl","toEl","fromEl","oldIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","allEventProperties","_excluded","pluginEvent","parentEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","activeGroup","awaitingDragStarted","ignoreNextClick","sortables","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","pastFirstInvertThresh","isCircumstantialInvert","targetMoveDistance","ghostRelativeParent","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","dataTransfer","preventOnFilter","originalTarget","_saveInputCheckedState","criteria","dragStartFn","_disableDraggable","_nextTick","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","extra","completed","_onMove","changed","insertion","elLastChild","_ghostIsLast","_ghostIsFirst","firstChild","targetBeforeFirstSwap","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","dragIndex","moveVector","_unsilent","_cancelNextTick","_globalDragOver","_generateId","useAnimation","store","willInsertAfter","onMoveFn","retVal","firstElRect","childContainingRect","spacer","lastElRect","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","sum","autoScrolls","scrollEl","scrollRootEl","scrolling","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","AutoScrollPlugin","AutoScroll","clearPointerElemChangedInterval","clearAutoScrolls","autoScroll","ogElemScroller","newElem","isFallback","sens","scrollThisInstance","scrollCustomFn","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","Remove","parentSortable","sortable_controller","system_prompt_modal_controller","table_sorting_controller","toggle_password_controller","trim_controller","turbo_frame_reload_listeners_controller","turboFrameListenersContainer","extractionStatusElement","turbo_modal_controller","typing_animation_controller","textLength","vueModalIds","vue_modal_controller","modalId","CONTROLLER_FILENAME_REGEX","registerControllers","controllerModules","definitionsFromGlob","definitionFromEntry","controllerModule","identifierForGlobKey","logicalName","DebounceController","ThrottleController","alpineNames","useTransition","composableController","targetFromAttribute","leaveAfter","transitioned","hiddenClass","preserveOriginalClass","removeToClasses","controllerEnter","controllerLeave","controllerToggleTransition","enter","enterFromClasses","enterActiveClasses","enterToClasses","leaveToClasses","leave","leaveFromClasses","leaveActiveClasses","toggleTransition","initialClasses","activeClasses","endClasses","removeEndClasses","stashedClasses","afterTransition","initialState","datasetName","datasetAlpineName","_Notification","Notification","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","__vite_glob_0_15","__vite_glob_0_16","__vite_glob_0_17","__vite_glob_0_18","__vite_glob_0_19","__vite_glob_0_20","__vite_glob_0_21","__vite_glob_0_22","__vite_glob_0_23","__vite_glob_0_24","__vite_glob_0_25","__vite_glob_0_26","__vite_glob_0_27","__vite_glob_0_28","__vite_glob_0_29","__vite_glob_0_30","__vite_glob_0_31","__vite_glob_0_32","__vite_glob_0_33","__vite_glob_0_34","__vite_glob_0_35","__vite_glob_0_36","__vite_glob_0_37","__vite_glob_0_38","__vite_glob_0_39","__vite_glob_0_40","__vite_glob_0_41","__vite_glob_0_42","__vite_glob_0_43","__vite_glob_0_44","__vite_glob_0_45","__vite_glob_0_46","__vite_glob_0_47","__vite_glob_0_48","__vite_glob_0_49","__vite_glob_0_50","__vite_glob_0_51","__vite_glob_0_52","__vite_glob_0_53","__vite_glob_0_54","__vite_glob_0_55","__vite_glob_0_56","__vite_glob_0_57","__vite_glob_0_58","__vite_glob_0_59","__vite_glob_0_60","__vite_glob_0_61","__vite_glob_0_62","__vite_glob_0_63","__vite_glob_0_64","__vite_glob_0_65","__vite_glob_0_66","__vite_glob_0_67","__vite_glob_0_68","__vite_glob_0_69","__vite_glob_0_70","__vite_glob_0_71","__vite_glob_0_72","__vite_glob_0_73","__vite_glob_0_74","__vite_glob_0_75","__vite_glob_0_76","__vite_glob_0_77","__vite_glob_0_78","__vite_glob_0_79","assignDataset","records","record","mutate","useInputFilesGet","updateInputFiles","isCollapsible","isCollapsed","inputFile","useSetupInputFilesPreviewStore","scopeId","initialInputFileId","isThumbnailsEnabled","isPaginationEnabled","paginationPrevUrl","paginationNextUrl","isShowExtractedWords","isApprovalModeOn","isShowDownloadAndSettings","usePromptSettingStore","defineStore","isContentValid","isTableValid","active","isUsedInTicket","sourceAttribute","organizationSlug","projectAttributes","fileAttributes","returnUrl","fileSearchRecords","attributeExtractionRecords","sourceProjectIdToName","sourceAnalyzePositions","sourceAnalyzeModels","sourceAttributeTypes","attributeTypeUnchangeable","resources","sourceDataTypes","isNewAttributePage","canUpdate","canAccessScriptBasedPrompt","typeName","fileExtensions","fileExtensionGroup","availableModel","currentAnalyzeModelDisabled","removeExt","selectedProjectAttribute","sourceProjectAttributeId","targetProjectAttributeId","sourceIndex","selectedFileAttribute","sourceFileAttributeId","targetFileAttributeId","searchConditions","searchGroups","searchGroup","projectAttributeSlug","fileAttributeSlug","fileSearchRecordId","searchResults","inputFileIdToInputFileInfo","fileAttributeSlugToInfo","searchMode","keyword","topK","dataType","fileSearchRecord","attributeExtractionRecord","minValue","maxValue","similarity","weight","attributeExtractionRecordId","projectIndex","analyzePosition","zoomLevel","analyzeModel","attributeExtractionPrompt","attributeTypeId","sourceAttributeType","typeId","selectedTypeId","stringAttributeType","this","__WEBPACK_EXTERNAL_MODULE__976__","__webpack_modules__","__unused_webpack_module","sfc","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_exports__","Component","ToastPlugin","useToast","external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_","removeElement","createComponent","component","parentContainer","slots","vNode","Timer","mitt","bus","Componentvue_type_script_lang_js","newVal","exportHelper","globalProps","propsData","toggleActiveControl","control","destroyAttribute","fileFilterSet","fileExtensionsSet","fileAttributesSet","fileKeywordSearchSet","groupName","extractionSet","showPageFilterSectionTick","showContentFilterTick","showPromptSettingTick","changesNotSaved","backToSettingHandler","sendingUpdateOrCreateAttributeRequest","updateAttributeDisabled","updateOrCreateAttributeHandler","createAttribute","updateAttribute","attributeTypeKey","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","arr2","setRect","unsetRect","lastSwapEl","SwapPlugin","Swap","onMove","prevSwapEl","swapNodes","n1","n2","p1","p2","i2","multiDragElements","multiDragClones","lastMultiDragSelect","multiDragSortable","initialFolding","folding","dragStarted","dragEl$1","clonesFromRect","clonesHidden","MultiDragPlugin","MultiDrag","multiDragElement","dragged","insertMultiDragClones","cloneNowShown","cloneNowHidden","_ref6","_ref7","_this2","removeMultiDragElements","_ref8","_ref9","insertMultiDragElements","_ref10","dragRectAbsolute","clonesHiddenBefore","_ref11","dragMatrix","_ref12","currentIndex","multiDragIndex","_this3","oldIndicies","newIndicies","clonesInserted","elementsInserted","__WEBPACK_EXTERNAL_MODULE__8bbf__","__WEBPACK_EXTERNAL_MODULE_a352__","installedModules","getter","ns","wellKnownSymbol","TO_STRING_TAG","test","aFunction","that","toIndexedObject","nativeGetOwnPropertyNames","toString","windowNames","getWindowNames","it","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toPrimitive","has","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","O","P","fails","$reduce","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","callbackfn","classof","regexpExec","R","S","exec","DOMIterables","forEach","createNonEnumerableProperty","COLLECTION_NAME","Collection","CollectionPrototype","$forEach","getBuiltIn","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","V8_VERSION","SPECIES","METHOD_NAME","toInteger","integer","getOwnPropertyDescriptor","redefine","setGlobal","copyConstructorProperties","isForced","TARGET","GLOBAL","STATIC","FORCED","targetProperty","sourceProperty","internalObjectKeys","enumBugKeys","hiddenKeys","anObject","flags","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","toLength","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","searchString","process","versions","v8","Iterators","definePropertyModule","objectKeys","Properties","charAt","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","getInternalState","iterated","split","create","UNSCOPABLES","ArrayPrototype","MATCH","isRegExp","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","$filter","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","bind","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","C","argumentsLength","mapfn","mapping","iteratorMethod","$entries","argument","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","nativeReplace","maybeCallNative","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","rx","functionalReplace","fullUnicode","matchStr","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertySymbols","bitmap","flattenIntoArray","arraySpeciesCreate","sourceLen","A","CONVERT_TO_STRING","pos","isArray","originalArray","NATIVE_WEAK_MAP","objectHas","sharedKey","WeakMap","get","enforce","getterFor","TYPE","wmget","wmhas","wmset","metadata","STATE","inspectSource","enforceInternalState","TEMPLATE","unsafe","simple","noTargetGet","propertyIsEnumerable","TO_ENTRIES","addToUnscopables","wrappedWellKnownSymbolModule","defineProperty","NAME","defineProperties","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","activeXDocument","temp","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","NullProtoObject","createIteratorConstructor","getPrototypeOf","setPrototypeOf","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","CurrentIteratorPrototype","methods","KEY","propertyKey","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","getCurrentScript","err","ieStackRegExp","ffStackRegExp","stackDetails","scriptLocation","currentLocation","pageSource","inlineScriptSourceRegExp","inlineScriptSource","scripts","functionToString","unicode","postfix","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","NPCG_INCLUDED","PATCH","re","reCopy","sticky","charsAdded","strCopy","feature","detection","POLYFILL","NATIVE","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","returnMethod","nativeDefineProperty","Attributes","RE","original","depth","mapper","targetIndex","mapFn","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","actualStart","insertCount","actualDeleteCount","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","nativeObjectCreate","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","shared","uid","defineWellKnownSymbol","HIDDEN","SYMBOL","TO_PRIMITIVE","ObjectPrototype","$Symbol","$stringify","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","symbol","$defineProperty","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","V","enumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","IS_OBJECT_PROTOTYPE","setter","FORCED_JSON_STRINGIFY","space","$replacer","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","ceil","thrower","ACCESSORS","argument0","argument1","PrototypeOfArrayIteratorPrototype","arrayIterator","TO_STRING_TAG_SUPPORT","FunctionPrototype","FunctionPrototypeToString","nameRE","createWellKnownSymbol","nativeKeys","FAILS_ON_PRIMITIVES","IndexedObject","push","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","boundFunction","PREFERRED_STRING","SHARED","$findIndex","FIND_INDEX","SKIPS_HOLES","g","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","indexOf","$includes","EXISTS","variable","namespace","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","proto","TAG","IS_RIGHT","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","sham","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","$map","console","getConsole","ArrayIteratorMethods","ArrayValues","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","CORRECT_PROTOTYPE_GETTER","F","ARRAY_ITERATOR","kind","classofRaw","CORRECT_ARGUMENTS","tryGet","currentScript","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_nonIterableRest","_slicedToArray","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","insertNodeAt","fatherNode","refNode","regex","manageAndEmit","manage","eventHandlerNames","isReadOnly","tags","isHtmlTag","isTransition","isHtmlAttribute","getComponentAttributes","$attrs","_ref3$componentData","componentData","createSortableOption","callBackBuilder","getValidSortableEntries","eventBuilder","draggable","_ref13","_ref14","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","getHtmlElementFromNode","addContext","domElement","componentStructure_ComponentStructure","ComponentStructure","_ref2$nodes","header","defaultNodes","footer","realList","_isRootComponent","domIndex","domChildren","firstDomListElement","indexFirstDomListElement","external_commonjs_vue_commonjs2_vue_root_Vue_","getSlot","slotValue","computeNodes","$slots","getKey","normalizedList","_map","_map2","getRootInformation","externalComponent","computeComponentStructure","_emit","evtName","evtData","_manage","originalElement","_manageAndEmit","delegateCallBack","draggingElement","emits","draggableComponent","componentStructure","_this4","$el","sortableOptions","targetDomElement","itemKey","newOptionValue","_sortable","htmElement","_this5","onList","newList","_arguments","spliceList","updatePosition","related","destination","_this$context","relatedContext","currentDomIndex","draggedInList","move","futureIndex","draggedContext","sendEvent","vuedraggable","nativeSlice","fin","analyzeModels","updateAvailableAnalyzeModels","showFilledColumnPrompts","updateColumnExpansion","__emit","attributeExtractionRecordHandler","currentYear","createdAtRender","createdAt","toggleIsScriptBasedExtraction","isScriptBasedPromptCheckboxVisible","pageFilterSectionOpen","togglePageFilterSectionOpen","contentFilterSectionOpen","toggleContentFilterSectionOpen","promptSettingSectionOpen","togglePromptSettingSectionOpen","attributeExtractionRecordPanelOpen","toggleAttributeExtractionRecordPanelOpen","createAttributeExtractionRecord","createAttributeExtractionRecordDisabled","fileSearchPrompt","fileSearchMode","fileExtensionPdfRelated","fileExtensionGroupChecked","fileExtensionGroupDisabled","fileExtensionGroupHandler","suggestions","suggestionsPanelOpen","getAutoCompleteOptions","getSuggestions","suggestionHandler","suggestion","textInputTarget","suggestionDoms","showMinValueInput","fileAttributeOptions","updateValueOfSelectedFileAttribute","fileSearchRecordHandler","fileAttributeSectionDom","fileExtensionSectionOpen","toggleFileExtensionSectionOpen","fileAttributeSectionOpen","toggleFileAttributeSectionOpen","keywordSearchSectionOpen","toggleKeywordSearchSectionOpen","fileSearchRecordPanelOpen","toggleFileSearchRecordPanelOpen","sendingCreateFileSearchRequest","createFileSearchRecord","showFileExtensionSectionTick","fileIsRenderable","isInputFilesPreviewModalOpen","selectingInputFileId","selectingInputFiles","selectingFileOfSearchResult","searchResult","selectingInputFile","onFileThumbnailClick","onInputFilesPreviewModalRequireClosing","timeoutMap","sendingAttributeExtractionRequest","extractedValue","extractedModifiedValue","extractAttribute","renderExtractedValue","modified_value","errors","updateCurrentExtractionResults","promptTestRecordLogPath","fileIndex","searchResultIndex","showLoadMoreButton","sendingLoadMoreRequest","loadMoreHandler","tBodyDom","selectingInputFileIdAndPageNumber","highlightsByPage","chunkScores","newUrl","hasFiles","updateIsUsedInTicket","onUnmounted","TurboMountController","camelToKebabCase","TurboMount","turboMorphEvent","controllerName","hydratedApp","identifierNames","registerComponentsBase","turboMount","components","filename","registerComponents","buildRegisterComponentsFunction","mountProps","pinia","createPinia","u","l","T","M","D","I","N","Y","W","ActiveStorage.start","LocalTime"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,70,81,89,90,91,92,93,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,146,166,169,171,188,189,190,191,192,193,194,195,196,197,198,199,200,201,206,210,211,222,223,224,229,233,234,261,262,264],"sources":["../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/tippy.js/dist/tippy.esm.js","../../../app/javascript/plugin/tooltip.js","../../../app/javascript/attributes_extraction_ticket_approval_modal/components/Instructions.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/components/Summary.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/components/ApprovalOptions.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/components/Actions.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/components/AttributesExtractionTicketApprovalModal.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/App.vue","../../../app/javascript/attributes_extraction_ticket_approval_modal/index.js","../../../app/javascript/attributes_extraction_confirmation_modal/components/TargetList.vue","../../../node_modules/vue-multiselect/dist/vue-multiselect.esm.js","../../../app/javascript/attributes_extraction_confirmation_modal/components/AttributesSelection.vue","../../../app/javascript/attributes_extraction_confirmation_modal/components/AttributesList.vue","../../../app/javascript/attributes_extraction_confirmation_modal/components/Actions.vue","../../../app/javascript/attributes_extraction_confirmation_modal/components/ExtractionSummary.vue","../../../app/javascript/attributes_extraction_confirmation_modal/components/TargetOptions.vue","../../../app/javascript/shared/urlUtils.js","../../../app/javascript/attributes_extraction_confirmation_modal/components/AttributesExtractionConfirmationModal.vue","../../../app/javascript/attributes_extraction_confirmation_modal/App.vue","../../../app/javascript/attributes_extraction_confirmation_modal/index.js","../../../app/javascript/plugin/app.js","../../../node_modules/@hotwired/stimulus/dist/stimulus.js","../../../app/javascript/controllers/accordion_controller.js","../../../app/javascript/controllers/file_attribute_extraction_on_setting_page_controller.js","../../../app/javascript/controllers/all_file_attribute_extraction_on_setting_page_controller.js","../../../app/javascript/controllers/project_attribute_extraction_on_setting_page_controller.js","../../../app/javascript/controllers/all_project_attribute_extraction_on_setting_page_controller.js","../../../app/javascript/controllers/attribute_extraction_prompt_form_controller.js","../../../app/javascript/controllers/attributes_extraction_controller.js","../../../node_modules/@rails/request.js/src/fetch_response.js","../../../node_modules/@rails/request.js/src/request_interceptor.js","../../../node_modules/@rails/request.js/src/lib/utils.js","../../../node_modules/@rails/request.js/src/fetch_request.js","../../../node_modules/@rails/request.js/src/verbs.js","../../../app/javascript/controllers/auth_token_controller.js","../../../app/javascript/controllers/bim_viewer_controller.js","../../../app/javascript/controllers/blur_controller.js","../../../app/javascript/controllers/canvas_controller.js","../../../app/javascript/controllers/chat_history_bar_controller.js","../../../app/javascript/controllers/click_utility_controller.js","../../../app/javascript/controllers/collapse_item_controller.js","../../../app/javascript/controllers/collapsible_project_row_controller.js","../../../app/javascript/controllers/collapsible_sidebar_container_controller.js","../../../node_modules/swiper/shared/ssr-window.esm.mjs","../../../node_modules/swiper/shared/utils.mjs","../../../node_modules/swiper/shared/swiper-core.mjs","../../../node_modules/swiper/modules/virtual.mjs","../../../node_modules/swiper/modules/keyboard.mjs","../../../node_modules/swiper/modules/mousewheel.mjs","../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../node_modules/swiper/modules/navigation.mjs","../../../node_modules/swiper/shared/classes-to-selector.mjs","../../../node_modules/swiper/modules/pagination.mjs","../../../node_modules/swiper/modules/scrollbar.mjs","../../../node_modules/swiper/modules/parallax.mjs","../../../node_modules/swiper/modules/zoom.mjs","../../../node_modules/swiper/modules/controller.mjs","../../../node_modules/swiper/modules/a11y.mjs","../../../node_modules/swiper/modules/history.mjs","../../../node_modules/swiper/modules/hash-navigation.mjs","../../../node_modules/swiper/modules/autoplay.mjs","../../../node_modules/swiper/modules/thumbs.mjs","../../../node_modules/swiper/modules/free-mode.mjs","../../../node_modules/swiper/modules/grid.mjs","../../../node_modules/swiper/modules/manipulation.mjs","../../../node_modules/swiper/shared/effect-init.mjs","../../../node_modules/swiper/shared/effect-target.mjs","../../../node_modules/swiper/shared/effect-virtual-transition-end.mjs","../../../node_modules/swiper/modules/effect-fade.mjs","../../../node_modules/swiper/modules/effect-cube.mjs","../../../node_modules/swiper/shared/create-shadow.mjs","../../../node_modules/swiper/modules/effect-flip.mjs","../../../node_modules/swiper/modules/effect-coverflow.mjs","../../../node_modules/swiper/modules/effect-creative.mjs","../../../node_modules/swiper/modules/effect-cards.mjs","../../../node_modules/swiper/swiper-bundle.mjs","../../../node_modules/@stimulus-components/carousel/dist/stimulus-carousel.mjs","../../../app/javascript/controllers/data_spaces/carousel_controller.js","../../../app/javascript/controllers/date_type_input_auto_complete_controller.js","../../../app/javascript/controllers/datetime_type_input_auto_complete_controller.js","../../../app/javascript/controllers/doc_talk/document_messages_container_controller.js","../../../app/javascript/controllers/room_controller.js","../../../app/javascript/controllers/doc_talk_controller.js","../../../app/javascript/controllers/excel_file_viewer_controller.js","../../../app/javascript/controllers/file_move_panel_controller.js","../../../app/javascript/controllers/file_preview_modal_controller.js","../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js","../../../app/javascript/controllers/file_upload_section_controller.js","../../../app/javascript/controllers/flash_controller.js","../../../app/javascript/controllers/form_controller.js","../../../app/javascript/controllers/inline_form_controller.js","../../../app/javascript/controllers/input_file_canvas_controller.js","../../../app/javascript/controllers/input_file_dae_viewer_controller.js","../../../app/javascript/controllers/input_file_image_viewer_controller.js","../../../app/javascript/controllers/input_file_menu_controller.js","../../../app/javascript/controllers/input_file_pdf_viewer_controller.js","../../../app/javascript/controllers/input_file_pdf_viewer_on_detail_page_controller.js","../../../app/javascript/controllers/input_file_status_controller.js","../../../app/javascript/controllers/input_file_tickets_selection_controller.js","../../../app/javascript/controllers/input_files_preview_controller.js","../../../app/javascript/controllers/input_selector_controller.js","../../../app/javascript/controllers/items_selector_controller.js","../../../app/javascript/controllers/large_modal_base_controller.js","../../../app/javascript/controllers/message_comment_controller.js","../../../app/javascript/controllers/multifiles_manager_controller.js","../../../app/javascript/controllers/multiprojects_manager_controller.js","../../../node_modules/@wizardhealth/stimulus-multiselect/src/multiselect.js","../../../app/javascript/controllers/multiselect_controller.js","../../../app/javascript/controllers/navigation_controller.js","../../../node_modules/stimulus-rails-nested-form/dist/stimulus-rails-nested-form.mjs","../../../app/javascript/controllers/nested_form_controller.js","../../../node_modules/@stimulus-components/rails-nested-form/dist/stimulus-rails-nested-form.mjs","../../../app/javascript/controllers/nested_form_text_controller.js","../../../app/javascript/controllers/organizations/default_model_controller.js","../../../app/javascript/controllers/page_thumbnail_controller.js","../../../app/javascript/controllers/polling_file_attribute_status_on_setting_page_controller.js","../../../app/javascript/controllers/polling_project_attribute_status_on_setting_page_controller.js","../../../app/javascript/controllers/project_setting_dropdown_button_controller.js","../../../app/javascript/controllers/polling_project_status_controller.js","../../../app/javascript/controllers/prompt_test_record_controller.js","../../../app/javascript/controllers/register_building_form_controller.js","../../../app/javascript/controllers/required_fields_controller.js","../../../app/javascript/controllers/scope_controller.js","../../../app/javascript/controllers/scroll_to_bottom_controller.js","../../../app/javascript/controllers/search_condition_controller.js","../../../app/javascript/controllers/search_group_controller.js","../../../app/javascript/controllers/search_group_entity_attribute_form_controller.js","../../../app/javascript/controllers/search_group_range_field_controller.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/now.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/debounce.js","../../../app/javascript/controllers/search_group_string_type_search_field_controller.js","../../../app/javascript/controllers/search_records_controller.js","../../../app/javascript/controllers/search_records_item_controller.js","../../../app/javascript/controllers/search_results_controller.js","../../../node_modules/@stimulus-components/dialog/dist/stimulus-dialog.mjs","../../../app/javascript/controllers/selectable_dialog_controller.js","../../../app/javascript/controllers/selectable_input_controller.js","../../../app/javascript/controllers/sidebar_controller.js","../../../node_modules/sortablejs/modular/sortable.esm.js","../../../node_modules/stimulus-sortable/dist/stimulus-sortable.mjs","../../../app/javascript/controllers/sortable_controller.js","../../../app/javascript/controllers/system_prompt_modal_controller.js","../../../app/javascript/controllers/table_sorting_controller.js","../../../app/javascript/controllers/toggle_password_controller.js","../../../app/javascript/controllers/trim_controller.js","../../../app/javascript/controllers/turbo_frame_reload_listeners_controller.js","../../../app/javascript/controllers/turbo_modal_controller.js","../../../app/javascript/controllers/typing_animation_controller.js","../../../app/javascript/controllers/vue_modal_controller.js","../../../app/javascript/controllers/application.js","../../../node_modules/stimulus-vite-helpers/dist/index.js","../../../node_modules/stimulus-use/dist/index.js","../../../node_modules/@stimulus-components/notification/dist/stimulus-notification.mjs","../../../app/javascript/controllers/index.js","../../../app/javascript/components/AttributesSidebar.vue","../../../app/javascript/components/InputFilesPreview.vue","../../../app/javascript/prompt_setting/store/prompt_setting.js","../../../node_modules/vue-toast-notification/dist/index.js","../../../app/javascript/prompt_setting/components/SideBar.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/PageFilterSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/ContentFilterSection.vue","../../../node_modules/vuedraggable/node_modules/sortablejs/modular/sortable.esm.js","../../../node_modules/vuedraggable/dist/vuedraggable.umd.js","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/PromptSettingSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/AttributeExtractionRecordPanel.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/ScriptBasedPromptCheckbox.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/ScriptBasedPromptSettings.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/Extraction.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileExtensionSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/StringTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/NumberTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/DateTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/DateTimeTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/TimeTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/SearchFields/BooleanTypeSearchField.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileAttributeSection/FileAttribute.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileAttributeSection/FileAttributeSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileSearchRecordPanel.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/KeywordSearchSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/DataTypeSection.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileFilter.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/FileFilter/FileSearchRecordResult.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/FileAttributeExtractionRecordFile.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/FileAttributeExtractionRecordResult.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/EntityAttributeExtractionRecordFiles.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/EntityAttributeExtractionRecordExtractFile.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/EntityAttributeExtractionRecord.vue","../../../app/javascript/prompt_setting/components/SideBarPanel/Extraction/EntityAttributeExtractionRecordResult.vue","../../../app/javascript/components/PromptSetting.vue","../../../node_modules/turbo-mount/dist/turbo-mount.js","../../../node_modules/turbo-mount/dist/registerComponents.js","../../../app/javascript/turbo-mount.js","../../../node_modules/local-time/app/assets/javascripts/local-time.es2017-esm.js","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["/*!\nTurbo 8.0.12\nCopyright © 2024 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form ||\n raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return candidate?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return\n\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target)\n }\n }\n });\n})();\n\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * \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 get shouldReloadWithMorph() {\n return this.src && this.refresh === \"morph\"\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\n}\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy\n default:\n return FrameLoadingStyle.eager\n }\n}\n\nconst drive = {\n enabled: true,\n progressBarDelay: 500,\n unvisitableExtensions: new Set(\n [\n \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n \".xls\", \".xlsx\", \".xml\", \".zip\"\n ]\n )\n};\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getCspNonce();\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction cancelEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value\n }, \"\")\n}\n\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\"\n } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 15).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction getCspNonce() {\n const element = getMetaElement(\"csp-nonce\");\n\n if (element) {\n const { nonce, content } = element;\n return nonce == \"\" ? content : nonce\n }\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nconst submitter = {\n \"aria-disabled\": {\n beforeSubmit: submitter => {\n submitter.setAttribute(\"aria-disabled\", \"true\");\n submitter.addEventListener(\"click\", cancelEvent);\n },\n\n afterSubmit: submitter => {\n submitter.removeAttribute(\"aria-disabled\");\n submitter.removeEventListener(\"click\", cancelEvent);\n }\n },\n\n \"disabled\": {\n beforeSubmit: submitter => submitter.disabled = true,\n afterSubmit: submitter => submitter.disabled = false\n }\n};\n\nclass Config {\n #submitter = null\n\n constructor(config) {\n Object.assign(this, config);\n }\n\n get submitter() {\n return this.#submitter\n }\n\n set submitter(value) {\n this.#submitter = submitter[value] || value;\n }\n}\n\nconst forms = new Config({\n mode: \"on\",\n submitter: \"disabled\"\n});\n\nconst config = {\n drive,\n forms\n};\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\n }\n\n header(name) {\n return this.response.headers.get(name)\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return nativeFetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get\n case \"post\":\n return FetchMethod.post\n case \"put\":\n return FetchMethod.put\n case \"patch\":\n return FetchMethod.patch\n case \"delete\":\n return FetchMethod.delete\n }\n}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.#willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n\n async #allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.#resolveRequestPromise\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\n\n #willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error }\n });\n\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n #prefetchTimeout = null\n #prefetched = null\n\n get(url) {\n if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n return this.#prefetched.request\n }\n }\n\n setLater(url, request, ttl) {\n this.clear();\n\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.set(url, request, ttl);\n this.#prefetchTimeout = null;\n }, PREFETCH_DELAY);\n }\n\n set(url, request, ttl) {\n this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n }\n\n clear() {\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n this.#prefetched = null;\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const confirmMethod = typeof config.forms.confirm === \"function\" ?\n config.forms.confirm :\n FormSubmission.confirmMethod;\n\n const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\n }\n\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `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.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n }\n\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element\n}\n\nclass Renderer {\n #activeElement = null\n\n static renderElement(currentElement, newElement) {\n // Abstract method\n }\n\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = this.constructor.renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\n// base IIFE to define idiomorph\nvar Idiomorph = (function () {\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n let EMPTY_SET = new Set();\n\n // default configuration values, updatable by users now\n let defaults = {\n morphStyle: \"outerHTML\",\n callbacks : {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n\n },\n head: {\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n }\n };\n\n //=============================================================================\n // Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n //=============================================================================\n function morph(oldNode, newContent, config = {}) {\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n let normalizedContent = normalizeContent(newContent);\n\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n }\n\n function morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch?.previousSibling;\n let nextSibling = bestMatch?.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return []\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n }\n\n\n /**\n * @param possibleActiveElement\n * @param ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;\n }\n\n /**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n function morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ; else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return oldNode;\n\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return oldNode;\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n morphChildren(newContent, oldNode, ctx);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n }\n\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n function morphChildren(newParent, oldParent, ctx) {\n\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n }\n\n //=============================================================================\n // Attribute Syncing Code\n //=============================================================================\n\n /**\n * @param attr {String} the attribute to be mutated\n * @param to {Element} the element that is going to be updated\n * @param updateType {(\"update\"|\"remove\")}\n * @param ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, to, updateType, ctx) {\n if(attr === 'value' && ctx.ignoreActiveValue && to === document.activeElement){\n return true;\n }\n return ctx.callbacks.beforeAttributeUpdated(attr, to, updateType) === false;\n }\n\n /**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n * @param ctx the merge context\n */\n function syncNodeFrom(from, to, ctx) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (ignoreAttribute(fromAttribute.name, to, 'update', ctx)) {\n continue;\n }\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = toAttributes.length - 1; 0 <= i; i--) {\n const toAttribute = toAttributes[i];\n if (ignoreAttribute(toAttribute.name, to, 'remove', ctx)) {\n continue;\n }\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n if (!ignoreValueOfActiveElement(to, ctx)) {\n // sync input values\n syncInputValue(from, to, ctx);\n }\n }\n\n /**\n * @param from {Element} element to sync the value from\n * @param to {Element} element to sync the value to\n * @param attributeName {String} the attribute name\n * @param ctx the merge context\n */\n function syncBooleanAttribute(from, to, attributeName, ctx) {\n if (from[attributeName] !== to[attributeName]) {\n let ignoreUpdate = ignoreAttribute(attributeName, to, 'update', ctx);\n if (!ignoreUpdate) {\n to[attributeName] = from[attributeName];\n }\n if (from[attributeName]) {\n if (!ignoreUpdate) {\n to.setAttribute(attributeName, from[attributeName]);\n }\n } else {\n if (!ignoreAttribute(attributeName, to, 'remove', ctx)) {\n to.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param from {Element} the element to sync the input value from\n * @param to {Element} the element to sync the input value to\n * @param ctx the merge context\n */\n function syncInputValue(from, to, ctx) {\n if (from instanceof HTMLInputElement &&\n to instanceof HTMLInputElement &&\n from.type !== 'file') {\n\n let fromValue = from.value;\n let toValue = to.value;\n\n // sync boolean attributes\n syncBooleanAttribute(from, to, 'checked', ctx);\n syncBooleanAttribute(from, to, 'disabled', ctx);\n\n if (!from.hasAttribute('value')) {\n if (!ignoreAttribute('value', to, 'remove', ctx)) {\n to.value = '';\n to.removeAttribute('value');\n }\n } else if (fromValue !== toValue) {\n if (!ignoreAttribute('value', to, 'update', ctx)) {\n to.setAttribute('value', fromValue);\n to.value = fromValue;\n }\n }\n } else if (from instanceof HTMLOptionElement) {\n syncBooleanAttribute(from, to, 'selected', ctx);\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (ignoreAttribute('value', to, 'update', ctx)) {\n return;\n }\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n }\n\n //=============================================================================\n // the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n //=============================================================================\n function handleHeadElement(newHeadTag, currentHead, ctx) {\n\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {added: added, kept: preserved, removed: removed});\n return promises;\n }\n\n function noOp() {\n }\n\n /*\n Deep merges the config object and the Idiomoroph.defaults object to\n produce a final configuration object\n */\n function mergeDefaults(config) {\n let finalConfig = {};\n // copy top level stuff into final config\n Object.assign(finalConfig, defaults);\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = {};\n Object.assign(finalConfig.callbacks, defaults.callbacks);\n Object.assign(finalConfig.callbacks, config.callbacks);\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = {};\n Object.assign(finalConfig.head, defaults.head);\n Object.assign(finalConfig.head, config.head);\n return finalConfig;\n }\n\n function createMorphContext(oldNode, newContent, config) {\n config = mergeDefaults(config);\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n ignoreActiveValue: config.ignoreActiveValue,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: config.callbacks,\n head: config.head\n }\n }\n\n function isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n }\n\n function isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName\n }\n\n function removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential id match\n // for the newChild. We stop if we find a potential id match for the new child OR\n // if the number of potential id matches we are discarding is greater than the\n // potential id matches for the new child\n //=============================================================================\n function findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential soft match\n // for the newChild. We stop if we find a potential soft match for the new child OR\n // if we find a potential id match in the old parents children OR if we find two\n // potential soft matches for the next two pieces of new content\n //=============================================================================\n function findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n }\n\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/]*>|>)([\\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(\"\" + newContent + \"\", \"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\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n Idiomorph.morph(currentElement, newElement, {\n ...options,\n callbacks: new DefaultIdiomorphCallbacks(callbacks)\n });\n}\n\nfunction morphChildren(currentElement, newElement) {\n morphElements(currentElement, newElement.children, {\n morphStyle: \"innerHTML\"\n });\n}\n\nclass DefaultIdiomorphCallbacks {\n #beforeNodeMorphed\n\n constructor({ beforeNodeMorphed } = {}) {\n this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n }\n\n beforeNodeAdded = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n beforeNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n beforeAttributeUpdated = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", {\n cancelable: true,\n target,\n detail: { attributeName, mutationType }\n });\n\n return !event.defaultPrevented\n }\n\n beforeNodeRemoved = (node) => {\n return this.beforeNodeMorphed(node)\n }\n\n afterNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n dispatch(\"turbo:morph-element\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n }\n }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n static renderElement(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n morphChildren(currentElement, newElement);\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n}\n\nclass ProgressBar {\n static animationDuration = 300 /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `\n }\n\n hiding = false\n value = 0\n visible = false\n\n constructor() {\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n }\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n const cspNonce = getCspNonce();\n if (cspNonce) {\n element.nonce = cspNonce;\n }\n return element\n }\n\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element\n }\n}\n\nclass HeadSnapshot extends Snapshot {\n detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details =\n outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return {\n ...result,\n [outerHTML]: {\n ...details,\n elements: [...details.elements, element]\n }\n }\n }, {})\n\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\")\n }\n\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n }\n\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n }\n\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element)\n }\n\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements]\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)]\n } else {\n return result\n }\n }, [])\n }\n\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null\n }\n\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const {\n elements: [element]\n } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result\n }, undefined | undefined)\n }\n}\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\"\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\"\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element\n}\n\nclass PageSnapshot extends Snapshot {\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html))\n }\n\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument)\n }\n\n static fromDocument({ documentElement, body, head }) {\n return new this(documentElement, body, new HeadSnapshot(head))\n }\n\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n\n clone() {\n const clonedElement = this.element.cloneNode(true);\n\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n }\n\n get lang() {\n return this.documentElement.getAttribute(\"lang\")\n }\n\n get headElement() {\n return this.headSnapshot.element\n }\n\n get rootLocation() {\n const root = this.getSetting(\"root\") ?? \"/\";\n return expandURL(root)\n }\n\n get cacheControlValue() {\n return this.getSetting(\"cache-control\")\n }\n\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\"\n }\n\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\"\n }\n\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\"\n }\n\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n }\n\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\"\n }\n\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\"\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`)\n }\n}\n\nclass ViewTransitioner {\n #viewTransitionStarted = false\n #lastOperation = Promise.resolve()\n\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n this.#viewTransitionStarted = true;\n this.#lastOperation = this.#lastOperation.then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n this.#lastOperation = this.#lastOperation.then(render);\n }\n\n return this.#lastOperation\n }\n\n get viewTransitionsAvailable() {\n return document.startViewTransition\n }\n}\n\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\n\nconst Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nclass Visit {\n identifier = uuid() // Required by turbo-ios\n timingMetrics = {}\n\n followedRedirect = false\n historyChanged = false\n scrolled = false\n shouldCacheSnapshot = true\n acceptsStreamResponse = false\n snapshotCached = false\n state = VisitState.initialized\n viewTransitioner = new ViewTransitioner()\n\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n const {\n action,\n historyChanged,\n referrer,\n snapshot,\n snapshotHTML,\n response,\n visitCachedSnapshot,\n willRender,\n updateHistory,\n shouldCacheSnapshot,\n acceptsStreamResponse,\n direction\n } = {\n ...defaultOptions,\n ...options\n };\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.isPageRefresh = this.view.isPageRefresh(this);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n this.direction = direction || Direction[action];\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get history() {\n return this.delegate.history\n }\n\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n }\n\n get silent() {\n return this.isSamePage\n }\n\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.adapter.visitCompleted(this);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.delegate.visitCompleted(this);\n }\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot\n }\n }\n }\n\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML)\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null\n }\n\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage || this.isPageRefresh) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n\n await this.renderPageSnapshot(snapshot, isPreview);\n\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n\n followRedirect() {\n if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted() {\n this.startRequest();\n }\n\n requestPreventedHandlingResponse(_request, _response) {}\n\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true\n }\n }\n\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true\n }\n }\n\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics() {\n return { ...this.timingMetrics }\n }\n\n // Private\n\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n }\n\n hasPreloadedResponse() {\n return typeof this.response == \"object\"\n }\n\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot()\n } else {\n return this.willRender\n }\n }\n\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame =\n document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n progressBar = new ProgressBar()\n\n constructor(session) {\n this.session = session;\n }\n\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n })\n default:\n return visit.loadResponse()\n }\n }\n\n visitRequestFinished(_visit) {}\n\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n pageInvalidated(reason) {\n this.reload(reason);\n }\n\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n\n showProgressBar = () => {\n this.progressBar.show();\n }\n\n reload(reason) {\n dispatch(\"turbo:reload\", { detail: reason });\n\n window.location.href = this.location?.toString() || window.location.href;\n }\n\n get navigator() {\n return this.session.navigator\n }\n}\n\nclass CacheObserver {\n selector = \"[data-turbo-temporary]\"\n deprecatedSelector = \"[data-turbo-cache=false]\"\n\n started = false\n\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n removeTemporaryElements = (_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n }\n\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n }\n\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\n `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n );\n }\n\n return [...elements]\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldRedirect(element)\n }\n\n linkClickIntercepted(element, url, event) {\n const frame = this.#findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return (\n element.closest(\"turbo-frame\") == null &&\n this.#shouldSubmit(element, submitter) &&\n this.#shouldRedirect(element, submitter)\n )\n }\n\n formSubmitted(element, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n\n #shouldSubmit(form, submitter) {\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL(meta?.content ?? \"/\");\n\n return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n }\n\n #shouldRedirect(element, submitter) {\n const isNavigatable =\n element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n const frame = this.#findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false\n } else {\n return false\n }\n }\n\n #findFrameElement(element, submitter) {\n const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame\n }\n }\n }\n}\n\nclass History {\n location\n restorationIdentifier = uuid()\n restorationData = {}\n started = false\n pageLoaded = false\n currentIndex = 0\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n\n update(method, location, restorationIdentifier = uuid()) {\n if (method === history.pushState) ++this.currentIndex;\n\n const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {}\n }\n\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = {\n ...restorationData,\n ...additionalData\n };\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n\n // Event handlers\n\n onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier, restorationIndex } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n this.currentIndex = restorationIndex;\n }\n }\n }\n\n onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n }\n\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded()\n }\n\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\"\n }\n}\n\nclass LinkPrefetchObserver {\n started = false\n #prefetchedLink = null\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (this.started) return\n\n if (this.eventTarget.readyState === \"loading\") {\n this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n } else {\n this.#enable();\n }\n }\n\n stop() {\n if (!this.started) return\n\n this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = false;\n }\n\n #enable = () => {\n this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = true;\n }\n\n #tryToPrefetchRequest = (event) => {\n if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n const target = event.target;\n const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n if (isLink && this.#isPrefetchable(target)) {\n const link = target;\n const location = getLocationForLink(link);\n\n if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n this.#prefetchedLink = link;\n\n const fetchRequest = new FetchRequest(\n this,\n FetchMethod.get,\n location,\n new URLSearchParams(),\n target\n );\n\n prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n }\n }\n }\n\n #cancelRequestIfObsolete = (event) => {\n if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n }\n\n #cancelPrefetchRequest = () => {\n prefetchCache.clear();\n this.#prefetchedLink = null;\n }\n\n #tryToUsePrefetchedRequest = (event) => {\n if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n const cached = prefetchCache.get(event.detail.url.toString());\n\n if (cached) {\n // User clicked link, use cache response\n event.detail.fetchRequest = cached;\n }\n\n prefetchCache.clear();\n }\n }\n\n prepareRequest(request) {\n const link = request.target;\n\n request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n const turboFrame = link.closest(\"turbo-frame\");\n const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n }\n }\n\n // Fetch request interface\n\n requestSucceededWithResponse() {}\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n get #cacheTtl() {\n return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n }\n\n #isPrefetchable(link) {\n const href = link.getAttribute(\"href\");\n\n if (!href) return false\n\n if (unfetchableLink(link)) return false\n if (linkToTheSamePage(link)) return false\n if (linkOptsOut(link)) return false\n if (nonSafeLink(link)) return false\n if (eventPrevented(link)) return false\n\n return true\n }\n}\n\nconst unfetchableLink = (link) => {\n return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n return false\n};\n\nconst nonSafeLink = (link) => {\n const turboMethod = link.getAttribute(\"data-turbo-method\");\n if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n if (isUJS(link)) return true\n if (link.hasAttribute(\"data-turbo-confirm\")) return true\n if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n return false\n};\n\nconst isUJS = (link) => {\n return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n return event.defaultPrevented\n};\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n referrer: this.location,\n ...options\n });\n this.currentVisit.start();\n }\n\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n this.formSubmission.start();\n }\n\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get rootLocation() {\n return this.view.snapshot.rootLocation\n }\n\n get history() {\n return this.delegate.history\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n const { statusCode, redirected } = fetchResponse;\n const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if(!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n delete this.currentVisit;\n }\n\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n\n return (\n action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n )\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n #getActionForFormSubmission(formSubmission, fetchResponse) {\n const { submitter, formElement } = formSubmission;\n return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n }\n\n #getDefaultAction(fetchResponse) {\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n return sameLocationRedirect ? \"replace\" : \"advance\"\n }\n}\n\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nclass PageObserver {\n stage = PageStage.initial\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n\n interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n }\n\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n\n pageWillUnload = () => {\n this.delegate.pageWillUnload();\n }\n\n get readyState() {\n return document.readyState\n }\n}\n\nclass ScrollObserver {\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n\n onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n }\n\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n\n leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n\n return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n await nextRepaint();\n\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\n\nasync function withPreservedFocus(callback) {\n const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n if (elementWithAutofocus) return elementWithAutofocus\n }\n\n return null\n}\n\nclass StreamObserver {\n sources = new Set()\n #started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.#started) {\n this.#started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n stop() {\n if (this.#started) {\n this.#started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n streamSourceIsConnected(source) {\n return this.sources.has(source)\n }\n\n inspectFetchResponse = (event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n }\n\n receiveMessageEvent = (event) => {\n if (this.#started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n }\n\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\n\nfunction fetchResponseFromEvent(event) {\n const fetchResponse = event.detail?.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse\n }\n}\n\nfunction fetchResponseIsStream(response) {\n const contentType = response.contentType ?? \"\";\n return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n\n documentElement.replaceChild(newElement, body);\n }\n\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n\n get newHead() {\n return this.newSnapshot.headSnapshot.element\n }\n\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\")\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n }\n\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n }\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n }\n }\n }\n\n async prepareToRender() {\n this.#setLanguage();\n await this.mergeHead();\n }\n\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot\n }\n\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n #setLanguage() {\n const { documentElement } = this.currentSnapshot;\n const { lang } = this.newSnapshot;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n }\n\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n\n await mergedHeadElements;\n await newStylesheetElements;\n\n if (this.willRender) {\n this.removeUnusedDynamicStylesheetElements();\n }\n }\n\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n }\n\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n\n document.head.appendChild(element);\n }\n\n await Promise.all(loadingElements);\n }\n\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n\n removeUnusedDynamicStylesheetElements() {\n for (const element of this.unusedDynamicStylesheetElements) {\n document.head.removeChild(element);\n }\n }\n\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n return false\n }\n\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n\n get unusedDynamicStylesheetElements() {\n return this.oldHeadStylesheetElements.filter((element) => {\n return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n })\n }\n\n get oldHeadStylesheetElements() {\n return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n }\n\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements\n }\n\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements\n }\n\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\")\n }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n static renderElement(currentElement, newElement) {\n morphElements(currentElement, newElement, {\n callbacks: {\n beforeNodeMorphed: element => !canRefreshFrame(element)\n }\n });\n\n for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n if (canRefreshFrame(frame)) frame.reload();\n }\n\n dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n get shouldAutofocus() {\n return false\n }\n}\n\nfunction canRefreshFrame(frame) {\n return frame instanceof FrameElement &&\n frame.src &&\n frame.refresh === \"morph\" &&\n !frame.closest(\"[data-turbo-permanent]\")\n}\n\nclass SnapshotCache {\n keys = []\n snapshots = {}\n\n constructor(size) {\n this.size = size;\n }\n\n has(location) {\n return toCacheKey(location) in this.snapshots\n }\n\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot\n }\n }\n\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot\n }\n\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)]\n }\n\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n snapshotCache = new SnapshotCache(10)\n lastRenderedLocation = new URL(location.href)\n forceReloaded = false\n\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n }\n\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit?.changeHistory();\n }\n\n return this.render(renderer)\n }\n\n renderError(snapshot, visit) {\n visit?.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer)\n }\n\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot\n }\n }\n\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location)\n }\n\n isPageRefresh(visit) {\n return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n }\n\n shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n }\n\n get snapshot() {\n return PageSnapshot.fromElement(this.element)\n }\n}\n\nclass Preloader {\n selector = \"a[data-turbo-preload]\"\n\n constructor(delegate, snapshotCache) {\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n\n stop() {\n document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n }\n\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n }\n\n async preloadURL(link) {\n const location = new URL(link.href);\n\n if (this.snapshotCache.has(location)) {\n return\n }\n\n const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n await fetchRequest.perform();\n }\n\n // Fetch request delegate\n\n prepareRequest(fetchRequest) {\n fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n }\n\n async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n try {\n const responseHTML = await fetchResponse.responseHTML;\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n this.snapshotCache.put(fetchRequest.url, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n #preloadAll = () => {\n this.preloadOnLoadLinksForView(document.body);\n }\n}\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n\n clear() {\n this.session.clearCache();\n }\n\n resetCacheControl() {\n this.#setCacheControl(\"\");\n }\n\n exemptPageFromCache() {\n this.#setCacheControl(\"no-cache\");\n }\n\n exemptPageFromPreview() {\n this.#setCacheControl(\"no-preview\");\n }\n\n #setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nclass Session {\n navigator = new Navigator(this)\n history = new History(this)\n view = new PageView(this, document.documentElement)\n adapter = new BrowserAdapter(this)\n\n pageObserver = new PageObserver(this)\n cacheObserver = new CacheObserver()\n linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n linkClickObserver = new LinkClickObserver(this, window)\n formSubmitObserver = new FormSubmitObserver(this, document)\n scrollObserver = new ScrollObserver(this)\n streamObserver = new StreamObserver(this)\n formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n frameRedirector = new FrameRedirector(this, document.documentElement)\n streamMessageRenderer = new StreamMessageRenderer()\n cache = new Cache(this)\n\n enabled = true\n started = false\n #pageRefreshDebouncePeriod = 150\n\n constructor(recentRequests) {\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n this.debouncedRefresh = this.refresh;\n this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n }\n\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkPrefetchObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkPrefetchObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.preloader.stop();\n this.started = false;\n }\n }\n\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n const action = options.action || getVisitAction(frameElement);\n\n frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n frameElement.src = location.toString();\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest && !this.navigator.currentVisit) {\n this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n }\n }\n\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n\n clearCache() {\n this.view.clearSnapshotCache();\n }\n\n setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n );\n\n this.progressBarDelay = delay;\n }\n\n set progressBarDelay(delay) {\n config.drive.progressBarDelay = delay;\n }\n\n get progressBarDelay() {\n return config.drive.progressBarDelay\n }\n\n set drive(value) {\n config.drive.enabled = value;\n }\n\n get drive() {\n return config.drive.enabled\n }\n\n set formMode(value) {\n config.forms.mode = value;\n }\n\n get formMode() {\n return config.forms.mode\n }\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n get pageRefreshDebouncePeriod() {\n return this.#pageRefreshDebouncePeriod\n }\n\n set pageRefreshDebouncePeriod(value) {\n this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n this.#pageRefreshDebouncePeriod = value;\n }\n\n // Preloader delegate\n\n shouldPreloadLink(element) {\n const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n const isStream = element.hasAttribute(\"data-turbo-stream\");\n const frameTarget = element.getAttribute(\"data-turbo-frame\");\n const frame = frameTarget == \"_top\" ?\n null :\n document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false\n } else {\n const location = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n\n submittedFormLinkToLocation() {}\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation)\n )\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event)\n )\n }\n\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n }\n\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n\n visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action)\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return (\n this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n )\n }\n\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n if (!this.navigator.currentVisit?.silent) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(renderMethod);\n }\n\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented\n }\n\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented\n }\n\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true\n })\n }\n\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true\n })\n }\n\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\")\n }\n\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: { newBody, ...options },\n cancelable: true\n })\n }\n\n notifyApplicationAfterRender(renderMethod) {\n return dispatch(\"turbo:render\", { detail: { renderMethod } })\n }\n\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing }\n })\n }\n\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(\n new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n })\n );\n }\n\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame })\n }\n\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true\n })\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (config.forms.mode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (config.forms.mode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form)\n }\n }\n }\n\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (config.drive.enabled || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\"\n } else {\n return true\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\"\n } else {\n return false\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\"\n }\n\n get snapshot() {\n return this.view.snapshot\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString()\n }\n }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\n \"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n console.warn(\n \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n console.warn(\n \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.mode = mode;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetchWithTurboHeaders,\n config: config,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n #currentFetchRequest = null\n #resolveVisitPromise = () => {}\n #connected = false\n #hasBeenLoaded = false\n #ignoredAttributes = new Set()\n #shouldMorphFrame = false\n action = null\n\n constructor(element) {\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n\n // Frame delegate\n\n connect() {\n if (!this.#connected) {\n this.#connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.#loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n\n disconnect() {\n if (this.#connected) {\n this.#connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLChanged() {\n if (this.#isIgnoringChangesTo(\"src\")) return\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLReloaded() {\n const { refresh, src } = this.element;\n\n this.#shouldMorphFrame = src && refresh === \"morph\";\n\n this.element.removeAttribute(\"complete\");\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded\n }\n\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.#loadSourceURL();\n }\n }\n\n async #loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.#visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.#hasBeenLoaded = true;\n }\n }\n\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n\n if (pageSnapshot.isVisitable) {\n await this.#loadFrameResponse(fetchResponse, document);\n } else {\n await this.#handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.#shouldMorphFrame = false;\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n this.#loadSourceURL();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return this.#shouldInterceptNavigation(link)\n }\n\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.#findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldInterceptNavigation(element)\n }\n\n linkClickIntercepted(element, location) {\n this.#navigateFrame(element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n }\n\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n\n requestPreventedHandlingResponse(_request, _response) {\n this.#resolveVisitPromise();\n }\n\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n requestErrored(request, error) {\n console.error(error);\n this.#resolveVisitPromise();\n }\n\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.#findFrameElement(formElement));\n }\n\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.#findFrameElement(formElement));\n }\n\n // View delegate\n\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: { newFrame, ...options },\n cancelable: true\n });\n\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n\n visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n\n delete this.previousFrameElement;\n }\n\n // Private\n\n async #loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n this.#handleFrameMissingFromResponse(fetchResponse);\n }\n }\n\n async #visit(url) {\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n this.#currentFetchRequest?.cancel();\n this.#currentFetchRequest = request;\n\n return new Promise((resolve) => {\n this.#resolveVisitPromise = () => {\n this.#resolveVisitPromise = () => {};\n this.#currentFetchRequest = null;\n resolve();\n };\n request.perform();\n })\n }\n\n #navigateFrame(element, url, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n this.#withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n\n proposeVisitIfNavigatedWithAction(frame, action = null) {\n this.action = action;\n\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n\n frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = await fetchResponse.responseHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n\n if (this.action) options.action = this.action;\n\n session.visit(frame.src, options);\n }\n };\n }\n }\n\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n\n async #handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(\n `The response (${fetchResponse.statusCode}) from 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 const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphElements(targetElement, this.templateContent);\n } else {\n targetElement.replaceWith(this.templateContent);\n }\n });\n },\n\n update() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphChildren(targetElement, this.templateContent);\n } else {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n }\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n// ...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n * \n * \n * Content to append to target designated with the dom_id.\n * \n * \n */\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n\n async connectedCallback() {\n try {\n await this.render();\n } catch (error) {\n console.error(error);\n } finally {\n this.disconnect();\n }\n }\n\n async render() {\n return (this.renderPromise ??= (async () => {\n const event = this.beforeRenderEvent;\n\n if (this.dispatchEvent(event)) {\n await nextRepaint();\n await event.detail.render(this);\n }\n })())\n }\n\n disconnect() {\n try {\n this.remove();\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n /**\n * Removes duplicate children (by ID)\n */\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n\n /**\n * Gets the list of duplicate children (i.e. those with the same ID)\n */\n get duplicateChildren() {\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n }\n\n /**\n * Gets the action function to be performed.\n */\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction\n }\n this.#raise(\"unknown action\");\n }\n this.#raise(\"action attribute is missing\");\n }\n\n /**\n * Gets the target elements which the template will be rendered to.\n */\n get targetElements() {\n if (this.target) {\n return this.targetElementsById\n } else if (this.targets) {\n return this.targetElementsByQuery\n } else {\n this.#raise(\"target or targets attribute is missing\");\n }\n }\n\n /**\n * Gets the contents of the main ``.\n */\n get templateContent() {\n return this.templateElement.content.cloneNode(true)\n }\n\n /**\n * Gets the main `` used for rendering\n */\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild\n }\n this.#raise(\"first child element must be a element\");\n }\n\n /**\n * Gets the current action.\n */\n get action() {\n return this.getAttribute(\"action\")\n }\n\n /**\n * Gets the current target (an element ID) to which the result will\n * be rendered.\n */\n get target() {\n return this.getAttribute(\"target\")\n }\n\n /**\n * Gets the current \"targets\" selector (a CSS selector)\n */\n get targets() {\n return this.getAttribute(\"targets\")\n }\n\n /**\n * Reads the request-id attribute\n */\n get requestId() {\n return this.getAttribute(\"request-id\")\n }\n\n #raise(message) {\n throw new Error(`${this.description}: ${message}`)\n }\n\n get description() {\n return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"\"\n }\n\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: { newStream: this, render: StreamElement.renderElement }\n })\n }\n\n get targetElementsById() {\n const element = this.ownerDocument?.getElementById(this.target);\n\n if (element !== null) {\n return [element]\n } else {\n return []\n }\n }\n\n get targetElementsByQuery() {\n const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements)\n } else {\n return []\n }\n }\n}\n\nclass StreamSourceElement extends HTMLElement {\n streamSource = null\n\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n connectStreamSource(this.streamSource);\n }\n\n disconnectedCallback() {\n if (this.streamSource) {\n this.streamSource.close();\n\n disconnectStreamSource(this.streamSource);\n }\n }\n\n get src() {\n return this.getAttribute(\"src\") || \"\"\n }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n let element = document.currentScript;\n if (!element) return\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(\n unindent`\n You are loading Turbo from a \n","\n \n \n \n {{ block.title }}: {{ counts[block.slug] }}\n \n \n \n \n {{ attribute.title }}:\n {{ summaryData[attribute.slug] }}\n \n \n \n \n\n\n\n","\n \n \n {{ $t(\"modals.ticket_approval.\" + approvalType + \"_confirmation\") }}\n \n\n \n \n \n {{ $t(\"modals.ticket_approval.lock_after_update\") }}\n \n \n \n\n\n\n","\n \n \n It has not been possible to execute the operation correct.Please try again.\n \n\n \n \n {{ $t(\"modals.ticket_approval.cancel\") }}\n \n\n \n \n \n \n \n \n \n {{ actionButton.label }}\n \n \n \n \n\n\n\n","\n \n \n \n \n \n \n \n {{ $t(\"modals.ticket_approval.approve_extraction_values\") }}\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n\n\n","\n \n\n\n\n\n\n","import { createApp } from \"vue\"\nimport { useTranslations } from \"../shared/useTranslations\"\nimport AttributeExtractionTicketApprovalModal from \"./App.vue\"\n\nexport default function setup() {\n const modalElement = document.getElementById(\"attributes-extraction-ticket-approval-modal\")\n\n if (!modalElement) {\n return\n }\n\n const app = createApp(AttributeExtractionTicketApprovalModal, { domElement: modalElement })\n useTranslations(app)\n\n app.mount(modalElement)\n}\n","\n \n {{ t(\"modals.attributes_extraction_confirmation.\" + labelString) }}\n\n \n \n \n \n {{ t(\"modals.attributes_extraction_confirmation.loading\") }}\n \n {{ targetString }} \n \n \n \n\n\n\n","import { openBlock, createBlock, withKeys, withModifiers, renderSlot, createVNode, withDirectives, Fragment, renderList, toDisplayString, vShow, createCommentVNode, Transition, withCtx, createTextVNode } from 'vue';\n\nfunction isEmpty (opt) {\n if (opt === 0) return false\n if (Array.isArray(opt) && opt.length === 0) return true\n return !opt\n}\n\nfunction not (fun) {\n return (...params) => !fun(...params)\n}\n\nfunction includes (str, query) {\n /* istanbul ignore else */\n if (str === undefined) str = 'undefined';\n if (str === null) str = 'null';\n if (str === false) str = 'false';\n const text = str.toString().toLowerCase();\n return text.indexOf(query.trim()) !== -1\n}\n\nfunction filterOptions (options, search, label, customLabel) {\n return search ? options\n .filter((option) => includes(customLabel(option, label), search))\n .sort((a, b) => customLabel(a, label).length - customLabel(b, label).length) : options\n}\n\nfunction stripGroups (options) {\n return options.filter((option) => !option.$isLabel)\n}\n\nfunction flattenOptions (values, label) {\n return (options) =>\n options.reduce((prev, curr) => {\n /* istanbul ignore else */\n if (curr[values] && curr[values].length) {\n prev.push({\n $groupLabel: curr[label],\n $isLabel: true\n });\n return prev.concat(curr[values])\n }\n return prev\n }, [])\n}\n\nfunction filterGroups (search, label, values, groupLabel, customLabel) {\n return (groups) =>\n groups.map((group) => {\n /* istanbul ignore else */\n if (!group[values]) {\n console.warn(`Options passed to vue-multiselect do not contain groups, despite the config.`);\n return []\n }\n const groupOptions = filterOptions(group[values], search, label, customLabel);\n\n return groupOptions.length\n ? {\n [groupLabel]: group[groupLabel],\n [values]: groupOptions\n }\n : []\n })\n}\n\nconst flow = (...fns) => (x) => fns.reduce((v, f) => f(v), x);\n\nvar multiselectMixin = {\n data () {\n return {\n search: '',\n isOpen: false,\n preferredOpenDirection: 'below',\n optimizedHeight: this.maxHeight\n }\n },\n props: {\n /**\n * Decide whether to filter the results based on search query.\n * Useful for async filtering, where we search through more complex data.\n * @type {Boolean}\n */\n internalSearch: {\n type: Boolean,\n default: true\n },\n /**\n * Array of available options: Objects, Strings or Integers.\n * If array of objects, visible label will default to option.label.\n * If `labal` prop is passed, label will equal option['label']\n * @type {Array}\n */\n options: {\n type: Array,\n required: true\n },\n /**\n * Equivalent to the `multiple` attribute on a `` input.\n * @default false\n * @type {Boolean}\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Key to compare objects\n * @default 'id'\n * @type {String}\n */\n trackBy: {\n type: String\n },\n /**\n * Label to look for in option Object\n * @default 'label'\n * @type {String}\n */\n label: {\n type: String\n },\n /**\n * Enable/disable search in options\n * @default true\n * @type {Boolean}\n */\n searchable: {\n type: Boolean,\n default: true\n },\n /**\n * Clear the search input after `)\n * @default true\n * @type {Boolean}\n */\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Hide already selected options\n * @default false\n * @type {Boolean}\n */\n hideSelected: {\n type: Boolean,\n default: false\n },\n /**\n * Equivalent to the `placeholder` attribute on a `` input.\n * @default 'Select option'\n * @type {String}\n */\n placeholder: {\n type: String,\n default: 'Select option'\n },\n /**\n * Allow to remove all selected values\n * @default true\n * @type {Boolean}\n */\n allowEmpty: {\n type: Boolean,\n default: true\n },\n /**\n * Reset this.internalValue, this.search after this.internalValue changes.\n * Useful if want to create a stateless dropdown.\n * @default false\n * @type {Boolean}\n */\n resetAfter: {\n type: Boolean,\n default: false\n },\n /**\n * Enable/disable closing after selecting an option\n * @default true\n * @type {Boolean}\n */\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Function to interpolate the custom label\n * @default false\n * @type {Function}\n */\n customLabel: {\n type: Function,\n default (option, label) {\n if (isEmpty(option)) return ''\n return label ? option[label] : option\n }\n },\n /**\n * Disable / Enable tagging\n * @default false\n * @type {Boolean}\n */\n taggable: {\n type: Boolean,\n default: false\n },\n /**\n * String to show when highlighting a potential tag\n * @default 'Press enter to create a tag'\n * @type {String}\n */\n tagPlaceholder: {\n type: String,\n default: 'Press enter to create a tag'\n },\n /**\n * By default new tags will appear above the search results.\n * Changing to 'bottom' will revert this behaviour\n * and will proritize the search results\n * @default 'top'\n * @type {String}\n */\n tagPosition: {\n type: String,\n default: 'top'\n },\n /**\n * Number of allowed selected options. No limit if 0.\n * @default 0\n * @type {Number}\n */\n max: {\n type: [Number, Boolean],\n default: false\n },\n /**\n * Will be passed with all events as second param.\n * Useful for identifying events origin.\n * @default null\n * @type {String|Integer}\n */\n id: {\n default: null\n },\n /**\n * Limits the options displayed in the dropdown\n * to the first X options.\n * @default 1000\n * @type {Integer}\n */\n optionsLimit: {\n type: Number,\n default: 1000\n },\n /**\n * Name of the property containing\n * the group values\n * @default 1000\n * @type {String}\n */\n groupValues: {\n type: String\n },\n /**\n * Name of the property containing\n * the group label\n * @default 1000\n * @type {String}\n */\n groupLabel: {\n type: String\n },\n /**\n * Allow to select all group values\n * by selecting the group label\n * @default false\n * @type {Boolean}\n */\n groupSelect: {\n type: Boolean,\n default: false\n },\n /**\n * Array of keyboard keys to block\n * when selecting\n * @default 1000\n * @type {String}\n */\n blockKeys: {\n type: Array,\n default () {\n return []\n }\n },\n /**\n * Prevent from wiping up the search value\n * @default false\n * @type {Boolean}\n */\n preserveSearch: {\n type: Boolean,\n default: false\n },\n /**\n * Select 1st options if value is empty\n * @default false\n * @type {Boolean}\n */\n preselectFirst: {\n type: Boolean,\n default: false\n },\n /**\n * Prevent autofocus\n * @default false\n * @type {Boolean}\n */\n preventAutofocus: {\n type: Boolean,\n default: false\n }\n },\n mounted () {\n /* istanbul ignore else */\n if (!this.multiple && this.max) {\n console.warn('[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.');\n }\n if (\n this.preselectFirst &&\n !this.internalValue.length &&\n this.options.length\n ) {\n this.select(this.filteredOptions[0]);\n }\n },\n computed: {\n internalValue () {\n return this.modelValue || this.modelValue === 0\n ? Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue]\n : []\n },\n filteredOptions () {\n const search = this.search || '';\n const normalizedSearch = search.toLowerCase().trim();\n\n let options = this.options.concat();\n\n /* istanbul ignore else */\n if (this.internalSearch) {\n options = this.groupValues\n ? this.filterAndFlat(options, normalizedSearch, this.label)\n : filterOptions(options, normalizedSearch, this.label, this.customLabel);\n } else {\n options = this.groupValues ? flattenOptions(this.groupValues, this.groupLabel)(options) : options;\n }\n\n options = this.hideSelected\n ? options.filter(not(this.isSelected))\n : options;\n\n /* istanbul ignore else */\n if (this.taggable && normalizedSearch.length && !this.isExistingOption(normalizedSearch)) {\n if (this.tagPosition === 'bottom') {\n options.push({isTag: true, label: search});\n } else {\n options.unshift({isTag: true, label: search});\n }\n }\n\n return options.slice(0, this.optionsLimit)\n },\n valueKeys () {\n if (this.trackBy) {\n return this.internalValue.map((element) => element[this.trackBy])\n } else {\n return this.internalValue\n }\n },\n optionKeys () {\n const options = this.groupValues ? this.flatAndStrip(this.options) : this.options;\n return options.map((element) => this.customLabel(element, this.label).toString().toLowerCase())\n },\n currentOptionLabel () {\n return this.multiple\n ? this.searchable ? '' : this.placeholder\n : this.internalValue.length\n ? this.getOptionLabel(this.internalValue[0])\n : this.searchable ? '' : this.placeholder\n }\n },\n watch: {\n internalValue: {\n handler () {\n /* istanbul ignore else */\n if (this.resetAfter && this.internalValue.length) {\n this.search = '';\n this.$emit('update:modelValue', this.multiple ? [] : null);\n }\n },\n deep: true\n },\n search () {\n this.$emit('search-change', this.search);\n }\n },\n emits: ['open', 'search-change', 'close', 'select', 'update:modelValue', 'remove', 'tag'],\n methods: {\n /**\n * Returns the internalValue in a way it can be emited to the parent\n * @returns {Object||Array||String||Integer}\n */\n getValue () {\n return this.multiple\n ? this.internalValue\n : this.internalValue.length === 0\n ? null\n : this.internalValue[0]\n },\n /**\n * Filters and then flattens the options list\n * @param {Array}\n * @return {Array} returns a filtered and flat options list\n */\n filterAndFlat (options, search, label) {\n return flow(\n filterGroups(search, label, this.groupValues, this.groupLabel, this.customLabel),\n flattenOptions(this.groupValues, this.groupLabel)\n )(options)\n },\n /**\n * Flattens and then strips the group labels from the options list\n * @param {Array}\n * @return {Array} returns a flat options list without group labels\n */\n flatAndStrip (options) {\n return flow(\n flattenOptions(this.groupValues, this.groupLabel),\n stripGroups\n )(options)\n },\n /**\n * Updates the search value\n * @param {String}\n */\n updateSearch (query) {\n this.search = query;\n },\n /**\n * Finds out if the given query is already present\n * in the available options\n * @param {String}\n * @return {Boolean} returns true if element is available\n */\n isExistingOption (query) {\n return !this.options\n ? false\n : this.optionKeys.indexOf(query) > -1\n },\n /**\n * Finds out if the given element is already present\n * in the result value\n * @param {Object||String||Integer} option passed element to check\n * @returns {Boolean} returns true if element is selected\n */\n isSelected (option) {\n const opt = this.trackBy\n ? option[this.trackBy]\n : option;\n return this.valueKeys.indexOf(opt) > -1\n },\n /**\n * Finds out if the given option is disabled\n * @param {Object||String||Integer} option passed element to check\n * @returns {Boolean} returns true if element is disabled\n */\n isOptionDisabled (option) {\n return !!option.$isDisabled\n },\n /**\n * Returns empty string when options is null/undefined\n * Returns tag query if option is tag.\n * Returns the customLabel() results and casts it to string.\n *\n * @param {Object||String||Integer} Passed option\n * @returns {Object||String}\n */\n getOptionLabel (option) {\n if (isEmpty(option)) return ''\n /* istanbul ignore else */\n if (option.isTag) return option.label\n /* istanbul ignore else */\n if (option.$isLabel) return option.$groupLabel\n\n const label = this.customLabel(option, this.label);\n /* istanbul ignore else */\n if (isEmpty(label)) return ''\n return label\n },\n /**\n * Add the given option to the list of selected options\n * or sets the option as the selected option.\n * If option is already selected -> remove it from the results.\n *\n * @param {Object||String||Integer} option to select/deselect\n * @param {Boolean} block removing\n */\n select (option, key) {\n /* istanbul ignore else */\n if (option.$isLabel && this.groupSelect) {\n this.selectGroup(option);\n return\n }\n if (this.blockKeys.indexOf(key) !== -1 ||\n this.disabled ||\n option.$isDisabled ||\n option.$isLabel\n ) return\n /* istanbul ignore else */\n if (this.max && this.multiple && this.internalValue.length === this.max) return\n /* istanbul ignore else */\n if (key === 'Tab' && !this.pointerDirty) return\n if (option.isTag) {\n this.$emit('tag', option.label, this.id);\n this.search = '';\n if (this.closeOnSelect && !this.multiple) this.deactivate();\n } else {\n const isSelected = this.isSelected(option);\n\n if (isSelected) {\n if (key !== 'Tab') this.removeElement(option);\n return\n }\n\n if (this.multiple) {\n this.$emit('update:modelValue', this.internalValue.concat([option]));\n } else {\n this.$emit('update:modelValue', option);\n }\n\n this.$emit('select', option, this.id);\n\n /* istanbul ignore else */\n if (this.clearOnSelect) this.search = '';\n }\n /* istanbul ignore else */\n if (this.closeOnSelect) this.deactivate();\n },\n /**\n * Add the given group options to the list of selected options\n * If all group optiona are already selected -> remove it from the results.\n *\n * @param {Object||String||Integer} group to select/deselect\n */\n selectGroup (selectedGroup) {\n const group = this.options.find((option) => {\n return option[this.groupLabel] === selectedGroup.$groupLabel\n });\n\n if (!group) return\n\n if (this.wholeGroupSelected(group)) {\n this.$emit('remove', group[this.groupValues], this.id);\n\n const groupValues = this.trackBy ? group[this.groupValues].map(val => val[this.trackBy]) : group[this.groupValues];\n const newValue = this.internalValue.filter(\n option => groupValues.indexOf(this.trackBy ? option[this.trackBy] : option) === -1\n );\n\n this.$emit('update:modelValue', newValue);\n } else {\n let optionsToAdd = group[this.groupValues].filter(\n option => !(this.isOptionDisabled(option) || this.isSelected(option))\n );\n\n // if max is defined then just select options respecting max\n if (this.max) {\n optionsToAdd.splice(this.max - this.internalValue.length);\n }\n\n this.$emit('select', optionsToAdd, this.id);\n this.$emit(\n 'update:modelValue',\n this.internalValue.concat(optionsToAdd)\n );\n }\n\n if (this.closeOnSelect) this.deactivate();\n },\n /**\n * Helper to identify if all values in a group are selected\n *\n * @param {Object} group to validated selected values against\n */\n wholeGroupSelected (group) {\n return group[this.groupValues].every((option) => this.isSelected(option) || this.isOptionDisabled(option)\n )\n },\n /**\n * Helper to identify if all values in a group are disabled\n *\n * @param {Object} group to check for disabled values\n */\n wholeGroupDisabled (group) {\n return group[this.groupValues].every(this.isOptionDisabled)\n },\n /**\n * Removes the given option from the selected options.\n * Additionally checks this.allowEmpty prop if option can be removed when\n * it is the last selected option.\n *\n * @param {type} option description\n * @return {type} description\n */\n removeElement (option, shouldClose = true) {\n /* istanbul ignore else */\n if (this.disabled) return\n /* istanbul ignore else */\n if (option.$isDisabled) return\n /* istanbul ignore else */\n if (!this.allowEmpty && this.internalValue.length <= 1) {\n this.deactivate();\n return\n }\n\n const index = typeof option === 'object'\n ? this.valueKeys.indexOf(option[this.trackBy])\n : this.valueKeys.indexOf(option);\n\n if (this.multiple) {\n const newValue = this.internalValue.slice(0, index).concat(this.internalValue.slice(index + 1));\n this.$emit('update:modelValue', newValue);\n } else {\n this.$emit('update:modelValue', null);\n }\n this.$emit('remove', option, this.id);\n\n /* istanbul ignore else */\n if (this.closeOnSelect && shouldClose) this.deactivate();\n },\n /**\n * Calls this.removeElement() with the last element\n * from this.internalValue (selected element Array)\n *\n * @fires this#removeElement\n */\n removeLastElement () {\n /* istanbul ignore else */\n if (this.blockKeys.indexOf('Delete') !== -1) return\n /* istanbul ignore else */\n if (this.search.length === 0 && Array.isArray(this.internalValue) && this.internalValue.length) {\n this.removeElement(this.internalValue[this.internalValue.length - 1], false);\n }\n },\n /**\n * Opens the multiselect’s dropdown.\n * Sets this.isOpen to TRUE\n */\n activate () {\n /* istanbul ignore else */\n if (this.isOpen || this.disabled) return\n\n this.adjustPosition();\n /* istanbul ignore else */\n if (this.groupValues && this.pointer === 0 && this.filteredOptions.length) {\n this.pointer = 1;\n }\n\n this.isOpen = true;\n /* istanbul ignore else */\n if (this.searchable) {\n if (!this.preserveSearch) this.search = '';\n if (!this.preventAutofocus) this.$nextTick(() => this.$refs.search && this.$refs.search.focus());\n } else if (!this.preventAutofocus) {\n if (typeof this.$el !== 'undefined') this.$el.focus();\n }\n this.$emit('open', this.id);\n },\n /**\n * Closes the multiselect’s dropdown.\n * Sets this.isOpen to FALSE\n */\n deactivate () {\n /* istanbul ignore else */\n if (!this.isOpen) return\n\n this.isOpen = false;\n /* istanbul ignore else */\n if (this.searchable) {\n if (this.$refs.search !== null && typeof this.$refs.search !== 'undefined') this.$refs.search.blur();\n } else {\n if (typeof this.$el !== 'undefined') this.$el.blur();\n }\n if (!this.preserveSearch) this.search = '';\n this.$emit('close', this.getValue(), this.id);\n },\n /**\n * Call this.activate() or this.deactivate()\n * depending on this.isOpen value.\n *\n * @fires this#activate || this#deactivate\n * @property {Boolean} isOpen indicates if dropdown is open\n */\n toggle () {\n this.isOpen\n ? this.deactivate()\n : this.activate();\n },\n /**\n * Updates the hasEnoughSpace variable used for\n * detecting where to expand the dropdown\n */\n adjustPosition () {\n if (typeof window === 'undefined') return\n\n const spaceAbove = this.$el.getBoundingClientRect().top;\n const spaceBelow = window.innerHeight - this.$el.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > this.maxHeight;\n\n if (hasEnoughSpaceBelow || spaceBelow > spaceAbove || this.openDirection === 'below' || this.openDirection === 'bottom') {\n this.preferredOpenDirection = 'below';\n this.optimizedHeight = Math.min(spaceBelow - 40, this.maxHeight);\n } else {\n this.preferredOpenDirection = 'above';\n this.optimizedHeight = Math.min(spaceAbove - 40, this.maxHeight);\n }\n }\n }\n};\n\nvar pointerMixin = {\n data () {\n return {\n pointer: 0,\n pointerDirty: false\n }\n },\n props: {\n /**\n * Enable/disable highlighting of the pointed value.\n * @type {Boolean}\n * @default true\n */\n showPointer: {\n type: Boolean,\n default: true\n },\n optionHeight: {\n type: Number,\n default: 40\n }\n },\n computed: {\n pointerPosition () {\n return this.pointer * this.optionHeight\n },\n visibleElements () {\n return this.optimizedHeight / this.optionHeight\n }\n },\n watch: {\n filteredOptions () {\n this.pointerAdjust();\n },\n isOpen () {\n this.pointerDirty = false;\n },\n pointer () {\n this.$refs.search && this.$refs.search.setAttribute('aria-activedescendant', this.id + '-' + this.pointer.toString());\n }\n },\n methods: {\n optionHighlight (index, option) {\n return {\n 'multiselect__option--highlight': index === this.pointer && this.showPointer,\n 'multiselect__option--selected': this.isSelected(option)\n }\n },\n groupHighlight (index, selectedGroup) {\n if (!this.groupSelect) {\n return [\n 'multiselect__option--disabled',\n {'multiselect__option--group': selectedGroup.$isLabel}\n ]\n }\n\n const group = this.options.find((option) => {\n return option[this.groupLabel] === selectedGroup.$groupLabel\n });\n\n return group && !this.wholeGroupDisabled(group) ? [\n 'multiselect__option--group',\n {'multiselect__option--highlight': index === this.pointer && this.showPointer},\n {'multiselect__option--group-selected': this.wholeGroupSelected(group)}\n ] : 'multiselect__option--disabled'\n },\n addPointerElement ({key} = 'Enter') {\n /* istanbul ignore else */\n if (this.filteredOptions.length > 0) {\n this.select(this.filteredOptions[this.pointer], key);\n }\n this.pointerReset();\n },\n pointerForward () {\n /* istanbul ignore else */\n if (this.pointer < this.filteredOptions.length - 1) {\n this.pointer++;\n /* istanbul ignore next */\n if (this.$refs.list.scrollTop <= this.pointerPosition - (this.visibleElements - 1) * this.optionHeight) {\n this.$refs.list.scrollTop = this.pointerPosition - (this.visibleElements - 1) * this.optionHeight;\n }\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) this.pointerForward();\n }\n this.pointerDirty = true;\n },\n pointerBackward () {\n if (this.pointer > 0) {\n this.pointer--;\n /* istanbul ignore else */\n if (this.$refs.list.scrollTop >= this.pointerPosition) {\n this.$refs.list.scrollTop = this.pointerPosition;\n }\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) this.pointerBackward();\n } else {\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[0].$isLabel &&\n !this.groupSelect\n ) this.pointerForward();\n }\n this.pointerDirty = true;\n },\n pointerReset () {\n /* istanbul ignore else */\n if (!this.closeOnSelect) return\n this.pointer = 0;\n /* istanbul ignore else */\n if (this.$refs.list) {\n this.$refs.list.scrollTop = 0;\n }\n },\n pointerAdjust () {\n /* istanbul ignore else */\n if (this.pointer >= this.filteredOptions.length - 1) {\n this.pointer = this.filteredOptions.length\n ? this.filteredOptions.length - 1\n : 0;\n }\n\n if (this.filteredOptions.length > 0 &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) {\n this.pointerForward();\n }\n },\n pointerSet (index) {\n this.pointer = index;\n this.pointerDirty = true;\n }\n }\n};\n\nvar script = {\n name: 'vue-multiselect',\n mixins: [multiselectMixin, pointerMixin],\n compatConfig: {\n MODE: 3,\n ATTR_ENUMERATED_COERCION: false\n },\n props: {\n /**\n * name attribute to match optional label element\n * @default ''\n * @type {String}\n */\n name: {\n type: String,\n default: ''\n },\n /**\n * Presets the selected options value.\n * @type {Object||Array||String||Integer}\n */\n modelValue: {\n type: null,\n default () {\n return []\n }\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectLabel: {\n type: String,\n default: 'Press enter to select'\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectGroupLabel: {\n type: String,\n default: 'Press enter to select group'\n },\n /**\n * String to show next to selected option\n * @default 'Selected'\n * @type {String}\n */\n selectedLabel: {\n type: String,\n default: 'Selected'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectLabel: {\n type: String,\n default: 'Press enter to remove'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectGroupLabel: {\n type: String,\n default: 'Press enter to deselect group'\n },\n /**\n * Decide whether to show pointer labels\n * @default true\n * @type {Boolean}\n */\n showLabels: {\n type: Boolean,\n default: true\n },\n /**\n * Limit the display of selected options. The rest will be hidden within the limitText string.\n * @default 99999\n * @type {Integer}\n */\n limit: {\n type: Number,\n default: 99999\n },\n /**\n * Sets maxHeight style value of the dropdown\n * @default 300\n * @type {Integer}\n */\n maxHeight: {\n type: Number,\n default: 300\n },\n /**\n * Function that process the message shown when selected\n * elements pass the defined limit.\n * @default 'and * more'\n * @param {Int} count Number of elements more than limit\n * @type {Function}\n */\n limitText: {\n type: Function,\n default: (count) => `and ${count} more`\n },\n /**\n * Set true to trigger the loading spinner.\n * @default False\n * @type {Boolean}\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Disables the multiselect if true.\n * @default false\n * @type {Boolean}\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Fixed opening direction\n * @default ''\n * @type {String}\n */\n openDirection: {\n type: String,\n default: ''\n },\n /**\n * Shows slot with message about empty options\n * @default true\n * @type {Boolean}\n */\n showNoOptions: {\n type: Boolean,\n default: true\n },\n showNoResults: {\n type: Boolean,\n default: true\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n computed: {\n hasOptionGroup () {\n return this.groupValues && this.groupLabel && this.groupSelect\n },\n isSingleLabelVisible () {\n return (\n (this.singleValue || this.singleValue === 0) &&\n (!this.isOpen || !this.searchable) &&\n !this.visibleValues.length\n )\n },\n isPlaceholderVisible () {\n return !this.internalValue.length && (!this.searchable || !this.isOpen)\n },\n visibleValues () {\n return this.multiple ? this.internalValue.slice(0, this.limit) : []\n },\n singleValue () {\n return this.internalValue[0]\n },\n deselectLabelText () {\n return this.showLabels ? this.deselectLabel : ''\n },\n deselectGroupLabelText () {\n return this.showLabels ? this.deselectGroupLabel : ''\n },\n selectLabelText () {\n return this.showLabels ? this.selectLabel : ''\n },\n selectGroupLabelText () {\n return this.showLabels ? this.selectGroupLabel : ''\n },\n selectedLabelText () {\n return this.showLabels ? this.selectedLabel : ''\n },\n inputStyle () {\n if (\n this.searchable ||\n (this.multiple && this.modelValue && this.modelValue.length)\n ) {\n // Hide input by setting the width to 0 allowing it to receive focus\n return this.isOpen\n ? {width: '100%'}\n : {width: '0', position: 'absolute', padding: '0'}\n }\n return ''\n },\n contentStyle () {\n return this.options.length\n ? {display: 'inline-block'}\n : {display: 'block'}\n },\n isAbove () {\n if (this.openDirection === 'above' || this.openDirection === 'top') {\n return true\n } else if (\n this.openDirection === 'below' ||\n this.openDirection === 'bottom'\n ) {\n return false\n } else {\n return this.preferredOpenDirection === 'above'\n }\n },\n showSearchInput () {\n return (\n this.searchable &&\n (this.hasSingleSelectedSlot &&\n (this.visibleSingleValue || this.visibleSingleValue === 0)\n ? this.isOpen\n : true)\n )\n }\n }\n};\n\nconst _hoisted_1 = {\n ref: \"tags\",\n class: \"multiselect__tags\"\n};\nconst _hoisted_2 = { class: \"multiselect__tags-wrap\" };\nconst _hoisted_3 = { class: \"multiselect__spinner\" };\nconst _hoisted_4 = { key: 0 };\nconst _hoisted_5 = { class: \"multiselect__option\" };\nconst _hoisted_6 = { class: \"multiselect__option\" };\nconst _hoisted_7 = /*#__PURE__*/createTextVNode(\"No elements found. Consider changing the search query.\");\nconst _hoisted_8 = { class: \"multiselect__option\" };\nconst _hoisted_9 = /*#__PURE__*/createTextVNode(\"List is empty.\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createBlock(\"div\", {\n tabindex: _ctx.searchable ? -1 : $props.tabindex,\n class: [{ 'multiselect--active': _ctx.isOpen, 'multiselect--disabled': $props.disabled, 'multiselect--above': $options.isAbove, 'multiselect--has-options-group': $options.hasOptionGroup }, \"multiselect\"],\n onFocus: _cache[14] || (_cache[14] = $event => (_ctx.activate())),\n onBlur: _cache[15] || (_cache[15] = $event => (_ctx.searchable ? false : _ctx.deactivate())),\n onKeydown: [\n _cache[16] || (_cache[16] = withKeys(withModifiers($event => (_ctx.pointerForward()), [\"self\",\"prevent\"]), [\"down\"])),\n _cache[17] || (_cache[17] = withKeys(withModifiers($event => (_ctx.pointerBackward()), [\"self\",\"prevent\"]), [\"up\"]))\n ],\n onKeypress: _cache[18] || (_cache[18] = withKeys(withModifiers($event => (_ctx.addPointerElement($event)), [\"stop\",\"self\"]), [\"enter\",\"tab\"])),\n onKeyup: _cache[19] || (_cache[19] = withKeys($event => (_ctx.deactivate()), [\"esc\"])),\n role: \"combobox\",\n \"aria-owns\": 'listbox-'+_ctx.id\n }, [\n renderSlot(_ctx.$slots, \"caret\", { toggle: _ctx.toggle }, () => [\n createVNode(\"div\", {\n onMousedown: _cache[1] || (_cache[1] = withModifiers($event => (_ctx.toggle()), [\"prevent\",\"stop\"])),\n class: \"multiselect__select\"\n }, null, 32 /* HYDRATE_EVENTS */)\n ]),\n renderSlot(_ctx.$slots, \"clear\", { search: _ctx.search }),\n createVNode(\"div\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"selection\", {\n search: _ctx.search,\n remove: _ctx.removeElement,\n values: $options.visibleValues,\n isOpen: _ctx.isOpen\n }, () => [\n withDirectives(createVNode(\"div\", _hoisted_2, [\n (openBlock(true), createBlock(Fragment, null, renderList($options.visibleValues, (option, index) => {\n return renderSlot(_ctx.$slots, \"tag\", {\n option: option,\n search: _ctx.search,\n remove: _ctx.removeElement\n }, () => [\n (openBlock(), createBlock(\"span\", {\n class: \"multiselect__tag\",\n key: index\n }, [\n createVNode(\"span\", {\n textContent: toDisplayString(_ctx.getOptionLabel(option))\n }, null, 8 /* PROPS */, [\"textContent\"]),\n createVNode(\"i\", {\n tabindex: \"1\",\n onKeypress: withKeys(withModifiers($event => (_ctx.removeElement(option)), [\"prevent\"]), [\"enter\"]),\n onMousedown: withModifiers($event => (_ctx.removeElement(option)), [\"prevent\"]),\n class: \"multiselect__tag-icon\"\n }, null, 40 /* PROPS, HYDRATE_EVENTS */, [\"onKeypress\", \"onMousedown\"])\n ]))\n ])\n }), 256 /* UNKEYED_FRAGMENT */))\n ], 512 /* NEED_PATCH */), [\n [vShow, $options.visibleValues.length > 0]\n ]),\n (_ctx.internalValue && _ctx.internalValue.length > $props.limit)\n ? renderSlot(_ctx.$slots, \"limit\", { key: 0 }, () => [\n createVNode(\"strong\", {\n class: \"multiselect__strong\",\n textContent: toDisplayString($props.limitText(_ctx.internalValue.length - $props.limit))\n }, null, 8 /* PROPS */, [\"textContent\"])\n ])\n : createCommentVNode(\"v-if\", true)\n ]),\n createVNode(Transition, { name: \"multiselect__loading\" }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"loading\", {}, () => [\n withDirectives(createVNode(\"div\", _hoisted_3, null, 512 /* NEED_PATCH */), [\n [vShow, $props.loading]\n ])\n ])\n ]),\n _: 3 /* FORWARDED */\n }),\n (_ctx.searchable)\n ? (openBlock(), createBlock(\"input\", {\n key: 0,\n ref: \"search\",\n name: $props.name,\n id: _ctx.id,\n type: \"text\",\n autocomplete: \"off\",\n spellcheck: false,\n placeholder: _ctx.placeholder,\n style: $options.inputStyle,\n value: _ctx.search,\n disabled: $props.disabled,\n tabindex: $props.tabindex,\n onInput: _cache[2] || (_cache[2] = $event => (_ctx.updateSearch($event.target.value))),\n onFocus: _cache[3] || (_cache[3] = withModifiers($event => (_ctx.activate()), [\"prevent\"])),\n onBlur: _cache[4] || (_cache[4] = withModifiers($event => (_ctx.deactivate()), [\"prevent\"])),\n onKeyup: _cache[5] || (_cache[5] = withKeys($event => (_ctx.deactivate()), [\"esc\"])),\n onKeydown: [\n _cache[6] || (_cache[6] = withKeys(withModifiers($event => (_ctx.pointerForward()), [\"prevent\"]), [\"down\"])),\n _cache[7] || (_cache[7] = withKeys(withModifiers($event => (_ctx.pointerBackward()), [\"prevent\"]), [\"up\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers($event => (_ctx.removeLastElement()), [\"stop\"]), [\"delete\"]))\n ],\n onKeypress: _cache[8] || (_cache[8] = withKeys(withModifiers($event => (_ctx.addPointerElement($event)), [\"prevent\",\"stop\",\"self\"]), [\"enter\"])),\n class: \"multiselect__input\",\n \"aria-controls\": 'listbox-'+_ctx.id\n }, null, 44 /* STYLE, PROPS, HYDRATE_EVENTS */, [\"name\", \"id\", \"placeholder\", \"value\", \"disabled\", \"tabindex\", \"aria-controls\"]))\n : createCommentVNode(\"v-if\", true),\n ($options.isSingleLabelVisible)\n ? (openBlock(), createBlock(\"span\", {\n key: 1,\n class: \"multiselect__single\",\n onMousedown: _cache[10] || (_cache[10] = withModifiers((...args) => (_ctx.toggle && _ctx.toggle(...args)), [\"prevent\"]))\n }, [\n renderSlot(_ctx.$slots, \"singleLabel\", { option: $options.singleValue }, () => [\n createTextVNode(toDisplayString(_ctx.currentOptionLabel), 1 /* TEXT */)\n ])\n ], 32 /* HYDRATE_EVENTS */))\n : createCommentVNode(\"v-if\", true),\n ($options.isPlaceholderVisible)\n ? (openBlock(), createBlock(\"span\", {\n key: 2,\n class: \"multiselect__placeholder\",\n onMousedown: _cache[11] || (_cache[11] = withModifiers((...args) => (_ctx.toggle && _ctx.toggle(...args)), [\"prevent\"]))\n }, [\n renderSlot(_ctx.$slots, \"placeholder\", {}, () => [\n createTextVNode(toDisplayString(_ctx.placeholder), 1 /* TEXT */)\n ])\n ], 32 /* HYDRATE_EVENTS */))\n : createCommentVNode(\"v-if\", true)\n ], 512 /* NEED_PATCH */),\n createVNode(Transition, { name: \"multiselect\" }, {\n default: withCtx(() => [\n withDirectives(createVNode(\"div\", {\n class: \"multiselect__content-wrapper\",\n onFocus: _cache[12] || (_cache[12] = (...args) => (_ctx.activate && _ctx.activate(...args))),\n tabindex: \"-1\",\n onMousedown: _cache[13] || (_cache[13] = withModifiers(() => {}, [\"prevent\"])),\n style: { maxHeight: _ctx.optimizedHeight + 'px' },\n ref: \"list\"\n }, [\n createVNode(\"ul\", {\n class: \"multiselect__content\",\n style: $options.contentStyle,\n role: \"listbox\",\n id: 'listbox-'+_ctx.id\n }, [\n renderSlot(_ctx.$slots, \"beforeList\"),\n (_ctx.multiple && _ctx.max === _ctx.internalValue.length)\n ? (openBlock(), createBlock(\"li\", _hoisted_4, [\n createVNode(\"span\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"maxElements\", {}, () => [\n createTextVNode(\"Maximum of \" + toDisplayString(_ctx.max) + \" options selected. First remove a selected option to select another.\", 1 /* TEXT */)\n ])\n ])\n ]))\n : createCommentVNode(\"v-if\", true),\n (!_ctx.max || _ctx.internalValue.length < _ctx.max)\n ? (openBlock(true), createBlock(Fragment, { key: 1 }, renderList(_ctx.filteredOptions, (option, index) => {\n return (openBlock(), createBlock(\"li\", {\n class: \"multiselect__element\",\n key: index,\n id: _ctx.id + '-' + index,\n role: !(option && (option.$isLabel || option.$isDisabled)) ? 'option' : null\n }, [\n (!(option && (option.$isLabel || option.$isDisabled)))\n ? (openBlock(), createBlock(\"span\", {\n key: 0,\n class: [_ctx.optionHighlight(index, option), \"multiselect__option\"],\n onClick: withModifiers($event => (_ctx.select(option)), [\"stop\"]),\n onMouseenter: withModifiers($event => (_ctx.pointerSet(index)), [\"self\"]),\n \"data-select\": option && option.isTag ? _ctx.tagPlaceholder : $options.selectLabelText,\n \"data-selected\": $options.selectedLabelText,\n \"data-deselect\": $options.deselectLabelText\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n search: _ctx.search,\n index: index\n }, () => [\n createVNode(\"span\", null, toDisplayString(_ctx.getOptionLabel(option)), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"onClick\", \"onMouseenter\", \"data-select\", \"data-selected\", \"data-deselect\"]))\n : createCommentVNode(\"v-if\", true),\n (option && (option.$isLabel || option.$isDisabled))\n ? (openBlock(), createBlock(\"span\", {\n key: 1,\n \"data-select\": _ctx.groupSelect && $options.selectGroupLabelText,\n \"data-deselect\": _ctx.groupSelect && $options.deselectGroupLabelText,\n class: [_ctx.groupHighlight(index, option), \"multiselect__option\"],\n onMouseenter: withModifiers($event => (_ctx.groupSelect && _ctx.pointerSet(index)), [\"self\"]),\n onMousedown: withModifiers($event => (_ctx.selectGroup(option)), [\"prevent\"])\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n search: _ctx.search,\n index: index\n }, () => [\n createVNode(\"span\", null, toDisplayString(_ctx.getOptionLabel(option)), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"data-select\", \"data-deselect\", \"onMouseenter\", \"onMousedown\"]))\n : createCommentVNode(\"v-if\", true)\n ], 8 /* PROPS */, [\"id\", \"role\"]))\n }), 128 /* KEYED_FRAGMENT */))\n : createCommentVNode(\"v-if\", true),\n withDirectives(createVNode(\"li\", null, [\n createVNode(\"span\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"noResult\", { search: _ctx.search }, () => [\n _hoisted_7\n ])\n ])\n ], 512 /* NEED_PATCH */), [\n [vShow, $props.showNoResults && (_ctx.filteredOptions.length === 0 && _ctx.search && !$props.loading)]\n ]),\n withDirectives(createVNode(\"li\", null, [\n createVNode(\"span\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"noOptions\", {}, () => [\n _hoisted_9\n ])\n ])\n ], 512 /* NEED_PATCH */), [\n [vShow, $props.showNoOptions && ((_ctx.options.length === 0 || ($options.hasOptionGroup === true && _ctx.filteredOptions.length === 0)) && !_ctx.search && !$props.loading)]\n ]),\n renderSlot(_ctx.$slots, \"afterList\")\n ], 12 /* STYLE, PROPS */, [\"id\"])\n ], 36 /* STYLE, HYDRATE_EVENTS */), [\n [vShow, _ctx.isOpen]\n ])\n ]),\n _: 3 /* FORWARDED */\n })\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"tabindex\", \"aria-owns\"]))\n}\n\nscript.render = render;\n\nexport default script;\nexport { script as Multiselect, multiselectMixin, pointerMixin };\n","\n \n \n {{ $t(\"modals.attributes_extraction_confirmation.target_attributes\") }}\n \n\n \n \n {{ isAllSelected ? $t(\"shared.deselect_all\") : $t(\"shared.select_all\") }}\n \n\n \n \n \n {{ option.name }}\n\n \n \n \n \n \n\n \n \n \n \n {{ props.option.name }}\n \n \n \n \n {{ $t(\"modals.attributes_extraction_confirmation.no_results_found\") }}\n \n \n \n \n\n\n\n\n\n","\n \n \n {{ $t(\"modals.attributes_extraction_confirmation.target_attributes\") }}\n \n\n \n \n {{ attr.text }}\n \n \n \n\n\n\n","\n \n \n {{ $t(\"modals.attributes_extraction_confirmation.cancel\") }}\n \n \n {{ $t(\"modals.attributes_extraction_confirmation.extract\") }}\n \n \n\n\n\n","\n \n \n \n \n \n {{ youWillExtractString }}\n \n \n\n\n\n","\n \n {{ t(`attributes_extraction_confirmation_modal.target_options.title`) }}\n\n \n \n \n \n \n {{ option.count }}\n {{ option.label }}\n \n \n \n\n\n\n","/**\n * URL and path utilities for Tektome application\n */\n\n/**\n * Extract a segment value from a URL path\n *\n * Example:\n * getPathSegment('/projects/123/input_files/456', 'input_files') => '456'\n */\nexport const getPathSegment = (path, segment) => {\n // Split the path into segments\n const segments = path.split(\"/\").filter(Boolean)\n\n // Find the index of the segment we're looking for\n const segmentIndex = segments.findIndex(s => s === segment)\n\n // If segment exists and there's a value after it, return that value\n if (segmentIndex !== -1 && segmentIndex < segments.length - 1) {\n return segments[segmentIndex + 1]\n }\n\n return null\n}\n\n/**\n * Remove query parameters from a URL\n */\nexport const removeQueryParams = url => {\n return url.includes(\"?\") ? url.split(\"?\")[0] : url\n}\n","\n \n \n \n \n \n \n {{ $t(\"modals.attributes_extraction_confirmation.extract_attributes\") }}\n \n \n \n \n \n\n \n \n\n \n\n \n\n \n \n \n \n\n\n\n","\n \n\n\n\n\n\n","import { createApp } from \"vue\"\nimport { useTranslations } from \"../shared/useTranslations\"\nimport AttributeExtractionConfirmationModal from \"./App.vue\"\n\nexport default function setup() {\n const modalElement = document.getElementById(\"attributes-extraction-confirmation-modal\")\n\n if (!modalElement) {\n return\n }\n\n const app = createApp(AttributeExtractionConfirmationModal, { domElement: modalElement })\n useTranslations(app)\n\n app.mount(modalElement)\n}\n","import { initAllTooltips, initTooltips } from \"./tooltip\"\nimport setupExtractionTicketApprovalModal from \"@/attributes_extraction_ticket_approval_modal\"\nimport setupExtractionConfirmationModal from \"@/attributes_extraction_confirmation_modal\"\n\nfunction initPluginJs() {\n ;(\"use strict\")\n\n // MetisMenu js\n function initMetisMenu() {\n // MetisMenu js\n document.addEventListener(\"DOMContentLoaded\", function (event) {\n if (document.getElementById(\"side-menu\")) new MetisMenu(\"#side-menu\")\n })\n }\n\n // initLeftMenuCollapse\n function initLeftMenuCollapse() {\n var currentSIdebarSize = document.body.getAttribute(\"data-sidebar-size\")\n // TODO: investigate why this was needed. updateRadio is not defined anywhere\n // window.onload = function () {\n // if (window.innerWidth >= 1024 && window.innerWidth <= 1366) {\n // updateRadio(\"sidebar-size-small\")\n // }\n // }\n var verticalButton = document.getElementsByClassName(\"vertical-menu-btn\")\n for (var i = 0; i < verticalButton.length; i++) {\n ;(function (index) {\n verticalButton[index] &&\n verticalButton[index].addEventListener(\"click\", function (event) {\n event.preventDefault()\n document.body.classList.toggle(\"sidebar-enable\")\n if (window.innerWidth >= 992) {\n if (currentSIdebarSize == null) {\n document.body.getAttribute(\"data-sidebar-size\") == null ||\n document.body.getAttribute(\"data-sidebar-size\") == \"lg\"\n ? document.body.setAttribute(\"data-sidebar-size\", \"sm\")\n : document.body.setAttribute(\"data-sidebar-size\", \"lg\")\n } else if (currentSIdebarSize == \"md\") {\n document.body.getAttribute(\"data-sidebar-size\") == \"md\"\n ? document.body.setAttribute(\"data-sidebar-size\", \"sm\")\n : document.body.setAttribute(\"data-sidebar-size\", \"md\")\n } else {\n document.body.getAttribute(\"data-sidebar-size\") == \"sm\"\n ? document.body.setAttribute(\"data-sidebar-size\", \"lg\")\n : document.body.setAttribute(\"data-sidebar-size\", \"sm\")\n }\n } else {\n initMenuItemScroll()\n }\n })\n })(i)\n }\n }\n\n // menu active\n function initActiveMenu() {\n var menuItems = document.querySelectorAll(\"#sidebar-menu a\")\n menuItems &&\n menuItems.forEach(function (item) {\n var pageUrl = window.location.href.split(/[?#]/)[0]\n\n if (item.href == pageUrl) {\n item.classList.add(\"active\")\n var parent = item.parentElement\n if (parent && parent.id !== \"side-menu\") {\n parent.classList.add(\"mm-active\")\n var parent2 = parent.parentElement // ul .\n if (parent2 && parent2.id !== \"side-menu\") {\n parent2.classList.add(\"mm-show\") // ul tag\n var parent3 = parent2.parentElement // li tag\n if (parent3 && parent3.id !== \"side-menu\") {\n parent3.classList.add(\"mm-active\") // li\n var parent4 = parent3.parentElement // ul\n if (parent4 && parent4.id !== \"side-menu\") {\n parent4.classList.add(\"mm-show\") // ul\n var parent5 = parent4.parentElement\n if (parent5 && parent5.id !== \"side-menu\") {\n parent5.classList.add(\"mm-active\") // li\n }\n }\n }\n }\n }\n }\n })\n }\n\n // sidebarMenu\n\n function initMenuItemScroll() {\n setTimeout(function () {\n var sidebarMenu = document.getElementById(\"side-menu\")\n if (sidebarMenu) {\n var activeMenu = sidebarMenu.querySelector(\".mm-active .active\")\n var offset = activeMenu ? activeMenu.offsetTop : 0\n if (offset > 300) {\n var verticalMenu = document.getElementsByClassName(\"vertical-menu\")\n ? document.getElementsByClassName(\"vertical-menu\")[0]\n : \"\"\n if (verticalMenu && verticalMenu.querySelector(\".simplebar-content-wrapper\")) {\n setTimeout(function () {\n offset == 330\n ? (verticalMenu.querySelector(\".simplebar-content-wrapper\").scrollTop = offset + 85)\n : (verticalMenu.querySelector(\".simplebar-content-wrapper\").scrollTop = offset)\n }, 0)\n }\n }\n }\n }, 250)\n }\n\n function initModeSetting() {\n var body = document.body\n var lightDarkBtn = document.querySelectorAll(\".light-dark-mode\")\n if (lightDarkBtn) {\n lightDarkBtn.forEach(function (item) {\n item.addEventListener(\"click\", function (event) {\n if (body.hasAttribute(\"data-mode\") && body.getAttribute(\"data-mode\") == \"dark\") {\n body.setAttribute(\"data-mode\", \"light\")\n sessionStorage.setItem(\"data-layout-mode\", \"light\")\n } else {\n body.setAttribute(\"data-mode\", \"dark\")\n sessionStorage.setItem(\"data-layout-mode\", \"dark\")\n }\n })\n })\n }\n\n if (sessionStorage.getItem(\"data-layout-mode\") && sessionStorage.getItem(\"data-layout-mode\") == \"light\") {\n body.setAttribute(\"data-mode\", \"light\")\n } else if (sessionStorage.getItem(\"data-layout-mode\") == \"dark\") {\n body.setAttribute(\"data-mode\", \"dark\")\n }\n }\n\n /********* Alert common js *********/\n\n // alert dismissible\n function initAlert() {\n if (document.querySelectorAll(\".alert-dismissible\")) {\n var alertDismiss = document.querySelectorAll(\".alert-dismissible\")\n\n Array.from(alertDismiss).forEach(function (item) {\n item.querySelector(\".alert-close\").addEventListener(\"click\", function () {\n item.classList.add(\"hidden\")\n })\n })\n }\n }\n\n /********* dropdown common js *********/\n // TODO: replace this with https://www.stimulus-components.com/docs/stimulus-dropdown\n function initDropdown() {\n var dropdownElem = document.querySelectorAll(\".dropdown\")\n var dropupElem = document.querySelectorAll(\".dropup\")\n var dropStartElem = document.querySelectorAll(\".dropstart\")\n var dropendElem = document.querySelectorAll(\".dropend\")\n var isShowDropMenu = false\n var isMenuInside = false\n // dropdown event\n dropdownEvent(dropdownElem, \"bottom-start\")\n // dropup event\n dropdownEvent(dropupElem, \"top-start\")\n // dropstart event\n dropdownEvent(dropStartElem, \"left-start\")\n // dropend event\n dropdownEvent(dropendElem, \"right-start\")\n\n function dropdownEvent(elem, place) {\n Array.from(elem).forEach(function (item) {\n item.querySelectorAll(\".dropdown-toggle\").forEach(function (subitem) {\n // Use a data attribute to check if we've already attached this click listener\n if (!subitem.dataset.dropdownClickBound) {\n subitem.dataset.dropdownClickBound = \"true\"\n subitem.addEventListener(\"click\", function (event) {\n subitem.classList.toggle(\"show\")\n modifyZIdexForToggleStickyParent(subitem, \"toggle\")\n\n Popper.createPopper(subitem, item.querySelector(\".dropdown-menu\"), {\n placement: place,\n strategy: \"fixed\"\n })\n // Call twice to fix dropdown randomly showing up\n Popper.createPopper(subitem, item.querySelector(\".dropdown-menu\"), {\n placement: place,\n strategy: \"fixed\"\n })\n if (!subitem.classList.contains(\"show\")) {\n item.querySelector(\".dropdown-menu\").classList.remove(\"block\")\n item.querySelector(\".dropdown-menu\").classList.add(\"hidden\")\n } else {\n dismissDropdownMenu()\n item.querySelector(\".dropdown-menu\").classList.add(\"block\")\n item.querySelector(\".dropdown-menu\").classList.remove(\"hidden\")\n\n if (item.querySelector(\".dropdown-menu\").classList.contains(\"block\")) {\n subitem.classList.add(\"show\")\n modifyZIdexForToggleStickyParent(subitem, \"add\")\n } else {\n subitem.classList.remove(\"show\")\n modifyZIdexForToggleStickyParent(subitem, \"remove\")\n }\n event.stopPropagation()\n }\n\n isMenuInside = false\n })\n }\n })\n })\n }\n\n function dismissDropdownMenu() {\n Array.from(document.querySelectorAll(\".dropdown-menu\")).forEach(function (item) {\n item.classList.remove(\"block\")\n item.classList.add(\"hidden\")\n })\n Array.from(document.querySelectorAll(\".dropdown-toggle\")).forEach(function (item) {\n item.classList.remove(\"show\")\n modifyZIdexForToggleStickyParent(item, \"remove\")\n })\n\n isShowDropMenu = false\n }\n\n // dropdown form\n Array.from(document.querySelectorAll(\".dropdown-menu\")).forEach(function (menuEl) {\n var forms = menuEl.querySelectorAll(\"form\")\n if (forms.length) {\n Array.from(forms).forEach(function (subitem) {\n // Check if we've already attached a click listener\n if (!subitem.dataset.dropdownFormClickBound) {\n subitem.dataset.dropdownFormClickBound = \"true\"\n subitem.addEventListener(\"click\", function (event) {\n if (!isShowDropMenu) {\n isShowDropMenu = true\n }\n })\n }\n })\n }\n })\n // data-tw-auto-close\n Array.from(document.querySelectorAll(\".dropdown-toggle\")).forEach(function (item) {\n var elem = item.parentElement\n var dropdownMenu = elem.querySelector(\".dropdown-menu\")\n\n if (item.getAttribute(\"data-tw-auto-close\") == \"outside\") {\n // If not already bound\n if (dropdownMenu && !dropdownMenu.dataset.dropdownOutsideBound) {\n dropdownMenu.dataset.dropdownOutsideBound = \"true\"\n dropdownMenu.addEventListener(\"click\", function () {\n if (!isShowDropMenu) {\n isShowDropMenu = true\n }\n })\n }\n } else if (item.getAttribute(\"data-tw-auto-close\") == \"inside\") {\n // Toggle element click\n if (!item.dataset.dropdownInsideBound) {\n item.dataset.dropdownInsideBound = \"true\"\n item.addEventListener(\"click\", function () {\n isShowDropMenu = true\n isMenuInside = true\n })\n }\n\n // Dropdown menu click\n if (dropdownMenu && !dropdownMenu.dataset.dropdownMenuInsideBound) {\n dropdownMenu.dataset.dropdownMenuInsideBound = \"true\"\n dropdownMenu.addEventListener(\"click\", function () {\n isShowDropMenu = false\n isMenuInside = false\n })\n }\n }\n })\n\n // Attach global window click listener once\n if (!window.dropdownWindowClickBound) {\n window.dropdownWindowClickBound = true\n window.addEventListener(\"click\", function (e) {\n if (!isShowDropMenu && !isMenuInside) {\n dismissDropdownMenu()\n }\n isShowDropMenu = false\n })\n }\n\n function modifyZIdexForToggleStickyParent(toggle_element, action) {\n switch (action) {\n case \"add\":\n toggle_element.closest(\".sticky-col-r\")?.classList?.add(\"z-10\")\n toggle_element.closest(\".sticky-col-l\")?.classList?.add(\"z-10\")\n break\n case \"remove\":\n toggle_element.closest(\".sticky-col-r\")?.classList?.remove(\"z-10\")\n toggle_element.closest(\".sticky-col-l\")?.classList?.remove(\"z-10\")\n break\n case \"toggle\":\n toggle_element.closest(\".sticky-col-r\")?.classList?.toggle(\"z-10\")\n toggle_element.closest(\".sticky-col-l\")?.classList?.toggle(\"z-10\")\n break\n }\n }\n }\n\n /********* modal common js *********/\n // openModal\n function initModalTrigger() {\n var modalTrigger = document.querySelectorAll('[data-tw-toggle=\"modal\"]')\n var isModalShow = false\n Array.from(modalTrigger).forEach(function (item) {\n if (!item.dataset.modalClickBound) {\n item.dataset.modalClickBound = \"true\"\n item.addEventListener(\"click\", function () {\n var target = this.getAttribute(\"data-tw-target\").substr(1)\n var modalWindow = document.getElementById(target)\n\n if (modalWindow.classList.contains(\"hidden\")) {\n modalWindow.classList.remove(\"hidden\")\n document.body.classList.add(\"overflow-hidden\")\n } else {\n modalWindow.classList.add(\"hidden\")\n document.body.classList.remove(\"overflow-hidden\")\n }\n isModalShow = false\n\n if (item.getAttribute(\"data-tw-backdrop\") == \"static\") {\n isModalShow = true\n }\n })\n }\n })\n\n // closeButton\n var closeButton = document.querySelectorAll('[data-tw-dismiss=\"modal\"]')\n Array.from(closeButton).forEach(function (subElem) {\n if (!subElem.dataset.modalCloseClickBound) {\n subElem.dataset.modalCloseClickBound = \"true\"\n subElem.addEventListener(\"click\", function () {\n var modalWindow = subElem.closest(\".modal\")\n if (modalWindow.classList.contains(\"hidden\")) {\n modalWindow.classList.remove(\"hidden\")\n document.body.classList.add(\"overflow-hidden\")\n } else {\n modalWindow.classList.add(\"hidden\")\n document.body.classList.remove(\"overflow-hidden\")\n }\n })\n }\n })\n\n // closeModal\n var modalElem = document.querySelectorAll(\".modal\")\n Array.from(modalElem).forEach(function (elem) {\n // modalOverlay\n var modalOverlay = elem.querySelectorAll(\".modal-overlay\")\n Array.from(modalOverlay).forEach(function (subItem) {\n subItem.addEventListener(\"click\", function () {\n if (!isModalShow) {\n if (elem.classList.contains(\"hidden\")) {\n elem.classList.remove(\"hidden\")\n document.body.classList.add(\"overflow-hidden\")\n } else {\n elem.classList.add(\"hidden\")\n document.body.classList.remove(\"overflow-hidden\")\n }\n }\n })\n })\n })\n }\n\n // Handler that uses various data-* attributes to trigger\n // specific actions, mimicing bootstraps attributes\n function initCollapseAction() {\n const triggers = Array.from(document.querySelectorAll('[data-toggle=\"collapse\"]'))\n\n window.addEventListener(\n \"click\",\n ev => {\n const elm = ev.target\n if (triggers.includes(elm)) {\n const selector = elm.getAttribute(\"data-target\")\n collapse(selector, \"toggle\")\n }\n },\n false\n )\n\n const fnmap = {\n toggle: \"toggle\",\n show: \"add\",\n hide: \"remove\"\n }\n const collapse = (selector, cmd) => {\n const targets = Array.from(document.querySelectorAll(selector))\n targets.forEach(target => {\n target.classList[fnmap[cmd]](\"show\")\n })\n }\n }\n\n function initLtrRtl() {\n // ltr-rtl\n var isChangeMode = document.getElementById(\"ltr-rtl\")\n if (isChangeMode) {\n isChangeMode.addEventListener(\"click\", function (e) {\n var themeMode = document.documentElement.getAttribute(\"dir\")\n if (themeMode == \"ltr\") {\n document.documentElement.setAttribute(\"dir\", \"rtl\")\n } else {\n document.documentElement.setAttribute(\"dir\", \"ltr\")\n }\n\n swiperDir()\n })\n }\n }\n\n function initTabs() {\n document.querySelectorAll(\".nav-tabs\").forEach(function (elem) {\n elem.querySelectorAll('[data-tw-toggle=\"tab\"]').forEach(function (item) {\n item.addEventListener(\"click\", function () {\n var tabID = item.getAttribute(\"data-tw-target\")\n var tabContents = elem.querySelectorAll(\".tab-content > .tab-pane\")\n\n var activeElem = elem.querySelector('[data-tw-toggle=\"tab\"].active')\n if (activeElem) activeElem.classList.remove(\"active\")\n\n // clear value\n for (let i = 0; i < tabContents.length; i++) {\n tabContents[i].classList.add(\"hidden\")\n tabContents[i].classList.remove(\"block\")\n }\n\n // change value\n item.classList.add(\"active\")\n document.getElementById(tabID).classList.remove(\"hidden\")\n document.getElementById(tabID).classList.add(\"block\")\n })\n })\n })\n }\n\n function init() {\n initMetisMenu()\n initLeftMenuCollapse()\n initActiveMenu()\n initMenuItemScroll()\n initModeSetting()\n feather.replace()\n initAlert()\n initDropdown()\n initModalTrigger()\n initCollapseAction()\n initLtrRtl()\n initTabs()\n initAllTooltips()\n }\n\n init()\n}\n\ndocument.addEventListener(\"turbo:load\", () => {\n initPluginJs()\n setupExtractionTicketApprovalModal()\n setupExtractionConfirmationModal()\n})\n\ndocument.addEventListener(\"turbo:before-stream-render\", event => {\n const originalRender = event.detail.render\n\n event.detail.render = function (streamElement) {\n originalRender(streamElement)\n\n // Right now, the Turbo doesn't provide \"turbo:after-stream-render\" event.\n // So, we create a custom event to handle the same.\n // See: https://github.com/hotwired/turbo/issues/1289\n document.dispatchEvent(\n new CustomEvent(\"turbo:custom-after-stream-render\", { detail: { streamElement: streamElement } })\n )\n }\n})\n\ndocument.addEventListener(\"turbo:frame-render\", event => {\n const tooltipElements = event.target.querySelectorAll(\"[data-tippy]\")\n\n if (tooltipElements) {\n initTooltips(tooltipElements)\n }\n})\n\ndocument.addEventListener(\"turbo:custom-after-stream-render\", event => {\n const streamTarget = event.detail.streamElement.getAttribute(\"target\")\n const streamElement = document.getElementById(streamTarget)\n\n if (!streamElement) {\n return\n }\n\n const tooltipElements = streamElement.querySelectorAll(\"[data-tippy]\")\n\n if (tooltipElements) {\n initTooltips(tooltipElements)\n }\n})\n","/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"chevron\", \"content\"]\n\n static values = { open: Boolean }\n\n toggleOpen() {\n this.openValue = !this.openValue\n }\n\n connect() {\n this.contentTarget.style.transition = \"height 0.3s ease\"\n this.contentTarget.style.overflow = \"hidden\"\n if (!this.openValue) {\n this.contentTarget.classList.remove(\"hidden\")\n this.contentTarget.style.height = \"0px\"\n }\n }\n\n openValueChanged() {\n this.chevronTarget.classList.toggle(\"rotate-90\", this.openValue)\n if (this.openValue) {\n this.contentTarget.style.height = `${this.contentTarget.scrollHeight}px`\n } else {\n this.contentTarget.style.height = \"0px\"\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"extractFileAttributeButton\",\n \"cancelExtractFileAttributeButton\",\n \"tooltipContainer\",\n \"tooltipContent\"\n ]\n\n static outlets = [\"scope\"]\n\n static values = {\n fileAttributeId: String\n }\n\n connect() {\n document.addEventListener(\n \"stimulus:fileAttrExtractionFromfileAttributeSettings-\" + this.fileAttributeIdValue,\n e => {\n const { action, payload } = e.detail\n if (Array.isArray(payload)) {\n this[action](...payload)\n } else {\n this[action](payload)\n }\n }\n )\n }\n\n initialize() {\n this.timeoutMap = {}\n }\n\n extractFileAttribute(e) {\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n this.extractFileAttributeButtonTarget.disabled = true\n this.extractFileAttributeButtonTarget.classList.remove(\"cursor-pointer\")\n this.extractFileAttributeButtonTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n\n this.cancelExtractFileAttributeButtonTarget.disabled = false\n this.cancelExtractFileAttributeButtonTarget.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n this.cancelExtractFileAttributeButtonTarget.classList.add(\"cursor-pointer\")\n\n this.tooltipContainerTarget.classList.remove(\"hidden\")\n this.tooltipContainerTarget.innerHTML = \"Extracting Attribute\"\n\n this.fileAttributeId = e.file_attribute_ids[0]\n\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/`\n url += `file_attributes_tickets?file_attribute_ids[]=${this.fileAttributeId}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n const { organizationIdValue } = this.scopeOutlet\n this.updateFileAttribute(organizationIdValue, this.fileAttributeId)\n })\n }\n\n restoreExtractFileAttributeButtonTarget(fileAttributeId) {\n const extractFileAttributeButtonTarget = this.extractFileAttributeButtonTargets.find(\n button => button.dataset.fileAttributeExtractionOnSettingPageFileAttributeIdParam === fileAttributeId\n )\n if (extractFileAttributeButtonTarget) {\n extractFileAttributeButtonTarget.disabled = false\n extractFileAttributeButtonTarget.classList.add(\"cursor-pointer\")\n extractFileAttributeButtonTarget.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n }\n if (this.tooltipContainerTargets.length > 0) {\n this.tooltipContainerTarget.classList.add(\"hidden\")\n }\n }\n\n restoreCancelFileAttributeButtonTarget() {\n this.cancelExtractFileAttributeButtonTarget.disabled = true\n this.cancelExtractFileAttributeButtonTarget.classList.remove(\"cursor-pointer\")\n this.cancelExtractFileAttributeButtonTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n }\n\n updateFileAttribute(organizationId, fileAttributeId) {\n const { dataSpaceSlugValue } = this.scopeOutlet\n let url = `/organizations/${organizationId}/data_spaces/${dataSpaceSlugValue}/`\n url += `setting/file_attributes/${fileAttributeId}/file_attribute_status_polling`\n\n fetch(url)\n .then(response => response.json())\n .then(({ status }) => {\n if (status === \"in_progress\") {\n this.timeoutMap[fileAttributeId] = setTimeout(() => {\n this.updateFileAttribute(organizationId, fileAttributeId)\n }, 6000) // Poll every 6 seconds\n } else {\n // remove settimeout event\n clearTimeout(this.timeoutMap[fileAttributeId])\n this.restoreExtractFileAttributeButtonTarget(fileAttributeId)\n this.restoreCancelFileAttributeButtonTarget()\n }\n })\n }\n}\n","import FileAttributeExtractionOnSettingPageController from \"./file_attribute_extraction_on_setting_page_controller\"\n\nexport default class extends FileAttributeExtractionOnSettingPageController {\n static outlets = [\"scope\"]\n\n connect() {\n document.addEventListener(\"stimulus:allFilesAttributeExtractionOnSettingPageController\", this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:allFilesAttributeExtractionOnSettingPageController\", this.onEvent)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n extractFileAttributes(event) {\n let fileAttributeIds = event.file_attribute_ids\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/`\n url += `file_attributes_tickets?file_attribute_ids[]=${fileAttributeIds.join(\"&file_attribute_ids[]=\")}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n fileAttributeIds.forEach(fileAttributeId => {\n document.dispatchEvent(\n new CustomEvent(`stimulus:fileAttrExtractionFromfileAttributeSettings-${fileAttributeId}`, {\n detail: { action: \"updateFileAttribute\", payload: [organizationIdValue, fileAttributeId] }\n })\n )\n\n const button = document.getElementById(`extract-attr-${fileAttributeId}-on-all-files-button`)\n button.disabled = true\n button.classList.remove(\"cursor-pointer\")\n button.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n\n // const cancelButton = document.getElementById(`cancel-extract-attr-${fileAttributeId}-on-all-files-button`)\n //\n // cancelButton.disabled = false\n // cancelButton.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n // cancelButton.classList.add(\"cursor-pointer\")\n })\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"extractProjectAttributeButton\",\n \"cancelExtractAttributeButton\",\n \"tooltipContainer\",\n \"tooltipContent\"\n ]\n\n static outlets = [\"scope\"]\n\n static values = {\n projectAttributeId: String\n }\n\n initialize() {\n this.timeoutMap = {}\n }\n\n connect() {\n document.addEventListener(\"stimulus:projectAttributeExtraction-\" + this.projectAttributeIdValue, e => {\n const { action, payload } = e.detail\n if (Array.isArray(payload)) {\n this[action](...payload)\n } else {\n this[action](payload)\n }\n })\n }\n\n extractProjectAttribute() {\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n this.extractProjectAttributeButtonTarget.disabled = true\n this.extractProjectAttributeButtonTarget.classList.remove(\"cursor-pointer\")\n this.extractProjectAttributeButtonTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n\n this.cancelExtractAttributeButtonTarget.disabled = false\n this.cancelExtractAttributeButtonTarget.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n this.cancelExtractAttributeButtonTarget.classList.add(\"cursor-pointer\")\n\n this.tooltipContainerTarget.classList.remove(\"hidden\")\n this.tooltipContainerTarget.innerHTML = \"Extracting Attribute\"\n\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/`\n url += `entity_attributes_tickets?entity_attribute_ids[]=${this.projectAttributeIdValue}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n const { organizationIdValue } = this.scopeOutlet\n this.updateProjectAttribute(organizationIdValue, this.projectAttributeIdValue)\n })\n }\n\n restoreExtractprojectAttributeButtonTarget(projectAttributeId) {\n const extractProjectAttributeButtonTarget = this.extractProjectAttributeButtonTargets.find(\n button => button.dataset.projectAttributeExtractionOnSettingPageProjectAttributeIdParam === projectAttributeId\n )\n if (extractProjectAttributeButtonTarget) {\n extractProjectAttributeButtonTarget.disabled = false\n extractProjectAttributeButtonTarget.classList.add(\"cursor-pointer\")\n extractProjectAttributeButtonTarget.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n }\n if (this.tooltipContainerTargets.length > 0) {\n this.tooltipContainerTarget.classList.add(\"hidden\")\n }\n }\n\n restoreCancelExtractAttributeButton() {\n this.cancelExtractAttributeButtonTarget.disabled = true\n this.cancelExtractAttributeButtonTarget.classList.remove(\"cursor-pointer\")\n this.cancelExtractAttributeButtonTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n }\n\n updateProjectAttribute(organizationId, projectAttributeId) {\n const { dataSpaceSlugValue } = this.scopeOutlet\n let url = `/organizations/${organizationId}/data_spaces/${dataSpaceSlugValue}/`\n url += `setting/entity_attributes/${projectAttributeId}/entity_attribute_status_polling`\n\n fetch(url)\n .then(response => response.json())\n .then(({ status }) => {\n if (status === \"in_progress\") {\n this.timeoutMap[projectAttributeId] = setTimeout(() => {\n this.updateProjectAttribute(organizationId, projectAttributeId)\n }, 6000) // Poll every 6 seconds\n } else {\n // remove settimeout event\n clearTimeout(this.timeoutMap[projectAttributeId])\n this.restoreExtractprojectAttributeButtonTarget(projectAttributeId)\n }\n })\n }\n}\n","import ProjectAttributeExtractionOnSettingPageController from \"./project_attribute_extraction_on_setting_page_controller\"\n\nexport default class extends ProjectAttributeExtractionOnSettingPageController {\n static outlets = [\"scope\"]\n\n connect() {\n document.addEventListener(\"stimulus:allProjectAttributesExtraction\", this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:allProjectAttributesExtraction\", this.onEvent)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n extractProjectAttributes(event) {\n let entityAttributeIds = event.project_attribute_ids\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/`\n url += `entity_attributes_tickets?entity_attribute_ids[]=${entityAttributeIds.join(\"&entity_attribute_ids[]=\")}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n entityAttributeIds.forEach(entityAttributeId => {\n const button = document.getElementById(`extract-attr-${entityAttributeId}-on-all-projects-button`)\n button.disabled = true\n button.classList.remove(\"cursor-pointer\")\n button.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n\n const cancelButton = document.getElementById(`cancel-extract-attr-${entityAttributeId}-on-all-projects-button`)\n cancelButton.disabled = false\n cancelButton.classList.remove(\"cursor-not-allowed\", \"opacity-50\")\n cancelButton.classList.add(\"cursor-pointer\")\n })\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"fileExtension\", \"analyzePosition\", \"analyzeModel\", \"alpha\", \"pageSearchPromptTextArea\"]\n static values = {\n fileExtension: String\n }\n\n initialize() {\n // When initializing the form, we do not change models but hide unnecessary fields\n this.renderFields(this.fileExtensionValue, false)\n this.initializeAnalyzeModels(this.fileExtensionValue) // Use model of the attribute\n }\n\n attributeExtractionPomptHistoryHandler(e) {\n this.renderFields(e.params.fileExtension, false)\n this.initializeAnalyzeModels(e.params.fileExtension) // Use model of the history\n }\n\n fileExtensionHandler(e) {\n this.renderFields(e.target.value, true)\n }\n\n renderFields(fileExtension, needUpdateAnalyzeModels) {\n fileExtension = fileExtension.toLowerCase()\n switch (fileExtension) {\n case \"pdf\":\n case \"png\":\n case \"jpg\":\n case \"tif\": {\n this.showTextBasedFileFields(fileExtension, needUpdateAnalyzeModels)\n break\n }\n case \"xlsx\":\n case \"xlsm\": {\n this.showRevitBasedFileFields(fileExtension, needUpdateAnalyzeModels)\n break\n }\n }\n }\n\n showTextBasedFileFields(fileExtension, needUpdateAnalyzeModels) {\n this.fileExtensionTarget.classList.remove(\"hidden\")\n this.analyzePositionTarget.classList.remove(\"hidden\")\n this.analyzeModelTarget.classList.remove(\"hidden\")\n this.alphaTarget.classList.remove(\"hidden\")\n this.pageSearchPromptTextAreaTarget.classList.remove(\"hidden\")\n if (needUpdateAnalyzeModels) this.updateAnalyzeModels(fileExtension)\n }\n\n showRevitBasedFileFields(fileExtension, needUpdateAnalyzeModels) {\n this.fileExtensionTarget.classList.remove(\"hidden\")\n this.analyzePositionTarget.classList.add(\"hidden\")\n this.analyzeModelTarget.classList.remove(\"hidden\")\n this.alphaTarget.classList.add(\"hidden\")\n this.pageSearchPromptTextAreaTarget.classList.add(\"hidden\")\n if (needUpdateAnalyzeModels) this.updateAnalyzeModels(fileExtension)\n }\n\n updateAnalyzeModels(fileExtension) {\n // Disabled options\n const whiteLisModels = this.analyzeModels(fileExtension)\n ;[...this.analyzeModelTarget.querySelector(\"select\").options].forEach(option => {\n option.disabled = !whiteLisModels.includes(option.value)\n })\n // Set the first available one\n let firstAvailableOption = [...this.analyzeModelTarget.querySelector(\"select\").options].find(option =>\n whiteLisModels.includes(option.value)\n )\n firstAvailableOption.selected = true\n }\n\n initializeAnalyzeModels(fileExtension) {\n // Disabled options\n const whiteLisModels = this.analyzeModels(fileExtension)\n ;[...this.analyzeModelTarget.querySelector(\"select\").options].forEach(option => {\n option.disabled = !whiteLisModels.includes(option.value)\n })\n }\n\n analyzeModels(fileExtension) {\n fileExtension = fileExtension.toLowerCase()\n switch (fileExtension) {\n case \"pdf\": {\n return [\n \"openai-gpt-3.5-turbo-16k\",\n \"openai-gpt-4-1106-preview\",\n \"openai-gpt-4-vision-preview\",\n \"openai-gpt-4-vision-preview-naive\",\n \"anthropic-claude-3-opus\",\n \"anthropic-claude-3-opus-vision\",\n \"anthropic-claude-3-sonnet\",\n \"anthropic-claude-3-sonnet-vision\"\n ]\n }\n case \"png\":\n case \"jpg\":\n case \"tif\": {\n return [\n \"openai-gpt-3.5-turbo-16k\",\n \"openai-gpt-4-1106-preview\",\n \"anthropic-claude-3-opus\",\n \"anthropic-claude-3-opus-vision\",\n \"anthropic-claude-3-sonnet\",\n \"anthropic-claude-3-sonnet-vision\"\n ]\n }\n case \"xlsx\":\n case \"xlsm\": {\n return [\"openai-gpt-4-1106-preview\"]\n }\n }\n }\n}\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static outlets = [\"scope\"]\n\n connect() {\n document.addEventListener(\"stimulus:attribute_extraction\", this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:attribute_extraction\", this.onEvent)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n extractFileAttributes(event) {\n // we prepare our data\n const { organizationIdValue, dataSpaceSlugValue, projectIdValue } = this.scopeOutlet\n\n // it could be a selection, but it could be a scope extraction (project, folder, file)\n let projectId = projectIdValue\n const selectedTargets = event.targets\n const selectedTargetIds = selectedTargets.map(file => file.id)\n const attributeIds = event.attribute_ids\n const context = event.context\n const selectedTargetOptions = event.selected_target_options\n let isSingleFileEndpoint\n\n // in case of a single extraction, we use the \"single file or folder\" endpoint\n // which is a bit more efficient\n if (selectedTargets.length === 1) {\n if ([\"folder\", \"file\"].includes(selectedTargets[0].type)) {\n isSingleFileEndpoint = true\n }\n\n // in some cases the project Id might not be available in the scope\n // but if available in the payload we can pass it\n if (selectedTargets[0].type === \"project\" && selectedTargets[0].id) {\n projectId = selectedTargets[0].id\n }\n\n if (selectedTargets[0].type === \"file\" && selectedTargets[0].projectId) {\n projectId = selectedTargets[0].projectId\n }\n }\n\n // Build the base URL path segments\n const urlParts = [\"/extractions/organizations\", organizationIdValue, \"data_spaces\", dataSpaceSlugValue]\n\n // Add project segment if needed\n if (context !== \"search_record\" && context !== \"project_setting\") {\n urlParts.push(\"projects\", projectId)\n }\n\n // Add single file endpoint if applicable\n if (isSingleFileEndpoint) {\n urlParts.push(\"input_files\", selectedTargetIds[0])\n }\n\n // Add file_attributes_tickets endpoint\n urlParts.push(\"file_attributes_tickets\")\n\n const url = urlParts.join(\"/\")\n const params = new URLSearchParams()\n\n // Add attribute IDs\n attributeIds.forEach(id => params.append(\"file_attribute_ids[]\", id))\n\n // Add input file IDs for bulk selection\n if (selectedTargetIds.length > 1) {\n selectedTargetIds.forEach(id => params.append(\"input_file_ids[]\", id))\n }\n\n // Add target options\n if (selectedTargetOptions.length > 0) {\n selectedTargetOptions.forEach(option => {\n params.append(\"targets[]\", option)\n })\n }\n\n // Add search record ID if applicable\n if (selectedTargets.length === 1 && selectedTargets[0].type === \"search_record\") {\n params.append(\"search_record_id\", selectedTargetIds[0])\n }\n\n if (selectedTargets.length === 0 && context === \"search_record\") {\n const urlParams = new URLSearchParams(window.location.search)\n const searchRecordId = urlParams.get(\"search_record_id\")\n\n params.append(\"search_record_id\", searchRecordId)\n }\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const fullUrl = `${url}?${params.toString()}`\n\n fetch(fullUrl, { method: \"POST\", body: formData }).then(() => {\n window.location.reload()\n })\n }\n\n extractProjectAttributes(event) {\n // we prepare our data\n const { organizationIdValue, dataSpaceSlugValue, projectIdValue } = this.scopeOutlet\n\n // it could be a selection, but it could be a scope extraction (project, folder, file)\n let projectId = projectIdValue\n const selectedTargets = event.targets\n const selectedTargetIds = selectedTargets.map(file => file.id)\n const attributeIds = event.attribute_ids\n const context = event.context\n const selectedTargetOptions = event.selected_target_options\n let isSingleProjExtraction\n let isDataSpaceExtraction\n let isMultipleProjExtraction\n\n if (selectedTargets.length === 1) {\n if (selectedTargets[0].type === \"data_space\") isDataSpaceExtraction = true\n if (selectedTargets[0].type === \"project\") {\n projectId = selectedTargets[0].id\n isSingleProjExtraction = true\n }\n } else {\n isMultipleProjExtraction = true\n }\n\n // Build the base URL path segments\n const urlParts = [\"/extractions/organizations\", organizationIdValue, \"data_spaces\", dataSpaceSlugValue]\n\n // Add project segment if needed\n if (isSingleProjExtraction) {\n urlParts.push(\"projects\", projectId)\n }\n\n // Add entity_attributes_tickets endpoint\n urlParts.push(\"entity_attributes_tickets\")\n\n const url = urlParts.join(\"/\")\n const params = new URLSearchParams()\n\n // Add attribute IDs\n attributeIds.forEach(id => params.append(\"entity_attribute_ids[]\", id))\n\n // Add project IDs for bulk selection\n if (isMultipleProjExtraction) {\n selectedTargetIds.forEach(id => params.append(\"project_ids[]\", id))\n }\n\n // Add search record ID if applicable\n if (selectedTargets.length === 1 && selectedTargets[0].type === \"search_record\") {\n params.append(\"search_record_id\", selectedTargetIds[0])\n }\n\n // Add target options\n if (selectedTargetOptions.length > 0) {\n selectedTargetOptions.forEach(option => {\n params.append(\"targets[]\", option)\n })\n }\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const fullUrl = `${url}?${params.toString()}`\n\n fetch(fullUrl, { method: \"POST\", body: formData }).then(() => {\n window.location.reload()\n })\n }\n}\n","export class FetchResponse {\n constructor (response) {\n this.response = response\n }\n\n get statusCode () {\n return this.response.status\n }\n\n get redirected () {\n return this.response.redirected\n }\n\n get ok () {\n return this.response.ok\n }\n\n get unauthenticated () {\n return this.statusCode === 401\n }\n\n get unprocessableEntity () {\n return this.statusCode === 422\n }\n\n get authenticationURL () {\n return this.response.headers.get('WWW-Authenticate')\n }\n\n get contentType () {\n const contentType = this.response.headers.get('Content-Type') || ''\n\n return contentType.replace(/;.*$/, '')\n }\n\n get headers () {\n return this.response.headers\n }\n\n get html () {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text\n }\n\n return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n }\n\n get json () {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json())\n }\n\n return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n }\n\n get text () {\n return this.responseText || (this.responseText = this.response.text())\n }\n\n get isTurboStream () {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n }\n\n async renderTurboStream () {\n if (this.isTurboStream) {\n if (window.Turbo) {\n await window.Turbo.renderStreamMessage(await this.text)\n } else {\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n }\n } else {\n return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n }\n }\n}\n","export class RequestInterceptor {\n static register (interceptor) {\n this.interceptor = interceptor\n }\n\n static get () {\n return this.interceptor\n }\n\n static reset () {\n this.interceptor = undefined\n }\n}\n","export function getCookie (name) {\n const cookies = document.cookie ? document.cookie.split('; ') : []\n const prefix = `${encodeURIComponent(name)}=`\n const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n if (cookie) {\n const value = cookie.split('=').slice(1).join('=')\n\n if (value) {\n return decodeURIComponent(value)\n }\n }\n}\n\nexport function compact (object) {\n const result = {}\n\n for (const key in object) {\n const value = object[key]\n if (value !== undefined) {\n result[key] = value\n }\n }\n\n return result\n}\n\nexport function metaContent (name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n return [...formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n for (const [name, value] of entries) {\n if (value instanceof window.File) continue\n\n if (searchParams.has(name) && !name.includes('[]')) {\n searchParams.delete(name)\n searchParams.set(name, value)\n } else {\n searchParams.append(name, value)\n }\n }\n}\n","import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n constructor (method, url, options = {}) {\n this.method = method\n this.options = options\n this.originalUrl = url.toString()\n }\n\n async perform () {\n try {\n const requestInterceptor = RequestInterceptor.get()\n if (requestInterceptor) {\n await requestInterceptor(this)\n }\n } catch (error) {\n console.error(error)\n }\n\n const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n if (response.unauthenticated && response.authenticationURL) {\n return Promise.reject(window.location.href = response.authenticationURL)\n }\n\n const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n if (responseStatusIsTurboStreamable && response.isTurboStream) {\n await response.renderTurboStream()\n }\n\n return response\n }\n\n addHeader (key, value) {\n const headers = this.additionalHeaders\n headers[key] = value\n this.options.headers = headers\n }\n\n sameHostname () {\n if (!this.originalUrl.startsWith('http:')) {\n return true\n }\n\n try {\n return new URL(this.originalUrl).hostname === window.location.hostname\n } catch (_) {\n return true\n }\n }\n\n get fetchOptions () {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: this.credentials,\n redirect: this.redirect\n }\n }\n\n get headers () {\n const baseHeaders = {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-Type': this.contentType,\n Accept: this.accept\n }\n\n if (this.sameHostname()) {\n baseHeaders['X-CSRF-Token'] = this.csrfToken\n }\n\n return compact(\n Object.assign(baseHeaders, this.additionalHeaders)\n )\n }\n\n get csrfToken () {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n }\n\n get contentType () {\n if (this.options.contentType) {\n return this.options.contentType\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined\n } else if (this.body instanceof window.File) {\n return this.body.type\n }\n\n return 'application/json'\n }\n\n get accept () {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml'\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n case 'json':\n return 'application/json, application/vnd.api+json'\n default:\n return '*/*'\n }\n }\n\n get body () {\n return this.options.body\n }\n\n get query () {\n const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n const params = new URLSearchParams(originalQuery)\n\n let requestQuery = this.options.query\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery)\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries()\n } else {\n requestQuery = Object.entries(requestQuery || {})\n }\n\n mergeEntries(params, requestQuery)\n\n const query = params.toString()\n return (query.length > 0 ? `?${query}` : '')\n }\n\n get url () {\n return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n }\n\n get responseKind () {\n return this.options.responseKind || 'html'\n }\n\n get signal () {\n return this.options.signal\n }\n\n get redirect () {\n return this.options.redirect || 'follow'\n }\n\n get credentials () {\n return this.options.credentials || 'same-origin'\n }\n\n get additionalHeaders () {\n return this.options.headers || {}\n }\n\n get formattedBody () {\n const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body)\n }\n\n return this.body\n }\n}\n","import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n const request = new FetchRequest('get', url, options)\n return request.perform()\n}\n\nasync function post (url, options) {\n const request = new FetchRequest('post', url, options)\n return request.perform()\n}\n\nasync function put (url, options) {\n const request = new FetchRequest('put', url, options)\n return request.perform()\n}\n\nasync function patch (url, options) {\n const request = new FetchRequest('patch', url, options)\n return request.perform()\n}\n\nasync function destroy (url, options) {\n const request = new FetchRequest('delete', url, options)\n return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n","import { Controller } from \"@hotwired/stimulus\"\nimport { patch } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static targets = [\"authTokenDisabledField\", \"authTokenSubmitField\"]\n\n async refreshToken() {\n const url = this.element.dataset.url\n\n try {\n const response = await patch(url, { responseKind: \"json\" })\n if (response.ok) {\n const data = await response.json\n\n if (data.auth_token) {\n // For display only: disabled field does not end up in params\n this.authTokenDisabledFieldTarget.value = data.auth_token\n\n this.authTokenSubmitFieldTarget.value = data.auth_token\n }\n } else {\n console.error(\"Failed to refresh auth token with a server error.\")\n }\n } catch (error) {\n console.error(\"Error refreshing auth token:\", error)\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { LegacyViewer, DefaultViewerParams, SpeckleLoader } from \"@speckle/viewer\"\nimport { CameraController, SelectionExtension } from \"@speckle/viewer\"\n\nexport default class extends Controller {\n static values = {\n serverUrl: String,\n authToken: String,\n projectId: String,\n branchId: String\n }\n\n async connect() {\n // const objectId = await this.getObjectId()\n // this.displayViewer(objectId)\n }\n\n async getObjectId() {\n let result = await fetch(`${this.serverUrlValue}/graphql`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n Authorization: `Bearer ${this.authTokenValue}`\n },\n body: JSON.stringify({\n query: `{\n project(id: \"${this.projectIdValue}\") {\n viewerResources(resourceIdString: \"${this.branchIdValue}\") {\n items {\n modelId\n versionId\n objectId\n }\n }\n }\n }`\n })\n })\n\n result = await result.json()\n let objectId = result.data?.project?.viewerResources[0]?.items[0]?.objectId\n return objectId\n }\n\n async displayViewer(objectId) {\n const container = this.element\n const params = DefaultViewerParams\n params.showStats = true\n params.verbose = true\n const viewer = new LegacyViewer(container, params)\n await viewer.init()\n viewer.createExtension(CameraController)\n viewer.createExtension(SelectionExtension)\n const loader = new SpeckleLoader(\n viewer.getWorldTree(),\n `${this.serverUrlValue}/streams/${this.projectIdValue}/objects/${objectId}`,\n this.authTokenValue\n )\n console.log(\"tree\", viewer.getWorldTree())\n await viewer.loadObject(loader, true)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * A Stimulus controller that blurs an element when an event of choice is fired.\n *\n * @usage\n *\n * blur#blur\"/>\n */\n\nexport default class extends Controller {\n blur() {\n if (document.activeElement === this.element) {\n this.element.blur()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"imgCanvas\", \"mainCanvas\", \"imageSource\", \"tooltipCanvas\", \"toggleOverlayToggler\"]\n\n static values = {\n boundingBoxes: Array,\n pageNumber: Number,\n highlightBlockIds: Array,\n onlyShowHighlightBlocks: Boolean,\n tooltipHidden: Boolean,\n scale: { type: Number, default: 0.35 },\n draggable: { type: Boolean, default: true },\n zoomable: { type: Boolean, default: true },\n highlightBlockScores: Array,\n enabledMoveToFirstHighlightBlock: { type: Boolean, default: true },\n resizeCanvasWhenInitializing: { type: Boolean, default: true }\n }\n\n initialize() {\n this.canvasStatus = \"\"\n this.startPanMousePosition = { x: 0, y: 0 }\n this.origin = { x: 0, y: 0 }\n this.scale = this.scaleValue\n this.overlayIsOn = false\n this.movedToFirstHighlightBlock = false\n }\n\n connect() {\n this.imageSourceTarget.addEventListener(\"load\", () => {\n this.initializeMainCanvas()\n if (!this.tooltipHiddenValue) this.drawExtractedWordsTooltips()\n this.initializeHighlightBlocks()\n if (this.overlayIsOn) {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n this.drawExtractedWordsRectangles(context)\n }\n })\n\n if (this.imageSourceTarget.complete) {\n this.initializeMainCanvas()\n if (!this.tooltipHiddenValue) this.drawExtractedWordsTooltips()\n this.initializeHighlightBlocks()\n }\n if (this.draggableValue) this.initializePan()\n if (this.zoomableValue) this.initializeZoom()\n }\n\n initializeHighlightBlocks() {\n if (this.highlightBlockIdsValue.length > 0) {\n if (this.toggleOverlayTogglerTargets.length > 0) {\n this.toggleOverlayTogglerTarget.checked = true\n }\n this.tooltipCanvasTarget.classList.remove(\"hidden\")\n const context = this.mainCanvasTarget.getContext(\"2d\")\n this.drawExtractedWordsRectangles(context)\n if (this.enabledMoveToFirstHighlightBlockValue) this.moveToFisrtHighlightBlock()\n }\n }\n\n drawExtractedWordsRectangles(context) {\n this.formatedBoudingBoxes().forEach(({ id, boundingBox }) => {\n context.beginPath()\n context.moveTo(boundingBox[0].x * this.scale + this.origin.x, boundingBox[0].y * this.scale + this.origin.y)\n context.lineTo(boundingBox[1].x * this.scale + this.origin.x, boundingBox[1].y * this.scale + this.origin.y)\n context.lineTo(boundingBox[2].x * this.scale + this.origin.x, boundingBox[2].y * this.scale + this.origin.y)\n context.lineTo(boundingBox[3].x * this.scale + this.origin.x, boundingBox[3].y * this.scale + this.origin.y)\n context.lineTo(boundingBox[0].x * this.scale + this.origin.x, boundingBox[0].y * this.scale + this.origin.y)\n context.lineWidth = 2\n context.strokeStyle = this.blockColor(id)\n context.closePath()\n context.stroke()\n })\n }\n\n moveToFisrtHighlightBlock() {\n if (this.movedToFirstHighlightBlock) return\n\n const highestScore = Math.max(...this.highlightBlockScoresValue)\n const highestScoreIndex = this.highlightBlockScoresValue.indexOf(highestScore)\n const firstHighlightBlockId = this.highlightBlockIdsValue[highestScoreIndex]\n const firstHighlightBlock = this.formatedBoudingBoxes().find(s => s.id === firstHighlightBlockId)\n if (firstHighlightBlock) {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n this.scale = 1\n this.origin = {\n x: (this.origin.x - firstHighlightBlock.boundingBox[0].x) * this.scale + 200,\n y: (this.origin.y - firstHighlightBlock.boundingBox[0].y) * this.scale + 200\n }\n context.reset()\n context.drawImage(\n this.imageSourceTarget,\n this.origin.x,\n this.origin.y,\n this.imageSourceTarget.naturalWidth * this.scale,\n this.imageSourceTarget.naturalHeight * this.scale\n )\n // Draw outline\n this.drawImageOutline(\n context,\n this.origin.x,\n this.origin.y,\n this.imageSourceTarget.naturalWidth * this.scale,\n this.imageSourceTarget.naturalHeight * this.scale\n )\n if (\n (this.toggleOverlayTogglerTargets.length > 0 && this.toggleOverlayTogglerTarget.checked) ||\n (this.highlightBlockIdsValue.length > 0 && this.onlyShowHighlightBlocksValue)\n ) {\n this.drawExtractedWordsRectangles(context)\n }\n this.movedToFirstHighlightBlock = true\n }\n }\n\n formatedBoudingBoxes() {\n const targetBoundingBox = this.boundingBoxesValue.find(({ page_number }) => page_number === this.pageNumberValue)\n\n const pixelWidth = this.imageSourceTarget.naturalWidth\n const inchWidth = targetBoundingBox.width\n const pixelHeight = this.imageSourceTarget.naturalHeight\n const inchHeight = targetBoundingBox.height\n\n return targetBoundingBox.content\n .map(({ content, id }) => {\n // content = [top-left x, top-left y, width, height, chunk_text]\n let top_left_x = content[0]\n let top_left_y = content[1]\n let width = content[2]\n let height = content[3]\n\n return {\n id,\n content: content[4],\n boundingBox: [\n {\n x: (top_left_x / inchWidth) * pixelWidth,\n y: (top_left_y / inchHeight) * pixelHeight\n }, // top left\n {\n x: ((top_left_x + width) / inchWidth) * pixelWidth,\n y: (top_left_y / inchHeight) * pixelHeight\n }, // top right\n {\n x: ((top_left_x + width) / inchWidth) * pixelWidth,\n y: ((top_left_y + height) / inchHeight) * pixelHeight\n }, // bottom right\n {\n x: (top_left_x / inchWidth) * pixelWidth,\n y: ((top_left_y + height) / inchHeight) * pixelHeight\n } // bottom left\n ]\n }\n })\n .flat()\n }\n\n drawExtractedWordsTooltips() {\n this.mainCanvasTarget.addEventListener(\"mousemove\", e => {\n if (this.tooltipHiddenValue) return\n this.handleMouseMove(e)\n })\n }\n\n initializeMainCanvas() {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n let width = this.imageSourceTarget.naturalWidth * this.scale\n let height = this.imageSourceTarget.naturalHeight * this.scale\n if (this.resizeCanvasWhenInitializingValue) {\n // resize canvas to fit the parent container\n let parent = this.mainCanvasTarget.parentNode\n let styles = getComputedStyle(parent)\n let w = parseInt(styles.getPropertyValue(\"width\"), 10)\n let h = parseInt(styles.getPropertyValue(\"height\"), 10)\n if (styles.getPropertyValue(\"width\") === \"100%\" || styles.getPropertyValue(\"height\") === \"100%\") {\n w = 1500\n h = 1000\n }\n this.mainCanvasTarget.width = w\n this.mainCanvasTarget.height = h\n // put image at the middle of the canvas\n let wrh = this.imageSourceTarget.naturalWidth / this.imageSourceTarget.naturalHeight\n let newWidth = w\n let newHeight = newWidth / wrh\n if (newHeight > h) {\n newHeight = h\n newWidth = newHeight * wrh\n }\n\n let xOffset = newWidth < w ? (w - newWidth) / 2 : 0\n let yOffset = newHeight < h ? (h - newHeight) / 2 : 0\n\n this.origin = { x: xOffset, y: yOffset }\n this.scale = newWidth / this.imageSourceTarget.naturalWidth\n width = newWidth\n height = newHeight\n } else {\n this.mainCanvasTarget.height = this.imageSourceTarget.naturalHeight\n this.mainCanvasTarget.width = this.imageSourceTarget.naturalWidth\n }\n\n context.drawImage(this.imageSourceTarget, this.origin.x, this.origin.y, width, height)\n if (this.resizeCanvasWhenInitializingValue) {\n this.drawImageOutline(context, this.origin.x, this.origin.y, width, height)\n }\n\n return context\n }\n\n drawImageOutline(context, x, y, w, h) {\n // Draw outline\n context.beginPath()\n context.strokeStyle = \"#808080\" // some color/style\n context.lineWidth = 2 // thickness\n context.strokeRect(x, y, w, h)\n }\n\n resetMainCanvas() {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n context.reset()\n this.initializeMainCanvas()\n }\n\n handleMouseMove(e) {\n const canvasOffset = this.mainCanvasTarget.getBoundingClientRect()\n const offsetX = canvasOffset.left\n const offsetY = canvasOffset.top\n const tipCtx = this.tooltipCanvasTarget.getContext(\"2d\")\n const mouseX = parseInt(e.clientX - offsetX)\n const mouseY = parseInt(e.clientY - offsetY)\n\n // Put your mousemove stuff here\n let hit = false\n const formatedBoudingBoxes = this.formatedBoudingBoxes()\n const hitBoundingBox = formatedBoudingBoxes.find(formatedBoudingBox => {\n const { boundingBox } = formatedBoudingBox\n const mouseXValid =\n boundingBox[0].x * this.scale + this.origin.x <= mouseX &&\n mouseX <= boundingBox[2].x * this.scale + this.origin.x\n const mouseYValid =\n boundingBox[0].y * this.scale + this.origin.y <= mouseY &&\n mouseY <= boundingBox[2].y * this.scale + this.origin.y\n if (mouseXValid && mouseYValid) return formatedBoudingBox\n })\n\n if (hitBoundingBox) {\n const { content, boundingBox, id } = hitBoundingBox\n this.tooltipCanvasTarget.setAttribute(\n \"style\",\n `left: ${boundingBox[0].x * this.scale + this.origin.x + offsetX - 100}px !important;top: ${\n boundingBox[3].y * this.scale + this.origin.y + offsetY - 60\n }px !important;background: #5808f8;`\n )\n tipCtx.clearRect(\n this.tooltipCanvasTarget.width / 2,\n this.tooltipCanvasTarget.height / 2,\n this.tooltipCanvasTarget.width,\n this.tooltipCanvasTarget.height\n )\n const textWidth = tipCtx.measureText(content).width\n this.tooltipCanvasTarget.width = textWidth + 20\n tipCtx.font = \"20px Arial\"\n tipCtx.textAlign = \"center\" // Set the text alignment to center\n tipCtx.textBaseline = \"middle\" // Set the text baseline to middle\n tipCtx.fillStyle = \"#ffffff\"\n tipCtx.fillText(content, this.tooltipCanvasTarget.width / 2, this.tooltipCanvasTarget.height / 2)\n hit = true\n this.tooltipCanvasTarget.style.backgroundColor = this.tooltipColor(id)\n }\n if (!hit) {\n this.tooltipCanvasTarget.style.display = \"none\"\n } else {\n this.tooltipCanvasTarget.style.display = \"block\"\n }\n }\n\n toggleOverlay(e) {\n this.overlayIsOn = e.target.checked\n if (this.overlayIsOn) {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n this.drawExtractedWordsRectangles(context)\n this.tooltipCanvasTarget.classList.remove(\"hidden\")\n } else {\n this.resetMainCanvas()\n this.tooltipCanvasTarget.classList.add(\"hidden\")\n }\n }\n\n tooltipColor(blockId) {\n if (this.highlightBlockIdsValue.includes(blockId)) {\n const index = this.highlightBlockIdsValue.indexOf(blockId)\n if (this.highlightBlockScoresValue.length > 0 && this.highlightBlockScoresValue[index] == 1) return \"red\"\n return \"orange\"\n } else {\n return \"rgba(88, 8, 248, 1)\"\n }\n }\n\n blockColor(blockId) {\n if (this.highlightBlockIdsValue.includes(blockId)) {\n // TODO: Show different color between exact match and vector search\n // Maybe use a id to score hash to tell the difference\n // 1: exact match\n // None 1: vector search\n const index = this.highlightBlockIdsValue.indexOf(blockId)\n if (this.highlightBlockScoresValue.length > 0 && this.highlightBlockScoresValue[index] == 1) return \"red\"\n return \"orange\"\n } else {\n if (this.onlyShowHighlightBlocksValue) {\n // If only show highlight blocks is on, then return transparent color\n return \"rgba(88, 8, 248, 0)\"\n } else {\n // If only show highlight blocks is off, then return the default color\n return \"rgba(88, 8, 248, 1)\"\n }\n }\n }\n\n initializePan() {\n const context = this.mainCanvasTarget.getContext(\"2d\")\n this.mainCanvasTarget.addEventListener(\"mousedown\", e => {\n const clientX = e.clientX\n const clientY = e.clientY\n this.canvasStatus = \"dragging\"\n this.startPanMousePosition = { x: clientX, y: clientY }\n })\n this.mainCanvasTarget.addEventListener(\"mousemove\", e => {\n if (this.canvasStatus !== \"dragging\") return\n\n const clientX = e.clientX\n const clientY = e.clientY\n const deltaX = clientX - this.startPanMousePosition.x\n const deltaY = clientY - this.startPanMousePosition.y\n this.origin = {\n x: this.origin.x + deltaX,\n y: this.origin.y + deltaY\n }\n this.startPanMousePosition = { x: clientX, y: clientY }\n context.reset()\n // Draw image\n context.drawImage(\n this.imageSourceTarget,\n this.origin.x,\n this.origin.y,\n this.imageSourceTarget.naturalWidth * this.scale,\n this.imageSourceTarget.naturalHeight * this.scale\n )\n // Draw outline\n this.drawImageOutline(\n context,\n this.origin.x,\n this.origin.y,\n this.imageSourceTarget.naturalWidth * this.scale,\n this.imageSourceTarget.naturalHeight * this.scale\n )\n // Draw highlight blocks\n if (\n (this.toggleOverlayTogglerTargets.length > 0 && this.toggleOverlayTogglerTarget.checked) ||\n (this.highlightBlockIdsValue.length > 0 && this.onlyShowHighlightBlocksValue)\n ) {\n this.drawExtractedWordsRectangles(context)\n }\n })\n this.mainCanvasTarget.addEventListener(\"mouseup\", e => {\n this.canvasStatus = \"\"\n })\n this.mainCanvasTarget.addEventListener(\"mouseleave\", e => {\n this.canvasStatus = \"\"\n })\n }\n\n initializeZoom() {\n this.mainCanvasTarget.addEventListener(\"wheel\", e => {\n e.preventDefault()\n const context = this.mainCanvasTarget.getContext(\"2d\")\n const oldWidth = this.imageSourceTarget.naturalWidth * this.scale\n const oldHeight = this.imageSourceTarget.naturalHeight * this.scale\n const scale =\n e.deltaY > 0 ? (this.scale = Math.min(this.scale + 0.05, 2)) : (this.scale = Math.max(this.scale - 0.05, 0.1))\n const newWidth = this.imageSourceTarget.naturalWidth * scale\n const newHeight = this.imageSourceTarget.naturalHeight * scale\n // Calculate the percentage of the position of the mouse on the image\n // Get new position of the mouse on new image\n // And get the offset from the difference between the old and new position\n // ex: ((e.clientX - this.orgin.x) / oldWidth) * newWidth - (e.clientX - this.orgin.x)\n const scaleOffsetX = (e.clientX - this.origin.x) * (newWidth / oldWidth - 1)\n const scaleOffsetY = (e.clientY - this.origin.y) * (newHeight / oldHeight - 1)\n this.origin = {\n x: this.origin.x - scaleOffsetX,\n y: this.origin.y - scaleOffsetY\n }\n context.reset()\n context.drawImage(this.imageSourceTarget, this.origin.x, this.origin.y, newWidth, newHeight)\n // Draw outline\n this.drawImageOutline(context, this.origin.x, this.origin.y, newWidth, newHeight)\n // Draw highlight blocks\n if (\n (this.toggleOverlayTogglerTargets.length > 0 && this.toggleOverlayTogglerTarget.checked) ||\n (this.highlightBlockIdsValue.length > 0 && this.onlyShowHighlightBlocksValue)\n ) {\n this.drawExtractedWordsRectangles(context)\n }\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"createNewChatButton\", \"answerFromThisFolderCheckbox\"]\n\n connect() {\n this.toggleAnswerFromThisFolder()\n }\n\n toggleAnswerFromThisFolder() {\n let url = new URL(this.createNewChatButtonTarget.href)\n let searchParams = url.searchParams\n if (this.answerFromThisFolderCheckboxTarget.checked) {\n searchParams.set(\"data_source\", \"from_folder\")\n } else {\n searchParams.set(\"data_source\", \"all_files\")\n }\n this.createNewChatButtonTarget.href = url.toString()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n stop(e) {\n e.stopPropagation()\n }\n\n prevent(e) {\n e.preventDefault()\n }\n\n stopAndPrevent(e) {\n e.stopPropagation()\n e.preventDefault()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"collapseContent\", \"button\"]\n\n toggleCollapseItem() {\n this.collapseContentTarget.classList.toggle(\"hidden\")\n this.buttonTarget.classList.toggle(\"active\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"firstRow\", \"hiddenRow\", \"arrowIcon\"]\n static values = { totalRowCount: Number }\n\n initialize() {\n this.collapsed = true\n }\n\n toggle(e) {\n this.collapsed = !this.collapsed\n\n if (!this.collapsed) {\n this.arrowIconTarget.classList.remove(\"bx-chevron-down\")\n this.arrowIconTarget.classList.add(\"bx-chevron-up\")\n this.hiddenRowTargets.forEach(row => {\n row.classList.remove(\"hidden\")\n })\n this.firstRowTarget.rowSpan = this.totalRowCountValue\n } else {\n this.arrowIconTarget.classList.add(\"bx-chevron-down\")\n this.arrowIconTarget.classList.remove(\"bx-chevron-up\")\n this.hiddenRowTargets.forEach(row => {\n row.classList.add(\"hidden\")\n })\n this.firstRowTarget.rowSpan = 3\n }\n }\n\n expandFileList() {\n this.hiddenRowTargets.forEach(row => {\n row.classList.remove(\"hidden\")\n })\n this.firstRowTarget.rowSpan = this.totalRowCountValue\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"contentWrapper\", \"sidebarWrapper\", \"sidebar\"]\n\n connect() {\n this.toggle = this.toggle.bind(this) // Bind the toggle method to the controller instance\n document.addEventListener(\"sidebar-toggle\", this.toggle)\n }\n\n disconnect() {\n document.removeEventListener(\"sidebar-toggle\", this.toggle)\n }\n\n toggle(e) {\n const sidebarWrapperWidth = this.sidebarTarget.offsetWidth\n\n if (e.detail?.resize) {\n // we enlarge the padding\n this.contentWrapperTarget.style.paddingRight =\n e.detail?.resize === \"fileAttributes\" ? \"384px\" : \"calc(50vw - 36px)\"\n\n // we reset the wrapper translation\n this.sidebarWrapperTarget.style.transform = `translateX(${0}px)`\n\n // we update the data attribute for the vue app\n this.sidebarTarget.dataset.isCollapsed = \"false\"\n } else if (e.detail?.isCollapsed === false) {\n // we enlarge the padding\n this.contentWrapperTarget.style.paddingRight = `${sidebarWrapperWidth}px`\n\n // we reset the wrapper translation\n this.sidebarWrapperTarget.style.transform = `translateX(${0}px)`\n\n // we update the data attribute for the vue app\n this.sidebarTarget.dataset.isCollapsed = \"false\"\n } else {\n // we shrink the padding\n this.contentWrapperTarget.style.paddingRight = \"0px\"\n\n // we translate the wrapper\n this.sidebarWrapperTarget.style.transform = `translateX(${sidebarWrapperWidth - 5}px)`\n\n // we update the data attribute for the vue app\n this.sidebarTarget.dataset.isCollapsed = \"true\"\n }\n }\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n allowTouchMove();\n return;\n }\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","/**\n * Swiper 11.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nconst _Carousel = class _Carousel extends Controller {\n connect() {\n this.swiper = new Swiper(this.element, {\n ...this.defaultOptions,\n ...this.optionsValue\n });\n }\n disconnect() {\n this.swiper.destroy(), this.swiper = void 0;\n }\n get defaultOptions() {\n return {};\n }\n};\n_Carousel.values = {\n options: Object\n};\nlet Carousel = _Carousel;\nexport {\n Carousel as default\n};\n","import Carousel from \"@stimulus-components/carousel\"\nimport \"swiper/css/bundle\"\n\nexport default class extends Carousel {\n static targets = [\"container\"]\n\n connect() {\n super.connect()\n this.containerTarget.classList.remove(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"operatorSelector\", \"minValue\", \"maxValue\"]\n\n connect() {\n this.currentMinValueString = \"\"\n this.currentMaxValueString = \"\"\n }\n\n minValueAutoFill(e) {\n if (this.minValueTarget.value) return\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n this.currentMinValueString = \"\"\n }\n if (e.key >= \"0\" && e.key <= \"9\") {\n this.currentMinValueString = this.currentMinValueString + e.key\n }\n if (this.currentMinValueString.length === 4) {\n this.minValueTarget.value = `${this.currentMinValueString}-01-01`\n }\n }\n\n maxValueAutoFill(e) {\n if (this.maxValueTarget.value) return\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n this.currentMaxValueString = \"\"\n }\n if (e.key >= \"0\" && e.key <= \"9\") {\n this.currentMaxValueString = this.currentMaxValueString + e.key\n }\n if (this.currentMaxValueString.length === 4) {\n if (this.operatorSelectorTarget.value === \"~\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-12-31`\n } else if (this.operatorSelectorTarget.value === \"≥\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-01-01`\n } else if (this.operatorSelectorTarget.value === \"≤\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-12-31`\n } else {\n this.maxValueTarget.value = `${this.currentMaxValueString}-01-01`\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"operatorSelector\", \"minValue\", \"maxValue\"]\n\n connect() {\n this.currentMinValueString = \"\"\n this.currentMaxValueString = \"\"\n }\n\n minValueAutoFill(e) {\n if (this.minValueTarget.value) return\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n this.currentMinValueString = \"\"\n }\n if (e.key >= \"0\" && e.key <= \"9\") {\n this.currentMinValueString = this.currentMinValueString + e.key\n }\n if (this.currentMinValueString.length === 4) {\n this.minValueTarget.value = `${this.currentMinValueString}-01-01 00:00:00`\n }\n }\n\n maxValueAutoFill(e) {\n if (this.maxValueTarget.value) return\n if (e.key === \"Backspace\" || e.key === \"Delete\") {\n this.currentMaxValueString = \"\"\n }\n if (e.key >= \"0\" && e.key <= \"9\") {\n this.currentMaxValueString = this.currentMaxValueString + e.key\n }\n if (this.currentMaxValueString.length === 4) {\n if (this.operatorSelectorTarget.value === \"~\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-12-31 23:59:59`\n } else if (this.operatorSelectorTarget.value === \"≥\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-01-01 00:00:00`\n } else if (this.operatorSelectorTarget.value === \"≤\") {\n this.maxValueTarget.value = `${this.currentMaxValueString}-12-31 23:59:59`\n } else {\n this.maxValueTarget.value = `${this.currentMaxValueString}-01-01 00:00:00`\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"documentMessage\", \"accordionIcon\"]\n\n connect() {\n this.documentMessagesShown = false\n }\n\n toggleAccordion() {\n if (this.documentMessagesShown) {\n this.accordionIconTarget.classList.remove(\"rotate-180\")\n this.hideDocumentMessages()\n } else {\n this.accordionIconTarget.classList.add(\"rotate-180\")\n this.showDocumentMessages()\n }\n\n this.documentMessagesShown = !this.documentMessagesShown\n }\n\n showDocumentMessages() {\n this.documentMessageTargets.forEach(documentMessagesTarget => {\n documentMessagesTarget.classList.remove(\"hidden\")\n })\n }\n\n hideDocumentMessages() {\n this.documentMessageTargets.forEach(documentMessagesTarget => {\n documentMessagesTarget.classList.add(\"hidden\")\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"messageSection\",\n \"textArea\",\n \"textSubmitBtn\",\n \"messageForm\",\n \"message\",\n \"messagesContainer\",\n \"debugModeTag\",\n \"extractedTextContainer\",\n \"extractedTextTag\",\n \"systemPrompt\",\n \"messagesPrompt\",\n \"promptInput\",\n \"systemPromptTag\",\n \"modelTag\",\n \"messageFromTag\",\n \"userRoleSelector\",\n \"messageLogs\"\n ]\n\n static values = {\n organizationType: String,\n organizationId: String,\n roomId: String,\n dataSpaceSlug: String,\n logoIcon: String\n }\n\n connect() {\n this.pollForNewMessages()\n if (this.organizationTypeValue === \"manual\") {\n this.initializeUserRole()\n }\n }\n\n createTypingAnimation() {\n var typingAnimation = document.createElement(\"div\")\n typingAnimation.id = \"typing-animation\"\n typingAnimation.classList.add(\"flex\")\n typingAnimation.classList.add(\"justify-start\", \"ml-5\", \"mb-5\", \"w-20\")\n var chatSubContainer = document.createElement(\"div\")\n chatSubContainer.classList.add(\n \"chat\",\n \"relative\",\n \"px-5\",\n \"py-3\",\n \"rounded-lg\",\n \"inline-block\",\n \"w-[100px]\",\n \"h-[37px]\"\n )\n chatSubContainer.classList.add(\"text-white\", \"bg-violet-500\")\n var animation = document.createElement(\"div\")\n animation.classList.add(\"typing\")\n for (let i = 0; i < 3; i++) {\n animation.appendChild(document.createElement(\"span\"))\n }\n var bubbleArrow = document.createElement(\"span\")\n bubbleArrow.classList.add(\"absolute\", \"border-[9px]\", \"border-transparent\", \"top-0\")\n bubbleArrow.classList.add(\"border-t-violet-500\", \"border-r-violet-500\", \"-left-3\")\n chatSubContainer.appendChild(animation)\n chatSubContainer.appendChild(bubbleArrow)\n typingAnimation.appendChild(chatSubContainer)\n this.messageSectionTarget.appendChild(typingAnimation)\n }\n\n createChatBubble(message) {\n var chatContainer = document.createElement(\"div\")\n chatContainer.classList.add(\"flex\")\n const isFromGpt = message.message_from === \"from_gpt\"\n if (isFromGpt) {\n chatContainer.classList.add(\"justify-start\", \"ml-5\", \"mb-5\")\n } else {\n chatContainer.classList.add(\"justify-end\", \"mr-5\", \"mb-5\")\n }\n var chatSubContainer = document.createElement(\"div\")\n chatSubContainer.id = `message_${message.id}`\n chatSubContainer.dataset.fromGpt = isFromGpt\n chatSubContainer.classList.add(\"chat\", \"relative\", \"px-5\", \"py-3\", \"rounded-lg\", \"inline-block\")\n if (isFromGpt) {\n chatSubContainer.classList.add(\"text-white\", \"bg-violet-500\")\n } else {\n chatSubContainer.classList.add(\"text-black\", \"bg-gray-50\", \"dark:bg-zinc-700\")\n }\n var chatBubble = document.createElement(\"div\")\n chatBubble.dataset.roomTarget = \"message\"\n chatBubble.dataset.messageId = message.id\n var content = document.createElement(\"div\")\n content.innerHTML = message.content\n // Created at\n var footerContainer = document.createElement(\"div\")\n footerContainer.classList.add(\"chat-footer\", \"flex\")\n // Bubble arrow\n var bubbleArrow = document.createElement(\"span\")\n bubbleArrow.classList.add(\"absolute\", \"border-[9px]\", \"border-transparent\", \"top-0\")\n if (isFromGpt) {\n bubbleArrow.classList.add(\"border-t-violet-500\", \"border-r-violet-500\", \"-left-3\")\n } else {\n bubbleArrow.classList.add(\"border-t-gray-50\", \"border-l-gray-50\", \"-right-3\")\n }\n chatBubble.appendChild(content)\n chatSubContainer.appendChild(chatBubble)\n chatSubContainer.appendChild(footerContainer)\n chatSubContainer.appendChild(bubbleArrow)\n chatContainer.appendChild(chatSubContainer)\n this.messageSectionTarget.appendChild(chatContainer)\n }\n\n createMessageLog(message) {\n var logContainer = document.createElement(\"div\")\n logContainer.classList.add(\"rounded-lg\", \"bg-gray-300\", \"m-2\", \"p-5\", \"text-left\")\n var messageContent = document.createElement(\"p\")\n messageContent.classList.add(\"font-bold\")\n messageContent.innerHTML = message.content\n var messageLog = document.createElement(\"p\")\n messageLog.classList.add(\"text-xs\")\n messageLog.innerHTML = message.log\n logContainer.appendChild(messageContent)\n logContainer.appendChild(messageLog)\n this.messageLogsTarget.appendChild(logContainer)\n }\n\n removeTypingAnimation() {\n const obj = document.getElementById(\"typing-animation\")\n if (obj) obj.remove()\n }\n\n reset() {\n this.textAreaTarget.value = \"\"\n this.resizeTextArea()\n }\n\n nullifyTextArea() {\n if (this.textAreaTarget.value === \"\\n\") this.textAreaTarget.value = \"\"\n }\n\n resizeTextArea() {\n this.textAreaTarget.style.height = \"\"\n this.textAreaTarget.style.height = this.textAreaTarget.scrollHeight + \"px\"\n }\n\n enterToSubmitForm(e) {\n const enterKey = 13\n const form = e.target.form\n if (form == null) return\n\n if ((e.which === enterKey && !e.shiftKey) || ((e.metaKey || e.ctrlKey) && e.keyCode == enterKey)) {\n this.textSubmitBtnTarget.click()\n }\n }\n\n lockSubmitButton() {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n const message_from = searchParams.get(\"message_from\")\n this.textSubmitBtnTarget.disabled = !message_from || message_from !== \"from_gpt\"\n }\n\n toggleDebuggMode(e) {\n const debugModeIsOn = e.target.checked\n this.debugModeTagTarget.value = debugModeIsOn // Change debug mode for coming messages\n if (debugModeIsOn) {\n this.extractedTextContainerTarget.classList.remove(\"hidden\")\n } else {\n this.extractedTextContainerTarget.classList.add(\"hidden\")\n }\n }\n\n resetExtractedTextTag() {\n this.extractedTextTagTarget.value = \"{}\"\n }\n\n clickToCopy(e) {\n navigator.clipboard.writeText(e.target.textContent)\n }\n\n updatePromptInput(e) {\n // TODO: when model API is down\n this.modelTagTarget.value = e.target.value\n if (e.target.value == \"model_2\") {\n this.promptInputTarget.placeholder = \"Put your expected reply here.\"\n }\n }\n\n updateSystemPromptTag(e) {\n this.systemPromptTagTarget.value = e.target.value\n }\n\n updateMessageFromTag(e) {\n this.messageFromTagTarget.value = e.target.value\n }\n\n insertUserRoleToUrl(e) {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n searchParams.set(\"message_from\", e.target.value)\n url.search = searchParams.toString()\n window.location = url.toString()\n }\n\n initializeUserRole() {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n const message_from = searchParams.get(\"message_from\")\n if (message_from) {\n this.messageFromTagTarget.value = message_from\n this.userRoleSelectorTarget.value = message_from\n }\n }\n\n pollForNewMessages() {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n const message_from = searchParams.get(\"message_from\")\n fetch(\n `/organizations/${this.organizationIdValue}/data_spaces/${this.dataSpaceSlugValue}/rooms/${\n this.roomIdValue\n }/messages?last_message_id=${this.latestMessageId()}`\n )\n .then(response => response.json())\n .then(({ messages }) => {\n if (messages.length > 0) {\n messages.forEach(message => {\n this.createChatBubble(message)\n if (message.message_from === \"from_gpt\") this.createMessageLog(message)\n })\n // Create type animation when last message is from User\n if (messages[messages.length - 1].message_from === \"from_gpt\") {\n this.removeTypingAnimation()\n this.textSubmitBtnTarget.disabled = false\n } else {\n this.textSubmitBtnTarget.disabled = !message_from || message_from !== \"from_gpt\"\n if (!document.getElementById(\"typing-animation\")) this.createTypingAnimation()\n }\n }\n setTimeout(() => this.pollForNewMessages(), 1000) // Poll every 1 second\n })\n .catch(error => {\n console.error(\"Error:\", error)\n setTimeout(() => this.pollForNewMessages(), 5000) // Retry after 5 seconds\n })\n }\n\n latestMessageId() {\n const chatMessages = [...document.querySelectorAll('[data-room-target=\"message\"]')]\n if (chatMessages[chatMessages.length - 1]) {\n return chatMessages[chatMessages.length - 1].dataset.messageId\n } else {\n return null\n }\n }\n}\n","import RoomController from \"./room_controller\"\n\nexport default class extends RoomController {\n static targets = [\n \"chatHistoryLink\",\n \"chatHistoryBtn\",\n \"chatHistoryContainer\",\n \"hiddenModelNameTag\",\n \"modelSelector\",\n \"hiddenDataSourceTag\",\n \"dataSourceSelector\",\n \"systemPromptsContainer\",\n \"dataSourceLink\"\n ]\n\n connect() {\n this.timeoutIds = []\n this.systemPromptContext = null\n this.systemPromptPrompt = null\n }\n\n csrfToken() {\n return document.querySelector(\"meta[name=csrf-token]\").content\n }\n\n renderChatHistory(e) {\n let targetLink = this.chatHistoryLinkTargets.find(obj => obj.id === e.target.id)\n if (targetLink) targetLink.click()\n this.chatHistoryBtnTargets.forEach(obj => obj.classList.remove(\"bg-gray-200\"))\n const targetBtn = this.chatHistoryBtnTargets.find(obj => obj.id === e.target.id)\n if (targetBtn) targetBtn.classList.add(\"bg-gray-200\")\n }\n\n removeAllSetTimeOut() {\n this.timeoutIds.forEach(timeoutId => {\n clearTimeout(timeoutId)\n })\n }\n\n pollForNewMessages() {\n const roomId = this.messageSectionTarget.id\n this.removeAllSetTimeOut()\n fetch(\n `/organizations/${this.organizationIdValue}/data_spaces/${\n this.dataSpaceSlugValue\n }/rooms/${roomId}/messages?last_message_id=${this.latestMessageId()}`\n )\n .then(response => response.json())\n .then(({ messages }) => {\n if (messages[messages.length - 1]?.message_from !== \"from_gpt\") {\n this.timeoutIds.push(setTimeout(() => this.pollForNewMessages(roomId), 1000)) // Poll every 1 second\n }\n\n if (messages.length > 0) {\n messages.forEach(message => {\n this.createChatBubble(message)\n })\n\n // Create type animation when last message is from User\n if (messages[messages.length - 1].message_from === \"from_gpt\") {\n this.removeTypingAnimation()\n this.removeAllSetTimeOut()\n } else {\n if (!document.getElementById(\"typing-animation\")) this.createTypingAnimation()\n }\n }\n })\n .catch(error => {\n console.error(\"Error:\", error)\n this.timeoutIds.push(setTimeout(() => this.pollForNewMessages(roomId), 5000)) // Retry after 5 seconds\n })\n }\n\n enterToSubmitForm(e) {\n super.enterToSubmitForm(e)\n }\n\n resizeTextArea() {\n this.textAreaTarget.style.height = \"\"\n this.textAreaTarget.style.height = Math.max(this.textAreaTarget.scrollHeight - 20, 60) + \"px\"\n }\n\n nullifyTextArea() {\n super.nullifyTextArea()\n }\n\n docTalkMessageHandler(e) {\n e.preventDefault()\n let formData = new FormData(e.target)\n formData.set(\"authenticity_token\", this.csrfToken())\n this.modelSelectorTarget.disabled = true\n this.modelSelectorTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n this.dataSourceSelectorTarget.disabled = true\n this.dataSourceSelectorTarget.classList.add(\"cursor-not-allowed\", \"opacity-50\")\n this.removeSystemPromptsContainer()\n this.pollForNewMessages()\n\n fetch(e.params.createMessageUrl, {\n method: \"PUT\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"X-CSRFToken\": this.csrfToken()\n },\n body: formData\n })\n .then(response => response.json())\n .then(({ id, first_message }) => {\n if (!this.chatHistoryBtnTargets.find(chatHistoryBtnTarget => chatHistoryBtnTarget.id === id)) {\n this.createChatHistoryBtn(id, first_message)\n }\n })\n .catch(error => {\n console.error(\"Error:\", error)\n })\n this.reset()\n }\n\n createChatHistoryBtn(id, first_message) {\n let btn = document.createElement(\"li\")\n btn.classList.add(\"border-b\", \"border-gray-50\", \"last:border-0\")\n btn.id = id\n btn.dataset.action = \"click->doc-talk#renderChatHistory\"\n btn.dataset.docTalkTarget = \"chatHistoryBtn\"\n\n let listItem = document.createElement(\"div\")\n let wrapper = document.createElement(\"div\")\n let iconWrapper = document.createElement(\"div\")\n let icon = document.createElement(\"i\")\n let content = document.createElement(\"span\")\n\n listItem.classList.add(\n \"w-full\",\n \"flex\",\n \"items-center\",\n \"py-1\",\n \"px-1\",\n \"my-[2px]\",\n \"text-gray-600\",\n \"text-[12px]\",\n \"cursor-pointer\",\n \"rounded\",\n \"hover:bg-gray-50\",\n \"transition-all\",\n \"duration-300\"\n )\n wrapper.classList.add(\"flex\", \"items-start\")\n iconWrapper.classList.add(\n \"w-[18px]\",\n \"h-[18px]\",\n \"flex\",\n \"justify-start\",\n \"items-center\",\n \"flex-shrink-0\",\n \"text-[18px]\"\n )\n icon.classList.add(\"bx\", \"bx-comment\")\n content.classList.add(\"ml-2\")\n\n iconWrapper.append(icon)\n wrapper.append(iconWrapper)\n wrapper.append(content)\n listItem.append(wrapper)\n content.innerHTML = first_message\n btn.append(listItem)\n this.chatHistoryContainerTarget.prepend(btn)\n }\n\n createTypingAnimation() {\n //\n var chatContainer = document.createElement(\"div\")\n chatContainer.classList.add(\"w-full\", \"p-5\", \"text-left\", \"min-h-[100px]\")\n chatContainer.id = \"typing-animation\"\n chatContainer.classList.add(\"bg-gray-50\")\n var chatMessageBg = document.createElement(\"div\")\n chatMessageBg.classList.add(\n \"flex\",\n \"p-4\",\n \"gap-4\",\n \"text-base\",\n \"md:gap-6\",\n \"md:max-w-2xl\",\n \"lg:max-w-[38rem]\",\n \"xl:max-w-3xl\",\n \"md:py-6\",\n \"lg:px-0\",\n \"m-auto\"\n )\n var avatarContainer = document.createElement(\"div\")\n avatarContainer.classList.add(\"flex-shrink-0\", \"flex\", \"flex-col\", \"relative\", \"items-end\")\n let avatar = document.createElement(\"img\")\n avatar.src = this.logoIconValue\n avatar.classList.add(\"border\", \"border-gray-50\", \"ml-2\", \"mr-1\", \"inline-block\", \"mt-1\", \"h-8\")\n avatarContainer.appendChild(avatar)\n var chatSubContainer = document.createElement(\"div\")\n chatSubContainer.classList.add(\n \"relative\",\n \"flex\",\n \"w-[calc(100%-50px)]\",\n \"flex-col\",\n \"gap-1\",\n \"md:gap-3\",\n \"lg:w-[calc(100%-115px)]\",\n \"pt-2\"\n )\n var messageContainer = document.createElement(\"div\")\n var messageBody = document.createElement(\"div\")\n var animation = document.createElement(\"div\")\n animation.classList.add(\"typing\", \"mt-2\")\n for (let i = 0; i < 3; i++) {\n animation.appendChild(document.createElement(\"span\"))\n }\n messageBody.appendChild(animation)\n messageContainer.appendChild(messageBody)\n chatSubContainer.appendChild(messageContainer)\n chatMessageBg.appendChild(avatarContainer)\n chatMessageBg.appendChild(chatSubContainer)\n chatContainer.appendChild(chatMessageBg)\n this.messageSectionTarget.appendChild(chatContainer)\n //\n }\n\n createChatBubble(message) {\n var chatContainer = document.createElement(\"div\")\n chatContainer.classList.add(\"w-full\", \"p-5\", \"text-left\", \"min-h-[100px]\")\n const isFromGpt = message.message_from === \"from_gpt\"\n if (isFromGpt) chatContainer.classList.add(\"bg-gray-50\")\n var chatMessageBg = document.createElement(\"div\")\n chatMessageBg.classList.add(\n \"flex\",\n \"p-4\",\n \"gap-4\",\n \"text-base\",\n \"md:gap-6\",\n \"md:max-w-2xl\",\n \"lg:max-w-[38rem]\",\n \"xl:max-w-3xl\",\n \"md:py-6\",\n \"lg:px-0\",\n \"m-auto\"\n )\n var avatarContainer = document.createElement(\"div\")\n avatarContainer.classList.add(\"flex-shrink-0\", \"flex\", \"flex-col\", \"relative\", \"items-end\")\n if (isFromGpt) {\n let avatar = document.createElement(\"img\")\n avatar.src = this.logoIconValue\n avatar.classList.add(\"border\", \"border-gray-50\", \"ml-2\", \"mr-1\", \"inline-block\", \"mt-1\", \"h-8\")\n avatarContainer.appendChild(avatar)\n } else {\n let avatar = document.createElement(\"i\")\n avatar.classList.add(\n \"bx\",\n \"bx-user\",\n \"h-10\",\n \"w-10\",\n \"text-3xl\",\n \"text-center\",\n \"leading-loose\",\n \"text-gray-300\",\n \"relative\",\n \"-top-[10px]\"\n )\n avatarContainer.appendChild(avatar)\n }\n var chatSubContainer = document.createElement(\"div\")\n chatSubContainer.classList.add(\n \"relative\",\n \"flex\",\n \"w-[calc(100%-50px)]\",\n \"flex-col\",\n \"gap-1\",\n \"md:gap-3\",\n \"lg:w-[calc(100%-115px)]\",\n \"pt-2\"\n )\n var messageContainer = document.createElement(\"div\")\n messageContainer.id = `message_${message.id}`\n messageContainer.dataset.fromGpt = isFromGpt\n var messageBody = document.createElement(\"div\")\n messageBody.dataset.roomTarget = \"message\"\n messageBody.dataset.messageId = message.id\n var content = document.createElement(\"div\")\n content.innerHTML = message.content\n\n messageBody.appendChild(content)\n messageContainer.appendChild(messageBody)\n chatSubContainer.appendChild(messageContainer)\n chatMessageBg.appendChild(avatarContainer)\n chatMessageBg.appendChild(chatSubContainer)\n chatContainer.appendChild(chatMessageBg)\n this.messageSectionTarget.appendChild(chatContainer)\n }\n\n updateHiddenModelNameTag(e) {\n this.hiddenModelNameTagTarget.value = e.target.value\n }\n\n updateHiddenDataSourceTag(e) {\n this.hiddenDataSourceTagTarget.value = e.target.value\n if (e.target.value !== \"from_folder\") {\n this.dataSourceLinkTarget.classList.add(\"hidden\")\n } else {\n this.dataSourceLinkTarget.classList.remove(\"hidden\")\n }\n }\n\n removeSystemPromptsContainer() {\n if (this.systemPromptsContainerTargets.length > 0) {\n this.systemPromptsContainerTargets.forEach(systemPromptsContainerTarget =>\n systemPromptsContainerTarget.classList.add(\"hidden\")\n )\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"excelView\"]\n static values = {\n fileUrl: String\n }\n\n initialize() {\n new ExcelViewer(\"#excel-view\", this.fileUrlValue, {\n theme: \"light\",\n lang: \"en\"\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n organizationId: String,\n dataSpaceSlug: String\n }\n static targets = [\"folderSelector\"]\n\n connect() {\n this.folderSelectorTarget.addEventListener(\"change\", this.selectionSafetyCheck.bind(this))\n }\n\n disconnect() {\n this.folderSelectorTarget.removeEventListener(\"change\", this.selectionSafetyCheck.bind(this))\n }\n\n selectionSafetyCheck(e) {\n // we check if the option selected is disabled, if it is, we reset the selection\n const currentOption = this.folderSelectorTarget.options[this.folderSelectorTarget.selectedIndex]\n if (currentOption.disabled) this.folderSelectorTarget.value = \"\"\n }\n\n updateFolderOptions(e) {\n const projectId = e.target.value\n fetch(\n `/organizations/${this.organizationIdValue}/data_spaces/${this.dataSpaceSlugValue}/projects/${projectId}/folders?current_file_id=${e.params.currentFileId}`\n )\n .then(response => response.json())\n .then(({ folders }) => {\n this.removeOptions()\n this.appendOptions(folders)\n })\n }\n\n removeOptions() {\n var i,\n L = this.folderSelectorTarget.options.length - 1\n for (i = L; i >= 0; i--) {\n this.folderSelectorTarget.remove(i)\n }\n }\n\n appendOptions(options) {\n options.forEach(option => {\n var optionDom = document.createElement(\"option\")\n optionDom.innerHTML = option[0]\n optionDom.value = option[1]\n optionDom.disabled = option[2]?.disabled\n this.folderSelectorTarget.appendChild(optionDom)\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createApp, h } from \"vue\"\nimport { VueQueryPlugin } from \"@tanstack/vue-query\"\nimport VueTippy from \"vue-tippy\"\n\nimport InputFilesPreviewModal from \"../input_files_preview_modal/apps/InputFilesPreviewModalApp.vue\"\nimport { useTranslations } from \"../shared/useTranslations\"\n\nfunction appendToBody() {\n return document.body\n}\n\nexport default class extends Controller {\n static outlets = [\"scope\"]\n\n static targets = [\"fileButton\"]\n\n static values = {\n attributeSlugToInfo: Object\n }\n\n connect() {\n this.appElement = document.getElementById(\"inputFilesPreviewModal\")\n if (this.appElement.children.length === 0) {\n const app = createApp(InputFilesPreviewModal, { element: this.appElement })\n app.use(VueQueryPlugin)\n app.use(VueTippy, {\n defaultProps: {\n directive: \"tippy\",\n component: \"tippy\",\n theme: \"light\",\n defaultProps: {\n theme: \"light\"\n },\n appendTo: appendToBody\n }\n })\n useTranslations(app)\n app.mount(this.appElement)\n }\n }\n\n onFileButtonClick(event) {\n let isForceShowHighlightBlocks = false\n\n let inputFilesWithInfo = []\n\n this.fileButtonTargets.forEach(fileButton => {\n const dataset = fileButton.dataset\n\n const highlightBlockIds = JSON.parse(dataset.highlightBlockIds)\n if (highlightBlockIds.length > 0) {\n isForceShowHighlightBlocks = true\n }\n\n // Parse the file data and transform it into attributes_data format\n let attributesData = {}\n try {\n const fileData = JSON.parse(dataset.fileData || \"{}\")\n const attributeSlugToInfo = this.attributeSlugToInfoValue || \"{}\"\n\n // Remove special fields that aren't attributes\n const {\n \"file-name\": fileName,\n \"file-extension\": fileExt,\n \"file-from\": fileFrom,\n file_id: fileId,\n ...attributes\n } = fileData\n\n // First create entries for all attributes in attributeSlugToInfo\n Object.keys(attributeSlugToInfo).forEach(slug => {\n const value = attributes[slug] || \"-\"\n if ([\"file-name\", \"file-extension\"].includes(slug)) return\n\n attributesData[slug] = {\n id: \"\",\n name: attributeSlugToInfo[slug]?.name || slug.replace(/-/g, \" \").replace(/^[a-z]/, c => c.toUpperCase()),\n slug: slug,\n type: Array.isArray(value) ? \"table\" : typeof value === \"boolean\" ? \"boolean\" : \"string\",\n is_locked: false,\n is_lock_visible: false,\n is_sources_visible: false,\n is_read_only: true,\n value: value,\n task: null,\n status: null,\n persistable: null,\n modified_result: null\n }\n })\n\n // Then add any remaining attributes not in attributeSlugToInfo\n Object.keys(attributes).forEach(key => {\n if (!attributesData[key]) {\n const value = attributes[key] || \"-\"\n attributesData[key] = {\n id: \"\",\n name: key.replace(/-/g, \" \").replace(/^[a-z]/, c => c.toUpperCase()),\n slug: key,\n type: Array.isArray(value) ? \"table\" : typeof value === \"boolean\" ? \"boolean\" : \"string\",\n is_locked: false,\n is_lock_visible: false,\n is_sources_visible: false,\n is_read_only: true,\n value: value,\n task: null,\n status: null,\n persistable: null,\n modified_result: null\n }\n }\n })\n } catch (e) {\n console.error(\"Error parsing file data:\", e)\n attributesData = {}\n }\n\n const fileData = JSON.parse(dataset.fileData || \"{}\")\n const highlightBlockScores = JSON.parse(dataset.highlightBlockScoresValue || \"[]\")\n\n // Check if we already have this file in our array\n const existingFileIndex = inputFilesWithInfo.findIndex(file => file.id === dataset.resultId)\n\n if (existingFileIndex !== -1) {\n // Create a map of existing id -> score for quick lookup\n const existingScoresMap = new Map(\n inputFilesWithInfo[existingFileIndex].highlight_block_ids.map((id, index) => [\n id,\n inputFilesWithInfo[existingFileIndex].highlight_block_scores[index]\n ])\n )\n\n // Add new scores to the map\n highlightBlockIds.forEach((id, index) => {\n existingScoresMap.set(id, highlightBlockScores[index])\n })\n\n // Convert back to arrays maintaining the relationship\n const mergedHighlightBlockIds = [...existingScoresMap.keys()]\n const mergedHighlightBlockScores = mergedHighlightBlockIds.map(id => existingScoresMap.get(id))\n\n // Update both arrays\n inputFilesWithInfo[existingFileIndex].highlight_block_ids = mergedHighlightBlockIds\n inputFilesWithInfo[existingFileIndex].highlight_block_scores = mergedHighlightBlockScores\n\n // Merge attributes_data if it exists\n if (attributesData && Object.keys(attributesData).length > 0) {\n inputFilesWithInfo[existingFileIndex].attributes_data = {\n ...inputFilesWithInfo[existingFileIndex].attributes_data,\n ...attributesData\n }\n }\n } else {\n // For clicked file, use the page number from the button\n // For other files, use first page from highlight scores or default to 1\n const isClickedFile = event.currentTarget.dataset.resultId === dataset.resultId\n let currentPage = 1\n\n if (isClickedFile) {\n currentPage = parseInt(event.currentTarget.dataset.pageNumber) || 1\n } else if (highlightBlockScores.length > 0) {\n // Find the first page that has a highlight score\n const firstHighlightPage = Object.keys(highlightBlockScores[0])[0]\n currentPage = parseInt(firstHighlightPage) || 1\n }\n\n // Add new file entry\n inputFilesWithInfo.push({\n id: dataset.resultId,\n is_folder: false,\n file_name: fileData[\"file-name\"] || \"\",\n file_extension: fileData[\"file-extension\"] || \"\",\n file_url: dataset.resultFileUrl,\n detail_page_url: dataset.resultDetailPageUrl,\n current_page: currentPage,\n highlight_block_ids: highlightBlockIds,\n highlight_block_scores: highlightBlockScores,\n attributes_data: attributesData,\n breadcrumb_items: [],\n download_url: dataset.resultFileUrl,\n thumbnail_url: dataset.thumbnailUrl\n })\n }\n })\n\n this.appElement.dataset.inputFiles = JSON.stringify(inputFilesWithInfo)\n this.appElement.dataset.attributeSlugToInfo = JSON.stringify(this.attributeSlugToInfoValue)\n this.appElement.dataset.initialInputFileId = event.currentTarget.dataset.resultId\n this.appElement.dataset.isForceShowHighlightBlocks = isForceShowHighlightBlocks\n this.appElement.dataset.isOpen = \"true\"\n this.appElement.dataset.scope = \"doc_talk\"\n this.appElement.dataset.scopeId = event.currentTarget.dataset.messageId\n this.appElement.dataset.inputFilesOverride = JSON.stringify(inputFilesWithInfo)\n }\n}\n","var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\n\nexport default class extends Controller {\n hasAnyError = false\n hasUploadedFile = false\n uploadHtmlBox = \"\"\n\n static targets = [\n \"fileUploadForm\",\n \"fileUploadInput\",\n \"fileUploadName\",\n \"fileUploadZone\",\n \"uploadResultSection\",\n \"overallProgressText\",\n \"progressBar\",\n \"uploadedFile\",\n \"modalDialogCloseButton\",\n \"failedFileProcessingSection\",\n \"failedFileProcessingList\"\n ]\n\n static values = {\n errExceedFileSizeMsg: { type: String, default: \"exceeds file size limit\" },\n errExceedPageNoMsg: { type: String, default: \"exceeds number of pages limit\" },\n errUnsupportedPageExtMsg: { type: String, default: \"extension not supported\" },\n errEmptyFileMsg: { type: String, default: \"is a 0 kilobyte empty file\" }\n }\n\n connect() {\n this.setUpFileUploadZoneEvents()\n this.setUpFileUploadInputEvents()\n this.uploadHtmlBox = this.fileUploadZoneTarget.innerHTML\n }\n\n setUpFileUploadInputEvents() {\n this.fileUploadInputTarget.addEventListener(\"change\", e => {\n const files = [...e.target.files]\n const fileNames = files.map(file => file.name).join(\", \")\n this.fileUploadZoneTarget.innerHTML = `Uploading ${fileNames} ...`\n\n this.fileUploadInputTarget.value = null\n this.uploadFiles(files)\n })\n }\n\n setUpFileUploadZoneEvents() {\n // Enable drag and drop behaviors\n this.fileUploadZoneTarget.addEventListener(\"dragenter\", e => {\n e.preventDefault()\n })\n\n this.fileUploadZoneTarget.addEventListener(\"dragover\", e => {\n e.preventDefault()\n })\n\n this.fileUploadZoneTarget.addEventListener(\"dragleave\", e => {\n e.preventDefault()\n })\n\n // Trigger file selected on drop\n this.fileUploadZoneTarget.addEventListener(\"drop\", e => {\n e.preventDefault()\n\n const files = [...e.dataTransfer.files]\n const fileNames = files.map(file => file.name).join(\", \")\n this.fileUploadZoneTarget.innerHTML = `Uploading ${fileNames} ...`\n\n this.uploadFiles(files)\n })\n }\n\n clickFileUploadInput() {\n this.fileUploadInputTarget.click()\n }\n\n async uploadFiles(files) {\n this.hasUploadedFile = false\n\n // early return if there's no files to upload\n if (!files || files.length === 0) return\n\n // disallow closing when files are being processed, otherwise failed\n // progress won't be acknowledged\n this.modalDialogCloseButtonTarget.classList.add(\"hidden\")\n\n this.toggleProgressResultSection(true)\n this.uploadedFileTarget.innerText = files[0].name\n\n let totalNoOfFiles = files.length\n let totalNoOfProcessedFiles = 0\n this.hasAnyError = false\n\n const performUpload = async (file, callback) => {\n const url = this.fileUploadInputTarget.dataset.directUploadUrl\n const upload = new DirectUpload(file, url)\n\n upload.create((error, blob) => {\n const fileName = file.name\n\n // update progress\n totalNoOfProcessedFiles += 1\n const progressInPercent = (totalNoOfProcessedFiles / totalNoOfFiles) * 100.0\n this.updateProgress(fileName, progressInPercent, error)\n\n if (error) this.hasAnyError = true\n\n if (!error) {\n const fileBlobField = document.createElement(\"input\")\n fileBlobField.setAttribute(\"type\", \"hidden\")\n fileBlobField.setAttribute(\"value\", blob.signed_id)\n fileBlobField.name = this.fileUploadInputTarget.name\n this.fileUploadFormTarget.appendChild(fileBlobField)\n\n const fileNameField = document.createElement(\"input\")\n fileNameField.setAttribute(\"type\", \"hidden\")\n fileNameField.setAttribute(\"value\", fileName)\n fileNameField.name = \"input_file[file_names][]\"\n this.fileUploadFormTarget.appendChild(fileNameField)\n this.hasUploadedFile = true\n }\n\n if (!this.hasAnyError && totalNoOfProcessedFiles === totalNoOfFiles) {\n this.modalDialogCloseButtonTarget.classList.remove(\"hidden\")\n this.fileUploadFormTarget.submit()\n }\n\n callback()\n })\n }\n\n const processUploadBatch = async batch => {\n const promises = batch.map(file => {\n return new Promise((resolve, reject) => {\n // check for file extension and file size\n const fileSizeLimits = {\n // unites are in megabytes\n \"image/png\": 200.0,\n \"image/jpeg\": 200.0,\n \"image/tiff\": 200.0,\n \"application/vnd\": 1500.0,\n \"application/vnd.autodesk.autocad\": 1500.0,\n \"model/vnd.collada+xml\": 1500.0,\n \"application/xml\": 1500.0, // safe fallback for collada (.dae)\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": 50.0,\n \"application/pdf\": 200.0\n }\n\n const fileName = file.name.toLowerCase()\n\n // safe \"cross-platform\" file type detection\n let fileType = file.type\n if (fileType === \"\") {\n const ext = fileName.split(\".\").pop().toLowerCase()\n const mimeTypes = {\n rvt: \"application/vnd.autodesk.autocad\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n dae: \"model/vnd.collada+xml\",\n xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n }\n fileType = mimeTypes[ext] || \"\"\n }\n\n // guard against 0 kb file\n const fileSize = file.size * 1e-6\n if (fileSize <= 0) {\n totalNoOfProcessedFiles += 1\n const progressInPercent = (totalNoOfProcessedFiles / totalNoOfFiles) * 100.0\n this.updateProgress(file.name, progressInPercent, this.errEmptyFileMsgValue)\n this.hasAnyError = true\n resolve(file)\n return\n }\n\n // guard against file too big\n const maxFileSize = fileSizeLimits[fileType]\n if (maxFileSize) {\n if (fileSize > maxFileSize) {\n totalNoOfProcessedFiles += 1\n const progressInPercent = (totalNoOfProcessedFiles / totalNoOfFiles) * 100.0\n this.updateProgress(file.name, progressInPercent, this.errExceedFileSizeMsgValue)\n this.hasAnyError = true\n resolve(file)\n return\n }\n } else {\n totalNoOfProcessedFiles += 1\n const progressInPercent = (totalNoOfProcessedFiles / totalNoOfFiles) * 100.0\n this.updateProgress(file.name, progressInPercent, this.errUnsupportedPageExtMsgValue)\n this.hasAnyError = true\n resolve(file)\n return\n }\n\n // if it's a PDF file, ensure the number of pages is within limit\n if (fileType.includes(\"pdf\")) {\n const fileReader = new FileReader()\n\n // the main logic of uploading or not uploading a PDF:\n const callback = pdf => {\n if (pdf.numPages >= 1000) {\n totalNoOfProcessedFiles += 1\n const progressInPercent = (totalNoOfProcessedFiles / totalNoOfFiles) * 100.0\n this.updateProgress(file.name, progressInPercent, this.errExceedPageNoMsgValue)\n this.hasAnyError = true\n pdf.destroy()\n resolve(file)\n } else {\n performUpload(file, () => {\n pdf.destroy()\n resolve(file)\n })\n }\n }\n\n // get the PDF file\n fileReader.onload = (function (file, callback) {\n // Event handling is async, and thus they pick up the latest value of all the enclosed local\n // variables (ie. closure). So, we need to bind any particular local variable to the event.\n return async function () {\n var typedarray = new Uint8Array(this.result)\n const pdf = await pdfjsLib.getDocument(typedarray).promise\n callback(pdf)\n }\n })(file, callback)\n fileReader.readAsArrayBuffer(file)\n } else {\n // you can't refactor it out, because the PDF checking above happens on a callback; if you refactor\n // it out, you run the risk of always uploading! that's NOT good\n performUpload(file, () => resolve(file))\n }\n })\n })\n return Promise.all(promises)\n }\n\n const batchsize = 50\n for (let i = 0; i < files.length; i += batchsize) {\n const batch = files.slice(i, i + batchsize)\n try {\n const results = await processUploadBatch(batch)\n } catch (error) {\n console.log(error)\n }\n }\n }\n\n toggleProgressResultSection(displayed = true) {\n this.uploadResultSectionTarget.classList.toggle(\"hidden\", !displayed)\n this.fileUploadZoneTarget.classList.toggle(\"hidden\", displayed)\n }\n\n /**\n * Update the progress bar with the latest file uploaded, and reflect\n * the progress accordingly.\n */\n updateProgress(fileName, percentage, error) {\n const percentageText = `${percentage.toFixed(2)}%`\n\n // update recently uploaded file text\n this.uploadedFileTarget.innerText = fileName\n\n // update percentage text\n this.overallProgressTextTarget.innerText = percentageText\n this.progressBarTarget.style.width = percentageText\n\n if (percentage >= 100) {\n this.modalDialogCloseButtonTarget.classList.remove(\"hidden\")\n }\n\n if (error) {\n this.failedFileProcessingSectionTarget.classList.remove(\"hidden\")\n this.failedFileProcessingListTarget.insertAdjacentHTML(\"beforeend\", `${fileName} ${error}`)\n }\n }\n\n closeModalDialog() {\n // If some files uploaded successfully (some may have failed), submit them\n if (this.hasUploadedFile) {\n this.fileUploadFormTarget.submit()\n }\n\n this.toggleProgressResultSection(false)\n\n // Reset if there's any error so that we can re-upload\n if (this.hasAnyError) {\n this.fileUploadZoneTarget.innerHTML = this.uploadHtmlBox\n this.failedFileProcessingListTarget.innerHTML = \"\"\n this.fileUploadZoneTarget.classList.remove(\"hidden\")\n this.uploadResultSectionTarget.classList.add(\"hidden\")\n this.failedFileProcessingSectionTarget.classList.add(\"hidden\")\n this.hasAnyError = false\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"flashContainer\"]\n\n connect() {\n const sidebarPaths = [\"setting\", \"/users/edit\", \"members\"]\n\n if (sidebarPaths.some(path => window.location.pathname.includes(path))) {\n this.element.firstElementChild.classList.add(\"ml-sidebar-width\")\n } else {\n this.element.firstElementChild.classList.add(\"mx-20\")\n }\n }\n\n dismiss() {\n this.element.remove()\n }\n\n dismissContainer() {\n this.flashContainerTarget.remove()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n submit() {\n this.element.requestSubmit()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n updateForm() {\n this.element.submit()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"canvasContainer\"]\n\n static values = {\n imageUrl: String,\n boundingBoxes: Array,\n highlightBlockIds: Array,\n highlightBlockScores: Array,\n isShowExtractedWords: Boolean,\n isOnlyShowHighlightBlocks: Boolean,\n scale: Number,\n textContent: Object\n }\n\n initialize() {\n this.loadingSpinnerElement = document.createElement(\"i\")\n this.loadingSpinnerElement.classList.add(\n \"absolute\",\n \"w-12\",\n \"h-12\",\n \"top-[calc(50%-24px)]\",\n \"left-[calc(50%-24px)]\",\n \"fa-solid\",\n \"fa-circle-notch\",\n \"text-[48px]\",\n \"text-violet-700\",\n \"animate-spin\"\n )\n\n this.imageElement = undefined\n this.frameElement = undefined\n this.canvasElement = undefined\n this.textLayerElement = undefined\n this.tooltipElement = undefined\n }\n\n connect() {\n const resizeObserver = new ResizeObserver(entries => {\n if (!this.imageElement || !this.frameElement || !this.canvasElement) return\n\n for (const entry of entries) {\n if (entry.target === this.canvasContainerTarget) {\n const event = new Event(\"containerResized\")\n event.value = {\n containerWidth: entry.contentRect.width,\n containerHeight: entry.contentRect.height\n }\n this.element.dispatchEvent(event)\n }\n }\n })\n\n resizeObserver.observe(this.canvasContainerTarget)\n }\n\n isShowExtractedWordsValueChanged() {\n if (!this.tooltipElement) return\n\n this.tooltipElement.style.display = \"none\"\n }\n\n scaleValueChanged() {\n if (!this.tooltipElement) return\n\n this.tooltipElement.style.display = \"none\"\n }\n\n showLoadingSpinner() {\n if (this.canvasContainerTarget.contains(this.loadingSpinnerElement)) return\n\n this.canvasContainerTarget.appendChild(this.loadingSpinnerElement)\n }\n\n hideLoadingSpinner() {\n if (!this.canvasContainerTarget.contains(this.loadingSpinnerElement)) return\n\n this.loadingSpinnerElement.remove()\n }\n\n loadImage() {\n this.imageElement = new Image()\n this.imageElement.onload = () => {\n this.hideLoadingSpinner()\n\n const event = new Event(\"imageLoaded\")\n event.value = { image: this.imageElement }\n this.element.dispatchEvent(event)\n }\n this.imageElement.src = this.imageUrlValue\n }\n\n setupElement() {\n this.canvasContainerTarget.innerHTML = \"\"\n\n const { naturalWidth, naturalHeight } = this.imageElement\n\n this.canvasElement = document.createElement(\"canvas\")\n this.canvasElement.style.transformOrigin = \"top left\"\n this.canvasElement.style.position = \"absolute\"\n this.canvasElement.style.top = 0\n this.canvasElement.style.left = 0\n this.canvasElement.width = naturalWidth\n this.canvasElement.height = naturalHeight\n this.canvasElement.addEventListener(\"mousemove\", this.onCanvasMouseMove.bind(this))\n\n this.textLayerElement = document.createElement(\"div\")\n this.textLayerElement.style.transformOrigin = \"top left\"\n this.textLayerElement.style.position = \"absolute\"\n this.textLayerElement.style.top = 0\n this.textLayerElement.style.left = 0\n this.textLayerElement.style.width = `${naturalWidth}px`\n this.textLayerElement.style.height = `${naturalHeight}px`\n\n this.frameElement = document.createElement(\"div\")\n this.frameElement.style.position = \"relative\"\n this.frameElement.appendChild(this.canvasElement)\n this.frameElement.appendChild(this.textLayerElement)\n\n this.canvasContainerTarget.appendChild(this.frameElement)\n\n this.tooltipElement = undefined\n }\n\n clearCanvas() {\n if (!this.canvasElement) return\n\n const context = this.canvasElement.getContext(\"2d\")\n\n context.reset()\n }\n\n renderCanvas() {\n const context = this.canvasElement.getContext(\"2d\")\n\n context.reset()\n\n this.renderImage(context)\n\n if (this.isShowExtractedWordsValue) {\n this.renderBoundingBoxes(context)\n this.textLayerElement.style.pointerEvents = \"none\"\n } else {\n this.textLayerElement.style.pointerEvents = \"auto\"\n }\n }\n\n renderImage(context) {\n context.drawImage(this.imageElement, 0, 0)\n }\n\n renderBoundingBoxes(context) {\n this.getFormattedBoundingBoxes().forEach(({ id, boundingBoxes }) => {\n context.beginPath()\n context.moveTo(boundingBoxes[0].x, boundingBoxes[0].y)\n context.lineTo(boundingBoxes[1].x, boundingBoxes[1].y)\n context.lineTo(boundingBoxes[2].x, boundingBoxes[2].y)\n context.lineTo(boundingBoxes[3].x, boundingBoxes[3].y)\n context.lineWidth = 2\n context.strokeStyle = this.getBoundingBoxColor(id)\n context.closePath()\n context.stroke()\n })\n }\n\n buildTextLayer() {\n const { items, styles } = this.textContentValue\n\n if (!items || !styles) return\n\n this.textLayerElement.innerHTML = \"\"\n\n const fragment = document.createDocumentFragment()\n\n for (const item of items) {\n const { left, top, fontSize, fontFamily, scaleX, angle } = item.properties\n\n const element = document.createElement(\"span\")\n\n element.setAttribute(\"role\", \"presentation\")\n element.style.position = \"absolute\"\n element.style.color = \"transparent\"\n element.style.whiteSpace = \"pre\"\n element.style.left = `${left}px`\n element.style.top = `${top}px`\n element.style.fontSize = `${fontSize}px`\n element.style.lineHeight = 1\n element.style.fontFamily = fontFamily\n element.style.transformOrigin = \"top left\"\n\n let transform = \"\"\n if (scaleX) {\n transform = `scaleX(${scaleX})`\n }\n\n if (angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`\n }\n\n if (transform.length > 0) {\n element.style.transform = transform\n }\n\n if (item.str !== \"\") {\n element.textContent = item.str\n }\n\n fragment.appendChild(element)\n\n if (item.hasEOL) {\n const brElement = document.createElement(\"br\")\n brElement.setAttribute(\"role\", \"presentation\")\n fragment.appendChild(brElement)\n }\n }\n\n this.textLayerElement.appendChild(fragment)\n }\n\n getFormattedBoundingBoxes() {\n if (this.boundingBoxesValue[0] == null) return []\n\n return this.boundingBoxesValue[0].content\n .filter(({ id }) => {\n if (!this.isOnlyShowHighlightBlocksValue) {\n return true\n }\n\n return this.highlightBlockIdsValue.includes(id)\n })\n .map(({ content, id }) => {\n const topLeftX = content[0]\n const topLeftY = content[1]\n const width = content[2]\n const height = content[3]\n\n return {\n id,\n word: content[4],\n boundingBoxes: [\n {\n x: topLeftX,\n y: topLeftY\n },\n {\n x: topLeftX + width,\n y: topLeftY\n },\n {\n x: topLeftX + width,\n y: topLeftY + height\n },\n {\n x: topLeftX,\n y: topLeftY + height\n }\n ]\n }\n })\n }\n\n getBoundingBoxColor(id) {\n const highlightBlockIndex = this.highlightBlockIdsValue.indexOf(id)\n if (highlightBlockIndex !== -1) {\n if (\n this.highlightBlockScoresValue.length > highlightBlockIndex &&\n this.highlightBlockScoresValue[highlightBlockIndex] === 1\n ) {\n return \"red\"\n }\n\n return \"orange\"\n }\n\n return \"rgba(88, 8, 248, 1)\"\n }\n\n onCanvasMouseMove(event) {\n if (!this.isShowExtractedWordsValue) return\n\n const { offsetX, offsetY } = event\n\n const hitBoundingBox = this.getFormattedBoundingBoxes().find(({ boundingBoxes }) => {\n const isInsideX = boundingBoxes[0].x <= offsetX && offsetX <= boundingBoxes[2].x\n const isInsideY = boundingBoxes[0].y <= offsetY && offsetY <= boundingBoxes[2].y\n\n return isInsideX && isInsideY\n })\n\n if (!hitBoundingBox) {\n if (this.tooltipElement) {\n this.canvasContainerTarget.removeChild(this.tooltipElement)\n this.tooltipElement = undefined\n }\n return\n }\n\n if (this.tooltipElement) {\n if (this.tooltipElement.dataset.boundingBoxId === hitBoundingBox.id) {\n return\n }\n\n this.canvasContainerTarget.removeChild(this.tooltipElement)\n this.tooltipElement = undefined\n }\n\n this.tooltipElement = document.createElement(\"div\")\n this.tooltipElement.dataset.boundingBoxId = hitBoundingBox.id\n this.tooltipElement.textContent = hitBoundingBox.word\n this.tooltipElement.style.display = \"block\"\n this.tooltipElement.style.position = \"absolute\"\n this.tooltipElement.style.maxWidth = \"80%\"\n this.tooltipElement.style.color = \"white\"\n this.tooltipElement.style.backgroundColor = this.getBoundingBoxColor(hitBoundingBox.id)\n this.tooltipElement.style.padding = \"4px 8px\"\n this.tooltipElement.style.borderRadius = \"4px\"\n\n this.canvasContainerTarget.appendChild(this.tooltipElement)\n\n const tooltipWidth = this.tooltipElement.getBoundingClientRect().width\n const tooltipHeight = this.tooltipElement.getBoundingClientRect().height\n\n this.tooltipElement.style.width = `${tooltipWidth}px`\n this.tooltipElement.style.height = `${tooltipHeight}px`\n\n const { top, left } = (() => {\n const boxTop = hitBoundingBox.boundingBoxes[0].y\n const boxLeft = hitBoundingBox.boundingBoxes[0].x\n\n const containerRect = this.canvasContainerTarget.getBoundingClientRect()\n const containerWidth = containerRect.width\n const containerHeight = containerRect.height\n\n const containerScrollTop = this.canvasContainerTarget.scrollTop\n const containerScrollLeft = this.canvasContainerTarget.scrollLeft\n\n const frameWidth = this.imageElement.naturalWidth * this.scaleValue\n const frameLeftMargin = frameWidth < containerWidth ? (containerWidth - frameWidth) / 2 : 0\n\n let top = boxTop * this.scaleValue - 12\n if (top - containerScrollTop < 0) {\n top = containerScrollTop\n } else if (top + tooltipHeight > containerHeight + containerScrollTop) {\n top = containerHeight + containerScrollTop - tooltipHeight\n }\n\n let left = boxLeft * this.scaleValue + 24 + frameLeftMargin\n if (left - containerScrollLeft < 0) {\n left = containerScrollLeft\n } else if (left + tooltipWidth > containerWidth + containerScrollLeft) {\n left = containerWidth + containerScrollLeft - tooltipWidth\n }\n\n return { top, left }\n })()\n\n this.tooltipElement.style.top = `${top}px`\n this.tooltipElement.style.left = `${left}px`\n }\n\n initializeScale() {\n const containerRect = this.canvasContainerTarget.getBoundingClientRect()\n const { naturalWidth } = this.imageElement\n\n this.scaleValue = containerRect.width / naturalWidth\n this.applyScale(this.scaleValue)\n\n const event = new Event(\"scaleInitialized\")\n event.value = {\n scale: this.scaleValue,\n fitMode: \"width\"\n }\n this.element.dispatchEvent(event)\n }\n\n updateScale() {\n this.applyScale(this.scaleValue)\n }\n\n fitToWidth() {\n const containerRect = this.canvasContainerTarget.getBoundingClientRect()\n if (!this.imageElement) return\n\n const { naturalWidth } = this.imageElement\n\n this.applyScale(containerRect.width / naturalWidth)\n }\n\n fitToHeight() {\n const containerRect = this.canvasContainerTarget.getBoundingClientRect()\n if (!this.imageElement) return\n\n const { naturalHeight } = this.imageElement\n\n this.applyScale(containerRect.height / naturalHeight)\n }\n\n applyScale(scale) {\n const { naturalWidth, naturalHeight } = this.imageElement\n if (!this.canvasElement) return\n\n this.canvasElement.style.transform = `scale(${scale})`\n this.textLayerElement.style.transform = `scale(${scale})`\n\n const frameWidth = naturalWidth * scale\n const frameHeight = naturalHeight * scale\n\n this.frameElement.style.width = `${frameWidth}px`\n this.frameElement.style.height = `${frameHeight}px`\n\n const containerWidth = this.canvasContainerTarget.getBoundingClientRect().width\n\n const frameLeftMargin = frameWidth < containerWidth ? (containerWidth - frameWidth) / 2 : 0\n this.frameElement.style.marginLeft = `${frameLeftMargin}px`\n\n if (this.scaleValue !== scale) {\n this.scaleValue = scale\n const event = new Event(\"scaleChanged\")\n event.value = { scale }\n this.element.dispatchEvent(event)\n }\n }\n\n scrollToBoundingBox(id) {\n const boundingBox = this.getFormattedBoundingBoxes().find(({ id: currentId }) => {\n return currentId === id\n })\n\n if (!boundingBox) return\n\n const containerRect = this.canvasContainerTarget.getBoundingClientRect()\n const containerWidth = containerRect.width\n const containerHeight = containerRect.height\n\n const top = (boundingBox.boundingBoxes[2].y * 0.5 + boundingBox.boundingBoxes[0].y * 0.5) * this.scaleValue\n const right = (boundingBox.boundingBoxes[2].x * 0.5 + boundingBox.boundingBoxes[0].x * 0.5) * this.scaleValue\n\n this.canvasContainerTarget.scrollTo({\n top: top - containerHeight / 2,\n left: right - containerWidth / 2,\n behavior: \"smooth\"\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"viewer\"]\n static values = {\n daeUrl: String\n }\n\n initialize() {\n this.viewer = undefined\n }\n\n connect() {\n this.viewer = new OV.EmbeddedViewer(this.viewerTarget)\n this.viewer.LoadModelFromUrlList([this.daeUrlValue])\n\n window.addEventListener(\"resize\", this.onWindowResize.bind(this))\n }\n\n disconnect() {\n if (this.viewer) {\n this.viewer.Destroy()\n }\n\n window.removeEventListener(\"resize\", this.onWindowResize.bind(this))\n }\n\n onWindowResize() {\n if (typeof this.viewer === \"undefined\") return\n\n this.viewer.Resize()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createApp } from \"vue\"\n\nimport ImageApp from \"../document_viewer/apps/image-app/ImageApp.vue\"\n\nexport default class extends Controller {\n static targets = [\"showExtractedWordsCheckbox\", \"documentViewer\"]\n\n connect() {\n this.documentViewerTarget.addEventListener(\"isShowExtractedWordsChanged\", event => {\n this.showExtractedWordsCheckboxTarget.checked = event.value.isShowExtractedWords\n })\n\n const app = createApp(ImageApp, { element: this.documentViewerTarget })\n app.mount(this.documentViewerTarget)\n }\n\n toggleShowExtractedWords(event) {\n this.documentViewerTarget.dataset.isShowExtractedWords = event.target.checked\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"extraction\"]\n static values = { extractionEnabled: Boolean }\n\n // Because right now the input file menu will be update through turbo stream from SSE.\n // But the turbo stream content is rendering in backend that can not get the list_mode or current_user.\n // So we need to disable the extraction button in this controller\n extractionTargetConnected() {\n if (!this.extractionEnabledValue) {\n this.extractionTarget.classList.add(\"hidden\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createApp } from \"vue\"\n\nimport PdfApp from \"../document_viewer/apps/pdf-app/PdfApp.vue\"\n\nexport default class extends Controller {\n static targets = [\"showExtractedWordsCheckbox\", \"documentViewer\"]\n\n connect() {\n this.documentViewerTarget.addEventListener(\"isShowExtractedWordsChanged\", event => {\n this.showExtractedWordsCheckboxTarget.checked = event.value.isShowExtractedWords\n })\n\n const app = createApp(PdfApp, { element: this.documentViewerTarget })\n app.mount(this.documentViewerTarget)\n }\n\n toggleShowExtractedWords(event) {\n this.documentViewerTarget.dataset.isShowExtractedWords = event.target.checked\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"pageSelectWrapper\",\n \"pageSelect\",\n \"pdfViewer\",\n \"mainCanvas\",\n \"toggleOverlayToggler\",\n \"imageSource\",\n \"canvasContainer\",\n \"toggleOverlayhandler\"\n ]\n\n static values = {\n inputFileId: String,\n pdfUrl: String,\n currentPdfPage: Number,\n highlightBlockIds: Array\n }\n\n initialize() {\n pdfjsLib.GlobalWorkerOptions.workerSrc = \"https://cdn.jsdelivr.net/npm/pdfjs-dist@3.9.179/build/pdf.worker.min.js\"\n this.pdfDocument = undefined\n this.pdfEventBus = undefined\n this.pdfPageView = undefined\n this.currentPageNumber = this.currentPdfPageValue || 1\n this.isExtractedTextPresenting = false\n }\n\n connect() {\n ;(async () => {\n this.pdfDocument = await pdfjsLib.getDocument({\n url: this.pdfUrlValue,\n cMapUrl: \"https://cdn.jsdelivr.net/npm/pdfjs-dist@3.9.179/cmaps/\",\n cMapPacked: true,\n enableXfa: true\n }).promise\n\n this.initializePageSelector()\n\n if (this.highlightBlockIdsValue.length > 0) {\n this.isExtractedTextPresenting = true\n this.toggleOverlayhandlerTarget.checked = true\n this.pageSelectWrapperTarget.classList.remove(\"hidden\")\n this.pdfViewerTarget.classList.add(\"hidden\")\n this.mainCanvasTarget.classList.remove(\"hidden\")\n this.pdfViewerTarget.classList.add(\"hidden\")\n }\n if (this.currentPageNumber != 1 && this.pageSelectTargets.length > 0)\n this.pageSelectTarget.value = this.currentPdfPageValue\n })()\n }\n\n initializePageSelector() {\n if (this.pageSelectWrapperTargets.length > 0 && this.pageSelectTargets.length > 0) {\n if (this.pdfDocument.numPages === 1) {\n this.pageSelectTarget.innerHTML = \"1\"\n } else {\n this.pageSelectTarget.innerHTML = Array.from(Array(this.pdfDocument.numPages).keys()).reduce((acc, current) => {\n return (acc = acc + `${current + 1}`)\n }, \"\")\n }\n }\n }\n\n changeCurrentPage(event) {\n const pageNumber = parseInt(event.target.value)\n this.currentPageNumber = pageNumber\n // Change page\n fetch(`/api/input_files/${this.inputFileIdValue}/pdf_image_url?type=hero2&page=${pageNumber}`)\n .then(response => response.json())\n .then(({ url }) => {\n this.imageSourceTarget.src = url\n })\n // Update tooltips\n fetch(`/api/input_files/${this.inputFileIdValue}/positional_text?page_number=${pageNumber}`)\n .then(response => response.json())\n .then(({ positional_text }) => {\n this.canvasContainerTarget.dataset.canvasBoundingBoxesValue = JSON.stringify(positional_text)\n })\n }\n\n changeTextPresenting(event) {\n const isPresenting = event.target.checked\n this.isExtractedTextPresenting = isPresenting\n this.toggleOverlayTogglerTarget.click()\n\n if (isPresenting) {\n this.pageSelectWrapperTarget.classList.remove(\"hidden\")\n this.pdfViewerTarget.classList.add(\"hidden\")\n this.mainCanvasTarget.classList.remove(\"hidden\")\n this.pdfViewerTarget.classList.add(\"hidden\")\n } else {\n this.pageSelectWrapperTarget.classList.add(\"hidden\")\n this.pdfViewerTarget.classList.remove(\"hidden\")\n this.mainCanvasTarget.classList.add(\"hidden\")\n this.pdfViewerTarget.classList.remove(\"hidden\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n initializationStatus: String\n }\n\n connect() {\n const inputFileRow = this.element.closest(\"tr\")\n const inputFileRowDisabled = inputFileRow && inputFileRow.classList.contains(\"bg-light-gray\")\n\n if (!inputFileRowDisabled || this.initializationStatusValue !== \"completed\") {\n return\n }\n\n inputFileRow.classList.remove(\"bg-light-gray\")\n\n inputFileRow.querySelectorAll(\"td\").forEach(td => {\n td.classList.remove(\"bg-light-gray\")\n })\n\n const inputFileCheckbox = inputFileRow.querySelector(\"input[type='checkbox']\")\n\n if (inputFileCheckbox) {\n inputFileCheckbox.classList.remove(\"invisible\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"selectCheckbox\", \"selectAllCheckbox\", \"bulkActions\", \"bulkRetryAction\", \"ticketStatus\"]\n\n static values = {\n filteredStatuses: Array,\n tickets: Array\n }\n\n selectAll(event) {\n const selected = event.target.checked\n\n this.ticketsValue = this.ticketsValue.map(ticket => {\n return Object.assign(ticket, { selected: ticket.status !== \"completed\" && selected })\n })\n }\n\n select(event) {\n this.ticketsValue = this.ticketsValue.map(ticket => {\n if (ticket.id === event.target.dataset.ticketId) {\n return Object.assign(ticket, { selected: event.target.checked })\n } else {\n return ticket\n }\n })\n }\n\n bulkAction(event) {\n const ticketIds = this.selectedTickets.map(ticket => ticket.id)\n\n if (ticketIds.length === 0) {\n event.detail.formSubmission.stop()\n return\n }\n\n ticketIds.forEach(ticketId => {\n event.detail.formSubmission.fetchRequest.body.append(\"ticket_ids[]\", ticketId)\n })\n }\n\n ticketsValueChanged() {\n switch (this.selectedTickets.length) {\n case 0:\n this.selectCheckboxTargets.forEach(checkbox => {\n checkbox.checked = false\n })\n this.bulkActionsTarget.classList.add(\"hidden\")\n break\n default:\n if (this.selectedTickets.length === this.incompleteTickets.length) {\n this.selectAllCheckboxTarget.checked = true\n this.selectCheckboxTargets.forEach(checkbox => {\n if (this.selectedTickets.find(ticket => ticket.id === checkbox.dataset.ticketId)) {\n checkbox.checked = true\n }\n })\n } else {\n this.selectAllCheckboxTarget.checked = false\n }\n\n if (this.allSelectedCompleted) {\n this.bulkActionsTarget.classList.add(\"hidden\")\n } else {\n this.bulkActionsTarget.classList.remove(\"hidden\")\n }\n\n if (this.allSelectedFailed) {\n this.bulkRetryActionTarget.classList.remove(\"hidden\")\n } else {\n this.bulkRetryActionTarget.classList.add(\"hidden\")\n }\n\n break\n }\n }\n\n ticketStatusTargetConnected(element) {\n const selectBox = this.selectCheckboxTargets.find(\n checkbox => checkbox.dataset.ticketId === element.dataset.ticketId\n )\n const status = element.dataset.ticketStatus\n\n if (status === \"completed\") {\n selectBox.checked = false\n selectBox.disabled = true\n } else {\n selectBox.disabled = false\n }\n\n this.ticketsValue = [\n ...this.ticketsValue,\n {\n id: element.dataset.ticketId,\n status: status,\n selected: selectBox.checked\n }\n ]\n\n if (this.filteredStatusesValue.length > 0 && !this.filteredStatusesValue.includes(status)) {\n element.closest(\".js-ticket-item\").remove()\n }\n }\n\n ticketStatusTargetDisconnected(element) {\n this.ticketsValue = this.ticketsValue.filter(ticket => ticket.id !== element.dataset.ticketId)\n }\n\n get selectedTickets() {\n return this.ticketsValue.filter(ticket => ticket.selected)\n }\n\n get allSelectedFailed() {\n return this.selectedTickets.every(ticket => ticket.status === \"failed\")\n }\n\n get allSelectedCompleted() {\n return this.selectedTickets.every(ticket => ticket.status === \"completed\")\n }\n\n get incompleteTickets() {\n return this.ticketsValue.filter(ticket => ticket.status !== \"completed\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { createApp } from \"vue\"\n\nimport ImageApp from \"../document_viewer/apps/image-app/ImageApp.vue\"\nimport PdfApp from \"../document_viewer/apps/pdf-app/PdfApp.vue\"\n\nexport default class extends Controller {\n static targets = [\n \"imageViewerWrapper\",\n \"imageViewer\",\n \"pdfViewerWrapper\",\n \"pdfViewer\",\n \"fileViewerWrapper\",\n \"fileViewer\",\n \"showDetailAnchor\",\n \"showExtractedWordsCheckboxWrapper\",\n \"showExtractedWordsCheckbox\",\n \"attributeTableBody\",\n \"thumbnail\"\n ]\n\n static values = {\n results: Array,\n attributeSlugToInfo: Object,\n currentResultId: String\n }\n\n currentResultIdChanged() {\n this.clearResult()\n this.renderResult(this.currentResultIdValue)\n }\n\n connect() {\n this.imageViewerTarget.addEventListener(\"isShowExtractedWordsChanged\", event => {\n this.showExtractedWordsCheckboxTarget.checked = event.value.isShowExtractedWords\n })\n this.pdfViewerTarget.addEventListener(\"isShowExtractedWordsChanged\", event => {\n this.showExtractedWordsCheckboxTarget.checked = event.value.isShowExtractedWords\n })\n\n if (!this.currentResultIdValue) return\n\n this.clearResult()\n this.renderResult(this.currentResultIdValue)\n }\n\n clearResult() {\n this.imageViewerWrapperTarget.classList.add(\"hidden\")\n delete this.imageViewerTarget.dataset.imageUrl\n delete this.imageViewerTarget.dataset.positionalText\n delete this.imageViewerTarget.dataset.highlightBlockIds\n delete this.imageViewerTarget.dataset.highlightBlockScores\n\n this.pdfViewerWrapperTarget.classList.add(\"hidden\")\n delete this.pdfViewerTarget.dataset.inputFileId\n delete this.pdfViewerTarget.dataset.pdfUrl\n delete this.pdfViewerTarget.dataset.currentPage\n delete this.pdfViewerTarget.dataset.highlightBlockIds\n delete this.pdfViewerTarget.dataset.highlightBlockScores\n\n this.fileViewerWrapperTarget.classList.add(\"hidden\")\n this.fileViewerTarget.innerHTML = \"\"\n\n this.showDetailAnchorTarget.href = \"\"\n\n this.showExtractedWordsCheckboxWrapperTarget.classList.add(\"hidden\")\n\n this.attributeTableBodyTarget.innerHTML = \"\"\n }\n\n renderResult(resultId) {\n this.renderResultViewer(resultId)\n this.renderResultAttributes(resultId)\n\n const thumbnailsElement = this.thumbnailTargets.find(t => {\n return t.dataset.resultId === resultId\n })\n const dataset = thumbnailsElement.dataset\n this.showDetailAnchorTarget.href = dataset.resultDetailPageUrl\n }\n\n renderResultViewer(resultId) {\n const thumbnailsElement = this.thumbnailTargets.find(t => {\n return t.dataset.resultId === resultId\n })\n const dataset = thumbnailsElement.dataset\n const result = this.resultsValue.find(r => {\n return r.id === resultId\n })\n\n if (!thumbnailsElement || !result) return\n if (!result.file_data[\"file-extension\"]) return\n\n switch (result.file_data[\"file-extension\"].toLowerCase()) {\n case \"jpg\":\n case \"jpeg\":\n case \"png\":\n case \"tif\":\n case \"tiff\":\n {\n if (!dataset.resultFileUrl) return\n\n this.imageViewerTarget.dataset.inputFileId = dataset.resultId\n this.imageViewerTarget.dataset.imageUrl = dataset.resultFileUrl\n\n if (\n result.extracted_values &&\n result.extracted_values.extracted_content &&\n result.extracted_values.extracted_content.positional_text\n ) {\n this.imageViewerTarget.dataset.positionalText = JSON.stringify(\n result.extracted_values.extracted_content.positional_text\n )\n }\n\n if (dataset.highlightBlockIds && dataset.highlightBlockScores) {\n this.imageViewerTarget.dataset.highlightBlockIds = dataset.highlightBlockIds\n this.imageViewerTarget.dataset.highlightBlockScores = dataset.highlightBlockScores\n this.imageViewerTarget.dataset.isOnlyShowHighlightBlocks = \"true\"\n }\n\n const app = createApp(ImageApp, { element: this.imageViewerTarget })\n app.mount(this.imageViewerTarget)\n\n this.imageViewerWrapperTarget.classList.remove(\"hidden\")\n this.showExtractedWordsCheckboxWrapperTarget.classList.remove(\"hidden\")\n }\n break\n case \"pdf\":\n {\n if (!dataset.resultId || !dataset.resultFileUrl) return\n\n this.pdfViewerTarget.dataset.inputFileId = dataset.resultId\n this.pdfViewerTarget.dataset.pdfUrl = dataset.resultFileUrl\n\n if (dataset.currentPage) {\n this.pdfViewerTarget.dataset.currentPage = dataset.currentPage\n } else {\n this.pdfViewerTarget.dataset.currentPage = \"1\"\n }\n\n if (dataset.highlightBlockIds && dataset.highlightBlockScores) {\n this.pdfViewerTarget.dataset.highlightBlockIds = dataset.highlightBlockIds\n this.pdfViewerTarget.dataset.highlightBlockScores = dataset.highlightBlockScores\n this.pdfViewerTarget.dataset.isOnlyShowHighlightBlocks = \"true\"\n }\n\n const app = createApp(PdfApp, { element: this.pdfViewerTarget })\n app.mount(this.pdfViewerTarget)\n\n this.pdfViewerWrapperTarget.classList.remove(\"hidden\")\n this.showExtractedWordsCheckboxWrapperTarget.classList.remove(\"hidden\")\n }\n break\n default:\n {\n this.fileViewerTarget.innerHTML = result.file_data[\"file-extension\"]\n this.fileViewerWrapperTarget.classList.remove(\"hidden\")\n }\n break\n }\n }\n\n renderResultAttributes(resultId) {\n const result = this.resultsValue.find(r => {\n return r.id === resultId\n })\n\n const fragment = document.createDocumentFragment()\n Object.keys(this.attributeSlugToInfoValue).forEach(attributeSlug => {\n const rowElement = document.createElement(\"div\")\n rowElement.classList.add(\"div-table-row\", \"text-center\", \"bg-white\", \"border-b\", \"border-slate-50\")\n fragment.appendChild(rowElement)\n\n const nameElement = document.createElement(\"div\")\n nameElement.innerText = this.attributeSlugToInfoValue[attributeSlug].name\n rowElement.appendChild(nameElement)\n\n const valueElement = document.createElement(\"div\")\n valueElement.innerText = result.file_data[attributeSlug] || \"\"\n valueElement.classList.add(\"w-20\", \"break-all\")\n rowElement.appendChild(valueElement)\n })\n\n this.attributeTableBodyTarget.appendChild(fragment)\n }\n\n toggleShowExtractedWords(event) {\n this.imageViewerTarget.dataset.isShowExtractedWords = event.currentTarget.checked\n this.pdfViewerTarget.dataset.isShowExtractedWords = event.currentTarget.checked\n }\n\n onThumbnailClick(event) {\n this.currentResultIdValue = event.currentTarget.dataset.resultId\n\n this.clearResult()\n this.renderResult(this.currentResultIdValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst selectedItemTarget = \"selectedItem\"\n\nexport default class extends Controller {\n static classes = [\"active\", \"hidden\"]\n static outlets = [\"multifiles-manager\", \"multiprojects-manager\"]\n static targets = [\"label\", \"button\", \"clear\", \"counter\", \"formInputs\", \"filled\", selectedItemTarget]\n static values = {\n active: Boolean,\n activeLabel: String,\n emptyLabel: String,\n inputPrefix: String,\n extensions: Array\n }\n\n get selectedItemIds() {\n return new Set(this.selectedItemTargets.map(input => input.value))\n }\n\n get hasFilesSelected() {\n return this.filledTarget.value === \"true\"\n }\n\n multifilesManagerOutletConnected() {\n if (this.activeValue) {\n this.#configureMultiFilesManager()\n }\n }\n\n multiprojectsManagerOutletConnected() {\n if (this.activeValue) {\n this.#configureMultiProjectsManager()\n }\n }\n\n clear() {\n this.clearTarget.classList.add(...this.hiddenClasses)\n this.counterTarget.textContent = \"0\"\n this.formInputsTarget.innerHTML = \"\"\n this.filledTarget.value = \"\"\n this.filledTarget.dispatchEvent(new Event(\"input\", { bubbles: true }))\n this.deactivate()\n }\n\n disconnect() {\n this.#resetOutlets()\n }\n\n toggle() {\n if (!this.activeValue) {\n this.#activate()\n } else {\n this.deactivate()\n }\n }\n\n deactivate() {\n this.activeValue = false\n this.buttonTarget.classList.remove(...this.activeClasses)\n if (!this.hasFilesSelected) {\n this.counterTarget.classList.add(...this.hiddenClasses)\n this.labelTarget.textContent = this.emptyLabelValue\n }\n if (this.hasMultifilesManagerOutlet) {\n this.multifilesManagerOutlet.reset()\n }\n if (this.hasMultiprojectsManagerOutlet) {\n this.multiprojectsManagerOutlet.reset()\n }\n this.dispatch(\"deactivated\")\n }\n\n selectItem({ detail: { checkbox } }) {\n if (!this.activeValue) return\n\n const existingInput = this.selectedItemTargets.find(\n input => input.value === checkbox.dataset.multifilesManagerFileIdParam\n )\n if (checkbox.checked && !existingInput) {\n this.formInputsTarget.appendChild(this.#itemInputElement(checkbox.dataset.multifilesManagerFileIdParam))\n this.counterTarget.textContent = parseInt(this.counterTarget.textContent) + 1\n this.filledTarget.value = \"true\"\n this.clearTarget.classList.remove(...this.hiddenClasses)\n } else if (!checkbox.checked && existingInput) {\n this.formInputsTarget.removeChild(existingInput)\n this.counterTarget.textContent = parseInt(this.counterTarget.textContent) - 1\n if (this.counterTarget.textContent === \"0\") {\n this.filledTarget.value = \"\"\n this.clearTarget.classList.add(this.hiddenClasses)\n }\n }\n this.filledTarget.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n\n #activate() {\n this.activeValue = true\n this.#deactivateOtherSelectors()\n this.buttonTarget.classList.add(...this.activeClasses)\n this.counterTarget.classList.remove(this.hiddenClasses)\n this.labelTarget.textContent = this.activeLabelValue\n this.#configureMultiFilesManager()\n this.#configureMultiProjectsManager()\n this.dispatch(\"activated\")\n }\n\n #deactivateOtherSelectors() {\n const currentController = this\n const allControllers = this.application.controllers.filter(\n controller => controller.identifier === currentController.identifier\n )\n allControllers.some(controller => {\n if (controller.activeValue && controller !== currentController) {\n controller.deactivate()\n return true\n }\n return false\n })\n }\n\n #configureMultiFilesManager() {\n if (!this.hasMultifilesManagerOutlet) return\n\n this.multifilesManagerOutlet.unselectAll()\n this.multifilesManagerOutlet.disableSelectAll()\n this.multifilesManagerOutlet.disableButtons()\n this.multifilesManagerOutlet.disableSelectActions()\n this.#setupItemCheckboxes()\n this.tableObserver = new MutationObserver(this.#handleFilesChanged.bind(this))\n this.tableObserver.observe(this.multifilesManagerOutlet.tableFrameTarget, {\n attributes: true,\n attributeFilter: [\"complete\"]\n })\n }\n\n #configureMultiProjectsManager() {\n if (!this.hasMultiprojectsManagerOutlet) return\n\n this.multiprojectsManagerOutlet.unselectAll()\n this.multiprojectsManagerOutlet.disableSelectAll()\n this.multiprojectsManagerOutlet.disableCheckboxes()\n }\n\n #itemInputElement(value) {\n const input = document.createElement(\"input\")\n input.type = \"hidden\"\n input.name = `${this.inputPrefixValue}[]`\n input.value = value\n input.dataset.inputSelectorTarget = selectedItemTarget\n return input\n }\n\n #handleFilesChanged(mutations) {\n mutations.forEach(mutation => {\n if (this.activeValue) {\n this.#setupItemCheckboxes()\n }\n })\n }\n\n #setupItemCheckboxes() {\n this.multifilesManagerOutlet.disableMany(\n item => !this.extensionsValue.includes(item.dataset.multifilesManagerFileExtParam)\n )\n const itemIds = this.selectedItemIds\n this.multifilesManagerOutlet.selectMany(item => itemIds.has(item.dataset.multifilesManagerFileIdParam))\n }\n\n #resetOutlets() {\n if (this.tableObserver) {\n this.tableObserver.disconnect()\n }\n if (this.hasMultifilesManagerOutlet) {\n this.multifilesManagerOutlet.reset()\n }\n if (this.hasMultiprojectsManagerOutlet) {\n this.multiprojectsManagerOutlet.reset()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\n// Connects to data-controller=\"items-selector\"\nexport default class extends Controller {\n static values = {\n action: { String, default: \"replace\" },\n frame: { String, default: \"_top\" }\n }\n\n connect() {\n this.actionValue ||= this.constructor.values.action.default\n this.frameValue ||= this.constructor.values.frame.default\n }\n\n changeItemsPerPage(e) {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n searchParams.set(\"items\", e.target.value)\n\n url.search = searchParams.toString()\n Turbo.visit(url.toString(), { action: this.actionValue, frame: this.frameValue })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"figureRendering\",\n \"attributeRendering\",\n \"resultAttributes\",\n \"resultIndex\",\n \"showPageLinkRendering\",\n \"thumbnail\"\n ]\n\n static values = {\n results: Array,\n attributeSlugToInfo: Object,\n offset: Number\n }\n\n showResult(e) {\n this.removeExistingResult()\n this.renderResult(e.params)\n this.updateThumbnailStyle(e.target)\n }\n\n updateThumbnailStyle(target) {\n this.thumbnailTargets.forEach(thumbnailTarget => {\n thumbnailTarget.classList.remove(\n \"border-2\",\n \"text-white\",\n \"bg-violet-500\",\n \"border-violet-500\",\n \"hover:bg-violet-600\"\n )\n thumbnailTarget.classList.add(\"opacity-50\", \"border-gray-100\")\n })\n if (target.tagName === \"FIGURE\") {\n target.classList.add(\"border-2\", \"border-gray-300\", \"box-border\", \"border-violet-500\")\n target.classList.remove(\"opacity-50\")\n } else {\n target.classList.add(\n \"border-2\",\n \"text-white\",\n \"bg-violet-500\",\n \"border-violet-500\",\n \"hover:bg-violet-600\",\n \"box-border\"\n )\n target.classList.remove(\"opacity-50\")\n }\n }\n\n removeExistingResult() {\n if (this.figureRenderingTarget.getElementsByTagName(\"img\").length > 0)\n [...this.figureRenderingTarget.getElementsByTagName(\"img\")].forEach(imgTag => imgTag.remove())\n if (this.figureRenderingTarget.getElementsByTagName(\"div\").length > 0)\n [...this.figureRenderingTarget.getElementsByTagName(\"div\")].forEach(divTag => divTag.remove())\n if (this.figureRenderingTarget.getElementsByTagName(\"iframe\").length > 0)\n [...this.figureRenderingTarget.getElementsByTagName(\"iframe\")].forEach(iframeTag => iframeTag.remove())\n if (this.attributeRenderingTargets.length > 0)\n this.attributeRenderingTargets.forEach(attributeRenderingTarget => attributeRenderingTarget.remove())\n }\n\n updateShowPageLink(url) {\n this.showPageLinkRenderingTarget.href = url\n }\n\n renderResult(params) {\n const result = this.resultsValue.find(result => result.id === params.resultId)\n this.appendImage(params)\n this.updateShowPageLink(params.showPageUrl)\n this.appendAttributes(result)\n this.updateResultIndex(\n this.resultsValue.findIndex(resultValue => resultValue.id === result.id) + 1 + this.offsetValue\n )\n }\n\n appendImage(params) {\n var img = document.createElement(\"img\")\n img.src = params.imageUrl\n img.classList.add(\"max-h-[40rem]\", \"m-auto\")\n this.figureRenderingTarget.appendChild(img)\n }\n\n updateResultIndex(index) {\n this.resultIndexTarget.innerText = index\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"thumbUp\", \"thumbDown\"]\n static values = {\n updateCommentPath: String\n }\n\n like(e) {\n let formData = new FormData()\n formData.set(\"beneficial\", \"good\")\n\n fetch(this.updateCommentPathValue, {\n method: \"PUT\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\"\n },\n body: formData\n }).then(() => {\n e.target.classList.remove(\"bi-hand-thumbs-up\")\n e.target.classList.add(\"bi-hand-thumbs-up-fill\")\n this.thumbDownTarget.classList.remove(\"bi-hand-thumbs-down-fill\")\n this.thumbDownTarget.classList.add(\"bi-hand-thumbs-down\")\n })\n }\n\n dislike(e) {\n let formData = new FormData()\n formData.set(\"beneficial\", \"bad\")\n\n fetch(this.updateCommentPathValue, {\n method: \"PUT\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\"\n },\n body: formData\n }).then(() => {\n e.target.classList.remove(\"bi-hand-thumbs-down\")\n e.target.classList.add(\"bi-hand-thumbs-down-fill\")\n this.thumbUpTarget.classList.remove(\"bi-hand-thumbs-up-fill\")\n this.thumbUpTarget.classList.add(\"bi-hand-thumbs-up\")\n })\n }\n\n createMessageFormData(data) {\n let formData = new FormData()\n formData.set(\"beneficial\", data)\n\n return formData\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static classes = [\"checkboxEnabled\"]\n\n static targets = [\n \"fileCheckbox\",\n \"selectAllCheckbox\",\n \"buttonsContainer\",\n \"projectIdSelector\",\n \"folderIdSelector\",\n \"uploadFileButton\",\n \"createFolderButton\",\n \"downloadButton\",\n \"table\",\n \"tableFrame\"\n ]\n\n static outlets = [\"scope\"]\n\n static values = {\n deleteWarnMessage: String,\n dataSpaceSlug: String,\n selectedFiles: Array\n }\n\n tableTargetConnected() {\n let allSelected = true\n this.fileCheckboxTargets.forEach(fileCheckbox => {\n fileCheckbox.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n\n const id = fileCheckbox.dataset.multifilesManagerFileIdParam\n const isElementSelected = this.selectedFilesValue.find(file => file.id === id)\n if (isElementSelected) {\n this.#checkFileCheckbox(fileCheckbox)\n } else {\n allSelected = false\n }\n })\n this.selectAllCheckboxTarget.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n if (this.fileCheckboxTargets.length > 0 && allSelected) {\n this.selectAllCheckboxTarget.classList.remove(\"opacity-0\")\n this.selectAllCheckboxTarget.checked = true\n }\n }\n\n connect() {\n this.selectActionsEnabled = true\n this.selectedFolderIds = []\n document.addEventListener(\"stimulus:multifilesManager\", this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:multifilesManager\", this.onEvent)\n }\n\n reset() {\n this.selectActionsEnabled = true\n this.unselectAll()\n this.fileCheckboxTargets.forEach(fileCheckbox => this.#enableFileCheckbox(fileCheckbox))\n this.selectAllCheckboxTarget.disabled = false\n this.selectAllCheckboxTarget.checked = false\n this.selectAllCheckboxTarget.classList.add(...this.checkboxEnabledClasses)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n selectAll(e) {\n if (e.target.checked) {\n // Show select all button\n e.target.classList.remove(\"opacity-0\")\n // Show buttons\n this.buttonsContainerTarget.classList.remove(\"hidden\")\n // Disable upload file button\n this.disableUploadFileButton()\n // Disable create folder button\n this.disableCreateFolderButton()\n // Disable download button\n this.disableDownloadButton()\n // Show all file checkboxes\n this.fileCheckboxTargets.forEach(fileCheckbox => {\n fileCheckbox.checked = true\n fileCheckbox.classList.remove(\"opacity-0\")\n\n // Add selected file id to selectedFiles\n const id = fileCheckbox.dataset.multifilesManagerFileIdParam\n const name = fileCheckbox.dataset.multifilesManagerFileNameParam\n const type = fileCheckbox.dataset.multifilesManagerIsFolderParam === \"true\" ? \"folder\" : \"file\"\n const isElementSelected = this.selectedFilesValue.find(file => file.id === id)\n\n if (!isElementSelected) {\n this.selectedFilesValue = [...this.selectedFilesValue, { id: id, name: name, type: type }]\n }\n })\n\n // Add selected folder id to selectedFolderIds\n if (this.fileCheckboxTargets.some(s => s.dataset.multifilesManagerIsFolderParam === \"true\")) {\n this.fileCheckboxTargets\n .filter(checkbox => checkbox.dataset.multifilesManagerIsFolderParam === \"true\")\n .forEach(folder => {\n this.selectedFolderIds.push(folder.dataset.multifilesManagerFileIdParam)\n this.selectedFolderIds = this.selectedFolderIds.concat(\n JSON.parse(folder.dataset.multifilesManagerDescendantFolderIdsParam)\n )\n })\n }\n } else {\n this.unselectAll()\n }\n this.updateFolderOptionsOnBulkMove()\n }\n\n unselectAll() {\n this.buttonsContainerTarget.classList.add(\"hidden\")\n this.#enableButtons()\n this.selectAllCheckboxTarget.classList.add(\"opacity-0\")\n this.fileCheckboxTargets.forEach(fileCheckbox => {\n fileCheckbox.checked = false\n fileCheckbox.classList.add(\"opacity-0\")\n })\n this.selectedFilesValue = []\n this.selectedFolderIds = []\n }\n\n disableSelectAll() {\n this.selectAllCheckboxTarget.checked = false\n this.selectAllCheckboxTarget.disabled = true\n this.selectAllCheckboxTarget.classList.remove(...this.checkboxEnabledClasses)\n }\n\n selectMany(callback) {\n this.fileCheckboxTargets.forEach(fileCheckbox => {\n if (callback(fileCheckbox)) {\n fileCheckbox.checked = true\n fileCheckbox.classList.remove(\"opacity-0\")\n fileCheckbox.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n })\n }\n\n disableMany(callback) {\n this.fileCheckboxTargets.forEach(fileCheckbox => {\n if (callback(fileCheckbox)) {\n this.#disableFileCheckbox(fileCheckbox)\n } else {\n fileCheckbox.classList.remove(\"opacity-0\")\n }\n })\n }\n\n #checkFileCheckbox(fileCheckbox) {\n fileCheckbox.checked = true\n fileCheckbox.classList.remove(\"opacity-0\")\n }\n\n #enableFileCheckbox(fileCheckbox) {\n fileCheckbox.disabled = false\n fileCheckbox.checked = false\n fileCheckbox.classList.add(...this.checkboxEnabledClasses)\n }\n\n #disableFileCheckbox(fileCheckbox) {\n fileCheckbox.disabled = true\n fileCheckbox.checked = false\n fileCheckbox.classList.remove(...this.checkboxEnabledClasses)\n }\n\n select(e) {\n this.dispatch(\"select\", { detail: { checkbox: e.target } })\n\n if (e.target.checked) {\n this.selectedFilesValue = [\n ...this.selectedFilesValue,\n {\n id: e.params.fileId,\n name: e.params.fileName,\n type: e.params.isFolder ? \"folder\" : \"file\"\n }\n ]\n e.target.classList.remove(\"opacity-0\")\n if (e.params.isFolder) {\n this.selectedFolderIds.push(e.params.fileId)\n this.selectedFolderIds = this.selectedFolderIds.concat(e.params.descendantFolderIds)\n }\n } else {\n this.selectedFilesValue = this.selectedFilesValue.filter(file => file.id !== e.params.fileId)\n e.target.classList.add(\"opacity-0\")\n if (e.params.isFolder) {\n const fileIdIndex = this.selectedFolderIds.indexOf(e.params.fileId)\n this.selectedFolderIds.splice(fileIdIndex, 1)\n e.params.descendantFolderIds.forEach(descendantFolderId => {\n const descendantFolderIdIndex = this.selectedFolderIds.indexOf(descendantFolderId)\n this.selectedFolderIds.splice(descendantFolderIdIndex, 1)\n })\n }\n }\n if (this.selectActionsEnabled) {\n this.updateSelectAllCheckbox()\n this.updateButtonContainer()\n this.updateFolderOptionsOnBulkMove()\n }\n }\n\n disableSelectActions() {\n this.selectActionsEnabled = false\n }\n\n updateSelectAllCheckbox() {\n this.selectAllCheckboxTarget.checked = false\n\n if (this.selectedFilesValue.length > 0) {\n this.selectAllCheckboxTarget.indeterminate = true\n this.selectAllCheckboxTarget.classList.remove(\"opacity-0\")\n } else {\n this.selectAllCheckboxTarget.indeterminate = false\n this.selectAllCheckboxTarget.classList.add(\"opacity-0\")\n }\n }\n\n updateButtonContainer() {\n if (this.selectedFilesValue.length > 0) {\n this.buttonsContainerTarget.classList.remove(\"hidden\")\n this.disableButtons()\n } else {\n this.buttonsContainerTarget.classList.add(\"hidden\")\n this.#enableButtons()\n }\n }\n\n #enableButtons() {\n this.enableUploadFileButton()\n this.enableCreateFolderButton()\n this.enableDownloadButton()\n }\n\n disableButtons() {\n this.disableUploadFileButton()\n this.disableCreateFolderButton()\n this.disableDownloadButton()\n }\n\n updateFolderOptionsOnBulkMove() {\n // 1. check if any folder in the current folder is selected\n // 2. if yes, disable the folder in the options\n // 3. if no, enable the folder in the options\n this.folderIdSelectorTarget.options.forEach(s => {\n if (this.selectedFolderIds.includes(s.value)) {\n s.disabled = \"disabled\"\n } else {\n s.disabled = \"\"\n }\n })\n }\n\n bulkDelete(event) {\n const inputFileIds = this.selectedFilesValue.map(file => file.id)\n\n if (inputFileIds.length === 0) {\n event.detail.formSubmission.stop()\n return\n }\n\n inputFileIds.forEach(inputFileId => {\n event.detail.formSubmission.fetchRequest.body.append(\"input_file_ids[]\", inputFileId)\n })\n }\n\n bulkMove() {\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"input_file[record_id]\", this.projectIdSelectorTarget.value)\n formData.set(\"input_file[parent_id]\", this.folderIdSelectorTarget.value)\n formData.set(\"input_file_ids\", JSON.stringify(this.selectedFilesValue.map(file => file.id)))\n formData.set(\"authenticity_token\", csrfToken)\n ;(async () => {\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n\n fetch(`/organizations/${organizationIdValue}/data_spaces/${dataSpaceSlugValue}/input_files/bulk_move`, {\n method: \"PATCH\",\n body: formData\n })\n .then(response => response.json())\n .then(({ return_url }) => {\n window.location = return_url\n })\n })()\n }\n\n bulkDownload() {\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n this.#downloadFile(\n \"Files.zip\",\n `/organizations/${organizationIdValue}/data_spaces/${dataSpaceSlugValue}/input_files/bulk_download?input_file_ids=${JSON.stringify(\n this.selectedFilesValue.map(file => file.id)\n )}`\n )\n }\n\n bulkExport() {\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n this.#downloadFile(\n \"FileAttributes.zip\",\n `/exports/organizations/${organizationIdValue}/data_spaces/${dataSpaceSlugValue}/input_files/selected?ids=${JSON.stringify(\n this.selectedFilesValue.map(file => file.id)\n )}`\n )\n }\n\n disableActionButtons() {\n this.disableUploadFileButton()\n this.disableCreateFolderButton()\n this.disableDownloadButton()\n }\n\n disableUploadFileButton() {\n if (this.uploadFileButtonTargets.length === 0) return\n this.#disableButton(this.uploadFileButtonTarget, true)\n }\n\n enableUploadFileButton() {\n if (this.uploadFileButtonTargets.length === 0) return\n this.#enableButton(this.uploadFileButtonTarget, true)\n }\n\n disableCreateFolderButton() {\n if (this.createFolderButtonTargets.length === 0) return\n this.#disableButton(this.createFolderButtonTarget)\n }\n\n enableCreateFolderButton() {\n if (this.createFolderButtonTargets.length === 0) return\n this.#enableButton(this.createFolderButtonTarget)\n }\n\n disableDownloadButton() {\n if (this.downloadButtonTargets.length === 0) return\n this.#disableButton(this.downloadButtonTarget)\n }\n\n enableDownloadButton() {\n if (this.downloadButtonTargets.length === 0) return\n this.#enableButton(this.downloadButtonTarget)\n }\n\n #enableButton(button, isPrimary = false) {\n button.disabled = false\n button.classList.remove(\"opacity-50\", \"cursor-not-allowed\", \"bg-gray-500\")\n\n if (isPrimary) {\n button.classList.add(\"bg-violet-500\")\n } else {\n button.classList.remove(\"text-white\")\n }\n }\n\n #disableButton(button, isPrimary = false) {\n button.disabled = true\n button.classList.add(\"opacity-50\", \"cursor-not-allowed\", \"bg-gray-500\")\n\n if (isPrimary) {\n button.classList.remove(\"bg-violet-500\")\n } else {\n button.classList.add(\"text-white\")\n }\n }\n\n #downloadFile(fileName, download_url) {\n fetch(download_url)\n .then(response => response.blob())\n .then(blob => {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement(\"a\")\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n })\n .catch(error => console.error(\"Error downloading file:\", error))\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"projectCheckbox\", \"selectAllCheckbox\", \"buttonsContainer\"]\n\n static values = {\n organizationSlug: String,\n dataSpaceSlug: String,\n selectedProjects: Array\n }\n\n connect() {\n // Show all checkboxes\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n })\n if (this.hasSelectAllCheckboxTarget) {\n this.selectAllCheckboxTarget.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n }\n\n document.addEventListener(\"stimulus:multiprojectsManager\", this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:multiprojectsManager\", this.onEvent)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n selectAll(e) {\n if (e.target.checked) {\n // Show select all button\n e.target.classList.remove(\"opacity-0\")\n // Show buttons\n this.buttonsContainerTarget.classList.remove(\"hidden\")\n // Show all projects checkboxes\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.checked = true\n projectCheckbox.classList.remove(\"opacity-0\")\n\n // Add selected project id to selectedProjects if not already there\n const projectId = projectCheckbox.dataset.multiprojectsManagerProjectIdParam\n const projectName = projectCheckbox.dataset.multiprojectsManagerProjectNameParam\n const isElementSelected = this.selectedProjectsValue.find(project => project.id === projectId)\n if (!isElementSelected) {\n this.selectedProjectsValue = [\n ...this.selectedProjectsValue,\n { id: projectId, name: projectName, type: \"project\" }\n ]\n }\n })\n } else {\n // Hide select all button\n e.target.classList.add(\"opacity-0\")\n // Hide buttons\n this.buttonsContainerTarget.classList.add(\"hidden\")\n // Hide all project checkboxes\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.checked = false\n projectCheckbox.classList.add(\"opacity-0\")\n })\n // Clear selectedProjects\n this.selectedProjectsValue = []\n }\n }\n\n select(e) {\n if (e.target.checked) {\n this.selectedProjectsValue = [\n ...this.selectedProjectsValue,\n {\n id: e.params.projectId,\n name: e.params.projectName,\n type: \"project\"\n }\n ]\n e.target.classList.remove(\"opacity-0\")\n } else {\n this.selectedProjectsValue = this.selectedProjectsValue.filter(project => project.id !== e.params.projectId)\n e.target.classList.add(\"opacity-0\")\n }\n this.updateSelectAllCheckbox()\n this.updateButtonContainer()\n }\n\n unselectAll() {\n this.buttonsContainerTarget.classList.add(\"hidden\")\n this.selectAllCheckboxTarget.classList.add(\"opacity-0\")\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.checked = false\n projectCheckbox.classList.add(\"opacity-0\")\n })\n this.selectedProjectsValue = []\n }\n\n reset() {\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.disabled = false\n projectCheckbox.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n })\n if (this.hasSelectAllCheckboxTarget) {\n this.selectAllCheckboxTarget.disabled = false\n this.selectAllCheckboxTarget.classList.add(\"group-hover:opacity-100\", \"cursor-pointer\")\n }\n this.selectedProjectsValue = []\n }\n\n disableSelectAll() {\n this.selectAllCheckboxTarget.checked = false\n this.selectAllCheckboxTarget.disabled = true\n this.selectAllCheckboxTarget.classList.remove(\"group-hover:opacity-100\", \"cursor-pointer\")\n }\n\n disableCheckboxes() {\n this.projectCheckboxTargets.forEach(projectCheckbox => {\n projectCheckbox.disabled = true\n projectCheckbox.classList.remove(\"group-hover:opacity-100\", \"cursor-pointer\")\n })\n }\n\n updateSelectAllCheckbox() {\n this.selectAllCheckboxTarget.checked = false\n\n if (this.selectedProjectsValue.length > 0) {\n this.selectAllCheckboxTarget.indeterminate = true\n this.selectAllCheckboxTarget.classList.remove(\"opacity-0\")\n } else {\n this.selectAllCheckboxTarget.indeterminate = false\n this.selectAllCheckboxTarget.classList.add(\"opacity-0\")\n }\n }\n\n updateButtonContainer() {\n // Update button container\n if (this.selectedProjectsValue.length > 0) {\n this.buttonsContainerTarget.classList.remove(\"hidden\")\n } else {\n this.buttonsContainerTarget.classList.add(\"hidden\")\n }\n }\n\n bulkExtractAttributes(event) {\n // we prepare our data\n let selectedProjectsValues = this.selectedProjectsValue\n let fileAttributeIds = JSON.stringify(event.file_attribute_ids)\n\n if (event.is_all_extraction) {\n selectedProjectsValues = this.projectCheckboxTargets.map(projectCheckbox => {\n return {\n id: projectCheckbox.dataset.multifilesManagerFileIdParam,\n name: projectCheckbox.dataset.multifilesManagerFileNameParam\n }\n })\n }\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n\n formData.set(\"authenticity_token\", csrfToken)\n ;(async () => {\n selectedProjectsValues.forEach(file => {\n // TODO: Fix this url\n // let url = `/organizations/${this.organizationSlugValue}/data_spaces/${this.dataSpaceSlugValue}/`\n // url += `entity_attributes?entity_attribute_ids=${fileAttributeIds}`\n //\n // fetch(url, { method: 'POST', body: formData })\n })\n })()\n window.location.reload()\n }\n}\n","const activeSelector = \"[aria-selected='true']\"\r\n\r\nimport { Controller } from \"@hotwired/stimulus\"\r\n\r\nexport default class Multiselect extends Controller {\r\n static targets = [\"hidden\", \"list\", \"search\", \"preview\", \"dropdown\", \"item\", \"addable\", \"inputContainer\"]\r\n\r\n static values = {\r\n items: Array,\r\n selected: Array,\r\n searchUrl: String,\r\n searchRemote: { type: Boolean, default: false },\r\n preloadUrl: String,\r\n addableUrl: String,\r\n disabled: { type: Boolean, default: false }\r\n }\r\n\r\n connect() {\r\n this.hiddenTarget.insertAdjacentHTML(\"afterend\", this.template)\r\n if (this.selectedValue.length) this.selectedValueChanged()\r\n this.search = debounce(this.search.bind(this), 300)\r\n this.enhanceHiddenSelect()\r\n if (this.preloadUrlValue) this.preload()\r\n }\r\n\r\n // Allows selecting the hidden select field from html and extracting selected id values:\r\n // document.getElementById(\"selectId\").values - [2, 4, 23]\r\n enhanceHiddenSelect() {\r\n Object.defineProperty(this.hiddenTarget, \"values\", {\r\n get: () => {\r\n if (this.selectedValue.length <= 0) return []\r\n\r\n return this.selectedValue.map(item => item.value)\r\n }\r\n })\r\n }\r\n\r\n search() {\r\n if (this.searchRemoteValue) return this.searchRemote()\r\n\r\n this.searchLocal()\r\n }\r\n\r\n async searchRemote() {\r\n if (this.searchTarget.value === \"\") return\r\n\r\n const response = await fetch(this.searchUrlValue + \"?\" + new URLSearchParams({\r\n q: this.searchTarget.value,\r\n preselects: this.selectedValue.map(x => x.value).join(\",\")\r\n }))\r\n\r\n const searchedItems = await response.json()\r\n\r\n this.itemsValue = searchedItems\r\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\r\n }\r\n\r\n searchLocal() {\r\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\r\n if (this.searchTarget.value === \"\") {\r\n let theRestOfTheItems = this.itemsValue.filter(x => !this.selectedValue.map(y => y.value).includes(x.value))\r\n this.listTarget.innerHTML = this.selectedItems\r\n this.listTarget.insertAdjacentHTML(\"beforeend\", this.items(theRestOfTheItems))\r\n }\r\n\r\n let searched = this.itemsValue.filter(item => {\r\n return item.text.toLowerCase().includes(this.searchTarget.value.toLowerCase())\r\n })\r\n\r\n let selectedSearched = this.selectedValue.filter(item => {\r\n return item.text.toLowerCase().includes(this.searchTarget.value.toLowerCase())\r\n })\r\n\r\n searched = searched.filter(x => !selectedSearched.map(y => y.value).includes(x.value))\r\n\r\n if (searched.length === 0 && this.addableUrlValue) {\r\n return this.listTarget.innerHTML = this.noResultsTemplate\r\n }\r\n\r\n if (searched.length === 0) this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\r\n this.listTarget.innerHTML = this.items(selectedSearched, true)\r\n this.listTarget.insertAdjacentHTML(\"beforeend\", this.items(searched))\r\n }\r\n\r\n async preload() {\r\n const response = await fetch(this.preloadUrlValue)\r\n\r\n const items = await response.json()\r\n this.itemsValue = items\r\n }\r\n\r\n toggleDropdown() {\r\n if (this.dropdownTarget.classList.contains(\"multiselect__dropdown--open\")) {\r\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\r\n if (this.selectedValue.length > 0) this.inputContainerTarget.style.display = \"none\"\r\n this.searchTarget.blur()\r\n } else {\r\n if (this.itemsValue.length) this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\r\n this.searchTarget.focus()\r\n }\r\n }\r\n\r\n closeOnClickOutside({ target }) {\r\n if (this.element.contains(target)) return\r\n\r\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\r\n if (this.selectedValue.length > 0) this.inputContainerTarget.style.display = \"none\"\r\n this.searchTarget.value = \"\"\r\n if (!this.searchRemoteValue) {\r\n this.listTarget.innerHTML = this.allItems\r\n this.selectedValue.forEach(selected => {\r\n this.checkItem(selected.value)\r\n })\r\n }\r\n }\r\n\r\n searchUrlValueChanged() {\r\n if (this.searchUrlValue) this.searchRemoteValue = true\r\n }\r\n\r\n itemsValueChanged() {\r\n if (!this.hasListTarget) return\r\n\r\n if (this.itemsValue.length) {\r\n this.listTarget.innerHTML = this.items(this.itemsValue)\r\n } else {\r\n this.listTarget.innerHTML = this.noResultsTemplate\r\n }\r\n }\r\n\r\n selectedValueChanged() {\r\n if (!this.hasPreviewTarget) return\r\n\r\n while (this.hiddenTarget.options.length) this.hiddenTarget.remove(0)\r\n\r\n if (this.selectedValue.length > 0) {\r\n this.previewTarget.innerHTML = this.pills\r\n this.searchTarget.style.paddingTop = \"0.5rem\"\r\n\r\n this.selectedValue.forEach(selected => {\r\n const option = document.createElement(\"option\")\r\n option.text = selected.text\r\n option.value = selected.value\r\n option.setAttribute(\"selected\", true)\r\n this.hiddenTarget.add(option)\r\n })\r\n\r\n if (!this.searchRemoteValue) {\r\n this.selectedValue.forEach(selected => {\r\n this.checkItem(selected.value)\r\n })\r\n }\r\n } else {\r\n this.searchTarget.style.paddingTop = \"0\"\r\n this.inputContainerTarget.style.display = \"\"\r\n this.previewTarget.innerHTML = \"\"\r\n }\r\n\r\n this.element.dispatchEvent(new Event(\"multiselect-change\"))\r\n }\r\n\r\n removeItem(e) {\r\n e.stopPropagation()\r\n\r\n const itemToRemove = e.currentTarget.parentNode\r\n\r\n this.selectedValue = this.selectedValue.filter(x => x.value.toString() !== itemToRemove.dataset.value)\r\n this.uncheckItem(itemToRemove.dataset.value)\r\n this.element.dispatchEvent(new CustomEvent(\"multiselect-removed\", { detail: { id: itemToRemove.dataset.value } }))\r\n }\r\n\r\n uncheckItem(value) {\r\n const itemToUncheck = this.listTarget.querySelector(`input[data-value=\"${value}\"]`)\r\n\r\n if (itemToUncheck) itemToUncheck.checked = false\r\n }\r\n\r\n checkItem(value) {\r\n const itemToCheck = this.listTarget.querySelector(`input[data-value=\"${value}\"]`)\r\n\r\n if (itemToCheck) itemToCheck.checked = true\r\n }\r\n\r\n toggleItem(input) {\r\n const item = {\r\n text: input.dataset.text,\r\n value: input.dataset.value\r\n }\r\n let newSelectedArray = this.selectedValue\r\n\r\n if (input.checked) {\r\n newSelectedArray.push(item)\r\n\r\n if (this.focusedItem) {\r\n this.focusedItem.closest(\"li\").classList.remove(\"multiselect__focused\")\r\n this.focusedItem.removeAttribute(\"aria-selected\")\r\n }\r\n\r\n input.setAttribute(\"aria-selected\", \"true\")\r\n input.closest(\"li\").classList.add(\"multiselect__focused\")\r\n this.element.dispatchEvent(new CustomEvent(\"multiselect-added\", { detail: { item: item } }))\r\n } else {\r\n newSelectedArray = newSelectedArray.filter(selected => selected.value.toString() !== item.value)\r\n this.element.dispatchEvent(new CustomEvent(\"multiselect-removed\", { detail: { id: item.value } }))\r\n }\r\n\r\n this.selectedValue = newSelectedArray\r\n }\r\n\r\n onKeyDown(e) {\r\n const handler = this[`on${e.key}Keydown`]\r\n if (handler) handler(e)\r\n }\r\n\r\n onArrowDownKeydown = (event) => {\r\n const item = this.sibling(true)\r\n if (item) this.navigate(item)\r\n event.preventDefault()\r\n }\r\n\r\n onArrowUpKeydown = (event) => {\r\n const item = this.sibling(false)\r\n if (item) this.navigate(item)\r\n event.preventDefault()\r\n }\r\n\r\n onBackspaceKeydown = () => {\r\n if (this.searchTarget.value !== \"\") return\r\n if (!this.selectedValue.length) return\r\n\r\n const selected = this.selectedValue\r\n const value = selected.pop().value\r\n\r\n this.uncheckItem(value)\r\n this.selectedValue = selected\r\n this.element.dispatchEvent(new CustomEvent(\"multiselect-removed\", { detail: { id: value } }))\r\n }\r\n\r\n onEnterKeydown = (e) => {\r\n if (this.focusedItem) this.focusedItem.click()\r\n }\r\n\r\n onEscapeKeydown = () => {\r\n if (this.searchTarget.value !== \"\") {\r\n this.searchTarget.value = \"\"\r\n return this.search()\r\n }\r\n\r\n this.toggleDropdown()\r\n }\r\n\r\n sibling(next) {\r\n const options = this.itemTargets\r\n const selected = this.focusedItem\r\n const index = options.indexOf(selected)\r\n const sibling = next ? options[index + 1] : options[index - 1]\r\n const def = next ? options[0] : options[options.length - 1]\r\n return sibling || def\r\n }\r\n\r\n async addable(e) {\r\n e.preventDefault()\r\n const query = this.searchTarget.value\r\n\r\n if (query === \"\" || this.itemsValue.some(item => item.text === query)) return\r\n\r\n const response = await fetch(this.addableUrlValue, {\r\n method: \"POST\",\r\n body: JSON.stringify({ addable: query })\r\n })\r\n if (response.ok) {\r\n const addedItem = await response.json()\r\n\r\n this.addAddableItem(addedItem)\r\n }\r\n }\r\n\r\n addAddableItem(addedItem) {\r\n this.itemsValue = this.itemsValue.concat(addedItem)\r\n this.selectedValue = this.selectedValue.concat(addedItem)\r\n this.searchTarget.value = \"\"\r\n this.element.dispatchEvent(new CustomEvent(\"multiselect-added\", { detail: { item: addedItem } }))\r\n }\r\n\r\n navigate(target) {\r\n const previouslySelected = this.focusedItem\r\n if (previouslySelected) {\r\n previouslySelected.removeAttribute(\"aria-selected\")\r\n previouslySelected.closest(\"li\").classList.remove(\"multiselect__focused\")\r\n }\r\n\r\n target.setAttribute(\"aria-selected\", \"true\")\r\n target.closest(\"li\").classList.add(\"multiselect__focused\")\r\n target.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" })\r\n }\r\n\r\n get focusedItem() {\r\n return this.listTarget.querySelector(activeSelector)\r\n }\r\n\r\n focusSearch() {\r\n this.inputContainerTarget.style.display = \"\"\r\n this.searchTarget.focus()\r\n }\r\n\r\n addableEvent() {\r\n document.dispatchEvent(new CustomEvent(\"multiselect-addable\"))\r\n }\r\n\r\n get template() {\r\n return `\r\n multiselect#toggleDropdown focus->multiselect#focusSearch\" tabindex=\"0\" data-turbo-cache=\"false\">\r\n \r\n \r\n ${this.inputTemplate}\r\n \r\n multiselect#closeOnClickOutside\">\r\n \r\n \r\n ${this.allItems}\r\n \r\n \r\n \r\n `\r\n }\r\n\r\n get noResultsTemplate() {\r\n if (!this.addableUrlValue) return `${this.element.dataset.noResultsMessage}`\r\n return `\r\n \r\n multiselect#addableEvent\">\r\n ${this.element.dataset.addablePlaceholder}\r\n \r\n \r\n `\r\n }\r\n\r\n get inputTemplate() {\r\n return `\r\n multiselect#onKeyDown\">\r\n `\r\n }\r\n\r\n items(items, selected = false) {\r\n const checked = selected ? \"checked\" : \"\"\r\n let itemsTemplate = \"\"\r\n\r\n items.forEach(item => itemsTemplate += this.itemTemplate(item, checked))\r\n\r\n return itemsTemplate\r\n }\r\n\r\n get pills() {\r\n let itemsTemplate = \"\"\r\n\r\n this.selectedValue.forEach(item => itemsTemplate += this.pillTemplate(item))\r\n\r\n return itemsTemplate\r\n }\r\n\r\n get selectedItems() {\r\n return this.items(this.selectedValue, true)\r\n }\r\n\r\n get allItems() {\r\n return this.items(this.itemsValue)\r\n }\r\n\r\n itemTemplate(item, selected = \"\") {\r\n return `\r\n \r\n \r\n \r\n ${item.text}\r\n \r\n \r\n `\r\n }\r\n\r\n checkBoxChange(event) {\r\n event.preventDefault()\r\n this.searchTarget.focus()\r\n this.toggleItem(event.currentTarget)\r\n }\r\n\r\n pillTemplate(item) {\r\n if (this.disabledValue) {\r\n return `\r\n ${item.text}\r\n `\r\n } else {\r\n return `\r\n ${item.text}\r\n multiselect#removeItem\">\r\n \r\n \r\n \r\n \r\n \r\n `\r\n }\r\n }\r\n}\r\n\r\nfunction debounce(fn, delay) {\r\n let timeoutId = null\r\n\r\n return (...args) => {\r\n const callback = () => fn.apply(this, args)\r\n clearTimeout(timeoutId)\r\n timeoutId = setTimeout(callback, delay)\r\n }\r\n}\r\n\r\nexport { Multiselect }","import { Multiselect } from \"@wizardhealth/stimulus-multiselect\"\n\nexport default class extends Multiselect {\n static targets = [\"container\", \"template\"]\n static values = {\n hideInputAfterStarted: { type: Boolean, default: false },\n withCheckAllButton: { type: Boolean, default: true },\n checkAllHandlerCallbackAction: String,\n itemTemplateCallbackAction: String,\n pillTemplateCallbackAction: String,\n selectAllTranslation: String,\n deselectAllTranslation: String\n }\n\n // Overwrite the default template from @wizardhealth/stimulus-multiselect\n get template() {\n return `\n \n ${this.withCheckAllButtonValue ? this.checkAllButtonTemplate : \"\"}\n \n multiselect#toggleDropdown focus->multiselect#focusSearch\" \n tabindex=\"0\" data-turbo-cache=\"false\"\n >\n \n \n ${this.inputTemplate}\n \n \n multiselect#closeOnClickOutside\">\n \n \n ${this.allItems}\n \n \n \n `\n }\n\n get checkAllButtonTemplate() {\n const hasSelectedItems = this.selectedValue.length > 0\n const deselectTranslation = this.deselectAllTranslationValue || \"Deselect All\"\n const selectTranslation = this.selectAllTranslationValue || \"Select All\"\n return `\n multiselect#checkAllHandler ${this.checkAllHandlerCallbackActionValue}\"\n data-status=\"${hasSelectedItems ? \"checked\" : \"unchecked\"}\">\n ${hasSelectedItems ? deselectTranslation : selectTranslation}\n \n `\n }\n\n connect() {\n if (this.hasTemplateTarget) return\n\n super.connect()\n this.orignalSelectedValue = this.selectedValue\n\n if (this.hideInputAfterStartedValue && this.selectedValue.length > 0) {\n this.inputContainerTarget.style.display = \"none\"\n }\n }\n\n updateToggleAllButton(target, selected) {\n if (selected) {\n target.dataset.status = \"checked\"\n target.textContent = this.deselectAllTranslationValue || \"Deselect All\"\n target.classList.add(\"bg-gray-600\", \"border-gray-600\", \"text-white\")\n } else {\n target.dataset.status = \"unchecked\"\n target.textContent = this.selectAllTranslationValue || \"Select All\"\n target.classList.remove(\"bg-gray-600\", \"border-gray-600\", \"text-white\")\n }\n }\n\n checkAllHandler(e) {\n const status = e.target.dataset.status\n if (status === \"unchecked\") {\n this.checkAllItems()\n this.updateToggleAllButton(e.target, true)\n } else {\n this.uncheckAllItems()\n this.updateToggleAllButton(e.target, false)\n\n // Clear search when deselecting all\n this.clearSearch()\n }\n }\n\n searchItems(event) {\n const query = event.target.value.toLowerCase()\n const hasSelectedItems = this.selectedValue.length > 0\n\n this.listTarget.querySelectorAll(\"li\").forEach(item => {\n const text = item.innerText.toLowerCase()\n const isSelected = item.querySelector(\"input\")?.checked\n\n if (text.includes(query) || isSelected) {\n item.style.display = \"block\"\n } else {\n item.style.display = \"none\"\n }\n })\n\n this.forceDropdownOpen()\n }\n\n forceDropdownOpen() {\n if (this.dropdownTarget) {\n this.dropdownTarget.style.display = \"block\"\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\n }\n }\n\n clearSearch() {\n const searchInput = this.containerTarget.querySelector(\"input[type='text']\")\n if (searchInput) {\n searchInput.value = \"\"\n searchInput.dispatchEvent(new Event(\"input\", { bubbles: true }))\n }\n }\n\n checkAllItems() {\n this.itemTargets.forEach(item => {\n if (!item.checked) {\n item.click()\n }\n })\n }\n\n uncheckAllItems() {\n this.containerTarget.querySelectorAll(\".multiselect__pill-delete\").forEach(element => {\n element.click()\n })\n }\n\n // Overwrite the default itemTemplate from @wizardhealth/stimulus-multiselect\n itemTemplate(item, selected = \"\") {\n return `\n \n \n \n ${item.text}\n \n \n `\n }\n\n // Overwrite the default pillTemplate from @wizardhealth/stimulus-multiselect\n pillTemplate(item) {\n if (this.disabledValue) {\n return `\n ${item.text}\n `\n } else {\n return `\n ${item.text}\n multiselect#removeItem ${this.pillTemplateCallbackActionValue}\">\n \n \n `\n }\n }\n\n /*\n * Overwrite the default toggleDropdown from @wizardhealth/stimulus-multiselect\n */\n toggleDropdown(e) {\n const target = e.target\n\n if (this.dropdownTarget.classList.contains(\"multiselect__dropdown--open\")) {\n // when clicking on the search input, do not close the dropdown, keep the focus (overridden bit)\n const isClickOnSearchInput = this.searchTarget.contains(target)\n if (isClickOnSearchInput) return\n\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\n if (this.selectedValue.length > 0) this.inputContainerTarget.style.display = \"none\"\n this.searchTarget.blur()\n } else {\n if (this.itemsValue.length) this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\n this.searchTarget.focus()\n }\n }\n\n /*\n * Overwrite the default closeOnClickOutside from @wizardhealth/stimulus-multiselect\n */\n closeOnClickOutside({ target }) {\n // Define all conditions at the top\n const allButtonContainer = this.element.querySelector(\".multiselect__all_button_container\")\n const checkAllButton = this.element.querySelector(\".multiselect__all_button_container .toggle-all-button\")\n const isClickOnSearchInput = this.searchTarget.contains(target)\n\n // Check if target is in the all button container background but not on the button\n const isClickOnAllButtonBackground =\n allButtonContainer && allButtonContainer.contains(target) && (!checkAllButton || !checkAllButton.contains(target))\n\n // Close the dropdown if the click is outside the element\n // when clicking on the search input, do not close the dropdown, keep the focus (overridden bit)\n if (isClickOnSearchInput) return\n if (isClickOnAllButtonBackground || !this.element.contains(target)) {\n // This is the equivalent of super.closeOnClickOutside({ target })\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\n if (this.selectedValue.length > 0) this.inputContainerTarget.style.display = \"none\"\n this.searchTarget.value = \"\"\n if (!this.searchRemoteValue) {\n this.listTarget.innerHTML = this.allItems\n this.selectedValue.forEach(selected => {\n this.checkItem(selected.value)\n })\n }\n\n // Dispatch event if selected value has changed (addition)\n if (JSON.stringify(this.selectedValue) !== JSON.stringify(this.orignalSelectedValue)) {\n this.element.dispatchEvent(new CustomEvent(\"multiselect-selected-changed\"))\n }\n }\n }\n\n // overriding the searchLocal method\n searchLocal() {\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\")\n if (this.searchTarget.value === \"\") {\n let theRestOfTheItems = this.itemsValue.filter(x => !this.selectedValue.map(y => y.value).includes(x.value))\n this.listTarget.innerHTML = this.selectedItems\n this.listTarget.insertAdjacentHTML(\"beforeend\", this.items(theRestOfTheItems))\n }\n\n let searched = this.itemsValue.filter(item => {\n return item.text.toLowerCase().includes(this.searchTarget.value.toLowerCase())\n })\n\n let selectedSearched = this.selectedValue.filter(item => {\n return item.text.toLowerCase().includes(this.searchTarget.value.toLowerCase())\n })\n\n searched = searched.filter(x => !selectedSearched.map(y => y.value).includes(x.value))\n\n if (searched.length === 0 && this.addableUrlValue) {\n return (this.listTarget.innerHTML = this.noResultsTemplate)\n }\n\n /* override:\n * closing the dropdown if there are no results\n * mind that \"no results\" means no \"selectable results\" AND no \"selected results\"\n */\n if (searched.length === 0 && selectedSearched.length === 0) {\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\")\n }\n\n this.listTarget.innerHTML = this.items(selectedSearched, true)\n this.listTarget.insertAdjacentHTML(\"beforeend\", this.items(searched))\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { url: String }\n\n navigateTo() {\n window.location.href = this.urlValue\n }\n}\n","import { Controller as n } from \"@hotwired/stimulus\";\nclass r extends n {\n add(t) {\n t.preventDefault();\n const e = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, new Date().getTime().toString());\n this.targetTarget.insertAdjacentHTML(\"beforebegin\", e);\n }\n remove(t) {\n t.preventDefault();\n const e = t.target.closest(this.wrapperSelectorValue);\n if (e.dataset.newRecord === \"true\")\n e.remove();\n else {\n e.style.display = \"none\";\n const a = e.querySelector(\"input[name*='_destroy']\");\n a.value = \"1\";\n }\n }\n}\nr.targets = [\"target\", \"template\"];\nr.values = {\n wrapperSelector: {\n type: String,\n default: \".nested-form-wrapper\"\n }\n};\nexport {\n r as default\n};\n","import NestedForm from \"stimulus-rails-nested-form\"\n\nexport default class extends NestedForm {\n static targets = [\"addButton\", \"attributeSelector\", \"emptyRow\", \"attributeRow\"]\n static values = {\n entityAttributes: Array,\n duplicateAttributesErrorMessage: String\n }\n\n add(event) {\n if (this.emptyRowTarget) {\n this.emptyRowTarget.classList.add(\"hidden\")\n this.emptyRowTarget.style.display = \"none\"\n }\n super.add(event)\n // this.disableAddButton();\n }\n\n remove(event) {\n super.remove(event)\n this.markDeletedAttributeRow(event)\n // this.disableAddButton();\n if (this.validAttributeRowTargets().length === 0) {\n this.emptyRowTarget.classList.remove(\"hidden\")\n this.emptyRowTarget.style.display = \"table-row\"\n }\n }\n\n markDeletedAttributeRow(event) {\n event.target.closest(this.wrapperSelectorValue).dataset.destroyed = true\n }\n\n disableAddButton() {\n if (this.validAttributeRowTargets().length >= this.entityAttributesValue.length) {\n this.addButtonTarget.disabled = true\n } else {\n this.addButtonTarget.disabled = false\n }\n }\n\n validateDuplicateAttribute(event) {\n const arr = this.attributeSelectorTargets.map(attributeTarget => {\n if (!attributeTarget.closest(this.wrapperSelectorValue).dataset.destroyed)\n return { value: attributeTarget.value, tableColumnValue: attributeTarget.nextElementSibling?.value }\n })\n\n const duplicateElements = arr\n .filter(\n (item, index) =>\n arr.findIndex(\n i => i.value === item.value && (!i.tableColumnValue || i.tableColumnValue === item.tableColumnValue)\n ) !== index\n )\n .filter(item => item !== undefined)\n\n if (duplicateElements.length > 0) {\n event.preventDefault()\n alert(this.duplicateAttributesErrorMessageValue)\n }\n }\n\n validAttributeRowTargets() {\n return this.attributeRowTargets.filter(attributeRow => !attributeRow.dataset.destroyed)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nconst _RailsNestedForm = class _RailsNestedForm extends Controller {\n add(e) {\n e.preventDefault();\n const content = this.templateTarget.innerHTML.replace(/NEW_RECORD/g, (/* @__PURE__ */ new Date()).getTime().toString());\n this.targetTarget.insertAdjacentHTML(\"beforebegin\", content);\n const event = new CustomEvent(\"rails-nested-form:add\", { bubbles: !0 });\n this.element.dispatchEvent(event);\n }\n remove(e) {\n e.preventDefault();\n const wrapper = e.target.closest(this.wrapperSelectorValue);\n if (wrapper.dataset.newRecord === \"true\")\n wrapper.remove();\n else {\n wrapper.style.display = \"none\";\n const input = wrapper.querySelector(\"input[name*='_destroy']\");\n input.value = \"1\";\n }\n const event = new CustomEvent(\"rails-nested-form:remove\", { bubbles: !0 });\n this.element.dispatchEvent(event);\n }\n};\n_RailsNestedForm.targets = [\"target\", \"template\"], _RailsNestedForm.values = {\n wrapperSelector: {\n type: String,\n default: \".nested-form-wrapper\"\n }\n};\nlet RailsNestedForm = _RailsNestedForm;\nexport {\n RailsNestedForm as default\n};\n","import NestedForm from \"@stimulus-components/rails-nested-form\"\n\nexport default class extends NestedForm {\n static targets = [\"inputGroups\", \"addButton\"]\n static values = { limit: Number }\n\n add(event) {\n super.add(event)\n this.#updateAddButtonState()\n this.inputGroupsTargets[this.inputGroupsTargets.length - 1]?.querySelector(\"input\")?.focus()\n }\n\n remove(event) {\n super.remove(event)\n this.#updateAddButtonState()\n }\n\n #updateAddButtonState() {\n if (!this.hasLimitValue) return\n\n const isDisabled = this.inputGroupsTargets.length >= this.limitValue\n this.addButtonTarget.disabled = isDisabled\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"modelSource\", \"modelSelector\"]\n\n updateModelSelector() {\n // This method is called when the user selects a source\n this.modelSelectorTarget.innerHTML = \"\"\n const sourceOptions = this.modelSourceTarget.values\n sourceOptions.forEach((sourceOption, idx) => {\n var option = document.createElement(\"option\")\n option.text = sourceOption\n option.value = sourceOption\n option.selected = idx === 0\n this.modelSelectorTarget.add(option)\n })\n }\n\n toggleModel(e) {\n // The event comes from selecting an option in multiselect\n // Please check itemTemplateCallbackActionValue in the multiselect_controller.js\n const model = e.target.dataset.value\n const modelSelectorOptions = [...this.modelSelectorTarget.options].map(option => option.value)\n if (modelSelectorOptions.includes(model)) {\n const index = modelSelectorOptions.indexOf(model)\n this.modelSelectorTarget.remove(index)\n } else {\n var option = document.createElement(\"option\")\n option.text = model\n option.value = model\n this.modelSelectorTarget.add(option)\n }\n }\n}\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\nimport tippy from \"tippy.js\"\n\nexport default class extends Controller {\n static HIGHLIGHT_LINE_WIDTH = 2\n static HIGHLIGHT_SCORE_THRESHOLD = 0.85\n static HIGHLIGHT_RED = \"#FB001A\"\n static HIGHLIGHT_ORANGE = \"#FD930A\"\n\n static VERTICAL_CONTEXT = 0.1 // 10% of page height\n static HORIZONTAL_CONTEXT = 0.1 // 10% of page width\n\n static TOOLTIP_CONFIG = {\n trigger: \"manual\",\n placement: \"top\",\n arrow: true,\n theme: \"light\",\n animation: \"fade\",\n interactive: true,\n appendTo: () => document.body\n }\n\n static values = {\n thumbnailUrl: String,\n page: { type: Object, default: {} },\n highlightBlockIds: { type: Array, default: [] },\n highlightBlockScores: { type: Array, default: [] }\n }\n\n connect() {\n if (!this.hasThumbnailUrlValue) return\n this.#setupMouseEvents()\n this.#updateHighlights()\n this.#renderThumbnail()\n }\n\n disconnect() {\n this.#removeTooltip()\n this.#cleanupEventListeners()\n }\n\n #setupMouseEvents() {\n this.boundHandleMouseMove = this.#handleMouseMove.bind(this)\n this.boundHandleMouseOut = this.#handleMouseOut.bind(this)\n\n this.element.addEventListener(\"mousemove\", this.boundHandleMouseMove)\n this.element.addEventListener(\"mouseout\", this.boundHandleMouseOut)\n }\n\n #handleMouseMove(event) {\n const rect = event.target.getBoundingClientRect()\n const x = event.clientX - rect.left\n const y = event.clientY - rect.top\n\n const block = this.#findHighlightBlockAtPoint(x, y)\n if (block?.content) {\n const [, , , , tooltipContent] = block.content\n if (tooltipContent) this.#showTooltip(tooltipContent, block)\n } else {\n this.#removeTooltip()\n }\n }\n\n #handleMouseOut() {\n this.#removeTooltip()\n }\n\n #cleanupEventListeners() {\n if (this.boundHandleMouseMove) this.element.removeEventListener(\"mousemove\", this.boundHandleMouseMove)\n if (this.boundHandleMouseOut) this.element.removeEventListener(\"mouseout\", this.boundHandleMouseOut)\n }\n\n #showTooltip(content, block) {\n if (!content) return\n\n const position = this.#getBlockScreenPosition(block)\n const tippyConfig = {\n ...this.constructor.TOOLTIP_CONFIG,\n content,\n getReferenceClientRect: () => position\n }\n\n if (this.tooltip) {\n this.tooltip.setContent(content)\n this.tooltip.setProps(tippyConfig)\n } else {\n this.tooltip = tippy(this.element, tippyConfig)\n this.tooltip.show()\n }\n }\n\n #removeTooltip() {\n if (this.tooltip) {\n this.tooltip.destroy()\n this.tooltip = null\n }\n }\n\n #renderThumbnail() {\n const canvas = this.element\n const ctx = canvas.getContext(\"2d\")\n\n // Create a new Image instance if it doesn't exist\n if (!this.img) this.img = new Image()\n\n const img = this.img\n\n img.onload = () => {\n // Store image dimensions\n this.imageWidth = img.width\n this.imageHeight = img.height\n\n this.#setupCanvas(canvas)\n this.#calculateScaleAndPosition(canvas)\n this.#drawImage(ctx, img)\n }\n\n img.src = this.thumbnailUrlValue\n }\n\n #setupCanvas(canvas) {\n // Get container dimensions\n const container = canvas.parentElement\n const containerWidth = container.clientWidth\n const containerHeight = container.clientHeight\n\n // Get device pixel ratio for high-DPI displays\n const dpr = window.devicePixelRatio || 1\n\n // Set canvas size accounting for device pixel ratio\n canvas.width = containerWidth * dpr\n canvas.height = containerHeight * dpr\n\n // Scale canvas CSS size for proper display\n canvas.style.width = `${containerWidth}px`\n canvas.style.height = `${containerHeight}px`\n\n // Scale context for high-DPI display\n const ctx = canvas.getContext(\"2d\")\n ctx.scale(dpr, dpr)\n\n // Configure rendering quality\n ctx.imageSmoothingEnabled = true\n ctx.imageSmoothingQuality = \"high\"\n }\n\n #calculateScaleAndPosition(canvas) {\n const container = canvas.parentElement\n const containerWidth = container.clientWidth\n const containerHeight = container.clientHeight\n\n // Calculate scale and position to fit image\n let scale = Math.min(containerWidth / this.imageWidth, containerHeight / this.imageHeight)\n let offsetX = (containerWidth - this.imageWidth * scale) / 2\n let offsetY = (containerHeight - this.imageHeight * scale) / 2\n\n // If we have highlights, focus on the highest scored block\n if (this.hasHighlightBlockIdsValue && this.hasPageValue) {\n const highestScoredBlock = this.#getHighestScoredBlock()\n if (highestScoredBlock) {\n const { adjustedScale, adjustedOffsetX, adjustedOffsetY } = this.#calculateFocusedView(\n highestScoredBlock,\n containerWidth,\n containerHeight\n )\n\n scale = adjustedScale\n offsetX = adjustedOffsetX\n offsetY = adjustedOffsetY\n }\n }\n\n // Store dimensions for highlight calculations\n this.scale = scale\n this.offsetX = offsetX\n this.offsetY = offsetY\n }\n\n #calculateFocusedView(block, containerWidth, containerHeight) {\n const page = this.pageValue\n const [blockX, blockY, blockWidth, blockHeight] = block.content\n\n // Convert block dimensions to image coordinates\n const x = (blockX / page.width) * this.imageWidth\n const y = (blockY / page.height) * this.imageHeight\n const width = (blockWidth / page.width) * this.imageWidth\n const height = (blockHeight / page.height) * this.imageHeight\n\n // Calculate how much context we want to show\n const verticalContext = this.imageHeight * this.constructor.VERTICAL_CONTEXT\n const horizontalContext = this.imageWidth * this.constructor.HORIZONTAL_CONTEXT\n\n // Calculate the visible region dimensions (block + context)\n const visibleWidth = width + horizontalContext\n const visibleHeight = height + verticalContext\n\n // Calculate scales based on the visible region\n const scaleX = containerWidth / visibleWidth\n const scaleY = containerHeight / visibleHeight\n\n // Use the smaller scale to maintain aspect ratio\n const scale = Math.min(scaleX, scaleY)\n\n // Calculate initial offsets to center the block\n let offsetX = containerWidth / 2 - (x * scale + (width * scale) / 2)\n let offsetY = containerHeight / 2 - (y * scale + (height * scale) / 2)\n\n // Calculate scaled image dimensions\n const scaledImgWidth = this.imageWidth * scale\n const scaledImgHeight = this.imageHeight * scale\n\n // Adjust offsets to avoid whitespace\n offsetX = this.#adjustHorizontalOffset(offsetX, scaledImgWidth, containerWidth)\n offsetY = this.#adjustVerticalOffset(offsetY, scaledImgHeight, containerHeight)\n\n return { adjustedScale: scale, adjustedOffsetX: offsetX, adjustedOffsetY: offsetY }\n }\n\n #adjustHorizontalOffset(offsetX, scaledImgWidth, containerWidth) {\n // If there's whitespace on the right, move image right\n if (offsetX + scaledImgWidth < containerWidth) {\n return Math.min(0, containerWidth - scaledImgWidth)\n }\n // If there's whitespace on the left, move image left\n else if (offsetX > 0) {\n return 0\n }\n return offsetX\n }\n\n #adjustVerticalOffset(offsetY, scaledImgHeight, containerHeight) {\n // If there's whitespace at the bottom, move image down\n if (offsetY + scaledImgHeight < containerHeight) {\n return Math.min(0, containerHeight - scaledImgHeight)\n }\n // If there's whitespace at the top, move image up\n else if (offsetY > 0) {\n return 0\n }\n return offsetY\n }\n\n #drawImage(ctx, img) {\n const containerWidth = this.element.parentElement.clientWidth\n const containerHeight = this.element.parentElement.clientHeight\n\n ctx.clearRect(0, 0, containerWidth, containerHeight)\n ctx.drawImage(img, this.offsetX, this.offsetY, img.width * this.scale, img.height * this.scale)\n\n if (this.hasHighlightBlockIdsValue && this.hasPageValue) {\n this.#drawHighlights(ctx)\n }\n }\n\n #drawHighlights(ctx) {\n const page = this.pageValue\n if (!page?.content) return\n\n ctx.save()\n ctx.lineWidth = this.constructor.HIGHLIGHT_LINE_WIDTH\n\n this.highlights.ids.forEach((blockId, index) => {\n const block = page.content.find(item => item.id === blockId)\n if (!block?.content) return\n\n const score = this.highlights.scores[index]\n ctx.strokeStyle = this.#getHighlightColor(score)\n\n const [blockX, blockY, blockWidth, blockHeight] = block.content\n const { x, y, width, height } = this.#calculateHighlightDimensions(blockX, blockY, blockWidth, blockHeight)\n\n ctx.strokeRect(x, y, width, height)\n })\n\n ctx.restore()\n }\n\n #getHighlightColor(score) {\n return score >= this.constructor.HIGHLIGHT_SCORE_THRESHOLD\n ? this.constructor.HIGHLIGHT_RED\n : this.constructor.HIGHLIGHT_ORANGE\n }\n\n #calculateHighlightDimensions(blockX, blockY, blockWidth, blockHeight) {\n const page = this.pageValue\n\n // Scale coordinates relative to page dimensions first\n const x = (blockX / page.width) * this.imageWidth\n const y = (blockY / page.height) * this.imageHeight\n const width = (blockWidth / page.width) * this.imageWidth\n const height = (blockHeight / page.height) * this.imageHeight\n\n // Then apply canvas scaling and offset\n return {\n x: x * this.scale + this.offsetX,\n y: y * this.scale + this.offsetY,\n width: width * this.scale,\n height: height * this.scale\n }\n }\n\n #updateHighlights() {\n this.highlights = { ids: [], scores: [] }\n const page = this.pageValue\n\n if (!page?.content || !this.hasHighlightBlockIdsValue) return\n\n const pageContentIds = page.content.map(content => content.id)\n\n this.highlightBlockIdsValue.forEach((blockId, index) => {\n if (pageContentIds.includes(blockId)) {\n this.highlights.ids.push(blockId)\n this.highlights.scores.push(this.highlightBlockScoresValue[index] || 0)\n }\n })\n }\n\n #getHighestScoredBlock() {\n const page = this.pageValue\n if (!page?.content || !this.highlights.ids.length) return null\n\n let highestScore = -1\n let highestBlock = null\n\n this.highlights.ids.forEach((blockId, index) => {\n const score = this.highlights.scores[index]\n if (score > highestScore) {\n const block = page.content.find(item => item.id === blockId)\n if (block?.content) {\n highestScore = score\n highestBlock = block\n }\n }\n })\n\n return highestBlock\n }\n\n #findHighlightBlockAtPoint(x, y) {\n const page = this.pageValue\n if (!page) return null\n\n const mouseX = (x - this.offsetX) / this.scale\n const mouseY = (y - this.offsetY) / this.scale\n\n for (const blockId of this.highlightBlockIdsValue) {\n const block = page.content?.find(item => item.id === blockId)\n if (!block?.content) continue\n\n const [blockX, blockY, blockWidth, blockHeight] = block.content\n const { isInside } = this.#isPointInsideBlock(mouseX, mouseY, blockX, blockY, blockWidth, blockHeight)\n\n if (isInside) return block\n }\n return null\n }\n\n #isPointInsideBlock(mouseX, mouseY, blockX, blockY, blockWidth, blockHeight) {\n // Convert block coordinates to image space\n const imageX = (blockX / this.pageValue.width) * this.imageWidth\n const imageY = (blockY / this.pageValue.height) * this.imageHeight\n const imageWidth = (blockWidth / this.pageValue.width) * this.imageWidth\n const imageHeight = (blockHeight / this.pageValue.height) * this.imageHeight\n\n const isInside =\n mouseX >= imageX && mouseX <= imageX + imageWidth && mouseY >= imageY && mouseY <= imageY + imageHeight\n\n return { isInside }\n }\n\n #getBlockScreenPosition(block) {\n const [x, y, width, height] = block.content\n const rect = this.element.getBoundingClientRect()\n\n // Convert block coordinates to screen coordinates\n const scale = this.scale\n const screenX = rect.left + (x / this.pageValue.width) * this.imageWidth * scale + this.offsetX\n const screenY = rect.top + (y / this.pageValue.height) * this.imageHeight * scale + this.offsetY\n const screenWidth = (width / this.pageValue.width) * this.imageWidth * scale\n const screenHeight = (height / this.pageValue.height) * this.imageHeight * scale\n\n return {\n width: screenWidth,\n height: screenHeight,\n top: screenY,\n bottom: screenY + screenHeight,\n left: screenX,\n right: screenX + screenWidth\n }\n }\n}\n","import FileAttributeExtractionOnSettingPageController from \"./file_attribute_extraction_on_setting_page_controller\"\n\nexport default class extends FileAttributeExtractionOnSettingPageController {\n static targets = [\"fileAttribute\"]\n\n static outlets = [\"scope\"]\n\n connect() {}\n\n initialize() {\n if (this.fileAttributeTarget.dataset.status === \"done\") return\n const { organizationIdValue } = this.scopeOutlet\n\n this.updateFileAttribute(organizationIdValue, this.fileAttributeTarget.dataset.fileAttributeId)\n this.timeoutMap = {}\n }\n}\n","import ProjectAttributeExtractionOnSettingPageController from \"./project_attribute_extraction_on_setting_page_controller\"\n\nexport default class extends ProjectAttributeExtractionOnSettingPageController {\n static targets = [\"projectAttribute\"]\n\n static outlets = [\"scope\"]\n\n connect() {}\n\n initialize() {\n if (this.projectAttributeTarget.dataset.status === \"done\") return\n\n const { organizationIdValue } = this.scopeOutlet\n this.updateProjectAttribute(organizationIdValue, this.projectAttributeTarget.dataset.projectAttributeId)\n this.timeoutMap = {}\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"projectSettingDropdownButton\",\n \"tooltipContainer\",\n \"tooltipContent\",\n \"settingDropdownbuttonContainer\"\n ]\n\n static outlets = [\"scope\"]\n\n static values = {\n confirmMessage: String,\n projectId: String,\n entityId: String\n }\n\n connect() {\n document.addEventListener(\"stimulus:projectSettingDropdownButton-\" + this.projectIdValue, this.onEvent)\n }\n\n disconnect() {\n document.removeEventListener(\"stimulus:projectSettingDropdownButton-\" + this.projectIdValue, this.onEvent)\n }\n\n onEvent = e => {\n this[e.detail.action](e.detail.payload)\n }\n\n initialize() {\n this.timeoutMap = {}\n }\n\n extractFileAttributes(event) {\n let fileAttributeIds = event.file_attribute_ids\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const itemRow = document.getElementById(`item-row-${this.projectIdValue}`)\n if (itemRow) {\n this.addBackgroundColorTo(itemRow)\n // Make first column gray\n itemRow.querySelector(\"td\").classList.add(\"bg-light-gray\")\n }\n\n this.settingDropdownbuttonContainerTarget.classList.add(\"bg-light-gray\")\n this.projectSettingDropdownButtonTarget.disabled = true\n this.projectSettingDropdownButtonTarget.innerHTML = \"\"\n this.projectSettingDropdownButtonTarget.classList.remove(\"cursor-pointer\")\n this.projectSettingDropdownButtonTarget.classList.add(\"cursor-not-allowed\")\n this.addProcessingAnimationTo(this.projectSettingDropdownButtonTarget)\n this.tooltipContainerTarget.classList.remove(\"hidden\")\n this.tooltipContainerTarget.innerHTML = \"Extracting Attribute\"\n\n // We send our request\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/projects/${this.projectIdValue}/`\n url += `file_attributes_tickets?file_attribute_ids[]=${fileAttributeIds.join(\"&file_attribute_ids[]=\")}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n this.updateProjectStatus(organizationIdValue, dataSpaceSlugValue, this.projectIdValue, this.entityIdValue)\n })\n }\n\n extractProjectAttributes(event) {\n let entityAttributeIds = event.project_attribute_ids\n\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n\n const itemRow = document.getElementById(`item-row-${this.projectIdValue}`)\n if (itemRow) {\n this.addBackgroundColorTo(itemRow)\n // Make first column gray\n itemRow.querySelector(\"td\").classList.add(\"bg-light-gray\")\n }\n this.settingDropdownbuttonContainerTarget.classList.add(\"bg-light-gray\")\n this.settingDropdownbuttonContainerTarget\n .querySelector(\".project-attribute-extraction-menu\")\n .classList.remove(\"hidden\")\n this.tooltipContainerTarget.innerHTML = \"Extracting Attribute\"\n\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n let url = `/extractions/organizations/${organizationIdValue}/`\n url += `data_spaces/${dataSpaceSlugValue}/projects/${this.projectIdValue}/`\n url += `entity_attributes_tickets?entity_attribute_ids[]=${entityAttributeIds.join(\"&entity_attribute_ids[]=\")}`\n\n fetch(url, { method: \"POST\", body: formData }).then(() => {\n const { organizationIdValue, dataSpaceSlugValue } = this.scopeOutlet\n this.updateProjectStatus(organizationIdValue, dataSpaceSlugValue, this.projectIdValue, this.entityIdValue)\n })\n }\n\n addProcessingAnimationTo(dom) {\n var stage = document.createElement(\"div\")\n stage.classList.add(\n \"flex\",\n \"items-center\",\n \"animate-pulse\",\n \"font-bold\",\n \"text-violet-500\",\n \"cursor-not-allowed\",\n \"text-right\"\n )\n var dotTyping = document.createElement(\"i\")\n dotTyping.classList.add(\n \"bx\",\n \"bx-dots-horizontal-rounded\",\n \"text-lg\",\n \"relative\",\n \"top-[1px]\",\n \"pointer-events-none\"\n )\n stage.appendChild(dotTyping)\n dom.appendChild(stage)\n }\n\n renderFileAttributes(input_file_id, attributes) {\n Object.keys(attributes).forEach(attributeSlug => {\n let attribute = document.getElementById(`${input_file_id}-${attributeSlug}`)\n if (attribute) {\n attribute.innerHTML = `${attributes[attributeSlug]}`\n }\n })\n }\n\n restoreProjectRowStyle(projectId) {\n const itemRow = document.getElementById(`item-row-${projectId}`)\n if (itemRow) {\n itemRow.classList.remove(\"bg-light-gray\")\n itemRow.querySelector(\"td\").classList.remove(\"bg-light-gray\")\n }\n\n const settingDropdownbuttonContainer = itemRow.querySelector(\n 'td[data-project-setting-dropdown-button-target=\"settingDropdownbuttonContainer\"]'\n )\n settingDropdownbuttonContainer.classList.remove(\"bg-light-gray\")\n\n if (settingDropdownbuttonContainer) settingDropdownbuttonContainer.classList.remove(\"bg-light-gray\")\n\n const projectSettingDropdownButton = itemRow.querySelector(\n 'button[data-project-setting-dropdown-button-target=\"projectSettingDropdownButton\"]'\n )\n\n if (projectSettingDropdownButton) {\n projectSettingDropdownButton.disabled = false\n projectSettingDropdownButton.innerHTML = \"\"\n projectSettingDropdownButton.classList.add(\"cursor-pointer\")\n projectSettingDropdownButton.classList.remove(\"cursor-not-allowed\")\n const tooltipContainer = itemRow.querySelector(\n 'div[data-project-setting-dropdown-button-target=\"tooltipContainer\"]'\n )\n if (tooltipContainer) tooltipContainer.classList.add(\"hidden\")\n this.addSettingIconTo(projectSettingDropdownButton)\n }\n }\n\n addSettingIconTo(dom) {\n var icon = document.createElement(\"i\")\n icon.classList.add(\n \"bx\",\n \"bx-dots-horizontal-rounded\",\n \"opacity-50\",\n \"text-lg\",\n \"relative\",\n \"top-[1px]\",\n \"pointer-events-none\"\n )\n dom.appendChild(icon)\n }\n\n updateProjectStatus(organizationId, dataSpaceSlug, projectId, entityId) {\n fetch(`/organizations/${organizationId}/data_spaces/${dataSpaceSlug}/projects/${projectId}/project_status_polling`)\n .then(response => response.json())\n .then(({ status, attributes }) => {\n if (status === \"in_progress\") {\n this.timeoutMap[projectId] = setTimeout(() => {\n this.updateProjectStatus(organizationId, dataSpaceSlug, projectId, entityId)\n }, 6000) // Poll every 6 seconds\n } else {\n // remove settimeout event\n clearTimeout(this.timeoutMap[projectId])\n this.renderEntityAttributes(projectId, entityId, attributes)\n this.restoreProjectRowStyle(projectId)\n }\n })\n }\n\n renderEntityAttributes(projectId, entityId, attributes) {\n Object.keys(attributes).forEach(attributeSlug => {\n let attribute = document.getElementById(`${projectId}-${attributeSlug}`)\n if (attribute) {\n attribute.innerHTML = `${attributes[attributeSlug]}`\n }\n\n if (attribute) {\n let value = attributes[attributeSlug]\n if (Array.isArray(value)) {\n const count = value.length\n if (count == 0) {\n attribute.innerHTML = `-`\n } else {\n const rowText = count === 1 ? \"row\" : \"rows\"\n const url = `/organizations/${this.organizationIdValue}/data_spaces/${this.dataSpaceSlugValue}/projects/${projectId}/entities/${entityId}/table?attribute_id=${attributeSlug}`\n attribute.innerHTML = `${count} ${rowText}`\n }\n } else {\n attribute.innerHTML = `${attributes[attributeSlug]}`\n }\n }\n })\n }\n\n addBackgroundColorTo(dom) {\n dom.classList.add(\"bg-light-gray\")\n }\n}\n","import ProjectSettingdropdownButtonController from \"./project_setting_dropdown_button_controller\"\n\nexport default class extends ProjectSettingdropdownButtonController {\n static values = {\n organizationId: String\n }\n\n connect() {}\n\n initialize() {\n this.projectsUnderExtractingAttributes().forEach(project => {\n const dataset = project.dataset\n this.updateProjectStatus(\n this.organizationIdValue,\n dataset.projectSettingDropdownButtonDataSpaceSlugValue,\n dataset.projectId,\n dataset.projectSettingDropdownButtonEntityIdValue\n )\n })\n this.timeoutMap = {}\n }\n\n // Polling for updates of extraction in progress files\n // Get all files that are under extraction process\n projectsUnderExtractingAttributes() {\n return [...document.querySelectorAll('tr[data-status=\"in_progress\"]')]\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"modal\", \"reExtractBtn\", \"logsContainer\"]\n\n initialize() {\n document.querySelectorAll(\".nav-tabs\").forEach(function (elem) {\n elem.querySelectorAll('[data-tw-toggle=\"tab\"]').forEach(function (item) {\n item.addEventListener(\"click\", function () {\n var tabID = item.getAttribute(\"data-tw-target\")\n var tabContents = elem.querySelectorAll(\".tab-content > .tab-pane\")\n\n var activeElem = elem.querySelector('[data-tw-toggle=\"tab\"].active')\n if (activeElem) activeElem.classList.remove(\"active\")\n\n // clear value\n for (let i = 0; i < tabContents.length; i++) {\n tabContents[i].classList.add(\"hidden\")\n tabContents[i].classList.remove(\"block\")\n }\n\n // change value\n item.classList.add(\"active\")\n document.getElementById(tabID).classList.remove(\"hidden\")\n document.getElementById(tabID).classList.add(\"block\")\n })\n })\n })\n }\n\n openPromptConfigModal(e) {\n this.modalTarget.classList.remove(\"hidden\")\n this.reExtractBtnTarget.dataset.editEntityAttributeInputFileIdParam = e.params.fileId\n this.renderLogs(e.params.getLogsUrl)\n }\n\n closePromptConfigModal() {\n this.modalTarget.classList.add(\"hidden\")\n }\n\n renderLogs(url) {\n this.logsContainerTarget.innerHTML = \"\"\n fetch(url)\n .then(response => response.json())\n .then(({ logs }) => {\n logs.forEach(log => {\n if (Array.isArray(log.log)) {\n log.log.forEach(step => {\n this.renderLogDom(step)\n })\n } else {\n this.renderLogDom(log.log)\n }\n })\n })\n }\n\n renderLogDom(step) {\n var logDom = document.createElement(\"div\")\n logDom.classList.add(\"rounded-lg\", \"bg-gray-300\", \"m-2\", \"p-5\", \"text-left\")\n Object.keys(step).forEach(key => {\n var title = document.createElement(\"p\")\n title.classList.add(\"font-bold\")\n title.innerHTML = key\n var content = document.createElement(\"p\")\n content.innerHTML = JSON.stringify(step[key])\n logDom.append(title)\n logDom.append(content)\n })\n this.logsContainerTarget.append(logDom)\n }\n\n updateSystemPrompt(e) {\n this.reExtractBtnTarget.dataset.editEntityAttributeSystemPromptParam = e.target.value\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\", \"resetInstancesCheckBox\"]\n static values = {\n confirmMessage: String\n }\n\n submit(event) {\n if (this.resetInstancesCheckBoxTarget.checked) {\n const confirmation = confirm(this.confirmMessageValue)\n if (!confirmation) event.preventDefault()\n }\n }\n}\n","/**\n * Stimulus controller that disables the form submit button when:\n * - Required fields are empty\n * - Form has not been changed (if changesRequiredValue configuration is true)\n *\n * If required_fields_input_valid_class and required_fields_input_invalid_class are provided,\n * the controller will add these classes to the input fields to indicate they are required.\n *\n * Usage:\n *\n * <%= form_with(model: @record, data: { controller: \"required-fields\", action: \"input->required-fields#validate change->required-fields#validate\" },\n * required_fields_submit_disabled_class: \"bg-gray-400\",\n * required_fields_input_valid_class: \"bg-gray-100\",\n * required_fields_input_invalid_class: \"bg-red-200\",\n * required_fields_changes_required: \"true\",\n * }) do |form| %>\n * <%= form.text_field :name, required: true, class: \"border rounded px-2 py-1\" %>\n * <%= form.text_field :email, required: true, class: \"border rounded px-2 py-1\" %>\n * <%= form.text_field :phone, class: \"border rounded px-2 py-1\" %>\n *\n * <%= form.submit \"Save\",\n * data: { required_fields_target: \"submit\",\n * enabled_classes: \"bg-blue-500 hover:bg-blue-600 cursor-pointer\",\n * disabled_classes: \"bg-gray-400 cursor-not-allowed\" },\n * disabled: true,\n * class: \"text-white px-4 py-2 rounded bg-gray-400 cursor-not-allowed\" %>\n * <% end %>\n */\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"submit\", \"field\"]\n static classes = [\"submitDisabled\", \"inputValid\", \"inputInvalid\"]\n static values = {\n changesRequired: { Boolean, default: true },\n disabled: Boolean,\n inProgressEventParams: Object\n }\n\n get requiredFields() {\n return Array.from(this.element.querySelectorAll(\"[required]\"))\n }\n\n get allRequiredFilled() {\n return this.requiredFields.every(field => field.value.trim() !== \"\")\n }\n\n get inProgress() {\n return this.requiredFields.some(field => field.value.trim() !== \"\")\n }\n\n connect() {\n this.initialFormData = this.#serializeForm()\n if (Object.keys(this.initialFormData).length === 0) {\n this.#enableSubmit()\n this.disabledValue = true\n }\n }\n\n validate() {\n if (this.disabledValue) return\n\n this.#updateInputs()\n\n if (!this.allRequiredFilled) {\n this.#disableSubmit()\n return\n }\n\n if (this.changesRequiredValue) {\n this.#handleFormChanged()\n } else {\n this.#enableSubmit()\n }\n }\n\n #serializeForm() {\n const data = new FormData(this.element)\n const serialized = {}\n for (const [key, value] of data.entries()) {\n if (key == \"authenticity_token\") {\n continue\n }\n serialized[key] = value\n }\n return serialized\n }\n\n #enableSubmit() {\n this.submitTarget.removeAttribute(\"disabled\")\n this.submitTarget.classList.remove(...this.submitDisabledClasses)\n }\n\n #disableSubmit() {\n this.submitTarget.setAttribute(\"disabled\", true)\n this.submitTarget.classList.add(...this.submitDisabledClasses)\n }\n\n #handleFormChanged() {\n const currentFormData = this.#serializeForm()\n if (JSON.stringify(currentFormData) !== JSON.stringify(this.initialFormData)) {\n this.#enableSubmit()\n } else {\n this.#disableSubmit()\n }\n }\n\n #updateInputs() {\n if (!this.hasInputValidClass || !this.hasInputInvalidClass) {\n return\n }\n\n this.requiredFields.forEach(field => {\n if (!field.value.trim()) {\n field.classList.add(...this.inputInvalidClasses)\n field.classList.remove(...this.inputValidClasses)\n } else {\n field.classList.remove(...this.inputInvalidClasses)\n field.classList.add(...this.inputValidClasses)\n }\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n organizationId: String,\n dataSpaceSlug: String,\n projectId: String\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"scrollObject\"]\n\n static values = {\n messagesContainerId: String,\n scrollWhenDomInserted: { type: Boolean, default: true },\n scrollWhenTurboRender: { type: Boolean, default: true }\n }\n\n connect() {\n this.setUpMessagesEventListener()\n }\n\n setUpMessagesEventListener() {\n if (this.scrollWhenDomInsertedValue)\n this.scrollObjectTarget.addEventListener(\"DOMNodeInserted\", () => {\n this.resetScroll(this.scrollObjectTarget)\n })\n if (this.scrollWhenTurboRenderValue)\n addEventListener(\"turbo:render\", () => {\n this.resetScroll(this.scrollObjectTarget)\n })\n this.resetScroll(this.scrollObjectTarget)\n }\n\n resetScroll(obj) {\n if (obj == null) return\n\n const height = obj.scrollHeight\n obj.scrollTop = height + 1000\n }\n}\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\", \"test\", \"resultPreviewSection\", \"searchButton\", \"loadingIcon\", \"searchIcon\"]\n\n static values = {\n isSearching: { type: Boolean, default: false }\n }\n\n connect() {\n this.isComposing = false\n\n document.addEventListener(\"turbo:render\", this.handleTurboEvents)\n document.addEventListener(\"turbo:fetch-request-error\", this.handleTurboEvents)\n document.addEventListener(\"search-records:stateChange\", this.#handleSearchRecordsStateChange)\n this.formTarget.addEventListener(\"keydown\", this.keyPress)\n this.formTarget.addEventListener(\"compositionstart\", this.#startComposition)\n this.formTarget.addEventListener(\"compositionend\", this.#endComposition)\n }\n\n disconnect() {\n document.removeEventListener(\"turbo:render\", this.handleTurboEvents)\n document.removeEventListener(\"turbo:fetch-request-error\", this.handleTurboEvents)\n document.removeEventListener(\"search-records:stateChange\", this.#handleSearchRecordsStateChange)\n this.formTarget.removeEventListener(\"keydown\", this.keyPress)\n this.formTarget.removeEventListener(\"compositionstart\", this.#startComposition)\n this.formTarget.removeEventListener(\"compositionend\", this.#endComposition)\n }\n\n #startComposition = () => {\n this.isComposing = true\n }\n\n #endComposition = () => {\n this.isComposing = false\n }\n\n keyPress = event => {\n if (event.key !== \"Enter\") return\n\n const isTextarea = event.target.tagName.toLowerCase() === \"textarea\"\n const hasModifier = event.metaKey || event.ctrlKey\n\n if (this.isComposing) {\n event.preventDefault() // Prevent form submission when composing Japanese text\n } else if (isTextarea) {\n if (hasModifier) {\n event.preventDefault()\n this.submit()\n }\n } else {\n event.preventDefault()\n this.submit()\n }\n }\n\n handleTurboEvents = () => {\n this.stopSearching()\n }\n\n #handleSearchRecordsStateChange = event => {\n if (event.detail.isSearching) {\n this.#disableSearchButton()\n } else {\n this.#enableSearchButton()\n }\n }\n\n #disableSearchButton() {\n this.searchButtonTarget.disabled = true\n }\n\n #enableSearchButton() {\n this.searchButtonTarget.disabled = false\n }\n\n startSearching() {\n this.#setSearching(true)\n this.#updateUIForSearching(true)\n this.dispatch(\"stateChange\", { detail: { isSearching: true } })\n }\n\n stopSearching() {\n this.#setSearching(false)\n this.#updateUIForSearching(false)\n this.dispatch(\"stateChange\", { detail: { isSearching: false } })\n }\n\n #setSearching(isSearching) {\n this.isSearchingValue = isSearching\n }\n\n #updateUIForSearching(isSearching) {\n if (isSearching) {\n this.searchIconTarget.classList.add(\"hidden\")\n this.loadingIconTarget.classList.remove(\"hidden\")\n this.searchButtonTarget.disabled = true\n } else {\n this.searchIconTarget.classList.remove(\"hidden\")\n this.loadingIconTarget.classList.add(\"hidden\")\n this.searchButtonTarget.disabled = false\n }\n }\n\n removeExistingDivs() {\n if (this.resultPreviewSectionTarget.getElementsByTagName(\"div\").length > 0)\n [...this.resultPreviewSectionTarget.getElementsByTagName(\"div\")].forEach(divTag => divTag.remove())\n }\n\n updateDateTimeInputStyle(e) {\n const target = e.target\n if (target.value !== \"\") {\n target.style.color = \"black\"\n } else {\n target.removeAttribute(\"style\")\n }\n }\n\n submit() {\n if (this.searchButtonTarget.disabled) return\n\n this.startSearching()\n try {\n this.formTarget.requestSubmit()\n } catch (error) {\n console.error(\"Form submission error:\", error)\n this.stopSearching()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst wordSplitor = \", \"\n\nexport default class extends Controller {\n static targets = [\n \"searchGroupSwitch\",\n \"searchFields\",\n \"booleanSelector\",\n \"dateOperatorSelector\",\n \"dateValue\",\n \"numberOperatorSelector\",\n \"numberValue\",\n \"textOperatorSelector\",\n \"textValue\",\n \"searchGroup\",\n \"textSimilarity\",\n \"timeValue\",\n \"timeOperatorSelector\",\n \"datetimeValue\",\n \"datetimeOperatorSelector\"\n ]\n static values = {\n searchGroupInfo: Object\n }\n\n connect() {\n this.initializeSearchGroup()\n this.initializeAttributeMutationObserver()\n }\n\n toggleSearchfields() {\n this.searchFieldsTarget.classList.toggle(\"hidden\")\n }\n\n initializeAttributeMutationObserver() {\n // Create a new MutationObserver instance\n const observer = new MutationObserver(mutationsList => {\n for (const mutation of mutationsList) {\n // Check if attribute modifications occurred\n if (mutation.type === \"attributes\") {\n // Handle the attribute change\n this.initializeSearchGroup()\n }\n }\n })\n\n // Configure the observer to watch for attribute changes\n const config = { attributes: true, attributeOldValue: true }\n\n // Start observing the target element\n this.searchGroupTargets.forEach(searchGroupTarget => {\n observer.observe(searchGroupTarget, config)\n })\n }\n\n initializeSearchGroup() {\n if (this.searchGroupInfoValue.is_apply === \"true\") {\n this.searchGroupSwitchTarget.checked = true\n this.searchFieldsTarget.classList.remove(\"hidden\")\n this.searchGroupInfoValue.search_conditions.forEach(searchCondition => {\n this.initializeSearchCondition(searchCondition)\n })\n } else if (this.searchGroupInfoValue.is_apply == undefined || this.searchGroupInfoValue.is_apply === \"false\") {\n this.searchGroupSwitchTarget.checked = false\n this.searchFieldsTarget.classList.add(\"hidden\")\n if (this.searchGroupInfoValue.search_conditions) {\n this.searchGroupInfoValue.search_conditions.forEach(searchCondition => {\n this.initializeSearchCondition(searchCondition)\n })\n }\n }\n }\n\n initializeSearchCondition(searchCondition) {\n Object.entries(searchCondition).forEach(([_, info]) => {\n const type = info.type === \"table\" ? info.column_type : info.type\n switch (type) {\n case \"number\":\n case \"float\":\n case \"int\":\n this.initializeNumberField(info)\n break\n case \"date\":\n this.initializeDateField(info)\n break\n case \"time\":\n this.initializeTimeField(info)\n break\n case \"datetime\":\n this.initializeDatetimeField(info)\n break\n case \"boolean\":\n this.initializeBooleanField(info)\n break\n case \"project-name\":\n case \"file-name\":\n case \"string\":\n case \"text\":\n this.initializeTextField(info)\n break\n case \"file_content_search_prompt\":\n this.initializeFileContentSearchPrompt(info)\n break\n case \"file_sentence_search_prompt\":\n this.initializeSentenceSearchPrompt(info)\n break\n case \"file_content_search_threshold\":\n this.initializeFileContentSearchThreshold(info)\n break\n }\n })\n }\n\n initializeNumberField(info) {\n const targetSelector = this.numberOperatorSelectorTargets.find(\n target =>\n target.id === `${info.slug}-operator` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.operator\n const firstTargetValue = this.numberValueTargets.find(\n target =>\n target.id === `${info.slug}-values-first` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n const secondTargetValue = this.numberValueTargets.find(\n target =>\n target.id === `${info.slug}-values-second` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n firstTargetValue.value = info.values[0]\n secondTargetValue.value = info.values[1]\n }\n\n initializeDateField(info) {\n const targetSelector = this.dateOperatorSelectorTargets.find(\n target =>\n target.id === `${info.slug}-operator` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.operator\n const firstTargetValue = this.dateValueTargets.find(\n target =>\n target.id === `${info.slug}-values-first` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n const secondTargetValue = this.dateValueTargets.find(\n target =>\n target.id === `${info.slug}-values-second` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n firstTargetValue.value = info.values[0]\n secondTargetValue.value = info.values[1]\n this.initializeDateTimeInputStyle()\n }\n\n initializeTimeField(info) {\n const targetSelector = this.timeOperatorSelectorTargets.find(\n target =>\n target.id === `${info.slug}-operator` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.operator\n const firstTargetValue = this.timeValueTargets.find(\n target =>\n target.id === `${info.slug}-values-first` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n const secondTargetValue = this.timeValueTargets.find(\n target =>\n target.id === `${info.slug}-values-second` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n firstTargetValue.value = info.values[0]\n secondTargetValue.value = info.values[1]\n this.initializeDateTimeInputStyle()\n }\n\n initializeDatetimeField(info) {\n const targetSelector = this.datetimeOperatorSelectorTargets.find(\n target =>\n target.id === `${info.slug}-operator` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.operator\n const firstTargetValue = this.datetimeValueTargets.find(\n target =>\n target.id === `${info.slug}-values-first` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n const secondTargetValue = this.datetimeValueTargets.find(\n target =>\n target.id === `${info.slug}-values-second` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n firstTargetValue.value = info.values[0]\n secondTargetValue.value = info.values[1]\n this.initializeDateTimeInputStyle()\n }\n\n initializeDateTimeInputStyle() {\n this.dateValueTargets.forEach(dateValueTarget => {\n if (dateValueTarget.value !== \"\") {\n dateValueTarget.style.color = \"black\"\n } else {\n dateValueTarget.removeAttribute(\"style\")\n }\n })\n }\n\n initializeBooleanField(info) {\n const targetSelector = this.booleanSelectorTargets.find(\n target =>\n target.id === `${info.slug}-value` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.value\n }\n\n initializeTextField(info) {\n const targetSelector = this.textOperatorSelectorTargets.find(\n target =>\n target.id === `${info.slug}-operator` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSelector.value = info.operator\n const targetValue = this.textValueTargets.find(\n target =>\n target.id === `${info.slug}-value` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetValue.value = info.value\n if (info.similarity) {\n const targetSimilarity = this.textSimilarityTargets.find(\n target =>\n target.id === `${info.slug}-similarity` &&\n (!info.column_name || info.column_name === target.dataset.columnName)\n )\n targetSimilarity.parentElement.classList.remove(\"hidden\")\n targetSimilarity.value = info.similarity\n }\n }\n\n initializeFileContentSearchPrompt(info) {\n const targetValue = this.textValueTargets.find(\n target =>\n target.id === `${info.slug}-value` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n if (targetValue) targetValue.value = info.value\n }\n\n initializeSentenceSearchPrompt(info) {\n const targetValue = this.textValueTargets.find(\n target =>\n target.id === `${info.slug}-value` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n if (targetValue) targetValue.value = info.value\n }\n\n initializeFileContentSearchThreshold(info) {\n const targetValue = this.numberValueTargets.find(\n target =>\n target.id === `${info.slug}-value` && (!info.column_name || info.column_name === target.dataset.columnName)\n )\n if (targetValue) targetValue.value = info.value\n }\n\n numberInputValidate(e) {\n if (!e.target.max && !e.target.min) return\n // Check if new vlaue is bigger than max\n if (e.target.max && e.target.value > e.target.max) e.target.value = e.target.max\n // Check if new vlaue is less than max\n if (e.target.min && e.target.value < e.target.min) e.target.value = e.target.min\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nconst displayInitial = \"block !important\"\nexport default class extends Controller {\n static targets = [\"attributeSelector\", \"weightRange\", \"attributeType\", \"similaritySearch\", \"tableColumnSelect\"]\n\n connect() {\n this.initializeWeightRange()\n this.initializeAttributeType()\n this.initializeSimilaritySearch()\n }\n\n attributeSelectorChagned(event) {\n this.showWeightRangeByAttribute(event)\n this.showSimilaritySearch(event)\n this.toggleTableColumnSelect(event)\n this.updateAttributeType(event)\n }\n\n tableColumnSelectChagned(event) {\n this.updateAttributeType(event)\n }\n\n initializeWeightRange() {\n const selectedOptionAttributeType = [...this.attributeSelectorTarget.options].find(option => option.selected)\n .dataset.attributeType\n if (!this.hasSimilaritySearchTarget) return\n\n const isSimilaritySearch = this.similaritySearchTarget.checked\n if (this.isNumericType(selectedOptionAttributeType) || isSimilaritySearch) {\n this.weightRangeTarget.classList.remove(\"hidden\")\n this.weightRangeTarget.required = true\n } else {\n this.weightRangeTarget.classList.add(\"hidden\")\n this.weightRangeTarget.required = false\n }\n }\n\n isNumericType(type) {\n return [\"number\", \"float\", \"int\"].includes(type)\n }\n\n isTableType(type) {\n return type === \"table\"\n }\n\n initializeSimilaritySearch() {\n const selectedOptionAttributeType = [...this.attributeSelectorTarget.options].find(option => option.selected)\n .dataset.attributeType\n if (!this.hasSimilaritySearchTarget) return\n\n if (selectedOptionAttributeType !== \"string\") {\n this.similaritySearchTarget.classList.add(\"hidden\")\n } else {\n this.similaritySearchTarget.classList.remove(\"hidden\")\n }\n }\n\n initializeAttributeType() {\n let selectedOptionAttributeType = [...this.attributeSelectorTarget.options].find(option => option.selected).dataset\n .attributeType\n\n if (!selectedOptionAttributeType) return\n\n if (selectedOptionAttributeType === \"table\") {\n const sibling = this.attributeSelectorTarget.nextElementSibling\n selectedOptionAttributeType = sibling.options[sibling.selectedIndex].dataset.attributeType\n }\n\n this.attributeTypeTarget.textContent =\n selectedOptionAttributeType[0].toUpperCase() + selectedOptionAttributeType.slice(1).toLowerCase()\n }\n\n showWeightRangeByAttribute(event) {\n const attributeType = event.target.options[event.target.selectedIndex].dataset.attributeType\n if (!this.hasSimilaritySearchTarget) return\n\n const isSimilaritySearch = this.similaritySearchTarget.checked\n this.toggleWeightRange(this.isNumericType(attributeType) || isSimilaritySearch)\n }\n\n showWeightRangeBySimilarityCheck(event) {\n this.toggleWeightRange(event.target.checked)\n }\n\n toggleWeightRange(isShown) {\n if (isShown) {\n this.weightRangeTarget.classList.remove(\"hidden\")\n this.weightRangeTarget.required = true\n } else {\n this.weightRangeTarget.classList.add(\"hidden\")\n this.weightRangeTarget.required = false\n }\n }\n\n toggleTableColumnSelect(event) {\n this.tableColumnSelectTarget.innerHTML = \"\"\n const { attributeType, tableColumns } = event.target.options[event.target.selectedIndex].dataset\n\n if (this.isTableType(attributeType)) {\n const parsedTableColumns = JSON.parse(tableColumns)\n this.tableColumnSelectTarget.classList.remove(\"hidden\")\n this.tableColumnSelectTarget.required = true\n\n parsedTableColumns.forEach(tableColumn => {\n const option = new Option(tableColumn.name)\n option.dataset.attributeType = tableColumn.type_name\n this.tableColumnSelectTarget.add(option)\n })\n\n return\n }\n\n this.tableColumnSelectTarget.classList.add(\"hidden\")\n this.tableColumnSelectTarget.required = false\n }\n\n showSimilaritySearch(event) {\n if (!this.hasSimilaritySearchTarget) return\n\n const attributeType = event.target.options[event.target.selectedIndex].dataset.attributeType\n if (attributeType !== \"string\") {\n this.similaritySearchTarget.classList.add(\"hidden\")\n } else {\n this.similaritySearchTarget.classList.remove(\"hidden\")\n }\n }\n\n updateAttributeType(event) {\n let attributeType = event.target.options[event.target.selectedIndex].dataset.attributeType\n\n if (!attributeType) return\n\n if (attributeType === \"table\") {\n const sibling = event.target.nextElementSibling\n attributeType = sibling.options[sibling.selectedIndex || 0].dataset.attributeType\n }\n\n this.attributeTypeTarget.textContent = attributeType[0].toUpperCase() + attributeType.slice(1).toLowerCase()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"operatorSelector\", \"minValue\", \"maxValue\"]\n\n connect() {\n this.initialMiniValueInput()\n }\n\n initialMiniValueInput() {\n this.toggleMinValueInput(this.operatorSelectorTarget.value)\n this.updateInputStyle(this.operatorSelectorTarget.value)\n }\n\n operatorSelectorHandler(e) {\n this.toggleMinValueInput(e.target.value)\n this.updateInputStyle(e.target.value)\n }\n\n toggleMinValueInput(operator) {\n if (operator === \"~\") {\n this.minValueTarget.classList.remove(\"hidden\")\n } else {\n this.minValueTarget.classList.add(\"hidden\")\n this.minValueTarget.value = \"\"\n }\n }\n\n updateInputStyle(operator) {\n if (operator === \"~\") {\n this.minValueTarget.classList.remove(\"hidden\")\n // Make max value input full width\n this.maxValueTarget.classList.add(\"w-full\")\n } else {\n this.minValueTarget.classList.add(\"hidden\")\n // Make max value input width 16 rem\n this.maxValueTarget.classList.remove(\"w-full\")\n this.minValueTarget.value = \"\"\n }\n }\n\n inputValidation(e) {\n var target = e.target\n if (\n target === this.minValueTarget &&\n this.maxValueTarget.value !== \"\" &&\n parseFloat(target.value) > parseFloat(this.maxValueTarget.value)\n ) {\n target.value = this.maxValueTarget.value\n } else if (\n target === this.maxValueTarget &&\n this.minValueTarget.value !== \"\" &&\n parseFloat(target.value) < parseFloat(this.minValueTarget.value)\n ) {\n target.value = this.minValueTarget.value\n }\n }\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","import { Controller } from \"@hotwired/stimulus\"\nimport debounce from \"lodash/debounce\"\n\nconst wordSplitor = \", \"\nexport default class extends Controller {\n static targets = [\n \"myDropdown\",\n \"textInput\",\n \"textOption\",\n \"noTextOption\",\n \"similarityTextArea\",\n \"textOperatorSelector\"\n ]\n static values = {\n organizationSlug: String,\n entityAttributeSlug: String,\n entityAttributeColumnName: String,\n mutipleSelection: Boolean,\n isSimilaritySearch: Boolean,\n dataSpaceSlug: String\n }\n\n initialize() {\n this.initializeSimilarityField()\n }\n\n connect() {\n this.addHideDropdownEvent()\n this.debouncedGetAutoCompleteOptions = debounce(this.getAutoCompleteOptions.bind(this), 200)\n }\n\n addHideDropdownEvent() {\n document.body.addEventListener(\"click\", e => {\n const target = e.target\n if (target === this.textInputTarget || this.textOptionTargets.includes(target)) return\n\n this.hideDropDown()\n })\n }\n\n hideDropDown() {\n this.myDropdownTarget.classList.add(\"hidden\")\n }\n\n getSuggestions() {\n this.debouncedGetAutoCompleteOptions()\n }\n\n getAutoCompleteOptions() {\n if (this.textInputTarget.value.length > 0) {\n fetch(\n `/organizations/${this.organizationSlugValue}/data_spaces/${this.dataSpaceSlugValue}/search_bar/string_type_search_field_options?entity_attribute_slug=${this.entityAttributeSlugValue}&table_column=${this.entityAttributeColumnNameValue}&keyword=${this.textInputTarget.value}`\n )\n .then(response => response.json())\n .then(({ options }) => {\n this.myDropdownTarget\n .querySelectorAll('[data-search-group-string-type-search-field-target=\"textOption\"]')\n .forEach(el => el.remove())\n if (options.length > 0) {\n this.noTextOptionTarget.classList.add(\"hidden\")\n options.forEach(option => this.createTextOption(option))\n } else {\n this.noTextOptionTarget.classList.remove(\"hidden\")\n }\n\n // after debounce delay, check if user have backspaced 0 char\n if (this.textInputTarget.value.length > 0) {\n this.myDropdownTarget.classList.remove(\"hidden\")\n } else {\n this.hideDropDown()\n }\n })\n } else {\n this.hideDropDown()\n }\n }\n\n createTextOption(optionName) {\n var li = document.createElement(\"li\")\n var span = document.createElement(\"span\")\n li.dataset.searchGroupStringTypeSearchFieldTarget = \"textOption\"\n li.dataset.action = this.liOptionAction()\n li.classList.add(\"w-full\", \"px-5\", \"py-2\")\n span.appendChild(document.createTextNode(optionName))\n li.appendChild(span)\n this.myDropdownTarget.appendChild(li)\n }\n\n liOptionAction() {\n return this.mutipleSelectionValue\n ? \"click->search-group-string-type-search-field#fillTextInput\"\n : \"click->search-group-string-type-search-field#overridenTextInput\"\n }\n\n fillTextInput(event) {\n if (this.textInputTarget.value) {\n this.textInputTarget.value = this.textInputTarget.value + wordSplitor + event.target.textContent\n } else {\n this.textInputTarget.value = event.target.textContent\n }\n this.textInputTarget.dispatchEvent(new Event(\"change\"))\n this.hideDropDown()\n }\n\n overridenTextInput(event) {\n this.textInputTarget.value = event.target.textContent\n this.textInputTarget.dispatchEvent(new Event(\"change\"))\n this.hideDropDown()\n }\n\n expandTextAreaHeight(e) {\n e.target.style.height = \"100px\"\n }\n\n condenseTextAreaHeight(e) {\n e.target.style.height = \"30px\"\n }\n\n toggleSimilarityTextArea(e) {\n if (this.similarityTextAreaTargets.length === 0) return\n\n if (e.target.value === \"include\") {\n this.similarityTextAreaTarget.classList.remove(\"hidden\")\n } else {\n this.similarityTextAreaTarget.classList.add(\"hidden\")\n }\n }\n\n initializeSimilarityField() {\n if (this.similarityTextAreaTargets.length === 0) return\n\n if (this.textOperatorSelectorTarget.value === \"include\") {\n this.similarityTextAreaTarget.classList.remove(\"hidden\")\n }\n }\n}\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"semanticSearch\",\n \"searchRecords\",\n \"wrapper\",\n \"form\",\n \"textarea\",\n \"submitButton\",\n \"infoBar\",\n \"sendIcon\",\n \"loadingIcon\"\n ]\n\n static values = {\n isSearching: { type: Boolean, default: false },\n isFocused: { type: Boolean, default: false }\n }\n\n connect() {\n this.isComposing = false\n\n this.textareaTarget.addEventListener(\"keydown\", this.keyPress)\n this.textareaTarget.addEventListener(\"compositionstart\", this.startComposition)\n this.textareaTarget.addEventListener(\"compositionend\", this.endComposition)\n document.addEventListener(\"turbo:render\", this.handleTurboEvents)\n document.addEventListener(\"turbo:fetch-request-error\", this.handleTurboEvents)\n document.addEventListener(\"search-condition:stateChange\", this.#handleSearchConditionStateChange)\n }\n\n disconnect() {\n this.textareaTarget.removeEventListener(\"keydown\", this.keyPress)\n this.textareaTarget.removeEventListener(\"compositionstart\", this.startComposition)\n this.textareaTarget.removeEventListener(\"compositionend\", this.endComposition)\n document.removeEventListener(\"turbo:render\", this.handleTurboEvents)\n document.removeEventListener(\"turbo:fetch-request-error\", this.handleTurboEvents)\n document.removeEventListener(\"search-condition:stateChange\", this.#handleSearchConditionStateChange)\n }\n\n handleTurboEvents = () => {\n this.stopSearching()\n }\n\n keyPress = e => {\n if (e.key !== \"Enter\") return\n\n if (this.isComposing) {\n e.preventDefault() // Prevent form submission when composing Japanese text\n } else if (e.shiftKey) {\n // Allow default behavior, which inserts a new line\n } else if (!this.isSearchingValue) {\n e.preventDefault()\n this.submit()\n }\n }\n\n startComposition = () => {\n this.isComposing = true\n }\n\n endComposition = () => {\n this.isComposing = false\n }\n\n #handleSearchConditionStateChange = event => {\n if (event.detail.isSearching) {\n this.#disableSubmitButton()\n } else {\n this.#enableSubmitButton()\n }\n }\n\n #disableSubmitButton() {\n this.submitButtonTarget.disabled = true\n }\n\n #enableSubmitButton() {\n this.submitButtonTarget.disabled = false\n }\n\n showSearchRecords() {\n this.#setFocused(true)\n this.semanticSearchTarget.classList.add(\"open\")\n this.searchRecordsTarget.classList.remove(\"hidden\")\n this.wrapperTarget.classList.add(\"bg-white\")\n this.dispatch(\"show\")\n }\n\n hideSearchRecords() {\n this.#setFocused(false)\n this.dispatch(\"close\")\n setTimeout(() => {\n this.semanticSearchTarget.classList.remove(\"open\")\n this.searchRecordsTarget.classList.add(\"hidden\")\n this.wrapperTarget.classList.remove(\"bg-white\")\n }, 200)\n }\n\n #setFocused(isFocused) {\n this.isFocusedValue = isFocused\n }\n\n startSearching() {\n this.#setSearching(true)\n this.#updateUIForSearching(true)\n this.dispatch(\"stateChange\", { detail: { isSearching: true } })\n }\n\n stopSearching() {\n this.#setSearching(false)\n this.#updateUIForSearching(false)\n this.dispatch(\"stateChange\", { detail: { isSearching: false } })\n }\n\n #setSearching(isSearching) {\n this.isSearchingValue = isSearching\n }\n\n #updateUIForSearching(isSearching) {\n if (isSearching) {\n this.infoBarTarget.classList.remove(\"hidden\")\n this.infoBarTarget.classList.add(\"flex\")\n this.sendIconTarget.classList.add(\"hidden\")\n this.loadingIconTarget.classList.remove(\"hidden\")\n this.submitButtonTarget.disabled = true\n } else {\n this.infoBarTarget.classList.add(\"hidden\")\n this.infoBarTarget.classList.remove(\"flex\")\n this.sendIconTarget.classList.remove(\"hidden\")\n this.loadingIconTarget.classList.add(\"hidden\")\n this.submitButtonTarget.disabled = false\n }\n }\n\n submit(e) {\n e?.preventDefault()\n\n this.startSearching()\n try {\n this.formTarget.requestSubmit()\n } catch (error) {\n console.error(\"Form submission error:\", error)\n this.stopSearching()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"labelCell\", \"valueCell\"]\n\n connect() {\n this.updateWidths()\n this.boundResizeHandler = this.debounceUpdateWidths.bind(this, 300)\n this.boundSearchRecordsHandler = this.debounceUpdateWidths.bind(this, 10)\n window.addEventListener(\"resize\", this.boundResizeHandler)\n document.addEventListener(\"search-records:show\", this.boundSearchRecordsHandler)\n }\n\n disconnect() {\n window.removeEventListener(\"resize\", this.boundResizeHandler)\n document.removeEventListener(\"search-records:show\", this.boundSearchRecordsHandler)\n }\n\n updateWidths() {\n const maxLabelWidth = Math.max(...this.labelCellTargets.map(el => el.offsetWidth))\n\n this.labelCellTargets.forEach(el => (el.style.width = `${maxLabelWidth}px`))\n this.valueCellTargets.forEach(el => (el.style.width = `calc(100% - ${maxLabelWidth + 4}px)`))\n }\n\n debounceUpdateWidths(timeout) {\n clearTimeout(this.resizeTimer)\n this.resizeTimer = setTimeout(() => {\n this.updateWidths()\n }, timeout)\n }\n\n submitSearch(event) {\n this.element.querySelector(`.search-records-item-form-${event.params.formId}`).requestSubmit()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"searchResultInGrid\", \"searchResultInList\"]\n static values = {\n listMode: String\n }\n\n connect() {\n if (this.listModeValue === \"grid\") this.displayInGrid()\n if (this.listModeValue === \"list\") this.displayInList()\n }\n\n displayInGrid() {\n if (this.searchResultInGridTargets.length > 0) this.searchResultInGridTarget.classList.remove(\"hidden\")\n if (this.searchResultInListTargets.length > 0) this.searchResultInListTarget.classList.add(\"hidden\")\n }\n\n displayInList() {\n if (this.searchResultInGridTargets.length > 0) this.searchResultInGridTarget.classList.add(\"hidden\")\n if (this.searchResultInListTargets.length > 0) this.searchResultInListTarget.classList.remove(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nconst _Dialog = class _Dialog extends Controller {\n initialize() {\n this.forceClose = this.forceClose.bind(this);\n }\n connect() {\n this.openValue && this.open(), document.addEventListener(\"turbo:before-render\", this.forceClose);\n }\n disconnect() {\n document.removeEventListener(\"turbo:before-render\", this.forceClose);\n }\n open() {\n this.dialogTarget.showModal();\n }\n close() {\n this.dialogTarget.setAttribute(\"closing\", \"\"), Promise.all(this.dialogTarget.getAnimations().map((animation) => animation.finished)).then(() => {\n this.dialogTarget.removeAttribute(\"closing\"), this.dialogTarget.close();\n });\n }\n backdropClose(event) {\n event.target === this.dialogTarget && this.close();\n }\n forceClose() {\n this.dialogTarget.close();\n }\n};\n_Dialog.targets = [\"dialog\"], _Dialog.values = {\n open: {\n type: Boolean,\n default: !1\n }\n};\nlet Dialog = _Dialog;\nexport {\n Dialog as default\n};\n","import Dialog from \"@stimulus-components/dialog\"\n\n/**\n * SelectableDialogController is a controller that extends the Dialog component.\n * It updates the dialog content that can be opened based on the selected option\n * from a select dropdown.\n *\n * @example\n * \n * \n * Template 1\n * Template 2\n * \n * selectable-dialog#backdropClose\">\n * \n * Content for Template 1\n * \n * \n * Content for Template 2\n * \n * \n */\n\nexport default class extends Dialog {\n static targets = [\"select\"]\n\n connect() {\n super.connect()\n this.updateDialog()\n }\n\n updateDialog(event) {\n const templateKey = this.selectTarget.options[this.selectTarget.selectedIndex].dataset.dialogTemplate\n const template = this.element.querySelector(`template[data-template-key=\"${templateKey}\"]`)\n this.dialogTarget.innerHTML = template.innerHTML\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * A Stimulus controller that updates an input field based on the selected option.\n *\n * @usage\n *\n * \n * \n * Text\n * Textarea\n * \n * \n * \n * \n * \n * \n * \n * \n * \n */\nexport default class extends Controller {\n static targets = [\"container\", \"select\", \"template\"]\n\n connect() {\n this.updateInputField()\n }\n\n updateInputField() {\n const templateId = this.selectTarget[this.selectTarget.selectedIndex].dataset.selectableInputTemplate\n const template = this.templateTargets.find(template => template.dataset.templateId === templateId)\n const input = template.content.cloneNode(true).firstElementChild\n this.containerTarget.innerHTML = \"\"\n this.containerTarget.appendChild(input)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * Controller that manages the behavior of the sidebar, such as handling the opening and closing of the sidebar,\n * switching between tabs, and updating the sidebar state on the server.\n *\n * The sidebar tabs can be animated when they lose focus if the have dirty state (e.x. unsaved changes).\n * A dirty state can be indicated by calling the `setCurrentTabDirty` methods from another controller or through controller events.\n * The animation can be stopped by calling the `setCurrentTabClean` method. For example:\n *\n * sidebar#setCurrentTabDirty remoteFormController:submit->sidebar#setCurrentTabClean\">\n * \n * \n */\n\nexport default class extends Controller {\n static targets = [\"tabButton\", \"tabContent\"]\n static values = { currentTab: String }\n\n get currentTabButton() {\n return this.tabButtonTargets.find(button => button.dataset.tab === this.currentTabValue)\n }\n\n get sidebarStatus() {\n if (!this.body.classList.contains(\"sidebar-open\")) return \"closed\"\n\n const currentTabButton = this.currentTabButton\n return currentTabButton ? currentTabButton.dataset.tab : \"closed\"\n }\n\n connect() {\n this.body = document.getElementById(\"body\")\n }\n\n setCurrentTabDirty() {\n this.currentTabButton.dataset.tabIsDirty = \"true\"\n }\n\n setCurrentTabClean() {\n this.currentTabButton.dataset.tabIsDirty = \"false\"\n }\n\n toggleTab(event) {\n const selectedTab = event.currentTarget.dataset.tab\n const currentTab = this.sidebarStatus\n\n if (selectedTab === currentTab) {\n this.closeSidebar()\n } else {\n this.openTab(selectedTab)\n }\n }\n\n openTab(tab) {\n // Open sidebar\n this.body.classList.add(\"sidebar-open\")\n this.currentTabValue = tab\n\n // Show the corresponding tab content and activate the button\n this.tabContentTargets.forEach(content => {\n content.classList.toggle(\"hidden\", content.dataset.tab !== tab)\n })\n\n this.tabButtonTargets.forEach(button => {\n button.classList.toggle(\"unselected-side-bar-btn\", button.dataset.tab !== tab)\n if (button.dataset.tab !== tab && this.#tabIsDirty(button)) {\n this.#toggleAnimation(button, true)\n } else {\n this.#toggleAnimation(button, false)\n }\n })\n\n this.#updateSidebarState(tab)\n }\n\n closeSidebar() {\n this.body.classList.remove(\"sidebar-open\")\n\n // Hide all tab content and deactivate all buttons\n this.tabContentTargets.forEach(content => content.classList.add(\"hidden\"))\n this.tabButtonTargets.forEach(button => {\n button.classList.add(\"unselected-side-bar-btn\")\n if (this.#tabIsDirty(button)) {\n this.#toggleAnimation(button, true)\n }\n })\n\n this.#updateSidebarState(\"closed\")\n }\n\n #updateSidebarState(state) {\n const formData = new FormData()\n const csrfToken = document.querySelector(\"meta[name=csrf-token]\").content\n formData.set(\"authenticity_token\", csrfToken)\n formData.set(\"user[sidebar_state]\", state)\n\n fetch(\"/users\", {\n method: \"PATCH\",\n redirect: \"manual\",\n body: formData\n })\n }\n\n #toggleAnimation(tabButton, enable) {\n if (enable) {\n tabButton.classList.add(\"text-violet-300\", \"bg-violet-10\")\n tabButton.children[0].classList.add(\"animate-pulse-full\")\n } else {\n tabButton.classList.remove(\"text-violet-300\", \"bg-violet-10\")\n tabButton.children[0].classList.remove(\"animate-pulse-full\")\n }\n }\n\n #tabIsDirty(tabButton) {\n return tabButton.dataset.tabIsDirty === \"true\" ? true : false\n }\n}\n","/**!\n * Sortable 1.15.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = parent.parentNode);\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import { Controller as n } from \"@hotwired/stimulus\";\nimport s from \"sortablejs\";\nimport { patch as o } from \"@rails/request.js\";\nclass r extends n {\n initialize() {\n this.onUpdate = this.onUpdate.bind(this);\n }\n connect() {\n this.sortable = new s(this.element, {\n ...this.defaultOptions,\n ...this.options\n });\n }\n disconnect() {\n this.sortable.destroy(), this.sortable = void 0;\n }\n async onUpdate({ item: t, newIndex: a }) {\n if (!t.dataset.sortableUpdateUrl)\n return;\n const i = this.resourceNameValue ? `${this.resourceNameValue}[${this.paramNameValue}]` : this.paramNameValue, e = new FormData();\n return e.append(i, a + 1), await o(t.dataset.sortableUpdateUrl, { body: e, responseKind: this.responseKindValue });\n }\n get options() {\n return {\n animation: this.animationValue || this.defaultOptions.animation || 150,\n handle: this.handleValue || this.defaultOptions.handle || void 0,\n onUpdate: this.onUpdate\n };\n }\n get defaultOptions() {\n return {};\n }\n}\nr.values = {\n resourceName: String,\n paramName: {\n type: String,\n default: \"position\"\n },\n responseKind: {\n type: String,\n default: \"html\"\n },\n animation: Number,\n handle: String\n};\nexport {\n r as default\n};\n","import Sortable from \"stimulus-sortable\"\nimport { patch } from \"@rails/request.js\"\n\nexport default class extends Sortable {\n static targets = [\"position\"]\n\n connect() {\n super.connect()\n }\n\n // We override the onUpdate method to send the correct position that get from\n // the data-position attribute of the draggedOverElement instead of the index of the element.\n // Because the index of element may not match with the position data in database.\n // Right now this approach is quite hacky, But stimulus-sortable doesn't extensible enough to do this.\n // We may replace it with a better solution in the future.\n async onUpdate({ item }) {\n this.updatePositions()\n\n if (!this.draggedOverElement || !this.draggedOverElement.dataset.position) {\n return\n }\n\n // Because in the source code of stimulus-sortable, the newIndex will plus 1.\n // See: https://github.com/stimulus-components/stimulus-sortable/blob/6a6b8a68f0ac942c9ba12bfabb04e703e1043e77/src/index.ts#L51\n // So we need to minus 1 to send correct position.\n const newIndex = this.draggedOverElement.dataset.position - 1\n\n // Get the URL from the dataset of the dragged item\n const url = item.dataset.sortableUpdateUrl\n\n this.sortable.option(\"disabled\", true)\n\n try {\n const response = await patch(url, {\n body: JSON.stringify({ position: newIndex }),\n responseKind: \"json\", // Expecting JSON in the response\n headers: {\n \"Content-Type\": \"application/json\", // Ensuring the content is JSON\n Accept: \"application/json\" // Expecting JSON response\n }\n })\n\n if (!response.ok) {\n console.error(\"Failed to update position:\", response.statusText)\n }\n } catch (error) {\n console.error(\"Error updating position:\", error)\n } finally {\n this.sortable.option(\"disabled\", false)\n }\n }\n\n updatePositions() {\n this.positionTargets.forEach((element, index) => {\n element.dataset.position = index + 1\n })\n }\n\n get defaultOptions() {\n return {\n onMove: event => {\n this.draggedOverElement = event.related\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"modal\"]\n\n open() {\n this.modalTarget.classList.remove(\"hidden\")\n }\n\n close() {\n this.modalTarget.classList.add(\"hidden\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\"\n\nexport default class extends Controller {\n static targets = [\"table\", \"column\", \"icon\"]\n static values = {\n action: { String, default: \"replace\" },\n frame: { String, default: \"_top\" }\n }\n\n connect() {\n this.actionValue ||= this.constructor.values.action.default\n this.frameValue ||= this.constructor.values.frame.default\n }\n\n sortAscending(e) {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n searchParams.set(\"order\", \"asc\")\n const th = e.target.closest(\"th\")\n const slug = th.dataset.columnSlug\n searchParams.set(\"column_slug\", slug)\n url.search = searchParams.toString()\n Turbo.visit(url.toString(), { action: this.actionValue, frame: this.frameValue })\n }\n\n sortDescending(e) {\n let url = new URL(window.location.href)\n let searchParams = url.searchParams\n searchParams.set(\"order\", \"desc\")\n const th = e.target.closest(\"th\")\n const slug = th.dataset.columnSlug\n searchParams.set(\"column_slug\", slug)\n url.search = searchParams.toString()\n Turbo.visit(url.toString(), { action: this.actionValue, frame: this.frameValue })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"password\"]\n\n togglePassword(e) {\n if (this.passwordTarget.type === \"password\") {\n this.passwordTarget.type = \"text\"\n e.target.querySelector(\"i\").classList.remove(\"mdi-eye-outline\")\n e.target.querySelector(\"i\").classList.add(\"mdi-eye-off-outline\")\n } else {\n this.passwordTarget.type = \"password\"\n e.target.querySelector(\"i\").classList.add(\"mdi-eye-outline\")\n e.target.querySelector(\"i\").classList.remove(\"mdi-eye-off-outline\")\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * A Stimulus controller that trims leading and trailing spaces from an input field.\n *\n * @usage\n *\n * trim#trim\">\n */\n\nexport default class extends Controller {\n trim(event) {\n event.target.value = event.target.value.trim()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n // Dom Observers to trigger document events when one of the turbo frame content changes\n const turboFrameListenersContainer = this.element\n\n // we add a dom observer, when the status_observer content changes, we fire an event\n this.observer = new MutationObserver((mutationsList, observer) => {\n for (let mutation of mutationsList) {\n if (\n mutation.type === \"childList\" ||\n (mutation.type === \"attributes\" && mutation.attributeName === \"data-payload\")\n ) {\n const extractionStatusElement = document.getElementById(\"file-attributes-status-observer\")\n const payload = JSON.parse(extractionStatusElement.dataset.payload)\n\n document.dispatchEvent(\n new CustomEvent(\"file-attribute-status-change\", {\n detail: payload\n })\n )\n }\n }\n })\n\n // Start observing for changes in extractionStatusElement\n this.observer.observe(turboFrameListenersContainer, { childList: true, subtree: true, attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { showing: Boolean }\n\n connect() {\n this.bindEscapeEvent()\n }\n\n close() {\n this.showingValue = false\n this.element.classList.add(\"hidden\")\n }\n\n bindEscapeEvent() {\n document.addEventListener(\"keydown\", event => {\n if (!this.showingValue) return\n\n if (event.key === \"Escape\") {\n this.close()\n }\n })\n }\n}\n","/* eslint-disable no-undef */\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n text: String,\n locale: String\n }\n\n connect() {\n if (!this.textValue || !this.localeValue) {\n console.error(\"textValue or localeValue is not defined\")\n return\n }\n\n const textLength = this.textValue.length\n this.element.classList.add(\"typing-animation\")\n this.element.setAttribute(\"data-text\", this.textValue)\n document.documentElement.style.setProperty(\"--typing-steps\", textLength)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n/**\n * ModalController handles the opening of modals related to vue apps\n * by setting the payload data and fire an event.\n */\nconst vueModalIds = [\"attributesExtractionConfirmationModal\", \"attributesExtractionTicketApprovalModal\"]\n\nexport default class extends Controller {\n /**\n * Opens the modal by dispatching an event with the modalId and payload\n */\n open(event) {\n if (event.target.disabled || !event?.params?.modalId || !vueModalIds.includes(event.params.modalId)) return\n\n const { modalId, payload } = event.params\n\n document.dispatchEvent(\n new CustomEvent(\"vueModal:\" + modalId, {\n detail: { modalId, payload }\n })\n )\n }\n}\n","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","// src/index.ts\nvar CONTROLLER_FILENAME_REGEX = /^(?:.*?(?:controllers|components)\\/|\\.?\\.\\/)?(.+)(?:[/_-]controller\\..+?)$/;\nfunction registerControllers(application, controllerModules) {\n application.load(definitionsFromGlob(controllerModules));\n}\nfunction definitionsFromGlob(controllerModules) {\n return Object.entries(controllerModules).map(definitionFromEntry).filter((value) => value);\n}\nfunction definitionFromEntry([name, controllerModule]) {\n var _a;\n const identifier = identifierForGlobKey(name);\n const controllerConstructor = (_a = controllerModule.default) != null ? _a : controllerModule;\n if (identifier && typeof controllerConstructor === \"function\")\n return { identifier, controllerConstructor };\n}\nfunction identifierForGlobKey(key) {\n const logicalName = (key.match(CONTROLLER_FILENAME_REGEX) || [])[1];\n if (logicalName)\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n}\nexport {\n CONTROLLER_FILENAME_REGEX,\n definitionsFromGlob,\n identifierForGlobKey,\n registerControllers\n};\n","/*\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 { useTransition } from \"stimulus-use\";\nconst _Notification = class _Notification extends Controller {\n initialize() {\n this.hide = this.hide.bind(this);\n }\n connect() {\n useTransition(this), this.hiddenValue === !1 && this.show();\n }\n show() {\n this.enter(), this.timeout = setTimeout(this.hide, this.delayValue);\n }\n async hide() {\n this.timeout && clearTimeout(this.timeout), await this.leave(), this.element.remove();\n }\n};\n_Notification.values = {\n delay: {\n type: Number,\n default: 3e3\n },\n hidden: {\n type: Boolean,\n default: !1\n }\n};\nlet Notification = _Notification;\nexport {\n Notification as default\n};\n","import { application } from \"./application\"\nimport { registerControllers } from \"stimulus-vite-helpers\"\nimport Notification from \"@stimulus-components/notification\"\n\nconst controllers = import.meta.glob(\"./**/*_controller.js\", { eager: true })\nregisterControllers(application, controllers)\napplication.register(\"notification\", Notification)\n","\n \n\n\n\n","\n \n\n\n\n","import { defineStore } from \"pinia\"\n\nexport const usePromptSettingStore = defineStore(\"promptSetting\", {\n state: () => ({\n id: \"\",\n name: \"\",\n active: false,\n isUsedInTicket: false,\n isNewAttributePage: false,\n returnUrl: \"\",\n sourceAttribute: {},\n organizationSlug: \"\",\n dataSpaceSlug: \"\",\n sourceFileExtensions: [],\n sourceSearchConditions: {},\n sourceProjectIdToName: {},\n sourceAnalyzePositions: [],\n sourceAnalyzeModels: [],\n sourceAttributeTypes: [],\n projectAttributes: [],\n fileAttributes: [],\n currentTab: \"FileFilter\",\n fileExtensionGroup: {\n Image: [\"png\", \"jpg\", \"tif\"],\n PDF: [\"pdf\"],\n Model: [\"rvt\"]\n },\n dataTypeGroup: {\n image: {\n fileExtensionGroups: [\"Image\", \"PDF\"]\n },\n model: {\n fileExtensionGroups: [\"Model\"]\n }\n },\n selectedFileExtensions: [],\n currentDisabledFileExtensions: [],\n selectedProjectAttributes: [],\n selectedFileAttributes: [],\n fileSearchRecords: [],\n attributeExtractionRecords: [],\n currentSearchResults: [],\n sendingCreateAttributeExtractionRequest: false,\n currentExtractionResults: [],\n inputFileIdToInputFileInfo: {},\n fileAttributeSlugToInfo: {},\n currentFileSearchRecordId: null,\n currentFileFilterKeywordSearchMode: \"exact_search\",\n currentFileFilterKeywordSearchKeyword: \"\",\n currentFileFilterKeywordSearchTopK: 10,\n currentExtractionKeywordSearchMode: \"\",\n currentExtractionKeywordSearchKeyword: \"\",\n currentExtractionKeywordSearchTopK: 10,\n currentAnalyzePosition: \"\",\n currentZoomLevel: \"\",\n currentAnalyzeModel: \"\",\n currentAttributeTypeId: \"\",\n currentAttributeExtractionPrompt: \"\",\n currentLastProjectIndex: 2,\n currentAttributeExtractionRecordId: null,\n currentExtractionResultProjectId: \"\",\n attributeTypeUnchangeable: false,\n currentDataType: \"\",\n sourceDataTypes: [],\n canUpdate: true,\n tableColumns: [],\n isScriptBasedExtraction: false,\n scriptBasedUrl: \"\",\n scriptTimeout: \"\",\n canAccessScriptBasedPrompt: false,\n loadedMoreResults: false\n }),\n getters: {\n searchConditions(state) {\n return {\n // building: [\n // {\n // is_apply: (state.selectedProjectAttributes.length > 0).toString(),\n // search_conditions: state.selectedProjectAttributes.map(\n // (projectAttribute) => {\n // return {\n // [projectAttribute.slug]: {\n // slug: projectAttribute.slug,\n // operator: projectAttribute.operator,\n // values: projectAttribute.values,\n // value: projectAttribute.value,\n // type: projectAttribute.attributeType,\n // similarity: projectAttribute.similarity,\n // weight: projectAttribute.weight,\n // },\n // };\n // }\n // ),\n // },\n // ],\n building: [],\n file: [\n {\n is_apply: (state.selectedFileAttributes.length > 0).toString(),\n search_conditions: state.selectedFileAttributes.map(fileAttribute => {\n return {\n [fileAttribute.slug]: {\n slug: fileAttribute.slug,\n operator: fileAttribute.operator,\n values: fileAttribute.values,\n value: fileAttribute.value,\n type: fileAttribute.attributeType,\n similarity: fileAttribute.similarity,\n weight: fileAttribute.weight\n }\n }\n })\n }\n ]\n }\n },\n isProjectAttribute(state) {\n return state.resource === \"entity_attribute\"\n },\n isValueValidated() {\n let isContentValid\n if (this.isScriptBasedExtraction) {\n isContentValid = this.scriptBasedUrl && this.scriptBasedUrl !== \"\" && this.scriptTimeout > 0\n } else {\n isContentValid = this.currentAttributeExtractionPrompt && this.currentAttributeExtractionPrompt !== \"\"\n }\n const isTableValid =\n !this.isTableType() ||\n (this.isTableType() && this.tableColumns.every(tableColumn => tableColumn.name.trim().length > 0))\n\n return isContentValid && isTableValid\n }\n },\n actions: {\n load({\n id,\n name,\n active,\n isUsedInTicket,\n sourceAttribute,\n organizationSlug,\n dataSpaceSlug,\n projectAttributes,\n fileAttributes,\n returnUrl,\n fileSearchRecords,\n attributeExtractionRecords,\n sourceProjectIdToName,\n sourceAnalyzePositions,\n sourceAnalyzeModels,\n sourceAttributeTypes,\n attributeTypeUnchangeable,\n resource,\n resources,\n sourceDataTypes,\n isNewAttributePage,\n canUpdate,\n canAccessScriptBasedPrompt\n }) {\n this.id = id\n this.name = name\n this.active = active === \"true\" || active === true\n this.isUsedInTicket = isUsedInTicket === \"true\" || isUsedInTicket === true\n if (canUpdate) this.canUpdate = canUpdate === \"true\"\n if (canAccessScriptBasedPrompt) this.canAccessScriptBasedPrompt = canAccessScriptBasedPrompt === \"true\"\n\n if (isNewAttributePage) this.isNewAttributePage = isNewAttributePage\n if (organizationSlug) this.organizationSlug = organizationSlug\n if (dataSpaceSlug) this.dataSpaceSlug = dataSpaceSlug\n if (projectAttributes) this.projectAttributes = JSON.parse(projectAttributes)\n if (fileAttributes) this.fileAttributes = JSON.parse(fileAttributes)\n if (returnUrl) this.returnUrl = returnUrl\n if (fileSearchRecords) this.fileSearchRecords = JSON.parse(fileSearchRecords)\n if (attributeExtractionRecords) this.attributeExtractionRecords = JSON.parse(attributeExtractionRecords)\n if (sourceProjectIdToName) this.sourceProjectIdToName = JSON.parse(sourceProjectIdToName)\n if (sourceAnalyzePositions) this.sourceAnalyzePositions = JSON.parse(sourceAnalyzePositions)\n if (sourceAnalyzeModels) this.sourceAnalyzeModels = JSON.parse(sourceAnalyzeModels)\n if (sourceAttributeTypes) this.sourceAttributeTypes = JSON.parse(sourceAttributeTypes)\n if (attributeTypeUnchangeable) this.attributeTypeUnchangeable = JSON.parse(attributeTypeUnchangeable)\n if (resource) this.resource = resource\n if (resources) this.resources = resources\n if (sourceDataTypes) this.sourceDataTypes = JSON.parse(sourceDataTypes)\n if (sourceAttribute) {\n this.sourceAttribute = JSON.parse(sourceAttribute)\n this.loadCurrentFileFilterKeywordSearchKeyword(\n \"exact_search\",\n this.sourceAttribute.file_search_prompt,\n this.sourceAttribute.top_k_files\n )\n this.loadCurrentExtractionKeywordSearchKeyword(\n this.sourceAttribute.page_search_mode,\n this.sourceAttribute.page_search_prompt,\n this.sourceAttribute.top_k_pages\n )\n this.sourceSearchConditions = this.sourceAttribute.search_conditions\n this.sourceFileExtensions = this.sourceAttribute.file_extensions\n this.currentAnalyzePosition = this.sourceAttribute.analyze_position || \"auto\"\n this.currentZoomLevel = \"auto\"\n this.currentAnalyzeModel = this.sourceAttribute.analyze_model\n this.currentAttributeTypeId =\n this.sourceAttribute.file_attribute_type_id || this.sourceAttribute.entity_attribute_type_id\n this.currentAttributeExtractionPrompt = this.sourceAttribute.attribute_extraction_prompts\n this.currentDataType = this.sourceAttribute.data_type\n this.isScriptBasedExtraction = !!this.sourceAttribute.script_url\n this.scriptBasedUrl = this.sourceAttribute.script_url || \"\"\n this.scriptTimeout = this.sourceAttribute.script_timeout || \"\"\n\n const typeName = this.getTypeName(this.currentAttributeTypeId)\n if (this.sourceAttribute.table_columns?.length) {\n this.tableColumns = this.sourceAttribute.table_columns\n } else {\n this.tableColumns = [\n {\n name: \"\",\n type: this.currentAttributeTypeId,\n key_primary: \"\",\n prompt: \"\",\n type_name: typeName\n }\n ]\n }\n }\n this.initializeAttribute()\n },\n updateName(name) {\n this.name = name\n },\n updateActive(active) {\n this.active = active\n },\n updateIsUsedInTicket(value) {\n this.isUsedInTicket = value\n },\n initializeAttribute() {\n this.loadSelectedFileExtensions(this.sourceFileExtensions)\n this.loadSelectedAttributes(this.sourceSearchConditions)\n this.initializeSourceAnalyzeModels()\n },\n loadSelectedFileExtensions(fileExtensions) {\n this.selectedFileExtensions.splice(0, this.selectedFileExtensions.length)\n fileExtensions.forEach(fileExtension => {\n this.selectedFileExtensions.push(fileExtension)\n })\n Object.keys(this.fileExtensionGroup).forEach(fileExtensionGroup => {\n if (this.dataTypeGroup[this.currentDataType].fileExtensionGroups.includes(fileExtensionGroup)) {\n // remove from currentDisabledFileExtensions\n this.currentDisabledFileExtensions = this.currentDisabledFileExtensions.filter(\n fileExtension => !this.fileExtensionGroup[fileExtensionGroup].includes(fileExtension)\n )\n } else {\n // push into currentDisabledFileExtensions\n this.currentDisabledFileExtensions.push(...this.fileExtensionGroup[fileExtensionGroup])\n }\n })\n },\n initializeSourceAnalyzeModels() {\n this.sourceAnalyzeModels.forEach(model => {\n model.disabled = false\n })\n\n if (this.selectedFileExtensions.includes(\"rvt\")) {\n this.sourceAnalyzeModels.forEach(model => {\n model.disabled = model.disabled = model.value !== \"openai-gpt-4-1106-preview\"\n })\n }\n this.sourceAnalyzeModels = this.sourceAnalyzeModels\n // Update analyze model to the first available model\n const availableModel = this.sourceAnalyzeModels.find(model => !model.disabled)\n const currentAnalyzeModelDisabled = this.sourceAnalyzeModels.find(\n model => model.value === this.currentAnalyzeModel\n )?.disabled\n if (availableModel && currentAnalyzeModelDisabled) {\n this.currentAnalyzeModel = availableModel.value\n }\n },\n updateCurrentTab(tab) {\n this.currentTab = tab\n },\n toggleSelectedFileExtensionGroup(fileExtensionGroup) {\n // If the file extension is rvt, then toggle off other file extensions\n const fileExtensions = this.fileExtensionGroup[fileExtensionGroup]\n const toggleOff = fileExtensions.every(fileExtension => this.selectedFileExtensions.includes(fileExtension))\n if (toggleOff) {\n fileExtensions.forEach(fileExtension => {\n const index = this.selectedFileExtensions.indexOf(fileExtension)\n this.selectedFileExtensions.splice(index, 1)\n })\n } else {\n fileExtensions.forEach(fileExtension => {\n if (!this.selectedFileExtensions.includes(fileExtension)) {\n this.selectedFileExtensions.push(fileExtension)\n }\n })\n }\n },\n toggleSelectedFileExtension(fileExtension) {\n // If the file extension is rvt, then toggle off other file extensions\n if (this.selectedFileExtensions.includes(fileExtension)) {\n const removeExt = fileExtension => {\n const index = this.selectedFileExtensions.indexOf(fileExtension)\n this.selectedFileExtensions.splice(index, 1)\n }\n removeExt(fileExtension)\n if (fileExtension === \"tif\") removeExt(\"tiff\")\n if (fileExtension === \"jpg\") removeExt(\"jpeg\")\n } else {\n this.selectedFileExtensions.push(fileExtension)\n if (fileExtension === \"tif\") this.selectedFileExtensions.push(\"tiff\")\n if (fileExtension === \"jpg\") this.selectedFileExtensions.push(\"jpeg\")\n }\n },\n addSelectedProjectAttribute() {\n // Get the first project attribute that is not selected\n // and add it to the selectedProjectAttributes\n const projectAttribute = this.projectAttributes.find(\n projectAttribute => !this.selectedProjectAttributes.includes(projectAttribute)\n )\n if (projectAttribute) this.selectedProjectAttributes.push(projectAttribute)\n },\n removeSelectedProjectAttribute(projectAttributeId) {\n const index = this.selectedProjectAttributes.findIndex(selectedProjectAttribute => {\n return selectedProjectAttribute.id === projectAttributeId\n })\n this.selectedProjectAttributes.splice(index, 1)\n },\n updateSelectedProjectAttributes(sourceProjectAttributeId, targetProjectAttributeId) {\n const sourceIndex = this.selectedProjectAttributes.findIndex(\n projectAttribute => projectAttribute.id == sourceProjectAttributeId\n )\n const target = this.projectAttributes.find(projectAttribute => projectAttribute.id == targetProjectAttributeId)\n this.selectedProjectAttributes.splice(sourceIndex, 1, target)\n },\n addSelectedFileAttribute() {\n // Get the first file attribute that is not selected\n // and add it to the selectedFileAttributes\n const fileAttribute = this.fileAttributes.find(\n fileAttribute => !this.selectedFileAttributes.includes(fileAttribute)\n )\n if (fileAttribute) this.selectedFileAttributes.push(fileAttribute)\n },\n removeSelectedFileAttribute(fileAttributeId) {\n const index = this.selectedFileAttributes.findIndex(selectedFileAttribute => {\n return selectedFileAttribute.id === fileAttributeId\n })\n this.selectedFileAttributes.splice(index, 1)\n },\n updateSelectedFileAttributes(sourceFileAttributeId, targetFileAttributeId) {\n const sourceIndex = this.selectedFileAttributes.findIndex(\n fileAttribute => fileAttribute.id == sourceFileAttributeId\n )\n const target = this.fileAttributes.find(fileAttribute => fileAttribute.id == targetFileAttributeId)\n this.selectedFileAttributes.splice(sourceIndex, 1, target)\n },\n loadSelectedAttributes(searchConditions) {\n this.nullifySelectedProjectAttributes()\n this.nullifySelectedFileAttributes()\n if (searchConditions[\"building\"] && searchConditions[\"file\"]) {\n this.loadSelectedProjectAttributes(searchConditions[\"building\"])\n this.loadSelectedFileAttributes(searchConditions[\"file\"])\n }\n },\n nullifySelectedProjectAttributes() {\n const length = this.selectedProjectAttributes.length\n this.selectedProjectAttributes.splice(0, length)\n },\n nullifySelectedFileAttributes() {\n const length = this.selectedFileAttributes.length\n this.selectedFileAttributes.splice(0, length)\n },\n loadSelectedProjectAttributes(searchGroups) {\n searchGroups.forEach(searchGroup => {\n if (searchGroup[\"is_apply\"] === \"true\") {\n searchGroup[\"search_conditions\"].forEach(searchCondition => {\n Object.keys(searchCondition).forEach(projectAttributeSlug => {\n const projectAttribute = this.projectAttributes.find(\n projectAttribute => projectAttribute.slug == searchCondition[projectAttributeSlug].slug\n )\n if (projectAttribute) {\n projectAttribute.operator = searchCondition[projectAttributeSlug].operator\n projectAttribute.values = searchCondition[projectAttributeSlug].values // float, int, date, time, datetime\n projectAttribute.value = searchCondition[projectAttributeSlug].value // string, boolean\n projectAttribute.similarity = searchCondition[projectAttributeSlug].similarity // string, boolean\n this.selectedProjectAttributes.push(projectAttribute)\n }\n })\n })\n }\n })\n },\n loadSelectedFileAttributes(searchGroups) {\n searchGroups.forEach(searchGroup => {\n if (searchGroup[\"is_apply\"] === \"true\") {\n searchGroup[\"search_conditions\"].forEach(searchCondition => {\n Object.keys(searchCondition).forEach(fileAttributeSlug => {\n const fileAttribute = this.fileAttributes.find(\n fileAttribute => fileAttribute.slug == searchCondition[fileAttributeSlug].slug\n )\n if (fileAttribute) {\n fileAttribute.operator = searchCondition[fileAttributeSlug].operator\n fileAttribute.values = searchCondition[fileAttributeSlug].values // float, int, date, time, datetime\n fileAttribute.value = searchCondition[fileAttributeSlug].value // string, boolean\n fileAttribute.similarity = searchCondition[fileAttributeSlug].similarity // string, boolean\n this.selectedFileAttributes.push(fileAttribute)\n }\n })\n })\n }\n })\n },\n loadCurrentFileSearchRecordId(fileSearchRecordId) {\n this.currentFileSearchRecordId = fileSearchRecordId\n },\n loadCurrentSearchResults(searchResults) {\n this.currentSearchResults = searchResults\n },\n loadInputFileIdToInputFileInfo(inputFileIdToInputFileInfo) {\n this.inputFileIdToInputFileInfo = inputFileIdToInputFileInfo\n },\n loadFileAttributeSlugToInfo(fileAttributeSlugToInfo) {\n this.fileAttributeSlugToInfo = fileAttributeSlugToInfo\n },\n loadCurrentFileFilterKeywordSearchKeyword(searchMode, keyword, topK) {\n this.currentFileFilterKeywordSearchMode = searchMode\n this.currentFileFilterKeywordSearchKeyword = keyword\n this.currentFileFilterKeywordSearchTopK = topK\n },\n loadCurrentExtractionKeywordSearchKeyword(searchMode, keyword, topK) {\n this.currentExtractionKeywordSearchMode = searchMode\n this.currentExtractionKeywordSearchKeyword = keyword\n this.currentExtractionKeywordSearchTopK = topK\n },\n loadCurrentDataType(dataType) {\n this.currentDataType = dataType\n },\n addNewFileSearchRecord(fileSearchRecord) {\n this.fileSearchRecords.unshift(fileSearchRecord)\n },\n addNewAttributeExtractionRecord(attributeExtractionRecord) {\n this.attributeExtractionRecords.unshift(attributeExtractionRecord)\n },\n updateValueOfSelectedProjectAttribute(\n projectAttributeId,\n operator,\n minValue,\n maxValue,\n value,\n similarity,\n weight // similarity related\n ) {\n const projectAttribute = this.selectedProjectAttributes.find(\n projectAttribute => projectAttribute.id == projectAttributeId\n )\n if (projectAttribute) {\n projectAttribute.operator = operator\n projectAttribute.values = [minValue, maxValue]\n projectAttribute.value = value\n projectAttribute.similarity = similarity\n projectAttribute.weight = weight\n }\n },\n updateValueOfSelectedFileAttribute(\n fileAttributeId,\n operator,\n minValue,\n maxValue,\n value,\n similarity,\n weight // similarity related\n ) {\n const fileAttribute = this.selectedFileAttributes.find(fileAttribute => fileAttribute.id == fileAttributeId)\n if (fileAttribute) {\n fileAttribute.operator = operator\n fileAttribute.values = [minValue, maxValue]\n fileAttribute.value = value\n fileAttribute.similarity = similarity\n fileAttribute.weight = weight\n }\n },\n loadCurrentAttributeExtractionRecordId(attributeExtractionRecordId) {\n this.currentAttributeExtractionRecordId = attributeExtractionRecordId\n },\n loadLastProjectIndex(projectIndex) {\n this.currentLastProjectIndex = projectIndex\n },\n loadCurrentContentFilter(analyzePosition, zoomLevel) {\n this.currentAnalyzePosition = analyzePosition\n this.currentZoomLevel = zoomLevel\n },\n loadCurrentAttributeExtractionPromptSetting(analyzeModel, attributeType, attributeExtractionPrompt) {\n this.currentAnalyzeModel = analyzeModel\n this.currentAttributeExtractionPrompt = attributeExtractionPrompt\n const attributeTypeId = this.sourceAttributeTypes.find(\n sourceAttributeType => sourceAttributeType.name.toLowerCase() == attributeType\n )?.id\n if (attributeTypeId) this.currentAttributeTypeId = attributeTypeId\n },\n setLoadedMoreResults(value) {\n this.loadedMoreResults = value\n },\n setSendingCreateAttributeExtractionRequest(value) {\n this.sendingCreateAttributeExtractionRequest = value\n },\n loadCurrentExtractionResults(searchResults) {\n this.currentExtractionResults = searchResults\n if (searchResults.length > 0 && !this.currentExtractionResultProjectId)\n this.updateCurrentExtractionResultProjectId(searchResults[0].project_id)\n },\n updateCurrentExtractionResultProjectId(projectId) {\n this.currentExtractionResultProjectId = projectId\n },\n loadCurrentAttributeType(attributeType) {\n const attributeTypeId = this.sourceAttributeTypes.find(\n sourceAttributeType => sourceAttributeType.name.toLowerCase() == attributeType\n )?.value\n this.currentAttributeTypeId = attributeTypeId\n },\n isTableType() {\n return (\n this.currentAttributeTypeId &&\n this.currentAttributeTypeId === this.sourceAttributeTypes.find(item => item.name === \"Table\")?.value\n )\n },\n getTypeName(typeId) {\n return this.sourceAttributeTypes.find(i => i.value === typeId)?.name\n },\n getStringAttrType() {\n return this.sourceAttributeTypes.find(t => t.name === \"String\")\n },\n onTypeNameChange(index) {\n const selectedTypeId = this.tableColumns[index].type\n this.tableColumns[index].type_name = this.sourceAttributeTypes.find(item => item.value === selectedTypeId)?.name\n },\n onTableColumnDelete(index) {\n this.tableColumns = this.tableColumns.filter((_, idx) => idx !== index)\n },\n onTableColumnAdd() {\n const stringAttributeType = this.getStringAttrType()\n this.tableColumns = [\n ...this.tableColumns,\n {\n name: \"\",\n type: stringAttributeType.value,\n key_primary: \"\",\n prompt: \"\",\n type_name: stringAttributeType.name\n }\n ]\n },\n updateIsScriptBasedExtraction(val) {\n this.isScriptBasedExtraction = val\n },\n updateScriptBasedUrl(url) {\n this.scriptBasedUrl = url\n },\n updateScriptTimeout(timeout) {\n this.scriptTimeout = timeout\n }\n }\n})\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"VueToast\", [\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueToast\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueToast\"] = factory(root[\"Vue\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__976__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 772:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports[\"default\"] = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n\n\n/***/ }),\n\n/***/ 976:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__976__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n ToastComponent: () => (/* reexport */ Component),\n ToastPlugin: () => (/* binding */ ToastPlugin),\n ToastPositions: () => (/* reexport */ positions),\n \"default\": () => (/* binding */ src),\n useToast: () => (/* reexport */ useToast)\n});\n\n// EXTERNAL MODULE: external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"amd\":\"vue\",\"root\":\"Vue\"}\nvar external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_ = __webpack_require__(976);\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.2_@babel+core@7.22.1_webpack@5.84.1/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.1.1_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@5.84.1/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/.pnpm/vue-loader@17.1.1_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@5.84.1/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./src/js/Component.vue?vue&type=template&id=f73c8b4e\n\nconst _hoisted_1 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"div\", {\n class: \"v-toast__icon\"\n}, null, -1);\nconst _hoisted_2 = [\"innerHTML\"];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createBlock)(external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.Transition, {\n \"enter-active-class\": _ctx.transition.enter,\n \"leave-active-class\": _ctx.transition.leave\n }, {\n default: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.withDirectives)((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"div\", {\n ref: \"root\",\n role: \"alert\",\n class: (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.normalizeClass)([\"v-toast__item\", [`v-toast__item--${_ctx.type}`, `v-toast__item--${_ctx.position}`]]),\n onMouseover: _cache[0] || (_cache[0] = $event => _ctx.toggleTimer(true)),\n onMouseleave: _cache[1] || (_cache[1] = $event => _ctx.toggleTimer(false)),\n onClick: _cache[2] || (_cache[2] = function () {\n return _ctx.whenClicked && _ctx.whenClicked(...arguments);\n })\n }, [_hoisted_1, (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.createElementVNode)(\"p\", {\n class: \"v-toast__text\",\n innerHTML: _ctx.message\n }, null, 8, _hoisted_2)], 34), [[external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.vShow, _ctx.isActive]])]),\n _: 1\n }, 8, [\"enter-active-class\", \"leave-active-class\"]);\n}\n;// CONCATENATED MODULE: ./src/js/Component.vue?vue&type=template&id=f73c8b4e\n\n;// CONCATENATED MODULE: ./src/js/helpers.js\n\nfunction removeElement(el) {\n if (typeof el.remove !== 'undefined') {\n el.remove();\n } else {\n el.parentNode?.removeChild(el);\n }\n}\nfunction createComponent(component, props, parentContainer) {\n let slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const vNode = (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.h)(component, props, slots);\n const container = document.createElement('div');\n container.classList.add('v-toast--pending');\n parentContainer.appendChild(container);\n (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.render)(vNode, container);\n return vNode.component;\n}\n;// CONCATENATED MODULE: ./src/js/timer.js\n// https://stackoverflow.com/a/3969760\nclass Timer {\n constructor(callback, delay) {\n this.startedAt = Date.now();\n this.callback = callback;\n this.delay = delay;\n this.timer = setTimeout(callback, delay);\n }\n pause() {\n this.stop();\n this.delay -= Date.now() - this.startedAt;\n }\n resume() {\n this.stop();\n this.startedAt = Date.now();\n this.timer = setTimeout(this.callback, this.delay);\n }\n stop() {\n clearTimeout(this.timer);\n }\n}\n;// CONCATENATED MODULE: ./src/js/positions.js\n/* harmony default export */ const positions = (Object.freeze({\n TOP_RIGHT: 'top-right',\n TOP: 'top',\n TOP_LEFT: 'top-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM: 'bottom',\n BOTTOM_LEFT: 'bottom-left'\n}));\n;// CONCATENATED MODULE: ./node_modules/.pnpm/mitt@3.0.0/node_modules/mitt/dist/mitt.mjs\n/* harmony default export */ function mitt(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n\n;// CONCATENATED MODULE: ./src/js/bus.js\n\nconst eventBus = mitt();\n/* harmony default export */ const bus = (eventBus);\n;// CONCATENATED MODULE: ./node_modules/.pnpm/babel-loader@9.1.2_@babel+core@7.22.1_webpack@5.84.1/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@17.1.1_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@5.84.1/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./src/js/Component.vue?vue&type=script&lang=js\n\n\n\n\n\n/* harmony default export */ const Componentvue_type_script_lang_js = ((0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.defineComponent)({\n name: 'Toast',\n props: {\n message: {\n type: String,\n required: true\n },\n type: {\n type: String,\n default: 'success'\n },\n position: {\n type: String,\n default: positions.BOTTOM_RIGHT,\n validator(value) {\n return Object.values(positions).includes(value);\n }\n },\n duration: {\n type: Number,\n default: 3000\n },\n dismissible: {\n type: Boolean,\n default: true\n },\n onDismiss: {\n type: Function,\n default: () => {}\n },\n onClick: {\n type: Function,\n default: () => {}\n },\n queue: Boolean,\n pauseOnHover: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n isActive: false,\n parentTop: null,\n parentBottom: null,\n isHovered: false\n };\n },\n beforeMount() {\n this.setupContainer();\n },\n mounted() {\n this.showNotice();\n bus.on('toast-clear', this.dismiss);\n },\n methods: {\n setupContainer() {\n this.parentTop = document.querySelector('.v-toast.v-toast--top');\n this.parentBottom = document.querySelector('.v-toast.v-toast--bottom');\n // No need to create them, they already exists\n if (this.parentTop && this.parentBottom) return;\n if (!this.parentTop) {\n this.parentTop = document.createElement('div');\n this.parentTop.className = 'v-toast v-toast--top';\n }\n if (!this.parentBottom) {\n this.parentBottom = document.createElement('div');\n this.parentBottom.className = 'v-toast v-toast--bottom';\n }\n const container = document.body;\n container.appendChild(this.parentTop);\n container.appendChild(this.parentBottom);\n },\n shouldQueue() {\n if (!this.queue) return false;\n return this.parentTop.childElementCount > 0 || this.parentBottom.childElementCount > 0;\n },\n dismiss() {\n if (this.timer) this.timer.stop();\n clearTimeout(this.queueTimer);\n this.isActive = false;\n\n // Timeout for the animation complete before destroying\n setTimeout(() => {\n this.onDismiss.apply(null, arguments);\n const wrapper = this.$refs.root;\n // unmount the component\n (0,external_commonjs_vue_commonjs2_vue_amd_vue_root_Vue_.render)(null, wrapper);\n removeElement(wrapper);\n }, 150);\n },\n showNotice() {\n if (this.shouldQueue()) {\n // Call recursively if it should queue\n this.queueTimer = setTimeout(this.showNotice, 250);\n return;\n }\n const wrapper = this.$refs.root.parentElement;\n this.correctParent.insertAdjacentElement('afterbegin', this.$refs.root);\n removeElement(wrapper);\n this.isActive = true;\n if (this.duration) {\n this.timer = new Timer(this.dismiss, this.duration);\n }\n },\n whenClicked() {\n if (!this.dismissible) return;\n this.onClick.apply(null, arguments);\n this.dismiss();\n },\n toggleTimer(newVal) {\n if (!this.pauseOnHover || !this.timer) return;\n newVal ? this.timer.pause() : this.timer.resume();\n }\n },\n computed: {\n correctParent() {\n switch (this.position) {\n case positions.TOP:\n case positions.TOP_RIGHT:\n case positions.TOP_LEFT:\n return this.parentTop;\n case positions.BOTTOM:\n case positions.BOTTOM_RIGHT:\n case positions.BOTTOM_LEFT:\n return this.parentBottom;\n }\n },\n transition() {\n switch (this.position) {\n case positions.TOP:\n case positions.TOP_RIGHT:\n case positions.TOP_LEFT:\n return {\n enter: 'v-toast--fade-in-down',\n leave: 'v-toast--fade-out'\n };\n case positions.BOTTOM:\n case positions.BOTTOM_RIGHT:\n case positions.BOTTOM_LEFT:\n return {\n enter: 'v-toast--fade-in-up',\n leave: 'v-toast--fade-out'\n };\n }\n }\n },\n beforeUnmount() {\n bus.off('toast-clear', this.dismiss);\n }\n}));\n;// CONCATENATED MODULE: ./src/js/Component.vue?vue&type=script&lang=js\n \n// EXTERNAL MODULE: ./node_modules/.pnpm/vue-loader@17.1.1_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@5.84.1/node_modules/vue-loader/dist/exportHelper.js\nvar exportHelper = __webpack_require__(772);\n;// CONCATENATED MODULE: ./src/js/Component.vue\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,exportHelper[\"default\"])(Componentvue_type_script_lang_js, [['render',render]])\n\n/* harmony default export */ const Component = (__exports__);\n;// CONCATENATED MODULE: ./src/js/api.js\n\n\n\nconst useToast = function () {\n let globalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n open(options) {\n let message = null;\n if (typeof options === 'string') message = options;\n const defaultProps = {\n message\n };\n const propsData = Object.assign({}, defaultProps, globalProps, options);\n const instance = createComponent(Component, propsData, document.body);\n return {\n dismiss: instance.ctx.dismiss\n };\n },\n clear() {\n bus.emit('toast-clear');\n },\n success(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.open(Object.assign({}, {\n message,\n type: 'success'\n }, options));\n },\n error(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.open(Object.assign({}, {\n message,\n type: 'error'\n }, options));\n },\n info(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.open(Object.assign({}, {\n message,\n type: 'info'\n }, options));\n },\n warning(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.open(Object.assign({}, {\n message,\n type: 'warning'\n }, options));\n },\n default(message) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.open(Object.assign({}, {\n message,\n type: 'default'\n }, options));\n }\n };\n};\n;// CONCATENATED MODULE: ./src/index.js\n\n\n\nconst ToastPlugin = {\n install: function (app) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let instance = useToast(options);\n app.config.globalProperties.$toast = instance;\n app.provide('$toast', instance);\n }\n};\n/* harmony default export */ const src = (ToastPlugin);\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","\n\n\n \n \n \n \n \n {{ t(\"shared.back\") }}\n \n \n \n \n \n {{\n t(\"setting.prompt_setting.active\")\n }}\n \n \n \n\n \n {{ t(\"setting.prompt_setting.attribute_name\") }}\n \n \n \n {{ store.name }}\n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.file_filter\") }}\n \n \n \n \n \n \n \n \n\n \n \n \n \n {{ t(\"setting.prompt_setting.extraction\") }}\n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.save\") }}\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"shared.delete\") }}\n \n \n \n\n\n\n","\n\n \n \n \n \n {{ t(\"setting.prompt_setting.exact_search\") }}\n \n \n {{ t(\"setting.prompt_setting.semantic_search\") }}\n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.show_top\") }}\n \n \n \n \n \n \n\n","\n\n \n \n \n {{ t(\"setting.prompt_setting.position\") }}\n \n \n \n \n {{ position.name }}\n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.zoom_level\") }}\n \n \n \n Auto\n \n \n \n \n\n","/**!\n * Sortable 1.14.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"), require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([, \"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"vue\"), require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Vue\"], root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"00ee\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ \"0366\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(\"1c0b\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"057f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar nativeGetOwnPropertyNames = __webpack_require__(\"241c\").f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n\n/***/ \"06cf\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar propertyIsEnumerableModule = __webpack_require__(\"d1e7\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar has = __webpack_require__(\"5135\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"0cfb\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"0cfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar fails = __webpack_require__(\"d039\");\nvar createElement = __webpack_require__(\"cc12\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"13d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $reduce = __webpack_require__(\"d58f\").left;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"14c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"c6b6\");\nvar regexpExec = __webpack_require__(\"9263\");\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ \"159b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar DOMIterables = __webpack_require__(\"fdbc\");\nvar forEach = __webpack_require__(\"17c2\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n\n\n/***/ }),\n\n/***/ \"17c2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(\"b727\").forEach;\nvar arrayMethodIsStrict = __webpack_require__(\"a640\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ \"1be4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ \"1c0b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"1c7e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"1d80\":\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"1dde\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar V8_VERSION = __webpack_require__(\"2d00\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n\n/***/ \"23cb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"23e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar copyConstructorProperties = __webpack_require__(\"e893\");\nvar isForced = __webpack_require__(\"94ca\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"241c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(\"ca84\");\nvar enumBugKeys = __webpack_require__(\"7839\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"25f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(\"6eeb\");\nvar anObject = __webpack_require__(\"825a\");\nvar fails = __webpack_require__(\"d039\");\nvar flags = __webpack_require__(\"ad6d\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ \"2ca0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar getOwnPropertyDescriptor = __webpack_require__(\"06cf\").f;\nvar toLength = __webpack_require__(\"50c4\");\nvar notARegExp = __webpack_require__(\"5a34\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar correctIsRegExpLogic = __webpack_require__(\"ab13\");\nvar IS_PURE = __webpack_require__(\"c430\");\n\nvar nativeStartsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar userAgent = __webpack_require__(\"342f\");\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ \"342f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ \"35a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"f5df\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"37e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar anObject = __webpack_require__(\"825a\");\nvar objectKeys = __webpack_require__(\"df75\");\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"3bbe\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"3ca3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(\"6547\").charAt;\nvar InternalStateModule = __webpack_require__(\"69f3\");\nvar defineIterator = __webpack_require__(\"7dd0\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"3f8c\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"4160\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar forEach = __webpack_require__(\"17c2\");\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n\n\n/***/ }),\n\n/***/ \"428f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ \"44ad\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\nvar classof = __webpack_require__(\"c6b6\");\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"44d2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar create = __webpack_require__(\"7c73\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"44e7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar classof = __webpack_require__(\"c6b6\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"4930\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"4d64\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toAbsoluteIndex = __webpack_require__(\"23cb\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"4de4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar $filter = __webpack_require__(\"b727\").filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(\"1dde\");\nvar arrayMethodUsesToLength = __webpack_require__(\"ae40\");\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"4df4\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(\"0366\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar callWithSafeIterationClosing = __webpack_require__(\"9bdd\");\nvar isArrayIteratorMethod = __webpack_require__(\"e95a\");\nvar toLength = __webpack_require__(\"50c4\");\nvar createProperty = __webpack_require__(\"8418\");\nvar getIteratorMethod = __webpack_require__(\"35a1\");\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"4fad\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(\"23e7\");\nvar $entries = __webpack_require__(\"6f53\").entries;\n\n// `Object.entries` method\n// https://tc39.github.io/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n\n\n/***/ }),\n\n/***/ \"50c4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"5135\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"5319\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(\"d784\");\nvar anObject = __webpack_require__(\"825a\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\nvar advanceStringIndex = __webpack_require__(\"8aa5\");\nvar regExpExec = __webpack_require__(\"14c3\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"5692\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(\"c430\");\nvar store = __webpack_require__(\"c6cd\");\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"56ef\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(\"d066\");\nvar getOwnPropertyNamesModule = __webpack_require__(\"241c\");\nvar getOwnPropertySymbolsModule = __webpack_require__(\"7418\");\nvar anObject = __webpack_require__(\"825a\");\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"5a34\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(\"44e7\");\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"5c6c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"5db7\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar flattenIntoArray = __webpack_require__(\"a2bf\");\nvar toObject = __webpack_require__(\"7b0b\");\nvar toLength = __webpack_require__(\"50c4\");\nvar aFunction = __webpack_require__(\"1c0b\");\nvar arraySpeciesCreate = __webpack_require__(\"65f0\");\n\n// `Array.prototype.flatMap` method\n// https://github.com/tc39/proposal-flatMap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ \"6547\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"a691\");\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ \"65f0\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\nvar isArray = __webpack_require__(\"e8b5\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ \"69f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(\"7f9a\");\nvar global = __webpack_require__(\"da84\");\nvar isObject = __webpack_require__(\"861d\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar objectHas = __webpack_require__(\"5135\");\nvar sharedKey = __webpack_require__(\"f772\");\nvar hiddenKeys = __webpack_require__(\"d012\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"6eeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar has = __webpack_require__(\"5135\");\nvar setGlobal = __webpack_require__(\"ce4e\");\nvar inspectSource = __webpack_require__(\"8925\");\nvar InternalStateModule = __webpack_require__(\"69f3\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ \"6f53\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(\"83ab\");\nvar objectKeys = __webpack_require__(\"df75\");\nvar toIndexedObject = __webpack_require__(\"fc6a\");\nvar propertyIsEnumerable = __webpack_require__(\"d1e7\").f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ \"73d9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = __webpack_require__(\"44d2\");\n\naddToUnscopables('flatMap');\n\n\n/***/ }),\n\n/***/ \"7418\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"746f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(\"428f\");\nvar has = __webpack_require__(\"5135\");\nvar wrappedWellKnownSymbolModule = __webpack_require__(\"e538\");\nvar defineProperty = __webpack_require__(\"9bf2\").f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n/***/ }),\n\n/***/ \"7839\":\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"7b0b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(\"1d80\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"7c73\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"825a\");\nvar defineProperties = __webpack_require__(\"37e8\");\nvar enumBugKeys = __webpack_require__(\"7839\");\nvar hiddenKeys = __webpack_require__(\"d012\");\nvar html = __webpack_require__(\"1be4\");\nvar documentCreateElement = __webpack_require__(\"cc12\");\nvar sharedKey = __webpack_require__(\"f772\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"7dd0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(\"23e7\");\nvar createIteratorConstructor = __webpack_require__(\"9ed3\");\nvar getPrototypeOf = __webpack_require__(\"e163\");\nvar setPrototypeOf = __webpack_require__(\"d2bb\");\nvar setToStringTag = __webpack_require__(\"d44e\");\nvar createNonEnumerableProperty = __webpack_require__(\"9112\");\nvar redefine = __webpack_require__(\"6eeb\");\nvar wellKnownSymbol = __webpack_require__(\"b622\");\nvar IS_PURE = __webpack_require__(\"c430\");\nvar Iterators = __webpack_require__(\"3f8c\");\nvar IteratorsCore = __webpack_require__(\"ae93\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"7f9a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"da84\");\nvar inspectSource = __webpack_require__(\"8925\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ \"825a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"861d\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"83ab\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(\"d039\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8418\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(\"c04e\");\nvar definePropertyModule = __webpack_require__(\"9bf2\");\nvar createPropertyDescriptor = __webpack_require__(\"5c6c\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"861d\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"8875\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n}(typeof self !== 'undefined' ? self : this, function () {\n function getCurrentScript () {\n var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n // for chrome\n if (!descriptor && 'currentScript' in document && document.currentScript) {\n return document.currentScript\n }\n\n // for other browsers with native support for currentScript\n if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n return document.currentScript\n }\n \n // IE 8-10 support script readyState\n // IE 11+ & Firefox support stack trace\n try {\n throw new Error();\n }\n catch (err) {\n // Find the second match for the \"at\" string to get file src url from stack.\n var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n scriptLocation = (stackDetails && stackDetails[1]) || false,\n line = (stackDetails && stackDetails[2]) || false,\n currentLocation = document.location.href.replace(document.location.hash, ''),\n pageSource,\n inlineScriptSourceRegExp,\n inlineScriptSource,\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n \n if (scriptLocation === currentLocation) {\n pageSource = document.documentElement.outerHTML;\n inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*\n\n \n \n \n {{ t(\"setting.prompt_setting.model\") }}\n \n \n \n \n {{ model.name }}\n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.save_as\") }}\n \n \n \n \n {{ attributeType.name }}\n \n \n \n \n \n \n \n \n \n \n Check on columns for the key columns\n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.show_prompts\") }}\n \n \n \n \n\n \n \n \n ||\n \n {{ t(\"setting.prompt_setting.primary_key\") }}\n \n \n \n {{ t(\"setting.prompt_setting.column_name\") }}\n \n \n \n {{ t(\"setting.prompt_setting.column_type\") }}\n \n item.name !== 'Table')\"\n :key=\"attributeType.value\"\n :value=\"attributeType.value\"\n :disabled=\"attributeType.name === 'Json'\"\n >\n {{ attributeType.name }}\n \n \n \n\n \n \n \n \n \n\n \n \n \n {{ t(\"setting.prompt_setting.column_prompt\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n {{ t(\"setting.prompt_setting.add_column\") }}\n \n \n \n \n \n {{ t(\"setting.prompt_setting.attribute_extraction_prompt\") }}\n \n \n \n \n \n \n \n \n\n\n\n","\n\n \n \n \n {{ t(\"setting.prompt_setting.history\") }}\n \n \n \n \n \n \n \n {{ attributeExtractionRecord.prompt }}\n \n \n {{ createdAtRender(attributeExtractionRecord.created_at) }}\n \n \n \n \n \n\n","\n \n \n \n {{ t(\"setting.prompt_setting.script_based\") }}\n \n \n\n\n\n","\n\n\n \n \n \n \n {{ t(\"setting.prompt_setting.script_url\") }}\n \n \n\n \n store.updateScriptBasedUrl(e.target.value)\"\n />\n \n \n \n \n \n {{ t(\"setting.prompt_setting.script_timeout\") }}\n \n \n\n \n store.updateScriptTimeout(e.target.value)\"\n @keypress=\"e => (!/[0-9]/.test(e.key) ? e.preventDefault() : null)\"\n />\n \n \n \n \n {{ t(\"setting.prompt_setting.save_as\") }}\n \n \n \n \n {{ attributeType.name }}\n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.columns_names\") }}\n {{ t(\"setting.prompt_setting.columns_types\") }}\n \n\n \n \n \n \n \n \n item.name !== 'Table')\"\n :key=\"attributeType.value\"\n :value=\"attributeType.value\"\n :disabled=\"attributeType.name === 'Json'\"\n >\n {{ attributeType.name }}\n \n \n \n\n \n \n \n \n\n \n \n {{ t(\"setting.prompt_setting.add_column\") }}\n \n \n \n\n","\n\n\n \n \n\n \n \n \n \n \n {{ t(\"setting.prompt_setting.page_filter\") }}\n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.content_filter\") }}\n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.extraction_prompt_setting\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.test\") }}\n \n \n \n \n \n\n\n\n","\n\n \n \n \n \n \n \n {{ fileExtensionGroup }}\n \n \n \n \n \n {{ fileExtension }}\n \n \n \n \n \n\n","\n\n \n \n \n {{ t(\"include\") }}\n {{ t(\"match\") }}\n \n \n \n \n \n \n \n \n \n {{ t(\"shared.search_groups.string_type_search_field.similarity\") }}\n \n \n \n \n \n \n \n \n \n \n {{ suggestion }}\n \n \n \n\n","\n\n \n \n \n \n ≥\n ≤\n =\n ≒\n ~\n \n \n \n \n\n","\n\n \n \n \n \n ≥\n ≤\n =\n ~\n \n \n \n \n\n","\n\n \n \n \n \n ≥\n ≤\n =\n ~\n \n \n \n \n\n","\n\n \n \n \n \n ≥\n ≤\n =\n ~\n \n \n \n \n\n","\n\n \n \n None\n True\n False\n \n \n\n","// 1. Users are able to add a search conditions for files. // 2. The max number of search conditions can be added is the\nnumber of active attributes. // 3. User can change the attribute of search condition by clicking the attribute name. //\n4. User can change the value of search condition to unselected attribute. // 5. Options of search condition value are\ndisplayed based on the unselected attribute. // 6. If datatype is string, user can search ny \"match\" or \"includes\" and\nget recommended values. // 7. If datatype is float or int, user can search by \"equal\", \"greater than\", \"less than\". //\n8. If datatype is date, time or datetime, user can search by \"equal\", \"greater than\", \"less than\". // 9. If datatype is\nboolean, users can select true or false. // 9. User can remove the search condition by clicking the \"x\" button.\n\n\n \n \n \n \n {{ option.name }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","\n\n \n \n \n \n \n \n \n \n\n","\n\n \n \n \n {{ t(\"setting.prompt_setting.history\") }}\n \n \n \n \n \n \n \n {{ fileSearchRecord.prompt }}\n \n \n {{ createdAtRender(fileSearchRecord.created_at) }}\n \n \n \n \n \n\n","\n\n \n \n \n {{ t(\"setting.prompt_setting.exact_search\") }}\n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.show_top\") }}\n \n \n \n \n \n \n\n","\n\n \n \n \n \n \n {{ sourceDataType.name }}\n \n \n \n \n \n\n","\n\n \n \n \n \n {{ t(\"setting.prompt_setting.data_type\") }}\n \n \n \n \n \n {{ t(\"setting.prompt_setting.file_extensions\") }}\n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.file_attributes\") }}\n \n 0 && !fileAttributeSectionOpen\"\n class=\"bx bx-check-double mr-5 w-1/3 text-lg text-gray-200\"\n >\n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.keywords_search\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.test\") }}\n \n \n \n \n \n\n\n","\n\n \n \n \n \n \n {{ t(\"setting.prompt_setting.project\") }}\n {{ t(\"setting.prompt_setting.files\") }}\n {{ t(\"setting.prompt_setting.action\") }}\n \n \n \n \n \n \n {{ store.sourceProjectIdToName[searchResult.project_id] }}\n \n \n \n \n \n \n \n Your browser does not support the HTML5 canvas tag.\n \n \n \n \n \n {{ inputFile(file.id).file_data[\"file-extension\"] }}\n \n \n \n \n \n {{ t(\"setting.prompt_setting.no_record\") }}\n \n \n \n \n \n {{ t(\"setting.prompt_setting.download_files\") }}\n \n \n \n \n \n {{ t(\"setting.prompt_setting.no_record\") }}\n \n \n \n \n \n\n \n \n\n\n","\n \n \n \n {{ inputFile(file.id).file_data[\"file-name\"] }}\n \n \n\n \n 0\" class=\"flex flex-wrap gap-1 py-3\">\n \n \n \n Your browser does not support the HTML5 canvas tag.\n \n \n \n\n \n \n \n \n {{ inputFile(file.id).file_data[\"file-extension\"] }}\n \n \n \n \n\n \n \n \n {{ file.extracted_value }}\n \n\n \n {{ file.extracted_value }}\n ({{ file.extracted_origin_value }})\n \n \n\n \n \n {{ extractedModifiedValue }}\n \n\n \n {{ extractedModifiedValue }}\n ({{ extractedValue }})\n \n \n\n \n \n {{ t(\"setting.prompt_setting.processing\") }}\n \n \n\n \n {{ t(\"setting.prompt_setting.extract_attribute\") }}\n \n \n\n \n prompt-test-record#openPromptConfigModal\"\n type=\"button\"\n >\n {{ t(\"setting.prompt_setting.config\") }}\n \n \n \n\n\n\n","\n\n\n \n \n \n \n \n \n \n 0\" class=\"nav-tabs border-b-tabs w-full px-4\">\n \n \n {{ store.sourceProjectIdToName[searchResult.project_id] }}\n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.file_name\") }}\n {{ t(\"setting.prompt_setting.pages\") }}\n {{ store.sourceAttribute.name }}\n \n \n \n \n 0 || !fileIsRenderable(file.id)\"\n :key=\"file.id\"\n :file=\"file\"\n @thumbnailClick=\"onFileThumbnailClick\"\n />\n \n \n {{ t(\"setting.prompt_setting.no_record\") }}\n \n \n \n \n \n Load more\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n prompt-test-record#closePromptConfigModal\"\n type=\"button\"\n >\n \n \n \n \n \n \n System Prompt\n \n \n Logs\n \n \n\n \n \n \n System prompt:\n prompt-test-record#updateSystemPrompt\"\n data-room-target=\"promptInput\"\n name=\"prompts\"\n placeholder=\"Type here\"\n >\n \n \n {{ t(\"setting.prompt_setting.extract_attribute\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n","\n \n 0\" class=\"flex flex-wrap gap-1 py-3\">\n \n \n Your browser does not support the HTML5 canvas tag.\n \n \n \n\n \n \n \n \n {{ inputFile(file.id).file_data[\"file-extension\"] }}\n \n \n \n\n\n\n","\n\n \n \n {{ file.extracted_value }}\n \n \n {{ file.extracted_value }}\n ({{ file.extracted_origin_value }})\n \n \n \n \n {{ extractedModifiedValue }}\n \n \n {{ extractedModifiedValue }}\n ({{ extractedValue }})\n \n \n \n \n {{ t(\"setting.prompt_setting.processing\") }}\n \n \n \n {{ t(\"setting.prompt_setting.extract_attribute\") }}\n \n\n","\n \n \n {{ store.sourceProjectIdToName[project.project_id] }}\n \n\n \n \n \n \n \n\n \n \n \n\n \n prompt-test-record#openPromptConfigModal\"\n :data-prompt-test-record-file-id-param=\"files[0]?.id\"\n :data-prompt-test-record-get-logs-url-param=\"promptTestRecordLogPath()\"\n >\n {{ t(\"setting.prompt_setting.config\") }}\n \n \n \n\n\n\n","\n\n \n \n \n \n \n {{ t(\"setting.prompt_setting.project_name\") }}\n {{ t(\"setting.prompt_setting.pages\") }}\n {{ store.sourceAttribute.name }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ t(\"setting.prompt_setting.no_record\") }}\n \n \n \n \n \n Load more\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n prompt-test-record#closePromptConfigModal\"\n type=\"button\"\n >\n \n \n \n \n \n \n System Prompt\n \n \n Logs\n \n \n\n \n \n \n System prompt:\n prompt-test-record#updateSystemPrompt\"\n data-room-target=\"promptInput\"\n name=\"prompts\"\n placeholder=\"Type here\"\n >\n \n \n {{ t(\"setting.prompt_setting.extract_attribute\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","\n\n\n \n \n \n \n \n \n \n \n\n","import { Controller, Application } from '@hotwired/stimulus';\n\nclass TurboMountController extends Controller {\n constructor() {\n super(...arguments);\n this.skipPropsChangeCallback = false;\n }\n connect() {\n this._umountComponentCallback || (this._umountComponentCallback = this.mountComponent(this.mountElement, this.resolvedComponent, this.componentProps));\n }\n disconnect() {\n this.umountComponent();\n }\n propsValueChanged() {\n if (this.skipPropsChangeCallback) {\n this.skipPropsChangeCallback = false;\n return;\n }\n this.umountComponent();\n this._umountComponentCallback || (this._umountComponentCallback = this.mountComponent(this.mountElement, this.resolvedComponent, this.componentProps));\n }\n get componentProps() {\n return this.propsValue;\n }\n get mountElement() {\n return this.hasMountTarget ? this.mountTarget : this.element;\n }\n get resolvedComponent() {\n return this.resolveMounted(this.componentValue).component;\n }\n get resolvedPlugin() {\n return this.resolveMounted(this.componentValue).plugin;\n }\n umountComponent() {\n this._umountComponentCallback && this._umountComponentCallback();\n this._umountComponentCallback = undefined;\n }\n mountComponent(el, Component, props) {\n return this.resolvedPlugin.mountComponent({ el, Component, props });\n }\n resolveMounted(component) {\n const app = this.application;\n return app.turboMount.resolve(component);\n }\n setComponentProps(props) {\n this.skipPropsChangeCallback = true;\n this.propsValue = props;\n }\n}\nTurboMountController.values = {\n props: Object,\n component: String,\n};\nTurboMountController.targets = [\"mount\"];\n\nconst camelToKebabCase = (str) => {\n return str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n};\n\nclass TurboMount {\n constructor(props = {}) {\n this.components = new Map();\n this.application = this.findOrStartApplication(props.application);\n this.application.turboMount = this;\n this.application.register(\"turbo-mount\", TurboMountController);\n document.addEventListener(\"turbo:before-morph-element\", (event) => {\n const turboMorphEvent = event;\n const { target, detail } = turboMorphEvent;\n if (target.getAttribute(\"data-controller\")?.includes(\"turbo-mount\")) {\n target.setAttribute(\"data-turbo-mount-props-value\", detail.newElement.getAttribute(\"data-turbo-mount-props-value\") ||\n \"{}\");\n event.preventDefault();\n }\n });\n }\n register(plugin, name, component, controller) {\n controller || (controller = TurboMountController);\n if (this.components.has(name)) {\n throw new Error(`Component '${name}' is already registered.`);\n }\n this.components.set(name, { component, plugin });\n if (controller) {\n const controllerName = `turbo-mount-${camelToKebabCase(name).replace(\"/\", \"--\")}`;\n this.application.register(controllerName, controller);\n }\n }\n resolve(name) {\n const component = this.components.get(name);\n if (!component) {\n throw new Error(`Unknown component: ${name}`);\n }\n return component;\n }\n findOrStartApplication(hydratedApp) {\n let application = hydratedApp || window.Stimulus;\n if (!application) {\n application = Application.start();\n window.Stimulus = application;\n }\n return application;\n }\n}\nfunction buildRegisterFunction(plugin) {\n return (turboMount, name, component, controller) => {\n turboMount.register(plugin, name, component, controller);\n };\n}\n\nconst identifierNames = (name) => {\n const controllerName = camelToKebabCase(name).replace(\"/\", \"--\");\n return [`turbo-mount--${controllerName}`, `turbo-mount-${controllerName}`];\n};\nconst registerComponentsBase = ({ plugin, turboMount, components, controllers, }) => {\n const controllerModules = controllers ?? [];\n for (const { module, filename } of components) {\n const name = filename\n .replace(/\\.\\w*$/, \"\")\n .replace(/^[./]*components\\//, \"\");\n const identifiers = identifierNames(name);\n const controller = controllerModules.find(({ identifier }) => identifiers.includes(identifier));\n const component = module.default ?? module;\n if (controller) {\n turboMount.register(plugin, name, component, controller.controllerConstructor);\n }\n else {\n turboMount.register(plugin, name, component);\n }\n }\n};\n\nexport { TurboMount, TurboMountController, buildRegisterFunction, registerComponentsBase };\n","import { definitionsFromGlob } from 'stimulus-vite-helpers';\nimport { registerComponentsBase } from 'turbo-mount';\n\nconst registerComponents = ({ plugin, turboMount, components, controllers, }) => {\n return registerComponentsBase({\n plugin,\n turboMount,\n components: Object.entries(components).map(([filename, module]) => ({\n filename,\n module,\n })),\n controllers: controllers ? definitionsFromGlob(controllers) : [],\n });\n};\n\nconst buildRegisterComponentsFunction = (plugin) => {\n return (props) => registerComponents({ plugin, ...props });\n};\n\nexport { buildRegisterComponentsFunction };\n","import { createPinia } from \"pinia\"\nimport { TurboMount } from \"turbo-mount\"\nimport { buildRegisterComponentsFunction } from \"turbo-mount/registerComponents\"\nimport { VueQueryPlugin } from \"@tanstack/vue-query\"\nimport VueTippy from \"vue-tippy\"\nimport ToastPlugin from \"vue-toast-notification\"\nimport { useTranslations } from \"./shared/useTranslations\"\n\nconst plugin = {\n mountComponent: mountProps => {\n const { el, Component, props } = mountProps\n const pinia = createPinia()\n const app = createApp(Component, { ...props, element: el })\n app.use(VueQueryPlugin)\n app.use(VueTippy, {\n defaultProps: {\n directive: \"tippy\",\n component: \"tippy\",\n theme: \"light\",\n defaultProps: {\n theme: \"light\"\n },\n appendTo: () => {\n return document.body\n }\n }\n })\n app.use(ToastPlugin)\n app.use(pinia)\n useTranslations(app)\n app.mount(el)\n\n return () => {\n app.unmount()\n }\n }\n}\n\nconst registerComponents = buildRegisterComponentsFunction(plugin)\n\nconst turboMount = new TurboMount()\nconst components = import.meta.glob(\"/components/**/*.vue\", { eager: true })\nregisterComponents({ turboMount, components })\n","var t;t={config:{},run:function(){return this.getController().processElements()},process:function(...t){var e,r,a;for(r=0,a=t.length;r11?\"pm\":\"am\")).toUpperCase();case\"P\":return M(\"time.\"+(n>11?\"pm\":\"am\"));case\"S\":return p(o,l);case\"w\":return a;case\"y\":return p(u%100,l);case\"Y\":return u;case\"Z\":return S(t)}}))},p=function(t,e){return\"-\"===e?t:`0${t}`.slice(-2)},S=function(t){var e,r,a;return(r=h(t))?g[r]:(a=y(t,{allowGMT:!1}))||(a=v(t))?a:(e=y(t,{allowGMT:!0}))?e:\"\"},h=function(t){return Object.keys(g).find((function(e){return b?new Date(t).toLocaleString(\"en-US\",{timeZoneName:\"long\"}).includes(e):t.toString().includes(e)}))},y=function(t,{allowGMT:e}){var r;if(b&&(r=new Date(t).toLocaleString(\"en-US\",{timeZoneName:\"short\"}).split(\" \").pop(),e||!r.includes(\"GMT\")))return r},v=function(t){var e,r,a,n,s;return(e=null!=(r=(s=t.toString()).match(/\\(([\\w\\s]+)\\)$/))?r[1]:void 0)?/\\s/.test(e)?e.match(/\\b(\\w)/g).join(\"\"):e:(e=null!=(a=s.match(/(\\w{3,4})\\s\\d{4}$/))?a[1]:void 0)||(e=null!=(n=s.match(/(UTC[\\+\\-]\\d+)/))?n[1]:void 0)?e:void 0},L.CalendarDate=class{static fromDate(t){return new this(t.getFullYear(),t.getMonth()+1,t.getDate())}static today(){return this.fromDate(new Date)}constructor(t,e,r){this.date=new Date(Date.UTC(t,e-1)),this.date.setUTCDate(r),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}equals(t){return(null!=t?t.value:void 0)===this.value}is(t){return this.equals(t)}isToday(){return this.is(this.constructor.today())}occursOnSameYearAs(t){return this.year===(null!=t?t.year:void 0)}occursThisYear(){return this.occursOnSameYearAs(this.constructor.today())}daysSince(t){if(t)return(this.date-t.date)/864e5}daysPassed(){return this.constructor.today().daysSince(this)}},({strftime:E,translate:I,getI18nValue:w,config:D}=L),L.RelativeTime=class{constructor(t){this.date=t,this.calendarDate=L.CalendarDate.fromDate(this.date)}toString(){var t,e;return(e=this.toTimeElapsedString())?I(\"time.elapsed\",{time:e}):(t=this.toWeekdayString())?(e=this.toTimeString(),I(\"datetime.at\",{date:t,time:e})):I(\"date.on\",{date:this.toDateString()})}toTimeOrDateString(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()}toTimeElapsedString(){var t,e,r,a,n;return r=(new Date).getTime()-this.date.getTime(),a=Math.round(r/1e3),e=Math.round(a/60),t=Math.round(e/60),r<0?null:a<10?(n=I(\"time.second\"),I(\"time.singular\",{time:n})):a<45?`${a} ${I(\"time.seconds\")}`:a<90?(n=I(\"time.minute\"),I(\"time.singular\",{time:n})):e<45?`${e} ${I(\"time.minutes\")}`:e<90?(n=I(\"time.hour\"),I(\"time.singularAn\",{time:n})):t<24?`${t} ${I(\"time.hours\")}`:\"\"}toWeekdayString(){switch(this.calendarDate.daysPassed()){case 0:return I(\"date.today\");case 1:return I(\"date.yesterday\");case-1:return I(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return E(this.date,\"%A\");default:return\"\"}}toDateString(){var t;return t=this.calendarDate.occursThisYear()?w(\"date.formats.thisYear\"):w(\"date.formats.default\"),E(this.date,t)}toTimeString(){var t;return t=D.useFormat24?\"default_24h\":\"default\",E(this.date,w(`time.formats.${t}`))}},({elementMatchesSelector:C}=L),L.PageObserver=class{constructor(t,e){this.processMutations=this.processMutations.bind(this),this.processInsertion=this.processInsertion.bind(this),this.selector=t,this.callback=e}start(){if(!this.started)return this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0}observeWithMutationObserver(){if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver)return new MutationObserver(this.processMutations).observe(document.documentElement,{childList:!0,subtree:!0}),!0}observeWithMutationEvent(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0}findSignificantElements(t){var e;return e=[],(null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE&&(C(t,this.selector)&&e.push(t),e.push(...t.querySelectorAll(this.selector))),e}processMutations(t){var e,r,a,n,s,i,o,u;for(e=[],r=0,n=t.length;r
\n {{ $t(\"modals.ticket_approval.\" + approvalType + \"_confirmation\") }}\n
Content for Template 1
Content for Template 2
{{ store.name }}
\n {{ t(\"setting.prompt_setting.file_filter\") }}\n
\n {{ t(\"setting.prompt_setting.extraction\") }}\n
{{ t(\"setting.prompt_setting.show_top\") }}
{{ t(\"setting.prompt_setting.position\") }}
{{ t(\"setting.prompt_setting.zoom_level\") }}
{{ t(\"setting.prompt_setting.model\") }}
{{ t(\"setting.prompt_setting.save_as\") }}
{{ t(\"setting.prompt_setting.primary_key\") }}
{{ t(\"setting.prompt_setting.column_name\") }}
{{ t(\"setting.prompt_setting.column_type\") }}
\n {{ t(\"setting.prompt_setting.attribute_extraction_prompt\") }}\n
\n {{ t(\"setting.prompt_setting.script_url\") }}\n
\n {{ t(\"setting.prompt_setting.script_timeout\") }}\n
{{ t(\"setting.prompt_setting.columns_names\") }}
{{ t(\"setting.prompt_setting.columns_types\") }}
{{ fileExtensionGroup }}
{{ fileExtension }}