{"version":3,"sources":["webpack:///./node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.mjs","webpack:///./node_modules/@vueuse/shared/index.mjs","webpack:///./node_modules/@vueuse/core/index.mjs","webpack:///./node_modules/@vueuse/shared/index.cjs","webpack:///./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@vueuse/core/index.cjs","webpack:///./node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs","webpack:///./src/modules/Notifications.js","webpack:///./node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.cjs","webpack:///./node_modules/@headlessui/vue/dist/components/disclosure/disclosure.js"],"names":["isVue2","isVue3","Vue2","undefined","install","set","target","key","val","Array","isArray","length","Math","max","splice","del","computedEager","fn","options","_a","result","value","flush","computedWithControl","source","track","trigger","v","dirty","update","get","_track","_trigger","v2","Object","isExtensible","tryOnScopeDispose","createEventHook","fns","Set","off","delete","on","add","offFn","param","Promise","all","from","map","createGlobalState","stateFactory","state","initialized","scope","args","run","localProvidedStateMap","WeakMap","provideLocal","instance","proxy","Error","has","create","localProvidedState","injectLocal","createInjectionState","composable","injectionKey","Symbol","useProvidingState","useInjectedState","createSharedComposable","subscribers","dispose","stop","extendRef","ref","extend","enumerable","unwrap","startsWith","entries","defineProperty","obj","isDefined","makeDestructurable","arr","clone","iterator","index","next","done","assign","toValue","r","resolveUnref","reactify","unrefFn","computedGetter","apply","this","i","reactifyObject","optionsOrKeys","keys","includeOwnProperties","push","getOwnPropertyNames","fromEntries","bind","toReactive","objectRef","Proxy","_","p","receiver","Reflect","deleteProperty","configurable","reactiveComputed","reactiveOmit","flatKeys","flat","predicate","filter","k","e","includes","isClient","window","document","isWorker","WorkerGlobalScope","globalThis","isDef","notNullish","assert","condition","infos","console","warn","toString","prototype","isObject","call","now","Date","timestamp","clamp","n","min","noop","rand","ceil","floor","random","hasOwn","hasOwnProperty","isIOS","getIsIOS","navigator","userAgent","test","createFilterWrapper","wrapper","resolve","reject","thisArg","then","catch","bypassFilter","invoke","debounceFilter","ms","timer","maxTimer","lastRejector","_clearTimeout","timer2","clearTimeout","duration","maxDuration","maxWait","rejectOnCancel","setTimeout","throttleFilter","trailing","leading","lastValue","lastExec","isLeading","clear","_invoke","elapsed","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","directiveHooks","mounted","updated","unmounted","cacheStringFunction","cache","str","hit","hyphenateRE","hyphenate","replace","toLowerCase","camelizeRE","camelize","c","toUpperCase","promiseTimeout","throwOnTimeout","reason","identity","arg","createSingletonPromise","_promise","reset","async","_prev","containsProp","props","some","increaseWithUnit","delta","match","unit","slice","Number","parseFloat","isNaN","objectPick","omitUndefined","reduce","objectOmit","objectEntries","toRef","resolveRef","reactivePick","refAutoReset","defaultValue","afterMs","resetAfter","newValue","useDebounceFn","refDebounced","debounced","updater","refDefault","useThrottleFn","refThrottled","delay","throttled","refWithControl","initial","tracking","triggering","_b","old","onBeforeChange","onChanged","untrackedGet","silentSet","peek","lay","controlledRef","watchWithFilter","cb","watchOptions","watchPausable","syncRef","left","right","deep","immediate","direction","transform","watchers","transformLTR","ltr","transformRTL","rtl","forEach","w","syncRefs","targets","toRefs","replaceRef","copy","newObject","setPrototypeOf","getPrototypeOf","tryOnBeforeMount","sync","tryOnBeforeUnmount","tryOnMounted","tryOnUnmounted","createUntil","isNot","toMatch","timeout","watcher","promises","finally","race","toBe","v1","toBeTruthy","Boolean","toBeNull","toBeUndefined","toBeNaN","toContains","array","changed","changedTimes","count","until","defaultComparator","othVal","useArrayDifference","list","values","compareFn","x","findIndex","y","useArrayEvery","every","element","useArrayFilter","useArrayFind","find","useArrayFindIndex","findLast","useArrayFindLast","isArrayIncludesOptions","useArrayIncludes","comparator","formIndex","fromIndex","value2","useArrayJoin","separator","join","useArrayMap","useArrayReduce","reducer","reduceCallback","sum","resolved","useArraySome","uniq","uniqueElementsBy","acc","useArrayUnique","resolvedList","useCounter","initialValue","_initialValue","POSITIVE_INFINITY","NEGATIVE_INFINITY","inc","dec","REGEX_PARSE","REGEX_FORMAT","defaultMeridiem","hours","minutes","isLowercase","hasPeriod","m","split","curr","formatOrdinal","num","suffixes","formatDate","date","formatStr","years","getFullYear","month","getMonth","days","getDate","getHours","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","day","getDay","meridiem","customMeridiem","matches","Yo","YY","String","YYYY","M","Mo","MM","padStart","MMM","toLocaleDateString","locales","MMMM","D","Do","DD","H","Ho","HH","h","ho","hh","mo","mm","s","so","ss","SSS","d","dd","weekday","ddd","dddd","A","AA","a","aa","$1","_a2","normalizeDate","NaN","substring","useDateFormat","useIntervalFn","interval","immediateCallback","clean","clearInterval","intervalValue","setInterval","stopWatch","useInterval","controls","exposeControls","callback","counter","useLastChanged","useTimeoutFn","isPending","start","useTimeout","ready","useToNumber","method","radix","nanToZero","useToString","useToggle","truthyValue","falsyValue","valueIsRef","_value","toggle","arguments","truthy","watchArray","oldList","Function","newList","onCleanup","oldListRemains","added","found","removed","_2","watchAtMost","current","watchDebounced","debounce","watchDeep","watchIgnorable","filteredCb","ignoreUpdates","ignorePrevAsyncUpdates","ignore","disposables","ignoreCounter","syncCounter","syncCounterPrev","watchImmediate","watchOnce","watchThrottled","throttle","watchTriggerable","cleanupFn","onEffect","_cb","oldValue","res","res2","getWatchSources","getOldValue","sources","item","whenever","ov","onInvalidate","computedAsync","evaluationCallback","initialState","optionsOrRef","evaluating","lazy","shallow","onError","started","counterAtBeginning","hasFinished","cancelCallback","computedInject","defaultSource","treatDefaultAsFactory","ctx","createReusableTemplate","inheritAttrs","render","define","slots","default","reuse","attrs","vnode","keysToCamelKebabCase","$slots","newObj","createTemplatePromise","instances","promise","isResolving","_resolve","_reject","index2","indexOf","singleton","component","renderList","transition","createUnrefFn","unrefElement","elRef","plain","$el","defaultWindow","defaultDocument","defaultNavigator","defaultLocation","location","useEventListener","events","listeners","cleanups","cleanup","register","el","event","listener","options2","addEventListener","removeEventListener","optionsClone","flatMap","_iOSWorkaround","onClickOutside","handler","capture","detectIframe","body","children","documentElement","shouldListen","shouldIgnore","target2","querySelectorAll","composedPath","detail","passive","activeElement","tagName","contains","createKeyPredicate","keyFilter","onKeyStroke","eventName","dedupe","repeat","onKeyDown","onKeyPressed","onKeyUp","DEFAULT_DELAY","onLongPress","elementRef","onDown","ev","_b2","_c","_d","modifiers","self","prevent","preventDefault","stopPropagation","listenerOptions","once","isFocusedElementEditable","hasAttribute","isTypedCharValid","keyCode","metaKey","ctrlKey","altKey","onStartTyping","document2","keydown","templateRef","$refs","useActiveElement","getDeepActiveElement","shadowRoot","relatedTarget","useMounted","isMounted","useSupported","useRafFn","fpsLimit","intervalLimit","previousFrameTimestamp","rafId","loop","requestAnimationFrame","cancelAnimationFrame","useAnimate","keyframes","config","animateOptions","commitStyles","persist","playbackRate","_playbackRate","onReady","error","isSupported","HTMLElement","animate","store","startTime","currentTime","timeline","pending","playState","replaceState","syncResume","play","syncPause","reverse","finish","cancel","init","effect","KeyframeEffect","resumeRef","pauseRef","useAsyncQueue","tasks","interrupt","onFinished","signal","promiseState","aborted","fulfilled","rejected","initialResult","data","activeIndex","updateResult","prev","prevRes","currentRes","whenAborted","useAsyncState","onSuccess","resetOnExecute","throwError","isReady","isLoading","execute","delay2","shell","waitUntilIsLoaded","onFulfilled","onRejected","defaults","JSON","stringify","object","null","getDefaultSerialization","Map","useBase64","base64","_target","blobToBase64","Blob","type","ArrayBuffer","btoa","fromCharCode","Uint8Array","HTMLCanvasElement","toDataURL","quality","HTMLImageElement","img","cloneNode","crossOrigin","imgLoaded","canvas","createElement","getContext","width","height","drawImage","_serializeFn","serializer","serialized","complete","onload","onerror","blob","fr","FileReader","readAsDataURL","useBattery","charging","chargingTime","dischargingTime","level","battery","updateBatteryInfo","getBattery","_battery","useBluetooth","acceptAllDevices","filters","optionalServices","device","requestDevice","bluetooth","err","connectToBluetoothGATTServer","server","isConnected","connected","gatt","connect","disconnect","useMediaQuery","query","matchMedia","mediaQuery","removeListener","addListener","breakpointsTailwind","breakpointsBootstrapV5","xs","sm","md","lg","xl","xxl","breakpointsVuetify","breakpointsAntDesign","breakpointsQuasar","breakpointsSematic","mobileS","mobileM","mobileL","tablet","laptop","laptopL","desktop4K","breakpointsMasterCss","breakpointsPrimeFlex","useBreakpoints","breakpoints","getValue","greaterOrEqual","shortcutMethods","shortcuts","b","points","useBroadcastChannel","name","isClosed","channel","post","data2","postMessage","close","BroadcastChannel","WRITABLE_PROPERTIES","useBrowserLocation","refs","ref2","buildState","state2","history","origin","useCached","refValue","cachedValue","usePermission","permissionDesc","permissionStatus","desc","onChange","permissions","useClipboard","read","copiedDuring","legacy","isClipboardApiSupported","permissionRead","permissionWrite","text","copied","updateText","clipboard","readText","legacyRead","writeText","legacyCopy","ta","style","position","opacity","appendChild","select","execCommand","remove","getSelection","useClipboardItems","content","updateContent","items","write","cloneFnJSON","parse","useCloned","cloned","manual","_global","global","globalKey","handlers","getHandlers","getSSRHandler","fallback","setSSRHandler","guessSerializerType","rawInit","StorageSerializers","boolean","number","any","string","toISOString","customStorageEventName","useStorage","storage","listenToStorageChanges","writeDefaults","mergeDefaults","initOnMounted","localStorage","pauseWatch","resumeWatch","updateFromCustomEvent","removeItem","getItem","setItem","dispatchEvent","CustomEvent","storageArea","rawValue","usePreferredDark","useColorMode","selector","attribute","storageKey","storageRef","emitAuto","disableTransition","modes","auto","light","dark","preferredDark","system","updateHTMLAttrs","selector2","attribute2","querySelector","styleString","createTextNode","head","classList","setAttribute","getComputedStyle","removeChild","defaultOnChanged","mode","useConfirmDialog","revealed","confirmHook","cancelHook","revealHook","reveal","confirm","isCanceled","isRevealed","onReveal","onConfirm","onCancel","useMutationObserver","mutationOptions","observer","MutationObserver","observe","takeRecords","useCssVar","prop","variable","updateCssVar","getPropertyValue","trim","attributeFilter","setProperty","useCurrentElement","vm","currentElement","useCycleList","getInitialValue","listRef","targetList","getIndexOf","fallbackIndex","shift","useDark","valueDark","valueLight","mode2","defaultHandler","isDark","modeVal","fnBypass","fnSetSource","defaultDump","defaultParse","useManualRefHistory","dump","setSource","_createHistoryRecord","snapshot","last","undoStack","redoStack","_setSource","record","commit","unshift","capacity","undo","redo","canUndo","canRedo","useRefHistory","composedFilter","resumeTracking","isTracking","source2","manualHistory","manualCommit","commitNow","batch","canceled","useDebouncedRefHistory","useDeviceMotion","acceleration","z","rotationRate","alpha","beta","gamma","accelerationIncludingGravity","onDeviceMotion","useDeviceOrientation","isAbsolute","absolute","useDevicePixelRatio","pixelRatio","media","observe2","devicePixelRatio","cleanup2","useDevicesList","requestPermissions","constraints","audio","video","onUpdated","devices","videoInputs","kind","audioInputs","audioOutputs","mediaDevices","enumerateDevices","permissionGranted","stream","getTracks","t","ensurePermissions","getUserMedia","useDisplayMedia","enabled","getDisplayMedia","constraint","_start","_stop","useDocumentVisibility","visibility","visibilityState","useDraggable","pointerTypes","exact","onMove","onEnd","onStart","axis","draggingElement","containerElement","handle","draggingHandle","pressedDelta","filterEvent","pointerType","handleEvent","container","containerRect","getBoundingClientRect","targetRect","pos","clientX","clientY","top","move","end","isDragging","useDropZone","isOverDropZone","files","isDataTypeIncluded","_options","onDrop","getFiles","dataTransfer","dataTypes","types","onEnter","onOver","onLeave","useResizeObserver","observerOptions","els","ResizeObserver","_el","useElementBounding","windowResize","windowScroll","bottom","rect","ele","useElementByPoint","multiple","elementsFromPoint","elementFromPoint","useElementHover","delayEnter","delayLeave","isHovered","entering","useElementSize","initialSize","box","isSVG","namespaceURI","stop1","entry","boxSize","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","$elem","styles","formatBoxSize","inlineSize","blockSize","contentRect","offsetWidth","offsetHeight","stop2","useIntersectionObserver","root","rootMargin","threshold","targets2","root2","IntersectionObserver","useElementVisibility","scrollTarget","elementIsVisible","isIntersecting","useEventBus","_off","_listener","size","emit","payload","useEventSource","url","status","eventSource","withCredentials","es","EventSource","onopen","onmessage","event_name","useEyeDropper","sRGBHex","open","openOptions","eyeDropper","EyeDropper","useFavicon","newIcon","baseUrl","rel","favicon","applyIcon","icon","elements","href","link","pop","append","o","payloadMapping","json","isFetchOptions","isAbsoluteURL","headersToObject","headers","Headers","combineCallbacks","combination","callbacks","createFetch","_combination","_fetchOptions","fetchOptions","useFactoryFetch","computedUrl","targetUrl","joinPaths","beforeFetch","afterFetch","onFetchError","useFetch","supportsAbort","AbortController","refetch","updateDataOnError","fetch","initialData","responseEvent","errorEvent","finallyEvent","isFinished","isFetching","statusCode","response","canAbort","controller","abort","onabort","loading","executeCounter","throwOnFailed","currentExecuteCounter","defaultFetchOptions","payloadType","FormData","context","responseData","_a3","fetchResponse","ok","statusText","fetchError","errorData","message","refetch2","onFetchResponse","onFetchFinally","setMethod","put","patch","setType","arrayBuffer","formData","waitUntilFinished","error2","endsWith","DEFAULT_OPTIONS","accept","directory","useFileDialog","input","onchange","localOptions","webkitdirectory","click","useFileSystemAccess","_window","dataType","fileHandle","file","fileName","fileMIME","fileSize","fileLastModified","lastModified","showOpenFilePicker","updateFile","updateData","showSaveFilePicker","save","saveAs","writableStream","createWritable","getFile","useFocus","focusVisible","innerFocused","targetElement","focused","blur","focus","useFocusWithin","useFps","fps","performance","ticks","diff","round","eventHandlers","useFullscreen","autoExit","targetRef","isFullscreen","requestMethod","exitMethod","fullscreenEnabled","fullscreenElementMethod","isCurrentElementFullScreen","isElementFullScreen","exit","enter","handlerCallback","isElementFullScreenValue","mapGamepadToXbox360Controller","gamepad","buttons","bumper","triggers","stick","horizontal","axes","vertical","button","dpad","up","down","back","useGamepad","gamepads","onConnectedHook","onDisconnectedHook","stateFromGamepad","hapticActuators","vibrationActuator","id","pressed","touched","updateGamepadState","_gamepads","getGamepads","onGamepadConnected","onGamepadDisconnected","onConnected","onDisconnected","useGeolocation","enableHighAccuracy","maximumAge","locatedAt","coords","accuracy","latitude","longitude","altitude","altitudeAccuracy","heading","speed","updatePosition","geolocation","watchPosition","clearWatch","defaultEvents$1","oneMinute","useIdle","listenForVisibilityChange","idle","lastActive","onEvent","hidden","loadImage","Image","src","srcset","sizes","class","clazz","crossorigin","referrerPolicy","className","useImage","asyncStateOptions","ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","onStop","onScroll","offset","eventListenerOptions","behavior","internalX","internalY","x2","scrollTo","y2","_x","_y","_element","Document","isScrolling","arrivedState","directions","onScrollEnd","onScrollEndDebounced","setArrivedState","display","flexDirection","scrollLeft","abs","clientWidth","scrollWidth","scrollTop","clientHeight","scrollHeight","onScrollHandler","eventTarget","resolveElement","Window","useInfiniteScroll","onLoadMore","distance","observedElement","isElementVisible","checkAndLoad","measure","isNarrower","defaultEvents","useKeyModifier","modifier","listenerEvent","evt","getModifierState","useLocalStorage","DefaultMagicKeysAliasMap","ctrl","command","cmd","option","useMagicKeys","reactive","useReactive","aliasMap","onEventFired","metaDeps","usedKeys","setRefs","updateRefs","code","key2","rec","usingElRef","timeRangeToArray","timeRanges","ranges","tracksToArray","tracks","label","language","activeCues","cues","inBandMetadataTrackDispatchType","defaultOptions","useMediaControls","seeking","volume","waiting","ended","playing","rate","stalled","buffered","selectedTrack","isPictureInPicture","muted","supportsPictureInPicture","sourceErrorEvent","disableTrack","textTracks","enableTrack","disableTracks","togglePictureInPicture","exitPictureInPicture","requestPictureInPicture","src2","load","isDefault","srcLang","srclang","ignoreCurrentTimeUpdates","time","ignorePlayingUpdates","isPlaying","onSourceError","getMapVue2Compat","useMemoize","resolver","initCache","generateKey","getKey","_loadData","loadData","deleteData","clearData","memoized","useMemory","memory","UseMouseBuiltinExtractors","page","pageX","pageY","client","screen","screenX","screenY","movement","Touch","movementX","movementY","useMouse","touch","resetOnTouchEnds","scroll","_prevMouseEvent","sourceType","extractor","mouseHandler","touchHandler","touches","scrollHandler","MouseEvent","scrollX","scrollY","mouseHandlerWrapper","touchHandlerWrapper","scrollHandlerWrapper","useMouseInElement","handleOutside","elementX","elementY","elementPositionX","elementPositionY","elementHeight","elementWidth","isOutside","pageXOffset","pageYOffset","elX","elY","useMousePressed","drag","onPressed","srcType","onReleased","useNavigatorLanguage","useNetwork","isOnline","saveData","offlineAt","onlineAt","downlink","downlinkMax","rtt","effectiveType","connection","updateNetworkInformation","onLine","useNow","useObjectUrl","release","URL","revokeObjectURL","createObjectURL","useClamp","useOffsetPagination","total","pageSize","onPageChange","onPageSizeChange","onPageCountChange","currentPageSize","pageCount","currentPage","isFirstPage","isLastPage","returnValue","useOnline","usePageLeave","isLeft","toElement","useParallax","deviceOrientationTiltAdjust","deviceOrientationRollAdjust","mouseTiltAdjust","mouseRollAdjust","orientation","roll","tilt","useParentElement","parentElement","usePerformanceObserver","performanceOptions","PerformanceObserver","defaultState","pointerId","pressure","tiltX","tiltY","twist","usePointer","isInside","usePointerLock","pointerLockOptions","triggerElement","lock","Event","currentTarget","requestPointerLock","unlock","exitPointerLock","pointerLockElement","action","usePointerSwipe","onSwipe","onSwipeEnd","onSwipeStart","posStart","updatePosStart","posEnd","updatePosEnd","distanceX","distanceY","isThresholdExceeded","isSwiping","isPointerDown","eventIsAllowed","isReleasingButton","isPrimaryButton","stops","setPointerCapture","usePreferredColorScheme","isLight","usePreferredContrast","isMore","isLess","isCustom","usePreferredLanguages","languages","usePreferredReducedMotion","isReduced","usePrevious","previous","useScreenOrientation","screenOrientation","angle","lockOrientation","unlockOrientation","topVarName","rightVarName","bottomVarName","leftVarName","useScreenSafeArea","topCssVar","rightCssVar","bottomCssVar","leftCssVar","useScriptTag","onLoaded","noModule","defer","scriptTag","loadScript","waitForScriptLoad","resolveWithElement","el2","shouldAppend","unload","checkOverflowScroll","overflowX","overflowY","parent","parentNode","rawEvent","elInitialOverflow","useScrollLock","isLocked","initialOverflow","stopTouchMoveListener","overflow","useSessionStorage","sessionStorage","useShare","shareOptions","_navigator","share","overrideOptions","granted","canShare","defaultSortFn","sort","defaultCompare","useSorted","sortFn","useSpeechRecognition","interimResults","continuous","lang","isListening","isFinal","SpeechRecognition","webkitSpeechRecognition","recognition","onstart","lang2","onresult","transcript","results","result2","onend","useSpeechSynthesis","pitch","synth","speechSynthesis","spokenText","bindEventsForUtterance","utterance2","voice","onpause","onresume","utterance","newUtterance","SpeechSynthesisUtterance","speak","useStepper","steps","initialStep","stepsRef","stepNames","at","isFirst","isLast","step","goTo","goToNext","goToPrevious","goBackTo","isAfter","isNext","isPrevious","isCurrent","isBefore","useStorageAsync","_id","useStyleTag","css","isLoaded","cssRef","getElementById","textContent","useSwipe","coordsStart","coordsEnd","diffX","diffY","getTouchEventCoords","updateCoordsStart","updateCoordsEnd","isPassiveEventSupported","checkPassiveEventSupport","onTouchEnd","lengthX","lengthY","supportsPassive","optionsBlock","useTemplateRefsList","useTextDirection","getAttribute","dir","attributes","removeAttribute","getRangesFromSelection","selection","rangeCount","getRangeAt","useTextSelection","rects","range","onSelectionChange","useTextareaAutosize","textarea","textareaScrollHeight","triggerResize","styleTarget","onResize","watch","useThrottledRefHistory","DEFAULT_UNITS","DEFAULT_MESSAGES","justNow","past","future","year","week","hour","minute","second","invalid","DEFAULT_FORMATTER","useTimeAgo","updateInterval","timeAgo","formatTimeAgo","messages","fullDateFormatter","units","showSecond","rounding","roundFn","toFixed","absDiff","diff2","format","applyFormat","isPast","formatter","unitMax","idx","useTimeoutPoll","timeoutPollOptions","useTimestamp","ts","useTitle","newTitle","title","isReadonly","template","titleTemplate","childList","_TransitionPresets","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","TransitionPresets","linear","createEasingFunction","p0","p1","p2","p3","a1","a2","calcBezier","getSlope","getTforX","aGuessT","currentSlope","currentX","lerp","toVec","executeTransition","to","fromVal","toVal","startedAt","endAt","trans","ease","tick","useTransition","currentId","sourceVal","outputRef","disabled","onStarted","useUrlSearchParams","removeNullishValues","removeFalsyValues","enableWrite","getRawParams","search","hash","constructQuery","params","stringified","URLSearchParams","updateState","unusedKeys","paramsForKey","getAll","mapEntry","shouldUpdate","pathname","useUserMedia","autoSwitch","getDeviceOptions","restart","useVModel","_e","shouldEmit","_emit","$emit","modelOptions","$options","model","cloneFn","triggerEmit","isUpdating","useVModels","ret","useVibrate","pattern","patternRef","intervalControls","vibrate","pattern2","useVirtualList","containerStyle","wrapperProps","calculateRange","currentList","containerRef","useVerticalVirtualList","useHorizontalVirtualList","containerProps","useVirtualListResources","createGetViewCapacity","itemSize","containerSize","createGetOffset","scrollDirection","createCalculateRange","overscan","getOffset","getViewCapacity","viewCapacity","createGetDistance","size2","useWatchForSizes","createComputedTotalSize","scrollToDictionaryForElementScrollKey","createScrollTo","getDistance","resources","itemWidth","getDistanceLeft","offsetLeft","totalWidth","marginLeft","itemHeight","getDistanceTop","offsetTop","totalHeight","marginTop","useWakeLock","wakeLock","onVisibilityChange","request","released","useWebNotification","_requestForPermissions","defaultWebNotificationOptions","Notification","permission","notification","requestPermission","onClick","clickTrigger","onShow","showTrigger","errorTrigger","onClose","closeTrigger","show","overrides","onclick","onshow","onclose","DEFAULT_PING_MESSAGE","resolveNestedOptions","useWebSocket","onMessage","autoClose","protocols","wsRef","urlRef","heartbeatPause","heartbeatResume","pongTimeoutWait","explicitlyClosed","retried","bufferedData","_sendBuffer","buffer","send","resetHeartbeat","useBuffer","_init","ws","WebSocket","autoReconnect","retries","onFailed","heartbeat","pongTimeout","useWebWorker","arg0","workerOptions","worker","terminate","Worker","jobRunner","userFunc","userFuncArgs","depsParser","deps","depsString","dep","createWorkerBlobUrl","blobCode","useWebWorkerFn","dependencies","workerStatus","timeoutId","workerTerminate","_url","generateWorker","blobUrl","newWorker","callWorker","fnArgs","workerFn","useWindowFocus","hasFocus","useWindowScroll","useWindowSize","initialWidth","initialHeight","listenOrientation","includeScrollbar","innerWidth","innerHeight","vueDemi","shallowRef","watchEffect","readonly","customRef","getCurrentScope","onScopeDispose","effectScope","getCurrentInstance","provide","inject","version","isRef","unref","computed","onBeforeMount","nextTick","onBeforeUnmount","onMounted","onUnmounted","isReactive","exports","autoResetRef","controlledComputed","createReactiveFn","debouncedRef","debouncedWatch","eagerComputed","ignorableWatch","pausableWatch","throttledRef","throttledWatch","useDebounce","useThrottle","_arrayWithHoles","_iterableToArrayLimit","_i","_s","_arr","_n","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","shared","core","defineComponent","shallowReactive","Fragment","TransitionGroup","markRaw","onBeforeUpdate","asyncComputed","Vue","Segments","ProductNotify","Notifications","axios","route","useRoute","getNotifications","isLoggedIn","authApi","notifications","log","notify","notifyme","variant","pro","variant_id","resp","deleteNotify","Open","Closed","C","l","captureStackTrace","B","as","defaultOpen","u","buttonId","panelId","disclosureState","panel","closeDisclosure","theirProps","ourProps","slot","G","expose","toggleDisclosure","Space","Enter","onKeydown","onKeyup","J","static","unmount","features","RenderStrategy","Static","visible"],"mappings":"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","file":"js/brand-page~category-page~collection-page~default-layout~home-page~navbar-layout~nosidebar-layout~pro~0b449c1d.420f316d.js","sourcesContent":["import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n}\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => param ? fn(param) : fn()));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"injectLocal must be called in setup\");\n if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue(defaultValue);\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n toValue(element),\n toValue(value),\n index,\n toValue(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\nimport { useEventListener as useEventListener$1 } from '@vueuse/core';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = computedWithControl(\n () => null,\n () => getDeepActiveElement()\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n if (getCurrentInstance()) {\n onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - (previousFrameTimestamp || timestamp);\n if (intervalLimit && delta < intervalLimit) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n el && update();\n });\n watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => {\n nextTick(() => update(true));\n });\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (mode.system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = ref(1);\n if (window) {\n let observe2 = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup2();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe2, { once: true });\n }, cleanup2 = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n };\n let media;\n observe2();\n tryOnScopeDispose(cleanup2);\n }\n return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n const isOverDropZone = ref(false);\n const files = shallowRef(null);\n let counter = 0;\n let isDataTypeIncluded = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const getFiles = (event) => {\n var _a, _b;\n const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n return files.value = list.length === 0 ? null : list;\n };\n useEventListener$1(target, \"dragenter\", (event) => {\n var _a;\n if (_options.dataTypes && event.dataTransfer) {\n const dataTypes = unref(_options.dataTypes);\n isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(event.dataTransfer.types) : dataTypes ? dataTypes.some((item) => event.dataTransfer.types.includes(item)) : true;\n if (!isDataTypeIncluded)\n return;\n }\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener$1(target, \"dragover\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener$1(target, \"dragleave\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n useEventListener$1(target, \"drop\", (event) => {\n var _a;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold: 0\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n ...gamepad,\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value)\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return reactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return reactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX;\n y.value = pos[1] + window.scrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page))\n syncRef(page, currentPage);\n if (isRef(pageSize))\n syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, initialOverflow);\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n var _a;\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval, { immediate: false });\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n if (!isClient || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, behavior = \"auto\" } = options;\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const internalX = ref(window.scrollX);\n const internalY = ref(window.scrollY);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo({ left: x2, behavior });\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo({ top: y2, behavior });\n }\n });\n useEventListener(\n window,\n \"scroll\",\n () => {\n internalX.value = window.scrollX;\n internalY.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","'use strict';\n\nvar vueDemi = require('vue-demi');\n\nfunction computedEager(fn, options) {\n var _a;\n const result = vueDemi.shallowRef();\n vueDemi.watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return vueDemi.readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = vueDemi.ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n vueDemi.watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = vueDemi.customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (vueDemi.getCurrentScope()) {\n vueDemi.onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => param ? fn(param) : fn()));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = vueDemi.effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = vueDemi.getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n vueDemi.provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = vueDemi.getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"injectLocal must be called in setup\");\n if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return vueDemi.inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = vueDemi.effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!vueDemi.isVue3 && !vueDemi.version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (vueDemi.isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return vueDemi.unref(obj);\n return vueDemi.unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return vueDemi.unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : vueDemi.unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? vueDemi.unref : toValue;\n return function(...args) {\n return vueDemi.computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!vueDemi.isRef(objectRef))\n return vueDemi.reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return vueDemi.unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (vueDemi.isRef(objectRef.value[p]) && !vueDemi.isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return vueDemi.reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(vueDemi.computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = vueDemi.ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: vueDemi.readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n mounted: vueDemi.isVue3 ? \"mounted\" : \"inserted\",\n updated: vueDemi.isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: vueDemi.isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return vueDemi.toRef(...args);\n const r = args[0];\n return typeof r === \"function\" ? vueDemi.readonly(vueDemi.customRef(() => ({ get: r, set: noop }))) : vueDemi.ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return vueDemi.customRef((track, trigger) => {\n let value = toValue(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue(defaultValue);\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = vueDemi.ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n vueDemi.watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return vueDemi.computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = vueDemi.ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n vueDemi.watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = vueDemi.customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (vueDemi.isVue2) {\n vueDemi.set(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return vueDemi.watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return vueDemi.watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!vueDemi.isRef(objectRef))\n return vueDemi.toRefs(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = vueDemi.customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (vueDemi.getCurrentInstance())\n vueDemi.onBeforeMount(fn);\n else if (sync)\n fn();\n else\n vueDemi.nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (vueDemi.getCurrentInstance())\n vueDemi.onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (vueDemi.getCurrentInstance())\n vueDemi.onMounted(fn);\n else if (sync)\n fn();\n else\n vueDemi.nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (vueDemi.getCurrentInstance())\n vueDemi.onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = vueDemi.watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!vueDemi.isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = vueDemi.watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return vueDemi.computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return vueDemi.computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return vueDemi.computed(() => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return vueDemi.computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return vueDemi.computed(() => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return vueDemi.computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n toValue(element),\n toValue(value),\n index,\n toValue(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return vueDemi.computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return vueDemi.computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return vueDemi.computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return vueDemi.computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = vueDemi.unref(initialValue);\n const count = vueDemi.ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return vueDemi.computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = vueDemi.ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (vueDemi.isRef(interval) || typeof interval === \"function\") {\n const stopWatch = vueDemi.watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = vueDemi.ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = vueDemi.ref((_a = options.initialValue) != null ? _a : null);\n vueDemi.watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = vueDemi.ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: vueDemi.readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = vueDemi.computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return vueDemi.computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return vueDemi.computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = vueDemi.isRef(initialValue);\n const _value = vueDemi.ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n return vueDemi.watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = vueDemi.ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n vueDemi.nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return vueDemi.watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = vueDemi.ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = vueDemi.watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = vueDemi.ref(0);\n const syncCounter = vueDemi.ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n vueDemi.watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n vueDemi.watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return vueDemi.watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = vueDemi.watch(source, (...args) => {\n vueDemi.nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (vueDemi.isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return vueDemi.watch(\n source,\n (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n },\n options\n );\n}\n\nexports.assert = assert;\nexports.autoResetRef = refAutoReset;\nexports.bypassFilter = bypassFilter;\nexports.camelize = camelize;\nexports.clamp = clamp;\nexports.computedEager = computedEager;\nexports.computedWithControl = computedWithControl;\nexports.containsProp = containsProp;\nexports.controlledComputed = computedWithControl;\nexports.controlledRef = controlledRef;\nexports.createEventHook = createEventHook;\nexports.createFilterWrapper = createFilterWrapper;\nexports.createGlobalState = createGlobalState;\nexports.createInjectionState = createInjectionState;\nexports.createReactiveFn = reactify;\nexports.createSharedComposable = createSharedComposable;\nexports.createSingletonPromise = createSingletonPromise;\nexports.debounceFilter = debounceFilter;\nexports.debouncedRef = refDebounced;\nexports.debouncedWatch = watchDebounced;\nexports.directiveHooks = directiveHooks;\nexports.eagerComputed = computedEager;\nexports.extendRef = extendRef;\nexports.formatDate = formatDate;\nexports.get = get;\nexports.hasOwn = hasOwn;\nexports.hyphenate = hyphenate;\nexports.identity = identity;\nexports.ignorableWatch = watchIgnorable;\nexports.increaseWithUnit = increaseWithUnit;\nexports.injectLocal = injectLocal;\nexports.invoke = invoke;\nexports.isClient = isClient;\nexports.isDef = isDef;\nexports.isDefined = isDefined;\nexports.isIOS = isIOS;\nexports.isObject = isObject;\nexports.isWorker = isWorker;\nexports.makeDestructurable = makeDestructurable;\nexports.noop = noop;\nexports.normalizeDate = normalizeDate;\nexports.notNullish = notNullish;\nexports.now = now;\nexports.objectEntries = objectEntries;\nexports.objectOmit = objectOmit;\nexports.objectPick = objectPick;\nexports.pausableFilter = pausableFilter;\nexports.pausableWatch = watchPausable;\nexports.promiseTimeout = promiseTimeout;\nexports.provideLocal = provideLocal;\nexports.rand = rand;\nexports.reactify = reactify;\nexports.reactifyObject = reactifyObject;\nexports.reactiveComputed = reactiveComputed;\nexports.reactiveOmit = reactiveOmit;\nexports.reactivePick = reactivePick;\nexports.refAutoReset = refAutoReset;\nexports.refDebounced = refDebounced;\nexports.refDefault = refDefault;\nexports.refThrottled = refThrottled;\nexports.refWithControl = refWithControl;\nexports.resolveRef = resolveRef;\nexports.resolveUnref = resolveUnref;\nexports.set = set;\nexports.syncRef = syncRef;\nexports.syncRefs = syncRefs;\nexports.throttleFilter = throttleFilter;\nexports.throttledRef = refThrottled;\nexports.throttledWatch = watchThrottled;\nexports.timestamp = timestamp;\nexports.toReactive = toReactive;\nexports.toRef = toRef;\nexports.toRefs = toRefs;\nexports.toValue = toValue;\nexports.tryOnBeforeMount = tryOnBeforeMount;\nexports.tryOnBeforeUnmount = tryOnBeforeUnmount;\nexports.tryOnMounted = tryOnMounted;\nexports.tryOnScopeDispose = tryOnScopeDispose;\nexports.tryOnUnmounted = tryOnUnmounted;\nexports.until = until;\nexports.useArrayDifference = useArrayDifference;\nexports.useArrayEvery = useArrayEvery;\nexports.useArrayFilter = useArrayFilter;\nexports.useArrayFind = useArrayFind;\nexports.useArrayFindIndex = useArrayFindIndex;\nexports.useArrayFindLast = useArrayFindLast;\nexports.useArrayIncludes = useArrayIncludes;\nexports.useArrayJoin = useArrayJoin;\nexports.useArrayMap = useArrayMap;\nexports.useArrayReduce = useArrayReduce;\nexports.useArraySome = useArraySome;\nexports.useArrayUnique = useArrayUnique;\nexports.useCounter = useCounter;\nexports.useDateFormat = useDateFormat;\nexports.useDebounce = refDebounced;\nexports.useDebounceFn = useDebounceFn;\nexports.useInterval = useInterval;\nexports.useIntervalFn = useIntervalFn;\nexports.useLastChanged = useLastChanged;\nexports.useThrottle = refThrottled;\nexports.useThrottleFn = useThrottleFn;\nexports.useTimeout = useTimeout;\nexports.useTimeoutFn = useTimeoutFn;\nexports.useToNumber = useToNumber;\nexports.useToString = useToString;\nexports.useToggle = useToggle;\nexports.watchArray = watchArray;\nexports.watchAtMost = watchAtMost;\nexports.watchDebounced = watchDebounced;\nexports.watchDeep = watchDeep;\nexports.watchIgnorable = watchIgnorable;\nexports.watchImmediate = watchImmediate;\nexports.watchOnce = watchOnce;\nexports.watchPausable = watchPausable;\nexports.watchThrottled = watchThrottled;\nexports.watchTriggerable = watchTriggerable;\nexports.watchWithFilter = watchWithFilter;\nexports.whenever = whenever;\n","import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n}\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","'use strict';\n\nvar shared = require('@vueuse/shared');\nvar vueDemi = require('vue-demi');\nvar core = require('@vueuse/core');\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (vueDemi.isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = shared.noop\n } = options;\n const started = vueDemi.ref(!lazy);\n const current = shallow ? vueDemi.shallowRef(initialState) : vueDemi.ref(initialState);\n let counter = 0;\n vueDemi.watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return vueDemi.computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = vueDemi.inject(key);\n if (defaultSource)\n source = vueDemi.inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = vueDemi.inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return vueDemi.computed((ctx) => options(source, ctx));\n } else {\n return vueDemi.computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n if (!vueDemi.isVue3 && !vueDemi.version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = vueDemi.shallowRef();\n const define = /* #__PURE__ */ vueDemi.defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ vueDemi.defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return shared.makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[shared.camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!vueDemi.isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = vueDemi.ref([]);\n function create(...args) {\n const props = vueDemi.shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ vueDemi.defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return vueDemi.h(vueDemi.Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => vueDemi.h(vueDemi.TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => shared.toValue(i)));\n };\n}\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = shared.toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = shared.isClient ? window : void 0;\nconst defaultDocument = shared.isClient ? window.document : void 0;\nconst defaultNavigator = shared.isClient ? window.navigator : void 0;\nconst defaultLocation = shared.isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return shared.noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = vueDemi.watch(\n () => [unrefElement(target), shared.toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = shared.isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n shared.tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return;\n if (shared.isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", shared.noop));\n window.document.documentElement.addEventListener(\"click\", shared.noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window, \"click\", listener, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n handler(event);\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && shared.toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = vueDemi.computed(() => unrefElement(target));\n let timeout;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n timeout = setTimeout(\n () => handler(ev),\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = vueDemi.getCurrentInstance();\n let _trigger = () => {\n };\n const element = vueDemi.customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n shared.tryOnMounted(_trigger);\n vueDemi.onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shared.computedWithControl(\n () => null,\n () => getDeepActiveElement()\n );\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n activeElement.trigger();\n }, true);\n useEventListener(window, \"focus\", activeElement.trigger, true);\n }\n return activeElement;\n}\n\nfunction useMounted() {\n const isMounted = vueDemi.ref(false);\n if (vueDemi.getCurrentInstance()) {\n vueDemi.onMounted(() => {\n isMounted.value = true;\n });\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return vueDemi.computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow\n } = options;\n const isActive = vueDemi.ref(false);\n const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n const delta = timestamp - (previousFrameTimestamp || timestamp);\n if (intervalLimit && delta < intervalLimit) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n fn({ delta, timestamp });\n previousFrameTimestamp = timestamp;\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n shared.tryOnScopeDispose(pause);\n return {\n isActive: vueDemi.readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (shared.isObject(options)) {\n config = options;\n animateOptions = shared.objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = vueDemi.shallowRef(void 0);\n const store = vueDemi.shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = vueDemi.computed(() => store.pending);\n const playState = vueDemi.computed(() => store.playState);\n const replaceState = vueDemi.computed(() => store.replaceState);\n const startTime = vueDemi.computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = vueDemi.computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = vueDemi.computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = vueDemi.computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n !animate.value && update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n vueDemi.watch(() => unrefElement(target), (el) => {\n el && update();\n });\n vueDemi.watch(() => keyframes, (value) => {\n !animate.value && update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n shared.toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n shared.tryOnMounted(() => {\n vueDemi.nextTick(() => update(true));\n });\n shared.tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n animate.value = el.animate(shared.toValue(keyframes), animateOptions);\n if (commitStyles)\n animate.value.commitStyles();\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = shared.noop,\n onFinished = shared.noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = vueDemi.reactive(initialResult);\n const activeIndex = vueDemi.ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = shared.noop,\n onSuccess = shared.noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? vueDemi.shallowRef(initialState) : vueDemi.ref(initialState);\n const isReady = vueDemi.ref(false);\n const isLoading = vueDemi.ref(false);\n const error = vueDemi.shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await shared.promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n shared.until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = vueDemi.ref(\"\");\n const promise = vueDemi.ref();\n function execute() {\n if (!shared.isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = shared.toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (vueDemi.isRef(target) || typeof target === \"function\")\n vueDemi.watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n const charging = vueDemi.ref(false);\n const chargingTime = vueDemi.ref(0);\n const dischargingTime = vueDemi.ref(0);\n const level = vueDemi.ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = vueDemi.shallowRef(void 0);\n const error = vueDemi.shallowRef(null);\n vueDemi.watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = vueDemi.ref();\n const isConnected = vueDemi.computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n shared.tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n shared.tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = vueDemi.ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = vueDemi.watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(shared.toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n shared.tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetify = {\n xs: 600,\n sm: 960,\n md: 1264,\n lg: 1904\n};\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 600,\n sm: 1024,\n md: 1440,\n lg: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = breakpoints[k];\n if (delta != null)\n v = shared.increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => greaterOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return Object.assign(shortcutMethods, {\n greater(k) {\n return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n },\n greaterOrEqual,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n },\n smallerOrEqual(k) {\n return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n },\n between(a, b) {\n return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return vueDemi.computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = vueDemi.ref(false);\n const channel = vueDemi.ref();\n const data = vueDemi.ref();\n const error = vueDemi.shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n shared.tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n shared.tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, vueDemi.ref()])\n );\n for (const [key, ref2] of shared.objectEntries(refs)) {\n vueDemi.watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return vueDemi.reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = vueDemi.ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = vueDemi.ref(refValue.value);\n vueDemi.watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n let permissionStatus;\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = vueDemi.ref();\n const onChange = () => {\n if (permissionStatus)\n state.value = permissionStatus.state;\n };\n const query = shared.createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus) {\n try {\n permissionStatus = await navigator.permissions.query(desc);\n useEventListener(permissionStatus, \"change\", onChange);\n onChange();\n } catch (e) {\n state.value = \"prompt\";\n }\n }\n return permissionStatus;\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = vueDemi.computed(() => isClipboardApiSupported.value || legacy);\n const text = vueDemi.ref(\"\");\n const copied = vueDemi.ref(false);\n const timeout = shared.useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = shared.toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = vueDemi.ref([]);\n const copied = vueDemi.ref(false);\n const timeout = shared.useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent);\n async function copy(value = shared.toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = vueDemi.ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(shared.toValue(source));\n }\n if (!manual && (vueDemi.isRef(source) || typeof source === \"function\")) {\n vueDemi.watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = shared.toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n shared.tryOnMounted(() => {\n useEventListener(window, \"storage\", update);\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n return data;\n function write(v) {\n try {\n if (v == null) {\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n const oldValue = storage.getItem(key);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n if (window) {\n window.dispatchEvent(new CustomEvent(customStorageEventName, {\n detail: {\n key,\n oldValue,\n newValue: serialized,\n storageArea: storage\n }\n }));\n }\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit !== null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n vueDemi.nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = vueDemi.computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? shared.toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = vueDemi.computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n style.appendChild(document.createTextNode(styleString));\n window.document.head.appendChild(style);\n }\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n el.classList.add(v);\n else\n el.classList.remove(v);\n });\n } else {\n el.setAttribute(attribute2, value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n vueDemi.watch(state, onChanged, { flush: \"post\", immediate: true });\n shared.tryOnMounted(() => onChanged(state.value));\n const auto = vueDemi.computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = vueDemi.ref(false)) {\n const confirmHook = shared.createEventHook();\n const cancelHook = shared.createEventHook();\n const revealHook = shared.createEventHook();\n let _resolve = shared.noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: vueDemi.computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = vueDemi.watch(\n () => unrefElement(target),\n (el) => {\n cleanup();\n if (isSupported.value && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n },\n { immediate: true }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n cleanup();\n stopWatch();\n };\n shared.tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n const variable = vueDemi.ref(initialValue);\n const elRef = vueDemi.computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = shared.toValue(prop);\n const el = shared.toValue(elRef);\n if (el && window) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n vueDemi.watch(\n [elRef, () => shared.toValue(prop)],\n updateCssVar,\n { immediate: true }\n );\n vueDemi.watch(\n variable,\n (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(shared.toValue(prop), val);\n }\n );\n return variable;\n}\n\nfunction useCurrentElement() {\n const vm = vueDemi.getCurrentInstance();\n const currentElement = shared.computedWithControl(\n () => null,\n () => vm.proxy.$el\n );\n vueDemi.onUpdated(currentElement.trigger);\n vueDemi.onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = vueDemi.shallowRef(getInitialValue());\n const listRef = shared.toRef(list);\n const index = vueDemi.computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = shared.toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : shared.toValue(list)[0])) != null ? _b : void 0;\n }\n vueDemi.watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const isDark = vueDemi.computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (mode.system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return vueDemi.markRaw({\n snapshot: dump(source.value),\n timestamp: shared.timestamp()\n });\n }\n const last = vueDemi.ref(_createHistoryRecord());\n const undoStack = vueDemi.ref([]);\n const redoStack = vueDemi.ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = vueDemi.computed(() => [last.value, ...undoStack.value]);\n const canUndo = vueDemi.computed(() => undoStack.value.length > 0);\n const canRedo = vueDemi.computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = shared.pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = shared.watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? shared.debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = shared.bypassFilter\n } = options;\n const acceleration = vueDemi.ref({ x: null, y: null, z: null });\n const rotationRate = vueDemi.ref({ alpha: null, beta: null, gamma: null });\n const interval = vueDemi.ref(0);\n const accelerationIncludingGravity = vueDemi.ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = shared.createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = vueDemi.ref(false);\n const alpha = vueDemi.ref(null);\n const beta = vueDemi.ref(null);\n const gamma = vueDemi.ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = vueDemi.ref(1);\n if (window) {\n let observe2 = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup2();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe2, { once: true });\n }, cleanup2 = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n };\n let media;\n observe2();\n shared.tryOnScopeDispose(cleanup2);\n }\n return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = vueDemi.ref([]);\n const videoInputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = vueDemi.computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = vueDemi.ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = vueDemi.ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = vueDemi.shallowRef();\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n vueDemi.watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return vueDemi.ref(\"visible\");\n const visibility = vueDemi.ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target\n } = options;\n const position = vueDemi.ref(\n (_a = shared.toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = vueDemi.ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (shared.toValue(preventDefault))\n e.preventDefault();\n if (shared.toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (shared.toValue(exact) && e.target !== shared.toValue(target))\n return;\n const container = shared.toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = shared.toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = shared.toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = shared.toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (shared.isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...shared.toRefs(position),\n position,\n isDragging: vueDemi.computed(() => !!pressedDelta.value),\n style: vueDemi.computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n const isOverDropZone = vueDemi.ref(false);\n const files = vueDemi.shallowRef(null);\n let counter = 0;\n let isDataTypeIncluded = true;\n if (shared.isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const getFiles = (event) => {\n var _a, _b;\n const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n return files.value = list.length === 0 ? null : list;\n };\n core.useEventListener(target, \"dragenter\", (event) => {\n var _a;\n if (_options.dataTypes && event.dataTransfer) {\n const dataTypes = vueDemi.unref(_options.dataTypes);\n isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(event.dataTransfer.types) : dataTypes ? dataTypes.some((item) => event.dataTransfer.types.includes(item)) : true;\n if (!isDataTypeIncluded)\n return;\n }\n event.preventDefault();\n counter += 1;\n isOverDropZone.value = true;\n (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n core.useEventListener(target, \"dragover\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n core.useEventListener(target, \"dragleave\", (event) => {\n var _a;\n if (!isDataTypeIncluded)\n return;\n event.preventDefault();\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n core.useEventListener(target, \"drop\", (event) => {\n var _a;\n event.preventDefault();\n counter = 0;\n isOverDropZone.value = false;\n (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n });\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = vueDemi.computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n const stopWatch = vueDemi.watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els)\n _el && observer.observe(_el, observerOptions);\n }\n },\n { immediate: true, flush: \"post\", deep: true }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n shared.tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true\n } = options;\n const height = vueDemi.ref(0);\n const bottom = vueDemi.ref(0);\n const left = vueDemi.ref(0);\n const right = vueDemi.ref(0);\n const top = vueDemi.ref(0);\n const width = vueDemi.ref(0);\n const x = vueDemi.ref(0);\n const y = vueDemi.ref(0);\n function update() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n useResizeObserver(target, update);\n vueDemi.watch(() => unrefElement(target), (ele) => !ele && update());\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n shared.tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (shared.toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = vueDemi.ref(null);\n const cb = () => {\n var _a, _b;\n element.value = shared.toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(shared.toValue(x), shared.toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(shared.toValue(x), shared.toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : shared.useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = vueDemi.ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = vueDemi.ref(initialSize.width);\n const height = vueDemi.ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const styles = window.getComputedStyle($elem);\n width.value = Number.parseFloat(styles.width);\n height.value = Number.parseFloat(styles.height);\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n shared.tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = vueDemi.watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = vueDemi.computed(() => {\n const _target = shared.toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(shared.notNullish);\n });\n let cleanup = shared.noop;\n const isActive = vueDemi.ref(immediate);\n const stopWatch = isSupported.value ? vueDemi.watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = shared.noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : shared.noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n shared.tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget } = options;\n const elementIsVisible = vueDemi.ref(false);\n useIntersectionObserver(\n element,\n ([{ isIntersecting }]) => {\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold: 0\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = vueDemi.getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n const event = vueDemi.ref(null);\n const data = vueDemi.ref(null);\n const status = vueDemi.ref(\"CONNECTING\");\n const eventSource = vueDemi.ref(null);\n const error = vueDemi.shallowRef(null);\n const {\n withCredentials = false\n } = options;\n const close = () => {\n if (eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n }\n };\n const es = new EventSource(url, { withCredentials });\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n shared.tryOnScopeDispose(() => {\n close();\n });\n return {\n eventSource,\n event,\n data,\n status,\n error,\n close\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = vueDemi.ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = shared.toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n vueDemi.watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && shared.containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = vueDemi.computed(() => {\n const baseUrl = shared.toValue(config.baseUrl);\n const targetUrl = shared.toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = shared.createEventHook();\n const errorEvent = shared.createEventHook();\n const finallyEvent = shared.createEventHook();\n const isFinished = vueDemi.ref(false);\n const isFetching = vueDemi.ref(false);\n const aborted = vueDemi.ref(false);\n const statusCode = vueDemi.ref(null);\n const response = vueDemi.shallowRef(null);\n const error = vueDemi.shallowRef(null);\n const data = vueDemi.shallowRef(initialData || null);\n const canAbort = vueDemi.computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = shared.useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = shared.toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: shared.toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return new Promise((resolve, reject) => {\n var _a3;\n fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n const refetch = shared.toRef(options.refetch);\n vueDemi.watch(\n [\n refetch,\n shared.toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished,\n statusCode,\n response,\n error,\n data,\n isFetching,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (vueDemi.isRef(config.payload)) {\n vueDemi.watch(\n [\n refetch,\n shared.toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n shared.until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = vueDemi.ref(null);\n const { on: onChange, trigger } = shared.createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n trigger(files.value);\n };\n }\n const reset = () => {\n files.value = null;\n if (input)\n input.value = \"\";\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (shared.hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: vueDemi.readonly(files),\n open,\n reset,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = vueDemi.ref();\n const data = vueDemi.ref();\n const file = vueDemi.ref();\n const fileName = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...shared.toValue(options), ..._options });\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n const type = shared.toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n vueDemi.watch(() => shared.toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false } = options;\n const innerFocused = vueDemi.ref(false);\n const targetElement = vueDemi.computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = vueDemi.computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n vueDemi.watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n const activeElement = useActiveElement(options);\n const targetElement = vueDemi.computed(() => unrefElement(target));\n const focused = vueDemi.computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = vueDemi.ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = vueDemi.computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = vueDemi.ref(false);\n const requestMethod = vueDemi.computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = vueDemi.computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = vueDemi.computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n shared.tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return vueDemi.computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = vueDemi.ref([]);\n const onConnectedHook = shared.createEventHook();\n const onDisconnectedHook = shared.createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n ...gamepad,\n id: gamepad.id,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad) {\n const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n if (index > -1)\n gamepads.value[index] = stateFromGamepad(gamepad);\n }\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n shared.tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n if (_gamepads) {\n for (let i = 0; i < _gamepads.length; ++i) {\n const gamepad = _gamepads[i];\n if (gamepad)\n onGamepadConnected(gamepad);\n }\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = vueDemi.ref(null);\n const error = vueDemi.shallowRef(null);\n const coords = vueDemi.ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n shared.tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = shared.throttleFilter(50)\n } = options;\n const idle = vueDemi.ref(initialState);\n const lastActive = vueDemi.ref(shared.timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = shared.createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = shared.timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(shared.toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n vueDemi.watch(\n () => shared.toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = shared.noop,\n onScroll = shared.noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow\n } = options;\n const internalX = vueDemi.ref(0);\n const internalY = vueDemi.ref(0);\n const x = vueDemi.computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = vueDemi.computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c;\n if (!window)\n return;\n const _element = shared.toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = shared.toValue(_y)) != null ? _a : y.value,\n left: (_b = shared.toValue(_x)) != null ? _b : x.value,\n behavior: shared.toValue(behavior)\n });\n }\n const isScrolling = vueDemi.ref(false);\n const arrivedState = vueDemi.reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = vueDemi.reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = shared.useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? shared.useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n shared.tryOnMounted(() => {\n const _element = shared.toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = shared.toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100\n } = options;\n const state = vueDemi.reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = vueDemi.ref();\n const isLoading = vueDemi.computed(() => !!promise.value);\n const observedElement = vueDemi.computed(() => {\n return resolveElement(shared.toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value)\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n vueDemi.nextTick(() => checkAndLoad());\n });\n }\n }\n }\n vueDemi.watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n return {\n isLoading\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = vueDemi.ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = shared.noop\n } = options;\n const current = vueDemi.reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? vueDemi.reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = vueDemi.computed(() => keys.every((key) => shared.toValue(proxy[key])));\n } else {\n refs[prop] = vueDemi.ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? shared.toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (shared.toValue(source))\n cb(shared.toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const currentTime = vueDemi.ref(0);\n const duration = vueDemi.ref(0);\n const seeking = vueDemi.ref(false);\n const volume = vueDemi.ref(1);\n const waiting = vueDemi.ref(false);\n const ended = vueDemi.ref(false);\n const playing = vueDemi.ref(false);\n const rate = vueDemi.ref(1);\n const stalled = vueDemi.ref(false);\n const buffered = vueDemi.ref([]);\n const tracks = vueDemi.ref([]);\n const selectedTrack = vueDemi.ref(-1);\n const isPictureInPicture = vueDemi.ref(false);\n const muted = vueDemi.ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = shared.createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n vueDemi.watchEffect(() => {\n if (!document)\n return;\n const el = shared.toValue(target);\n if (!el)\n return;\n const src = shared.toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (shared.isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n shared.tryOnScopeDispose(() => {\n const el = shared.toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n vueDemi.watch([target, volume], () => {\n const el = shared.toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n vueDemi.watch([target, muted], () => {\n const el = shared.toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n vueDemi.watch([target, rate], () => {\n const el = shared.toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n vueDemi.watchEffect(() => {\n if (!document)\n return;\n const textTracks = shared.toValue(options.tracks);\n const el = shared.toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = shared.watchIgnorable(currentTime, (time) => {\n const el = shared.toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = shared.watchIgnorable(playing, (isPlaying) => {\n const el = shared.toValue(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = shared.toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = shared.toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(shared.toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = shared.toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = shared.toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = vueDemi.watch([target], () => {\n const el = shared.toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n shared.tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = vueDemi.reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => vueDemi.set(data, key, value),\n has: (key) => shared.hasOwn(data, key),\n delete: (key) => vueDemi.del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n vueDemi.del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return vueDemi.reactive(options.cache);\n if (vueDemi.isVue2)\n return getMapVue2Compat();\n return vueDemi.reactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = vueDemi.ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n shared.useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n const x = vueDemi.ref(initialValue.x);\n const y = vueDemi.ref(initialValue.y);\n const sourceType = vueDemi.ref(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX;\n y.value = pos[1] + window.scrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = vueDemi.ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = vueDemi.ref(0);\n const elementY = vueDemi.ref(0);\n const elementPositionX = vueDemi.ref(0);\n const elementPositionY = vueDemi.ref(0);\n const elementHeight = vueDemi.ref(0);\n const elementWidth = vueDemi.ref(0);\n const isOutside = vueDemi.ref(true);\n let stop = () => {\n };\n if (window) {\n stop = vueDemi.watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el)\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = vueDemi.ref(initialValue);\n const sourceType = vueDemi.ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = vueDemi.computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = vueDemi.ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = vueDemi.ref(true);\n const saveData = vueDemi.ref(false);\n const offlineAt = vueDemi.ref(void 0);\n const onlineAt = vueDemi.ref(void 0);\n const downlink = vueDemi.ref(void 0);\n const downlinkMax = vueDemi.ref(void 0);\n const rtt = vueDemi.ref(void 0);\n const effectiveType = vueDemi.ref(void 0);\n const type = vueDemi.ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n onlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = vueDemi.ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : shared.useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = vueDemi.ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n vueDemi.watch(\n () => shared.toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n shared.tryOnScopeDispose(release);\n return vueDemi.readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || vueDemi.isReadonly(value))\n return vueDemi.computed(() => shared.clamp(shared.toValue(value), shared.toValue(min), shared.toValue(max)));\n const _value = vueDemi.ref(value);\n return vueDemi.computed({\n get() {\n return _value.value = shared.clamp(_value.value, shared.toValue(min), shared.toValue(max));\n },\n set(value2) {\n _value.value = shared.clamp(value2, shared.toValue(min), shared.toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = shared.noop,\n onPageSizeChange = shared.noop,\n onPageCountChange = shared.noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = vueDemi.computed(() => Math.max(\n 1,\n Math.ceil(shared.toValue(total) / shared.toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = vueDemi.computed(() => currentPage.value === 1);\n const isLastPage = vueDemi.computed(() => currentPage.value === pageCount.value);\n if (vueDemi.isRef(page))\n shared.syncRef(page, currentPage);\n if (vueDemi.isRef(pageSize))\n shared.syncRef(pageSize, currentPageSize);\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n vueDemi.watch(currentPage, () => {\n onPageChange(vueDemi.reactive(returnValue));\n });\n vueDemi.watch(currentPageSize, () => {\n onPageSizeChange(vueDemi.reactive(returnValue));\n });\n vueDemi.watch(pageCount, () => {\n onPageCountChange(vueDemi.reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = vueDemi.ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = vueDemi.reactive(useDeviceOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = vueDemi.computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n return \"deviceOrientation\";\n return \"mouse\";\n });\n const roll = vueDemi.computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = -orientation.beta / 90;\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = vueDemi.computed(() => {\n if (source.value === \"deviceOrientation\") {\n const value = orientation.gamma / 90;\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = vueDemi.shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n shared.tryOnMounted(update);\n vueDemi.watch(() => shared.toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n shared.tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = vueDemi.ref(false);\n const state = vueDemi.ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = shared.objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...shared.toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument, pointerLockOptions } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = vueDemi.ref();\n const triggerElement = vueDemi.ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e, options2) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n return await shared.until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await shared.until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = shared.toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart\n } = options;\n const posStart = vueDemi.reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = vueDemi.reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = vueDemi.computed(() => posStart.x - posEnd.x);\n const distanceY = vueDemi.computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = vueDemi.computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = vueDemi.ref(false);\n const isPointerDown = vueDemi.ref(false);\n const direction = vueDemi.computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n var _a, _b;\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n })\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: vueDemi.readonly(isSwiping),\n direction: vueDemi.readonly(direction),\n posStart: vueDemi.readonly(posStart),\n posEnd: vueDemi.readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return vueDemi.computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return vueDemi.computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return vueDemi.ref([\"en\"]);\n const navigator = window.navigator;\n const value = vueDemi.ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return vueDemi.computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = vueDemi.shallowRef(initialValue);\n vueDemi.watch(\n shared.toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return vueDemi.readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = vueDemi.ref(screenOrientation.type);\n const angle = vueDemi.ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (!isSupported.value)\n return Promise.reject(new Error(\"Not supported\"));\n return screenOrientation.lock(type);\n };\n const unlockOrientation = () => {\n if (isSupported.value)\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = vueDemi.ref(\"\");\n const right = vueDemi.ref(\"\");\n const bottom = vueDemi.ref(\"\");\n const left = vueDemi.ref(\"\");\n if (shared.isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", shared.useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = shared.noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = vueDemi.ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${shared.toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = shared.toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${shared.toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n shared.tryOnMounted(load);\n if (!manual)\n shared.tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = vueDemi.ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow;\n vueDemi.watch(shared.toRef(element), (el) => {\n const target = resolveElement(shared.toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, initialOverflow);\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(shared.toValue(element));\n if (!el || isLocked.value)\n return;\n if (shared.isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n var _a;\n const el = resolveElement(shared.toValue(element));\n if (!el || !isLocked.value)\n return;\n shared.isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n shared.tryOnScopeDispose(unlock);\n return vueDemi.computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else\n unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...shared.toValue(shareOptions),\n ...shared.toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return vueDemi.computed(() => sortFn([...shared.toValue(source)], compareFn));\n vueDemi.watchEffect(() => {\n const result = sortFn(shared.toValue(source), compareFn);\n if (vueDemi.isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = shared.toRef(options.lang || \"en-US\");\n const isListening = vueDemi.ref(false);\n const isFinal = vueDemi.ref(false);\n const result = vueDemi.ref(\"\");\n const error = vueDemi.shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = shared.toValue(lang);\n recognition.onstart = () => {\n isFinal.value = false;\n };\n vueDemi.watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const transcript = Array.from(event.results).map((result2) => {\n isFinal.value = result2.isFinal;\n return result2[0];\n }).map((result2) => result2.transcript).join(\"\");\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = shared.toValue(lang);\n };\n vueDemi.watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n shared.tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = vueDemi.ref(false);\n const status = vueDemi.ref(\"init\");\n const spokenText = shared.toRef(text || \"\");\n const lang = shared.toRef(options.lang || \"en-US\");\n const error = vueDemi.shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = shared.toValue(lang);\n utterance2.voice = shared.toValue(options.voice) || null;\n utterance2.pitch = shared.toValue(pitch);\n utterance2.rate = shared.toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = vueDemi.computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n utterance && synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n vueDemi.watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n vueDemi.watch(options.voice, () => {\n synth.cancel();\n });\n }\n vueDemi.watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n shared.tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = vueDemi.ref(steps);\n const stepNames = vueDemi.computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = vueDemi.ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = vueDemi.computed(() => at(index.value));\n const isFirst = vueDemi.computed(() => index.value === 0);\n const isLast = vueDemi.computed(() => index.value === stepNames.value.length - 1);\n const next = vueDemi.computed(() => stepNames.value[index.value + 1]);\n const previous = vueDemi.computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = shared.toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else\n data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n shared.watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = vueDemi.ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = vueDemi.ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = vueDemi.watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n shared.tryOnMounted(load);\n if (!manual)\n shared.tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: vueDemi.readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = vueDemi.reactive({ x: 0, y: 0 });\n const coordsEnd = vueDemi.reactive({ x: 0, y: 0 });\n const diffX = vueDemi.computed(() => coordsStart.x - coordsEnd.x);\n const diffY = vueDemi.computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = vueDemi.computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = vueDemi.ref(false);\n const direction = vueDemi.computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", shared.noop, optionsBlock);\n document.removeEventListener(\"x\", shared.noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = vueDemi.ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n vueDemi.onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = vueDemi.ref(getValue());\n shared.tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return vueDemi.computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = vueDemi.ref(null);\n const text = vueDemi.computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = vueDemi.computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = vueDemi.computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n const textarea = vueDemi.ref(options == null ? void 0 : options.element);\n const input = vueDemi.ref(options == null ? void 0 : options.input);\n const textareaScrollHeight = vueDemi.ref(1);\n function triggerResize() {\n var _a, _b;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style.height = \"1px\";\n textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n if (options == null ? void 0 : options.styleTarget)\n shared.toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style.height = height;\n (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n }\n vueDemi.watch([input, textarea], () => vueDemi.nextTick(triggerResize), { immediate: true });\n useResizeObserver(textarea, () => triggerResize());\n if (options == null ? void 0 : options.watch)\n vueDemi.watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = shared.throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = vueDemi.computed(() => formatTimeAgo(new Date(shared.toValue(time)), options, shared.toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = shared.useTimeoutFn(loop, interval, { immediate: false });\n const isActive = vueDemi.ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n shared.tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = vueDemi.ref(shared.timestamp() + offset);\n const update = () => ts.value = shared.timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : shared.useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument\n } = options;\n const title = shared.toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : shared.toValue(template).replace(/%s/g, t);\n }\n vueDemi.watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: shared.identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = shared.toValue(from);\n const toVal = shared.toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = shared.toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = shared.toValue(options.transition)) != null ? _b : shared.identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = shared.toValue(source);\n return typeof v === \"number\" ? v : v.map(shared.toValue);\n };\n const outputRef = vueDemi.ref(sourceVal());\n vueDemi.watch(sourceVal, async (to) => {\n var _a, _b;\n if (shared.toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await shared.promiseTimeout(shared.toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(shared.toValue) : shared.toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n vueDemi.watch(() => shared.toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n shared.tryOnScopeDispose(() => {\n currentId++;\n });\n return vueDemi.computed(() => shared.toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return vueDemi.reactive(initialValue);\n const state = vueDemi.reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = shared.pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = vueDemi.ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = vueDemi.ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = vueDemi.ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = vueDemi.shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n vueDemi.watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n vueDemi.watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = vueDemi.getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (vueDemi.isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => shared.isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = vueDemi.ref(initialValue);\n let isUpdating = false;\n vueDemi.watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n vueDemi.nextTick(() => isUpdating = false);\n }\n }\n );\n vueDemi.watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return vueDemi.computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = shared.toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = shared.useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = vueDemi.ref(null);\n const size = useElementSize(containerRef);\n const currentList = vueDemi.ref([]);\n const source = vueDemi.shallowRef(list);\n const state = vueDemi.ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n vueDemi.watch([size.width, size.height, list], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return vueDemi.computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = vueDemi.computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = vueDemi.computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = vueDemi.computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = vueDemi.computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = vueDemi.ref(false);\n async function onVisibilityChange() {\n if (!isSupported.value || !wakeLock)\n return;\n if (document && document.visibilityState === \"visible\")\n wakeLock = await navigator.wakeLock.request(\"screen\");\n isActive.value = !wakeLock.released;\n }\n if (document)\n useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n async function request(type) {\n if (!isSupported.value)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported.value || !wakeLock)\n return;\n await wakeLock.release();\n isActive.value = !wakeLock.released;\n wakeLock = null;\n }\n return {\n isSupported,\n isActive,\n request,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => !!window && \"Notification\" in window);\n const permissionGranted = vueDemi.ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = vueDemi.ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = shared.createEventHook();\n const { on: onShow, trigger: showTrigger } = shared.createEventHook();\n const { on: onError, trigger: errorTrigger } = shared.createEventHook();\n const { on: onClose, trigger: closeTrigger } = shared.createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n shared.tryOnMounted(ensurePermissions);\n shared.tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = vueDemi.ref(null);\n const status = vueDemi.ref(\"CLOSED\");\n const wsRef = vueDemi.ref();\n const urlRef = shared.toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n if (!shared.isClient || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n wsRef.value = void 0;\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === message)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = shared.useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (shared.isClient)\n useEventListener(\"beforeunload\", () => close());\n shared.tryOnScopeDispose(close);\n }\n const open = () => {\n if (!shared.isClient && !shared.isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n vueDemi.watch(urlRef, open, { immediate: true });\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = vueDemi.ref(null);\n const worker = vueDemi.shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n shared.tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction depsParser(deps) {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = vueDemi.ref();\n const workerStatus = vueDemi.ref(\"PENDING\");\n const promise = vueDemi.ref({});\n const timeoutId = vueDemi.ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n shared.tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n promise.value = {\n resolve,\n reject\n };\n worker.value && worker.value.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return vueDemi.ref(false);\n const focused = vueDemi.ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, behavior = \"auto\" } = options;\n if (!window) {\n return {\n x: vueDemi.ref(0),\n y: vueDemi.ref(0)\n };\n }\n const internalX = vueDemi.ref(window.scrollX);\n const internalY = vueDemi.ref(window.scrollY);\n const x = vueDemi.computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo({ left: x2, behavior });\n }\n });\n const y = vueDemi.computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo({ top: y2, behavior });\n }\n });\n useEventListener(\n window,\n \"scroll\",\n () => {\n internalX.value = window.scrollX;\n internalY.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true\n } = options;\n const width = vueDemi.ref(initialWidth);\n const height = vueDemi.ref(initialHeight);\n const update = () => {\n if (window) {\n if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n shared.tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n vueDemi.watch(matches, () => update());\n }\n return { width, height };\n}\n\nexports.DefaultMagicKeysAliasMap = DefaultMagicKeysAliasMap;\nexports.StorageSerializers = StorageSerializers;\nexports.TransitionPresets = TransitionPresets;\nexports.asyncComputed = computedAsync;\nexports.breakpointsAntDesign = breakpointsAntDesign;\nexports.breakpointsBootstrapV5 = breakpointsBootstrapV5;\nexports.breakpointsMasterCss = breakpointsMasterCss;\nexports.breakpointsPrimeFlex = breakpointsPrimeFlex;\nexports.breakpointsQuasar = breakpointsQuasar;\nexports.breakpointsSematic = breakpointsSematic;\nexports.breakpointsTailwind = breakpointsTailwind;\nexports.breakpointsVuetify = breakpointsVuetify;\nexports.cloneFnJSON = cloneFnJSON;\nexports.computedAsync = computedAsync;\nexports.computedInject = computedInject;\nexports.createFetch = createFetch;\nexports.createReusableTemplate = createReusableTemplate;\nexports.createTemplatePromise = createTemplatePromise;\nexports.createUnrefFn = createUnrefFn;\nexports.customStorageEventName = customStorageEventName;\nexports.defaultDocument = defaultDocument;\nexports.defaultLocation = defaultLocation;\nexports.defaultNavigator = defaultNavigator;\nexports.defaultWindow = defaultWindow;\nexports.executeTransition = executeTransition;\nexports.formatTimeAgo = formatTimeAgo;\nexports.getSSRHandler = getSSRHandler;\nexports.mapGamepadToXbox360Controller = mapGamepadToXbox360Controller;\nexports.onClickOutside = onClickOutside;\nexports.onKeyDown = onKeyDown;\nexports.onKeyPressed = onKeyPressed;\nexports.onKeyStroke = onKeyStroke;\nexports.onKeyUp = onKeyUp;\nexports.onLongPress = onLongPress;\nexports.onStartTyping = onStartTyping;\nexports.setSSRHandler = setSSRHandler;\nexports.templateRef = templateRef;\nexports.unrefElement = unrefElement;\nexports.useActiveElement = useActiveElement;\nexports.useAnimate = useAnimate;\nexports.useAsyncQueue = useAsyncQueue;\nexports.useAsyncState = useAsyncState;\nexports.useBase64 = useBase64;\nexports.useBattery = useBattery;\nexports.useBluetooth = useBluetooth;\nexports.useBreakpoints = useBreakpoints;\nexports.useBroadcastChannel = useBroadcastChannel;\nexports.useBrowserLocation = useBrowserLocation;\nexports.useCached = useCached;\nexports.useClipboard = useClipboard;\nexports.useClipboardItems = useClipboardItems;\nexports.useCloned = useCloned;\nexports.useColorMode = useColorMode;\nexports.useConfirmDialog = useConfirmDialog;\nexports.useCssVar = useCssVar;\nexports.useCurrentElement = useCurrentElement;\nexports.useCycleList = useCycleList;\nexports.useDark = useDark;\nexports.useDebouncedRefHistory = useDebouncedRefHistory;\nexports.useDeviceMotion = useDeviceMotion;\nexports.useDeviceOrientation = useDeviceOrientation;\nexports.useDevicePixelRatio = useDevicePixelRatio;\nexports.useDevicesList = useDevicesList;\nexports.useDisplayMedia = useDisplayMedia;\nexports.useDocumentVisibility = useDocumentVisibility;\nexports.useDraggable = useDraggable;\nexports.useDropZone = useDropZone;\nexports.useElementBounding = useElementBounding;\nexports.useElementByPoint = useElementByPoint;\nexports.useElementHover = useElementHover;\nexports.useElementSize = useElementSize;\nexports.useElementVisibility = useElementVisibility;\nexports.useEventBus = useEventBus;\nexports.useEventListener = useEventListener;\nexports.useEventSource = useEventSource;\nexports.useEyeDropper = useEyeDropper;\nexports.useFavicon = useFavicon;\nexports.useFetch = useFetch;\nexports.useFileDialog = useFileDialog;\nexports.useFileSystemAccess = useFileSystemAccess;\nexports.useFocus = useFocus;\nexports.useFocusWithin = useFocusWithin;\nexports.useFps = useFps;\nexports.useFullscreen = useFullscreen;\nexports.useGamepad = useGamepad;\nexports.useGeolocation = useGeolocation;\nexports.useIdle = useIdle;\nexports.useImage = useImage;\nexports.useInfiniteScroll = useInfiniteScroll;\nexports.useIntersectionObserver = useIntersectionObserver;\nexports.useKeyModifier = useKeyModifier;\nexports.useLocalStorage = useLocalStorage;\nexports.useMagicKeys = useMagicKeys;\nexports.useManualRefHistory = useManualRefHistory;\nexports.useMediaControls = useMediaControls;\nexports.useMediaQuery = useMediaQuery;\nexports.useMemoize = useMemoize;\nexports.useMemory = useMemory;\nexports.useMounted = useMounted;\nexports.useMouse = useMouse;\nexports.useMouseInElement = useMouseInElement;\nexports.useMousePressed = useMousePressed;\nexports.useMutationObserver = useMutationObserver;\nexports.useNavigatorLanguage = useNavigatorLanguage;\nexports.useNetwork = useNetwork;\nexports.useNow = useNow;\nexports.useObjectUrl = useObjectUrl;\nexports.useOffsetPagination = useOffsetPagination;\nexports.useOnline = useOnline;\nexports.usePageLeave = usePageLeave;\nexports.useParallax = useParallax;\nexports.useParentElement = useParentElement;\nexports.usePerformanceObserver = usePerformanceObserver;\nexports.usePermission = usePermission;\nexports.usePointer = usePointer;\nexports.usePointerLock = usePointerLock;\nexports.usePointerSwipe = usePointerSwipe;\nexports.usePreferredColorScheme = usePreferredColorScheme;\nexports.usePreferredContrast = usePreferredContrast;\nexports.usePreferredDark = usePreferredDark;\nexports.usePreferredLanguages = usePreferredLanguages;\nexports.usePreferredReducedMotion = usePreferredReducedMotion;\nexports.usePrevious = usePrevious;\nexports.useRafFn = useRafFn;\nexports.useRefHistory = useRefHistory;\nexports.useResizeObserver = useResizeObserver;\nexports.useScreenOrientation = useScreenOrientation;\nexports.useScreenSafeArea = useScreenSafeArea;\nexports.useScriptTag = useScriptTag;\nexports.useScroll = useScroll;\nexports.useScrollLock = useScrollLock;\nexports.useSessionStorage = useSessionStorage;\nexports.useShare = useShare;\nexports.useSorted = useSorted;\nexports.useSpeechRecognition = useSpeechRecognition;\nexports.useSpeechSynthesis = useSpeechSynthesis;\nexports.useStepper = useStepper;\nexports.useStorage = useStorage;\nexports.useStorageAsync = useStorageAsync;\nexports.useStyleTag = useStyleTag;\nexports.useSupported = useSupported;\nexports.useSwipe = useSwipe;\nexports.useTemplateRefsList = useTemplateRefsList;\nexports.useTextDirection = useTextDirection;\nexports.useTextSelection = useTextSelection;\nexports.useTextareaAutosize = useTextareaAutosize;\nexports.useThrottledRefHistory = useThrottledRefHistory;\nexports.useTimeAgo = useTimeAgo;\nexports.useTimeoutPoll = useTimeoutPoll;\nexports.useTimestamp = useTimestamp;\nexports.useTitle = useTitle;\nexports.useTransition = useTransition;\nexports.useUrlSearchParams = useUrlSearchParams;\nexports.useUserMedia = useUserMedia;\nexports.useVModel = useVModel;\nexports.useVModels = useVModels;\nexports.useVibrate = useVibrate;\nexports.useVirtualList = useVirtualList;\nexports.useWakeLock = useWakeLock;\nexports.useWebNotification = useWebNotification;\nexports.useWebSocket = useWebSocket;\nexports.useWebWorker = useWebWorker;\nexports.useWebWorkerFn = useWebWorkerFn;\nexports.useWindowFocus = useWindowFocus;\nexports.useWindowScroll = useWindowScroll;\nexports.useWindowSize = useWindowSize;\nObject.keys(shared).forEach(function (k) {\n if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () { return shared[k]; }\n });\n});\n","var Vue = require('vue')\n\nObject.keys(Vue).forEach(function(key) {\n exports[key] = Vue[key]\n})\n\nexports.set = function(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexports.del = function(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexports.Vue = Vue\nexports.Vue2 = undefined\nexports.isVue2 = false\nexports.isVue3 = true\nexports.install = function(){}\n","import { inject, reactive } from \"vue\";\nimport Segments from \"@/modules/Segments\";\nimport { useRoute } from 'vue-router';\nconst { ProductNotify } = Segments();\n\n\nexport default function Notifications() {\n const axios = inject('axios');\n const route = useRoute();\n const notification = reactive({\n loading: false,\n error: '',\n data: [],\n count: 0,\n });\n const getNotifications = async() => {\n if (axios.isLoggedIn) {\n notification.loading = true;\n axios.authApi.get(\"/notifications\")\n .then((response) => {\n if (response.data.status) {\n notification.data = (response.data.data.notifications)\n notification.count = response.data.data.count\n } else {\n notification.error = response.data.error;\n }\n })\n .catch(function(error) {\n console.log(error);\n }).finally(() => (notification.loading = false));\n }\n };\n\n const notify = reactive({\n loading: false,\n error: '',\n data: [],\n });\n const notifyme = async(variant,pro,type=null) => {\n if (axios.isLoggedIn) {\n notify.loading = true;\n axios.authApi.post(\"/notify\", {\n variant_id: variant.id\n }).then((resp) => {\n if (resp.data.status) {\n notify.data = resp.data.data;\n ProductNotify('add',route,variant,pro,type);\n } else {\n notify.error = resp.data.error;\n }\n })\n .catch(function(error) {\n console.log(error);\n }).finally(() => (notify.loading = false));\n }\n };\n const deleteNotify = async(variant,pro,type=null) => {\n if (axios.isLoggedIn) {\n notify.loading = true;\n axios.authApi.post(\"/delete-notify\", {\n variant_id: variant.id\n }).then((resp) => {\n\n if (resp.data.status) {\n notify.data = resp.data.data;\n ProductNotify('remove',route,variant,pro,type);\n } else {\n notify.error = resp.data.error;\n }\n })\n .catch(function(error) {\n console.log(error);\n }).finally(() => (notify.loading = false));\n }\n };\n return {\n notification,\n getNotifications,\n notify,\n notifyme,\n deleteNotify\n }\n}","var Vue = require('vue')\n\nObject.keys(Vue).forEach(function(key) {\n exports[key] = Vue[key]\n})\n\nexports.set = function(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexports.del = function(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexports.Vue = Vue\nexports.Vue2 = undefined\nexports.isVue2 = false\nexports.isVue3 = true\nexports.install = function(){}\n","import{defineComponent as y,ref as S,provide as O,inject as P,computed as b,watchEffect as T}from\"vue\";import{Keys as f}from'../../keyboard.js';import{match as h}from'../../utils/match.js';import{render as v,Features as E}from'../../utils/render.js';import{useId as I}from'../../hooks/use-id.js';import{dom as p}from'../../utils/dom.js';import{useOpenClosedProvider as k,State as g,useOpenClosed as K}from'../../internal/open-closed.js';import{useResolveButtonType as R}from'../../hooks/use-resolve-button-type.js';var w=(n=>(n[n.Open=0]=\"Open\",n[n.Closed=1]=\"Closed\",n))(w||{});let x=Symbol(\"DisclosureContext\");function C(l){let r=P(x,null);if(r===null){let n=new Error(`<${l} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,C),n}return r}let B=Symbol(\"DisclosurePanelContext\");function H(){return P(B,null)}let A=y({name:\"Disclosure\",props:{as:{type:[Object,String],default:\"template\"},defaultOpen:{type:[Boolean],default:!1}},setup(l,{slots:r,attrs:n}){let d=`headlessui-disclosure-button-${I()}`,e=`headlessui-disclosure-panel-${I()}`,o=S(l.defaultOpen?0:1),i=S(null),s=S(null),u={buttonId:d,panelId:e,disclosureState:o,panel:i,button:s,toggleDisclosure(){o.value=h(o.value,{[0]:1,[1]:0})},closeDisclosure(){o.value!==1&&(o.value=1)},close(a){u.closeDisclosure();let c=(()=>a?a instanceof HTMLElement?a:a.value instanceof HTMLElement?p(a):p(u.button):p(u.button))();c==null||c.focus()}};return O(x,u),k(b(()=>h(o.value,{[0]:g.Open,[1]:g.Closed}))),()=>{let{defaultOpen:a,...c}=l,m={open:o.value===0,close:u.close};return v({theirProps:c,ourProps:{},slot:m,slots:r,attrs:n,name:\"Disclosure\"})}}}),G=y({name:\"DisclosureButton\",props:{as:{type:[Object,String],default:\"button\"},disabled:{type:[Boolean],default:!1}},setup(l,{attrs:r,slots:n,expose:d}){let e=C(\"DisclosureButton\"),o=H(),i=o===null?!1:o===e.panelId,s=S(null);d({el:s,$el:s}),i||T(()=>{e.button.value=s.value});let u=R(b(()=>({as:l.as,type:r.type})),s);function a(){var t;l.disabled||(i?(e.toggleDisclosure(),(t=p(e.button))==null||t.focus()):e.toggleDisclosure())}function c(t){var D;if(!l.disabled)if(i)switch(t.key){case f.Space:case f.Enter:t.preventDefault(),t.stopPropagation(),e.toggleDisclosure(),(D=p(e.button))==null||D.focus();break}else switch(t.key){case f.Space:case f.Enter:t.preventDefault(),t.stopPropagation(),e.toggleDisclosure();break}}function m(t){switch(t.key){case f.Space:t.preventDefault();break}}return()=>{let t={open:e.disclosureState.value===0},D=i?{ref:s,type:u.value,onClick:a,onKeydown:c}:{id:e.buttonId,ref:s,type:u.value,\"aria-expanded\":l.disabled?void 0:e.disclosureState.value===0,\"aria-controls\":p(e.panel)?e.panelId:void 0,disabled:l.disabled?!0:void 0,onClick:a,onKeydown:c,onKeyup:m};return v({ourProps:D,theirProps:l,slot:t,attrs:r,slots:n,name:\"DisclosureButton\"})}}}),J=y({name:\"DisclosurePanel\",props:{as:{type:[Object,String],default:\"div\"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0}},setup(l,{attrs:r,slots:n,expose:d}){let e=C(\"DisclosurePanel\");d({el:e.panel,$el:e.panel}),O(B,e.panelId);let o=K(),i=b(()=>o!==null?o.value===g.Open:e.disclosureState.value===0);return()=>{let s={open:e.disclosureState.value===0,close:e.close},u={id:e.panelId,ref:e.panel};return v({ourProps:u,theirProps:l,slot:s,attrs:r,slots:n,features:E.RenderStrategy|E.Static,visible:i.value,name:\"DisclosurePanel\"})}}});export{A as Disclosure,G as DisclosureButton,J as DisclosurePanel};\n"],"sourceRoot":""}