{"version":3,"sources":["webpack:///./src/components/enlarge-images.vue?d7bd","webpack:///./node_modules/core-js/internals/string-repeat.js","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/index.cjs","webpack:///./src/components/enlarge-images.vue?b258","webpack:///./src/components/enlarge-images.vue","webpack:///./src/views/product-details.vue?6a5f","webpack:///./src/views/product-details.vue","webpack:///./src/views/product-details.vue?b2df","webpack:///./src/utils/fb.ts","webpack:///./src/views/product-details.vue?1583","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/qrcode.vue/dist/qrcode.vue.browser.js"],"names":["global","toIntegerOrInfinity","toString","requireObjectCoercible","RangeError","module","exports","count","str","this","result","n","Infinity","__defProp$8","Object","defineProperty","__defProps$5","defineProperties","__getOwnPropDescs$5","getOwnPropertyDescriptors","__getOwnPropSymbols$a","getOwnPropertySymbols","__hasOwnProp$a","prototype","hasOwnProperty","__propIsEnum$a","propertyIsEnumerable","__defNormalProp$8","obj","key","value","enumerable","configurable","writable","__spreadValues$8","a","b","prop","call","__spreadProps$5","computedEager","fn","options","_a","flush","computedWithControl","source","track","trigger","v","dirty","_track","_trigger","createEventHook","fns","off","index","indexOf","splice","on","push","param","forEach","createGlobalState","stateFactory","state","initialized","scope","run","createInjectionState","composable","Symbol","useProvidingState","args","useInjectedState","tryOnScopeDispose","createSharedComposable","subscribers","dispose","stop","__onlyVue3","name","Error","directiveHooks","mounted","updated","unmounted","extendRef","ref","extend","unwrap","entries","get","isDefined","logicAnd","every","i","logicNot","logicOr","some","__defProp$7","__getOwnPropSymbols$9","__hasOwnProp$9","__propIsEnum$9","__defNormalProp$7","__spreadValues$7","makeDestructurable","arr","clone","iterator","next","done","length","assign","reactify","apply","map","reactifyObject","optionsOrKeys","keys","Array","isArray","includeOwnProperties","getOwnPropertyNames","fromEntries","bind","toReactive","objectRef","proxy","Proxy","_","p","receiver","Reflect","deleteProperty","has","reactiveComputed","reactiveOmit","filter","e","includes","reactivePick","k","refAutoReset","defaultValue","afterMs","timer","resetAfter","setTimeout","newValue","clearTimeout","isClient","window","isDef","val","assert","condition","infos","console","warn","isBoolean","isFunction","isNumber","isString","isObject","isWindow","now","Date","timestamp","clamp","min","max","Math","noop","rand","ceil","floor","random","createFilterWrapper","wrapper","thisArg","bypassFilter","invoke","debounceFilter","ms","maxTimer","duration","maxDuration","maxWait","throttleFilter","trailing","leading","lastExec","preventLeading","clear","elapsed","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","promiseTimeout","throwOnTimeout","reason","Promise","resolve","reject","identity","arg","createSingletonPromise","_promise","reset","async","_prev","containsProp","props","increaseWithUnit","target","delta","match","unit","slice","parseFloat","Number","isNaN","objectPick","omitUndefined","reduce","useDebounceFn","refDebounced","debounced","updater","refDefault","useThrottleFn","refThrottled","delay","throttled","refWithControl","initial","set","tracking","triggering","_b","old","onBeforeChange","onChanged","untrackedGet","silentSet","peek","lay","controlledRef","syncRef","left","right","deep","immediate","direction","stop1","stop2","syncRefs","targets","__defProp$6","__defProps$4","__getOwnPropDescs$4","__getOwnPropSymbols$8","__hasOwnProp$8","__propIsEnum$8","__defNormalProp$6","__spreadValues$6","__spreadProps$4","toRefs","copy","tryOnBeforeMount","sync","tryOnBeforeUnmount","tryOnMounted","tryOnUnmounted","until","r","isNot","toMatch","timeout","watcher","promises","finally","race","toBe","toBeTruthy","Boolean","toBeNull","toBeUndefined","toBeNaN","toContains","array","from","changed","changedTimes","instance","useCounter","initialValue","inc","dec","REGEX_PARSE","REGEX_FORMAT","formatDate","date","formatStr","years","getFullYear","month","getMonth","days","getDate","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","day","getDay","matches","YY","String","YYYY","M","MM","padStart","D","DD","H","HH","h","hh","m","mm","s","ss","SSS","d","replace","$1","normalizeDate","NaN","test","substring","useDateFormat","useIntervalFn","cb","interval","immediateCallback","clean","clearInterval","setInterval","stopWatch","__defProp$5","__getOwnPropSymbols$7","__hasOwnProp$7","__propIsEnum$7","__defNormalProp$5","__spreadValues$5","useInterval","controls","exposeControls","counter","useLastChanged","useTimeoutFn","isPending","start","__defProp$4","__getOwnPropSymbols$6","__hasOwnProp$6","__propIsEnum$6","__defNormalProp$4","__spreadValues$4","useTimeout","ready","useToggle","boolean","toggle","__getOwnPropSymbols$5","__hasOwnProp$5","__propIsEnum$5","__objRest$5","exclude","watchWithFilter","watchOptions","__getOwnPropSymbols$4","__hasOwnProp$4","__propIsEnum$4","__objRest$4","watchAtMost","current","__defProp$3","__defProps$3","__getOwnPropDescs$3","__getOwnPropSymbols$3","__hasOwnProp$3","__propIsEnum$3","__defNormalProp$3","__spreadValues$3","__spreadProps$3","__objRest$3","watchDebounced","debounce","__defProp$2","__defProps$2","__getOwnPropDescs$2","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","__spreadValues$2","__spreadProps$2","__objRest$2","watchIgnorable","filteredCb","ignoreUpdates","ignorePrevAsyncUpdates","ignore","disposables","ignoreCounter","syncCounter","syncCounterPrev","watchOnce","__defProp$1","__defProps$1","__getOwnPropDescs$1","__getOwnPropSymbols$1","__hasOwnProp$1","__propIsEnum$1","__defNormalProp$1","__spreadValues$1","__spreadProps$1","__objRest$1","watchPausable","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","__objRest","watchThrottled","throttle","whenever","ov","onInvalidate","computedAsync","evaluationCallback","initialState","optionsOrRef","evaluating","lazy","onError","started","counterAtBeginning","hasFinished","then","cancelCallback","computedInject","defaultSource","treatDefaultAsFactory","ctx","createUnrefFn","unrefElement","elRef","plain","$el","defaultWindow","defaultDocument","document","defaultNavigator","navigator","defaultLocation","location","useEventListener","event","listener","cleanup","el","addEventListener","removeEventListener","onClickOutside","handler","capture","shouldListen","composedPath","target2","el2","passive","__defProp$h","__defProps$8","__getOwnPropDescs$8","__getOwnPropSymbols$j","__hasOwnProp$j","__propIsEnum$j","__defNormalProp$h","__spreadValues$h","__spreadProps$8","createKeyPredicate","keyFilter","onKeyStroke","eventName","predicate","onKeyDown","onKeyPressed","onKeyUp","DEFAULT_DELAY","onLongPress","elementRef","onDown","ev","isFocusedElementEditable","activeElement","body","tagName","hasAttribute","isTypedCharValid","keyCode","metaKey","ctrlKey","altKey","onStartTyping","callback","document2","keydown","templateRef","element","$refs","useActiveElement","useAsyncQueue","tasks","interrupt","onFinished","promiseState","pending","rejected","fulfilled","initialResult","data","activeIndex","updateResult","res","prev","curr","prevRes","currentRes","catch","useAsyncState","promise","resetOnExecute","shallow","isReady","isLoading","error","execute","delay2","useBase64","base64","_target","blobToBase64","Blob","type","ArrayBuffer","btoa","fromCharCode","Uint8Array","HTMLCanvasElement","toDataURL","quality","HTMLImageElement","img","cloneNode","crossOrigin","imgLoaded","canvas","createElement","getContext","width","height","drawImage","complete","onload","onerror","blob","fr","FileReader","readAsDataURL","useBattery","events","isSupported","charging","chargingTime","dischargingTime","level","battery","updateBatteryInfo","getBattery","_battery","useMediaQuery","query","mediaQuery","update","matchMedia","addListener","removeListener","breakpointsTailwind","breakpointsBootstrapV5","sm","md","lg","xl","xxl","breakpointsVuetify","xs","breakpointsAntDesign","breakpointsQuasar","breakpointsSematic","mobileS","mobileM","mobileL","tablet","laptop","laptopL","desktop4K","__defProp$g","__getOwnPropSymbols$i","__hasOwnProp$i","__propIsEnum$i","__defNormalProp$g","__spreadValues$g","useBreakpoints","breakpoints","getValue","greater","shortcutMethods","shortcuts","useBroadcastChannel","isClosed","channel","post","data2","postMessage","close","BroadcastChannel","useBrowserLocation","buildState","state2","history","hash","host","hostname","href","origin","pathname","port","protocol","search","useCached","refValue","comparator","cachedValue","useClamp","_value","value2","useClipboard","read","copiedDuring","text","copied","updateText","clipboard","readText","writeText","_global","globalThis","self","globalKey","handlers","getSSRHandler","fallback","setSSRHandler","guessSerializerType","rawInit","Set","Map","StorageSerializers","write","object","JSON","parse","stringify","number","any","string","toISOString","useStorage","storage","listenToStorageChanges","writeDefaults","_a2","localStorage","serializer","pauseWatch","resumeWatch","removeItem","setItem","rawValue","getItem","usePreferredDark","__defProp$f","__getOwnPropSymbols$h","__hasOwnProp$h","__propIsEnum$h","__defNormalProp$f","__spreadValues$f","useColorMode","selector","attribute","storageKey","storageRef","modes","auto","light","dark","preferredDark","preferredMode","store","updateHTMLAttrs","selector2","attribute2","querySelector","split","values","flatMap","classList","add","remove","setAttribute","defaultOnChanged","mode","useConfirmDialog","revealed","confirmHook","cancelHook","revealHook","_resolve","reveal","confirm","isCanceled","cancel","isRevealed","onReveal","onConfirm","onCancel","useCssVar","variable","documentElement","prop2","getComputedStyle","getPropertyValue","style","setProperty","useCycleList","list","index2","getIndexOf","fallbackIndex","shift","__defProp$e","__defProps$7","__getOwnPropDescs$7","__getOwnPropSymbols$g","__hasOwnProp$g","__propIsEnum$g","__defNormalProp$e","__spreadValues$e","__spreadProps$7","useDark","valueDark","valueLight","mode2","defaultHandler","isDark","fnClone","fnBypass","fnSetSource","defaultDump","defaultParse","useManualRefHistory","dump","setSource","_createHistoryRecord","snapshot","last","undoStack","redoStack","_setSource","record","commit","unshift","capacity","undo","redo","canUndo","canRedo","__defProp$d","__defProps$6","__getOwnPropDescs$6","__getOwnPropSymbols$f","__hasOwnProp$f","__propIsEnum$f","__defNormalProp$d","__spreadValues$d","__spreadProps$6","useRefHistory","composedFilter","resumeTracking","isTracking","source2","manualHistory","manualCommit","commitNow","batch","canceled","__defProp$c","__getOwnPropSymbols$e","__hasOwnProp$e","__propIsEnum$e","__defNormalProp$c","__spreadValues$c","useDebouncedRefHistory","useDeviceMotion","acceleration","x","y","z","rotationRate","alpha","beta","gamma","accelerationIncludingGravity","onDeviceMotion","useDeviceOrientation","isAbsolute","absolute","DEVICE_PIXEL_RATIO_SCALES","useDevicePixelRatio","pixelRatio","devicePixelRatio","handleDevicePixelRatio","dppx","mqlMin","mqlMax","usePermission","permissionDesc","permissionStatus","desc","onChange","permissions","useDevicesList","requestPermissions","constraints","audio","video","onUpdated","devices","videoInputs","kind","audioInputs","audioOutputs","permissionGranted","mediaDevices","enumerateDevices","ensurePermissions","stream","getUserMedia","getTracks","t","useDisplayMedia","enabled","getDisplayMedia","constraint","_start","_stop","useDocumentVisibility","visibility","visibilityState","__defProp$b","__getOwnPropSymbols$d","__hasOwnProp$d","__propIsEnum$d","__defNormalProp$b","__spreadValues$b","useDraggable","draggingElement","position","pressedDelta","filterEvent","pointerTypes","pointerType","handleEvent","preventDefault","stopPropagation","exact","rect","getBoundingClientRect","pos","pageX","pageY","top","onStart","move","onMove","end","onEnd","isDragging","__getOwnPropSymbols$c","__hasOwnProp$c","__propIsEnum$c","useResizeObserver","observerOptions","observer","disconnect","ResizeObserver","observe","useElementBounding","windowResize","windowScroll","bottom","ele","useRafFn","loop","requestAnimationFrame","__defProp$a","__getOwnPropSymbols$b","__hasOwnProp$b","__propIsEnum$b","__defNormalProp$a","__spreadValues$a","useElementByPoint","elementFromPoint","useElementHover","isHovered","useElementSize","initialSize","entry","contentRect","useElementVisibility","scrollTarget","elementIsVisible","testBounding","innerHeight","clientHeight","innerWidth","clientWidth","useEventBus","listeners","_off","cleanups","once","_listener","delete","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","head","querySelectorAll","o","__defProp$9","__defNormalProp$9","__spreadValues$9","payloadMapping","json","formData","isFetchOptions","headersToObject","headers","Headers","createFetch","config","_options","_fetchOptions","fetchOptions","useFactoryFetch","computedUrl","joinPaths","useFetch","supportsAbort","AbortController","refetch","method","fetch","initialData","responseEvent","errorEvent","finallyEvent","isFinished","isFetching","aborted","statusCode","response","canAbort","controller","abort","loading","throwOnFailed","signal","onabort","defaultFetchOptions","payloadType","context","beforeFetch","responseData","_a3","fetchResponse","afterFetch","ok","statusText","fetchError","errorData","message","onFetchError","shell","onFetchResponse","onFetchFinally","setMethod","put","patch","setType","arrayBuffer","getPrototypeOf","waitUntilFinished","error2","onFulfilled","onRejected","endsWith","startsWith","useFileSystemAccess","_window","dataType","fileHandle","file","fileName","fileMIME","fileSize","size","fileLastModified","lastModified","handle","showOpenFilePicker","updateFile","updateData","create","showSaveFilePicker","save","saveAs","writableStream","createWritable","getFile","useFocus","targetElement","focused","blur","focus","useFocusWithin","contains","useFps","fps","performance","ticks","diff","round","functionsMap","useFullscreen","autoExit","targetRef","isFullscreen","REQUEST","EXIT","ELEMENT","EVENT","exit","enter","mapGamepadToXbox360Controller","gamepad","buttons","bumper","triggers","stick","horizontal","axes","vertical","button","dpad","up","down","back","useGamepad","gamepads","onConnectedHook","onDisconnectedHook","stateFromGamepad","hapticActuators","vibrationActuator","id","mapping","connected","pressed","touched","updateGamepadState","_gamepads","getGamepads","findIndex","onGamepadConnected","onGamepadDisconnected","onConnected","onDisconnected","useGeolocation","enableHighAccuracy","maximumAge","locatedAt","coords","accuracy","latitude","longitude","altitude","altitudeAccuracy","heading","speed","updatePosition","geolocation","watchPosition","err","clearWatch","defaultEvents$1","oneMinute","useIdle","listenForVisibilityChange","idle","lastActive","onEvent","hidden","useScroll","onStop","onScroll","offset","eventListenerOptions","isScrolling","arrivedState","directions","onScrollEnd","onScrollHandler","eventTarget","scrollLeft","scrollWidth","scrollTop","scrollHeight","useInfiniteScroll","onLoadMore","distance","useIntersectionObserver","root","rootMargin","threshold","root2","IntersectionObserver","defaultEvents","useKeyModifier","modifier","listenerEvent","evt","getModifierState","useLocalStorage","DefaultMagicKeysAliasMap","ctrl","command","cmd","option","useMagicKeys","reactive","useReactive","aliasMap","onEventFired","refs","metaDeps","setRefs","updateRefs","toLowerCase","code","key2","rec","trim","usingElRef","timeRangeToArray","timeRanges","ranges","tracksToArray","tracks","label","language","activeCues","cues","inBandMetadataTrackDispatchType","defaultOptions","src","useMediaControls","currentTime","seeking","volume","waiting","ended","playing","rate","stalled","buffered","selectedTrack","isPictureInPicture","muted","supportsPictureInPicture","sourceErrorEvent","disableTrack","textTracks","enableTrack","disableTracks","togglePictureInPicture","exitPictureInPicture","requestPictureInPicture","sources","src2","appendChild","load","vol","mute","rate2","playbackRate","default","isDefault","srcLang","srclang","ignoreCurrentTimeUpdates","time","ignorePlayingUpdates","isPlaying","play","onSourceError","getMapVue2Compat","useMemoize","resolver","initCache","cache","generateKey","getKey","_loadData","loadData","deleteData","clearData","memoized","useMemory","memory","useMounted","isMounted","useMouse","touch","resetOnTouchEnds","sourceType","mouseHandler","clientX","clientY","touchHandler","touches","touch2","mouseHandlerWrapper","touchHandlerWrapper","useMouseInElement","handleOutside","elementX","elementY","elementPositionX","elementPositionY","elementHeight","elementWidth","isOutside","pageXOffset","pageYOffset","elX","elY","useMousePressed","drag","onPressed","srcType","onReleased","useMutationObserver","mutationOptions","MutationObserver","useNavigatorLanguage","useNetwork","isOnline","saveData","offlineAt","downlink","downlinkMax","rtt","effectiveType","connection","updateNetworkInformation","onLine","useNow","useOffsetPagination","total","pageSize","page","onPageChange","onPageSizeChange","onPageCountChange","currentPageSize","pageCount","currentPage","isFirstPage","isLastPage","returnValue","useOnline","usePageLeave","isLeft","relatedTarget","toElement","useParallax","deviceOrientationTiltAdjust","deviceOrientationRollAdjust","mouseTiltAdjust","mouseRollAdjust","orientation","roll","tilt","defaultState","pointerId","pressure","tiltX","tiltY","twist","usePointer","isInside","SwipeDirection","SwipeDirection2","useSwipe","onSwipe","onSwipeEnd","onSwipeStart","coordsStart","coordsEnd","diffX","diffY","abs","isThresholdExceeded","isSwiping","getTouchEventCoords","updateCoordsStart","updateCoordsEnd","listenerOptions","isPassiveEventSupported","checkPassiveEventSupport","onTouchEnd","stops","lengthX","lengthY","supportsPassive","optionsBlock","usePointerSwipe","posStart","updatePosStart","posEnd","updatePosEnd","distanceX","distanceY","isPointerDown","LEFT","RIGHT","UP","DOWN","NONE","setPointerCapture","usePreferredColorScheme","isLight","usePreferredLanguages","languages","topVarName","rightVarName","bottomVarName","leftVarName","useScreenSafeArea","topCssVar","rightCssVar","bottomCssVar","leftCssVar","useScriptTag","onLoaded","manual","referrerPolicy","noModule","defer","attrs","scriptTag","loadScript","waitForScriptLoad","resolveWithElement","shouldAppend","attr","unload","removeChild","rawEvent","isIOS","platform","useScrollLock","isLocked","initialOverflow","touchMoveListener","overflow","lock","unlock","useSessionStorage","sessionStorage","useShare","shareOptions","_navigator","share","overrideOptions","granted","files","canShare","useSpeechRecognition","interimResults","continuous","lang","isListening","isFinal","SpeechRecognition","webkitSpeechRecognition","recognition","onstart","lang2","onresult","transcript","results","result2","join","onend","useSpeechSynthesis","pitch","synth","speechSynthesis","voiceInfo","voice","spokenText","bindEventsForUtterance","utterance2","onpause","onresume","utterance","newUtterance","SpeechSynthesisUtterance","speak","useStorageAsync","_id","useStyleTag","css","isLoaded","cssRef","getElementById","media","innerText","useTemplateRefsList","getRangesFromSelection","selection","rangeCount","range","getRangeAt","useTextSelection","rects","onSelectionChange","getSelection","useThrottledRefHistory","UNITS","DEFAULT_MESSAGES","justNow","past","future","year","week","hour","minute","second","DEFAULT_FORMATTER","useTimeAgo","updateInterval","messages","fullDateFormatter","getTimeago","now2","absDiff","unitMax","find","format","applyFormat","isPast","formatter","timeAgo","useTimeoutPoll","timeoutPollOptions","useTimestamp","ts","useTitle","newTitle","titleTemplate","title","childList","TransitionPresets","linear","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","createEasingFunction","p0","p1","p2","p3","a1","a2","c","calcBezier","getSlope","getTforX","aGuessT","currentSlope","currentX","useTransition","disabled","onStarted","transition","currentTransition","sourceValue","sourceVector","outputVector","currentDuration","diffVector","endAt","startAt","startVector","progress","targetVector","useUrlSearchParams","removeNullishValues","removeFalsyValues","getRawParams","constructQuery","params","stringified","URLSearchParams","updateState","unusedKeys","paramsForKey","getAll","mapEntry","append","shouldUpdate","replaceState","useUserMedia","_c","autoSwitch","videoDeviceId","audioDeviceId","getDeviceOptions","device","deviceId","restart","useVModel","vm","_emit","$emit","modelOptions","$options","model","useVModels","ret","useVibrate","pattern","patternRef","intervalControls","vibrate","pattern2","useVirtualList","containerRef","currentList","itemHeight","overscan","getViewCapacity","containerHeight","sum","getOffset","calculateRange","viewCapacity","to","totalHeight","getDistanceTop","height2","scrollTo","offsetTop","wrapperProps","marginTop","containerStyle","overflowY","containerProps","useWakeLock","wakeLock","onVisibilityChange","request","released","release","useWebNotification","notification","requestPermission","Notification","permission","onClick","onShow","onClose","show","overrides","onclick","onshow","onclose","resolveNestedOptions","useWebSocket","onMessage","autoClose","protocols","wsRef","heartbeatPause","heartbeatResume","explicitlyClosed","retried","bufferedData","_sendBuffer","buffer","send","useBuffer","_init","ws","WebSocket","autoReconnect","retries","onFailed","heartbeat","useWebWorker","workerOptions","worker","terminate","Worker","jobRunner","userFunc","userFuncArgs","depsParser","deps","depsString","dep","createWorkerBlobUrl","blobCode","URL","createObjectURL","useWebWorkerFn","dependencies","workerStatus","timeoutId","workerTerminate","_url","revokeObjectURL","generateWorker","blobUrl","newWorker","callWorker","fnArgs","workerFn","useWindowFocus","hasFocus","useWindowScroll","useWindowSize","initialWidth","initialHeight","vueDemi","shallowRef","watchEffect","readonly","watch","customRef","effectScope","provide","inject","getCurrentScope","onScopeDispose","isVue3","isRef","unref","computed","toRef","isVue2","getCurrentInstance","onBeforeMount","nextTick","onBeforeUnmount","onMounted","onUnmounted","and","autoResetRef","controlledComputed","createReactiveFn","debouncedRef","debouncedWatch","eagerComputed","ignorableWatch","not","or","pausableWatch","throttledRef","throttledWatch","useDebounce","useThrottle","shared","core","markRaw","del","onBeforeUpdate","asyncComputed","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_defineComponent","__name","images","MainGraph","setup","__props","currIndex","isShow","bgPosition","backgroundPositionX","backgroundPositionY","_ctx","_cache","_component_icon_picture","_resolveComponent","_component_el_icon","_component_el_image","_component_el_scrollbar","_openBlock","_createElementBlock","_withDirectives","_createElementVNode","_normalizeStyle","backgroundImage","_vShow","ref_key","_createVNode","fit","_withCtx","_Fragment","_renderList","_normalizeClass","active","onMouseenter","$event","__exports__","_withScopeId","_pushScopeId","_popScopeId","_hoisted_5","_hoisted_6","_imports_0","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_imports_2","_hoisted_23","_imports_3","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_imports_4","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_89","_createTextVNode","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_99","useUsersStore","Cities","Token","useI18n","Router","useRouter","hrefUrl","route","useRoute","item","GoodsRecommendList","currentIndex","isLadderPrices","TotalPrice","TotalNumber","ShowCities","Citie","SkuValueQty","CombinationSku","CurrentSku","NoGoods","Remark","IsBlacklist","PriceRange","buttonRef","popoverRef","popperRef","delayHide","setCurrentIndex","Skus","AliValues","Values","items","Price","SkuMap","num","SameParagraph","Imgs","ShowNoMore","MallId","Beyond","StockQty","FavoriteLoding","FavoriteId","CustomerFavorite","Id","OutProductId","OutID","ProductUrl","ProductImgUrl","MasterImg","ProductName","GoodsName","Api","CheckFavoriteFavorite","pId","GetCities","setState","province_id","TemplatesDetails","CityFreight","ChangeCityFreight","City","CityID","CityId","Templates","FreightTemplatesDetails","NoDeliveryCityId","Cid","FreightRules","isTemplates","FreightTemplates","Freight","SkuValues1688","SkuValues","Value","Qty","RmbPrice","SkuImgUrl","ImgUrl","SkuTitle","SkuValue","OutSkuId","SkuValueId","skuIndex","Name","ValueId","MallSkus","RedirectUrl","Url","GetProduct","Title","AddCart","ElMessage","MinQuantity","OutId","PurchasingSiteId","ShopName","CustomerMemo","ProductId","RemarkImg","SellerPId","CategoryId","ElLoading","service","background","PageIndex","PageSize","IsError","ElMessageBox","confirmButtonText","cancelButtonText","path","SkuTotal","Total","LadderPrices","Ladder","EndQuantity","StartQuantity","isBatchNumber","BatchNumber","Surplus","Quotient","parseInt","SkuQtyChange","SkuIndex","GetGoodsRecommend","TypeId","frontCartId","Goods","Update","mallId","outId","pid","GoodsItem","IsUpdate","skus","IdIndex","JDsku","SkusIndex","Skusi","noSkuMap","_component_el_popover","_component_Star","_component_StarFilled","_component_el_link","_component_el_button","_component_arrow_down_bold","_component_suffix_img","_component_el_input_number","_component_el_input","_component_router_link","_component_el_skeleton_item","_component_el_skeleton","_component_CircleCloseFilled","_component_SemiSelect","_component_WarningFilled","_directive_loading","_resolveDirective","_Transition","IsShelves","NotSupportLink","_createCommentVNode","EnlargeImages","_toDisplayString","$t","placement","reference","QrcodeVue","_unref","ShareFacebook","_imports_1","MallLabel","_createBlock","bg","LadderPrice","DiscountPrice","DiscountRate","CityName","TemplatesDetail","ConditionValue","onMouseleave","C","Country","DeliveryCountry","Payments","Payment","PaymentTypeId","PaymentValue","MallName","ExchangeRate","AliValue","modelValue","step","onBlur","Sku","Index","checkVal","rows","maxlength","placeholder","toFixed","vClickOutside","skuQty","SellerInfo","ShopLogo","shopId","ShopId","ChatResponseRate","ChatResponseSpeed","ProductNum","Evaluation","CreatedMonth","GoodsRecommend","CommodityCard","innerHTML","Description","animated","template","isImage","variant","isText","fbJsdk","typeIndex","js","fjs","getElementsByTagName","parentNode","insertBefore","fbAsyncInit","FB","init","appId","autoLogAppEvents","xfbml","version","log","ui","$","uncurryThis","thisNumberValue","$repeat","fails","repeat","stringSlice","un$ToFixed","pow","acc","x2","multiply","c2","divide","dataToString","FORCED","proto","forced","fractionDigits","j","fractDigits","sign","$findIndex","addToUnscopables","FIND_INDEX","SKIPS_HOLES","callbackfn","arguments","undefined","factory","vue","__assign","mode$1","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","QR8bitByte","getLength","charCodeAt","_8BitByte","ErrorCorrectLevel","L","Q","ECL","QRRSBlock","totalCount","dataCount","RS_BLOCK_TABLE","getRSBlocks","typeNumber","errorCorrectLevel","rsBlock","getRsBlockTable","RSBlock$1","QRBitBuffer","bufIndex","putBit","getLengthInBits","bit","BitBuffer$1","QRMath","glog","LOG_TABLE","gexp","EXP_TABLE","math$2","math$1","QRPolynomial","mod","ratio","Polynomial$2","Mode","Polynomial$1","math","QRMaskPattern","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHTypeInfo","getBCHDigit","getBCHTypeNumber","digit","getPatternPosition","getMask","maskPattern","getErrorCorrectPolynomial","errorCorrectLength","getLostPoint","qrCode","moduleCount","getModuleCount","lostPoint","row","col","sameCount","darkCount","util$1","BitByte","RSBlock","BitBuffer","util","Polynomial","QRCode$1","modules","dataCache","dataList","addData","newData","make","rsBlocks","totalDataCount","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","cs","beginFill","moveTo","lineTo","endFill","bits","bitIndex","byteIndex","mask","PAD0","PAD1","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","rawPoly","modPoly","modIndex","totalCodeCount","QRCode_1","defaultErrorCorrectLevel","SUPPORTS_PATH2D","Path2D","addPath","QRCode","qrcode","toUTF8String","validErrorCorrectLevel","utf8Str","charCode","generatePath","margin","ops","cell","QRCodeProps","required","validator","l","foreground","QRCodeVueProps","renderAs","as","QRCodeSvg","defineComponent","numCells","fgPath","generate","cells","xmlns","viewBox","fill","QRCodeCanvas","canvasEl","scale","fillStyle","fillRect","rdx","cdx","render","$props","_size","_margin","_level"],"mappings":"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","file":"assets/js/chunk-56b154c4.cedf8b89.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./enlarge-images.vue?vue&type=style&index=0&id=0c4540d8&scoped=true&lang=scss\"","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, effectScope, provide, inject, getCurrentScope, onScopeDispose, isVue3, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted } from 'vue-demi';\n\nvar __defProp$8 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$5(__spreadValues$8({}, 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 watch(source, () => {\n dirty.value = true;\n trigger();\n }, { flush: \"sync\" });\n return customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = fn();\n dirty.value = false;\n }\n track();\n return v;\n },\n set() {\n }\n };\n });\n}\n\nfunction createEventHook() {\n const fns = [];\n const off = (fn) => {\n const index = fns.indexOf(fn);\n if (index !== -1)\n fns.splice(index, 1);\n };\n const on = (fn) => {\n fns.push(fn);\n return {\n off: () => off(fn)\n };\n };\n const trigger = (param) => {\n fns.forEach((fn) => fn(param));\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 () => {\n if (!initialized) {\n state = scope.run(stateFactory);\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n provide(key, composable(...args));\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\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 __onlyVue3(name = \"this function\") {\n if (isVue3)\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n __onlyVue3();\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 logicAnd(...args) {\n return computed(() => args.every((i) => unref(i)));\n}\n\nfunction logicNot(v) {\n return computed(() => !unref(v));\n}\n\nfunction logicOr(...args) {\n return computed(() => args.some((i) => unref(i)));\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$7({}, 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 reactify(fn) {\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unref(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\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(keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj)) : value\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 return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !keys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n return reactive(Object.fromEntries(keys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, unref(afterMs));\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\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\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};\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n filter(() => fn.apply(this, args), { fn, thisArg: this, args });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n const filter = (invoke) => {\n const duration = unref(ms);\n const maxDuration = unref(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 invoke();\n }\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n clearTimeout(timer);\n maxTimer = null;\n invoke();\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n clearTimeout(maxTimer);\n maxTimer = null;\n invoke();\n }, duration);\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true) {\n let lastExec = 0;\n let timer;\n let preventLeading = !leading;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n };\n const filter = (invoke) => {\n const duration = unref(ms);\n const elapsed = Date.now() - lastExec;\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration) {\n lastExec = Date.now();\n if (preventLeading)\n preventLeading = false;\n else\n invoke();\n }\n if (trailing) {\n timer = setTimeout(() => {\n lastExec = Date.now();\n if (!leading)\n preventLeading = true;\n clear();\n invoke();\n }, duration);\n }\n if (!leading && !timer)\n timer = setTimeout(() => preventLeading = true, duration);\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, pause, resume, eventFilter };\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 = 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}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n if (ms <= 0)\n return value;\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 = true, leading = true) {\n return createFilterWrapper(throttleFilter(ms, trailing, leading), fn);\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(ref, {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n }, { enumerable: true });\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 syncRef(left, right, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\"\n } = options;\n let stop1, stop2;\n if (direction === \"both\" || direction === \"ltr\") {\n stop1 = watch(left, (newValue) => right.value = newValue, { flush, deep, immediate });\n }\n if (direction === \"both\" || direction === \"rtl\") {\n stop2 = watch(right, (newValue) => left.value = newValue, { flush, deep, immediate });\n }\n return () => {\n stop1 == null ? void 0 : stop1();\n stop2 == null ? void 0 : stop2();\n };\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(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(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 if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n objectRef.value = __spreadProps$4(__spreadValues$6({}, 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 until(r) {\n let 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(r, (v) => {\n if (condition(v) === !isNot) {\n stop == null ? void 0 : stop();\n resolve();\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).finally(() => {\n stop == null ? void 0 : stop();\n }));\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n return toMatch((v) => v === unref(value), options);\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(unref(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(unref(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n isNot = !isNot;\n return this;\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 isNot = !isNot;\n return this;\n }\n };\n return instance;\n }\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -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 = 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 = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst formatDate = (date, formatStr) => {\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 matches = {\n YY: String(years).slice(-2),\n YYYY: years,\n M: month + 1,\n MM: `${month + 1}`.padStart(2, \"0\"),\n D: String(days),\n DD: `${days}`.padStart(2, \"0\"),\n H: String(hours),\n HH: `${hours}`.padStart(2, \"0\"),\n h: `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: String(minutes),\n mm: `${minutes}`.padStart(2, \"0\"),\n s: String(seconds),\n ss: `${seconds}`.padStart(2, \"0\"),\n SSS: `${milliseconds}`.padStart(3, \"0\"),\n d: day\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]);\n};\nconst normalizeDate = (date) => {\n if (date === null)\n return new Date(NaN);\n if (date === void 0)\n return 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\") {\n return computed(() => formatDate(normalizeDate(unref(date)), unref(formatStr)));\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 if (interval <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, unref(interval));\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval)) {\n const stopWatch = watch(interval, () => {\n if (immediate && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true\n } = options;\n const counter = ref(0);\n const controls = useIntervalFn(() => counter.value += 1, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$5({\n counter\n }, controls);\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(source, () => ms.value = timestamp(), options);\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 }, unref(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending,\n start,\n stop\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false\n } = options;\n const controls = useTimeoutFn(noop, interval, options);\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$4({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToggle(initialValue = false) {\n if (isRef(initialValue)) {\n return (value) => {\n initialValue.value = typeof value === \"boolean\" ? value : !initialValue.value;\n return initialValue.value;\n };\n } else {\n const boolean = ref(initialValue);\n const toggle = (value) => {\n boolean.value = typeof value === \"boolean\" ? value : !boolean.value;\n return boolean.value;\n };\n return [boolean, toggle];\n }\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(source, (...args) => {\n current.value += 1;\n if (current.value >= unref(count))\n nextTick(() => stop());\n cb(...args);\n }, watchOptions);\n return { count: current, stop };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$3(__spreadValues$3({}, watchOptions), {\n eventFilter: debounceFilter(debounce)\n }));\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(eventFilter, cb);\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(source, (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n }, watchOptions);\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(watch(source, () => {\n syncCounter.value++;\n }, __spreadProps$2(__spreadValues$2({}, watchOptions), { flush: \"sync\" })));\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(watch(source, (...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 }, watchOptions));\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter\n }));\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(source, cb, __spreadProps(__spreadValues({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n }));\n}\n\nfunction whenever(source, cb, options) {\n return watch(source, (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n }, options);\n}\n\nexport { __onlyVue3, logicAnd as and, assert, refAutoReset as autoResetRef, bypassFilter, 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, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isNumber, isObject, isString, isWindow, logicAnd, logicNot, logicOr, makeDestructurable, noop, normalizeDate, logicNot as not, now, objectPick, logicOr as or, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToggle, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchWithFilter, whenever };\n","import { noop, isClient, isString, tryOnScopeDispose, tryOnMounted, promiseTimeout, tryOnBeforeMount, increaseWithUnit, clamp, useTimeoutFn, pausableWatch, createEventHook, isFunction, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, containsProp, until, throttleFilter, useDebounceFn, useThrottleFn, isObject, isNumber, useIntervalFn, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, watchEffect, computed, inject, unref, watch, getCurrentInstance, customRef, onUpdated, reactive, shallowRef, markRaw, getCurrentScope, isVue2, set, del, onMounted, readonly, onBeforeUpdate } from 'vue-demi';\nimport { unrefElement as unrefElement$1, useEventListener as useEventListener$1, useRafFn as useRafFn$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 onError = noop\n } = options;\n const started = ref(!lazy);\n const current = 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)\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\nconst createUnrefFn = (fn) => {\n return function(...args) {\n return fn.apply(this, args.map((i) => unref(i)));\n };\n};\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = unref(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 event;\n let listener;\n let options;\n if (isString(args[0])) {\n [event, listener, options] = args;\n target = defaultWindow;\n } else {\n [target, event, listener, options] = args;\n }\n if (!target)\n return noop;\n let cleanup = noop;\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (!el)\n return;\n el.addEventListener(event, listener, options);\n cleanup = () => {\n el.removeEventListener(event, listener, options);\n cleanup = noop;\n };\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore, capture = true } = options;\n if (!window)\n return;\n const shouldListen = ref(true);\n const listener = (event) => {\n const el = unrefElement(target);\n const composedPath = event.composedPath();\n if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value)\n return;\n if (ignore && ignore.length > 0) {\n if (ignore.some((target2) => {\n const el2 = unrefElement(target2);\n return el2 && (event.target === el2 || composedPath.includes(el2));\n }))\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.value = !!el && !e.composedPath().includes(el);\n }, { passive: true })\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nconst 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 else if (keyFilter)\n return () => true;\n else\n return () => false;\n};\nfunction onKeyStroke(key, handler, options = {}) {\n const { target = defaultWindow, eventName = \"keydown\", passive = false } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\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, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n const elementRef = computed(() => unrefElement$1(target));\n let timeout = null;\n function clear() {\n if (timeout != null) {\n clearTimeout(timeout);\n timeout = null;\n }\n }\n function onDown(ev) {\n var _a;\n clear();\n timeout = setTimeout(() => handler(ev), (_a = options == null ? void 0 : options.delay) != null ? _a : DEFAULT_DELAY);\n }\n useEventListener$1(elementRef, \"pointerdown\", onDown);\n useEventListener$1(elementRef, \"pointerup\", clear);\n useEventListener$1(elementRef, \"pointerleave\", clear);\n}\n\nconst 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};\nconst isTypedCharValid = ({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) => {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\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 const { window = defaultWindow } = options;\n const counter = ref(0);\n if (window) {\n useEventListener(window, \"blur\", () => counter.value += 1, true);\n useEventListener(window, \"focus\", () => counter.value += 1, true);\n }\n return computed(() => {\n counter.value;\n return window == null ? void 0 : window.document.activeElement;\n });\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop\n } = options;\n const promiseState = {\n pending: \"pending\",\n rejected: \"rejected\",\n fulfilled: \"fulfilled\"\n };\n const initialResult = Array.from(new Array(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 (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n return curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n }).catch((e) => {\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n resetOnExecute = true,\n shallow = true\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 = ref(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 } catch (e) {\n error.value = e;\n onError(e);\n }\n isLoading.value = false;\n return state.value;\n }\n if (immediate)\n execute(delay);\n return {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\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 = unref(target);\n if (_target === void 0 || _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 {\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 watch(target, execute, { immediate: true });\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({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = 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) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n for (const event of events)\n useEventListener(battery, event, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n let mediaQuery;\n const matches = ref(false);\n const update = () => {\n if (!window)\n return;\n if (!mediaQuery)\n mediaQuery = window.matchMedia(query);\n matches.value = mediaQuery.matches;\n };\n tryOnBeforeMount(() => {\n update();\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n tryOnScopeDispose(() => {\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n });\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 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};\n\nvar __defProp$g = Object.defineProperty;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\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 greater = (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: () => greater(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return __spreadValues$g({\n greater,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, 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)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n }\n }, shortcutMethods);\n}\n\nconst useBroadcastChannel = (options) => {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = window && \"BroadcastChannel\" in window;\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = ref(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) {\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\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const buildState = (trigger) => {\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {};\n return {\n trigger,\n state: state2,\n length,\n hash,\n host,\n hostname,\n href,\n origin,\n pathname,\n port,\n protocol,\n search\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 useClamp(value, min, max) {\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, unref(min), unref(max));\n },\n set(value2) {\n _value.value = clamp(value2, unref(min), unref(max));\n }\n });\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const events = [\"copy\", \"cut\"];\n const isSupported = Boolean(navigator && \"clipboard\" in navigator);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n }\n if (isSupported && read) {\n for (const event of events)\n useEventListener(event, updateText);\n }\n async function copy(value = unref(source)) {\n if (isSupported && value != null) {\n await navigator.clipboard.writeText(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\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__\";\n_global[globalKey] = _global[globalKey] || {};\nconst handlers = _global[globalKey];\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\" : Array.isArray(rawInit) ? \"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};\nfunction useStorage(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? shallowRef : ref)(initialValue);\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 = unref(initialValue);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", update);\n update();\n return data;\n function write(v) {\n try {\n if (v == null)\n storage.removeItem(key);\n else\n storage.setItem(key, serializer.write(v));\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\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 (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n } finally {\n resumeWatch();\n }\n }\n function update(event) {\n if (event && event.key !== key)\n return;\n data.value = read(event);\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(b)) {\n if (__propIsEnum$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef\n } = options;\n const modes = __spreadValues$f({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const preferredMode = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? ref(\"auto\") : useStorage(storageKey, \"auto\", storage, { window, listenToStorageChanges }));\n const state = computed({\n get() {\n return store.value === \"auto\" ? preferredMode.value : store.value;\n },\n set(v) {\n store.value = v;\n }\n });\n const updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector2, attribute2, value) => {\n const el = window == null ? void 0 : window.document.querySelector(selector2);\n if (!el)\n return;\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 });\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 return state;\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 useCssVar(prop, target, { window = defaultWindow } = {}) {\n const variable = ref(\"\");\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 watch([elRef, () => unref(prop)], ([el, prop2]) => {\n if (el && window)\n variable.value = window.getComputedStyle(el).getPropertyValue(prop2);\n }, { immediate: true });\n watch(variable, (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(unref(prop), val);\n });\n return variable;\n}\n\nfunction useCycleList(list, options) {\n var _a;\n const state = shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]);\n const index = computed({\n get() {\n var _a2;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const length = list.length;\n const index2 = (i % length + length) % length;\n const value = list[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 return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode(__spreadProps$7(__spreadValues$e({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\");\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const preferredDark = usePreferredDark({ window });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n if (v === preferredDark.value)\n mode.value = \"auto\";\n else\n mode.value = v ? \"dark\" : \"light\";\n }\n });\n return isDark;\n}\n\nconst fnClone = (v) => JSON.parse(JSON.stringify(v));\nconst fnBypass = (v) => v;\nconst fnSetSource = (source, value) => source.value = value;\nfunction defaultDump(clone) {\n return clone ? isFunction(clone) ? clone : fnClone : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? isFunction(clone) ? clone : fnClone : 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, 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\nvar __defProp$d = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\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(source, commit, { deep, flush, eventFilter: composedFilter });\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$d({}, 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 __spreadProps$6(__spreadValues$d({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$5(__spreadValues$c({}, options), { eventFilter: filter }));\n return __spreadValues$c({}, history);\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(eventFilter, (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\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 = Boolean(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) {\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\nconst DEVICE_PIXEL_RATIO_SCALES = [\n 1,\n 1.325,\n 1.4,\n 1.5,\n 1.8,\n 2,\n 2.4,\n 2.5,\n 2.75,\n 3,\n 3.5,\n 4\n];\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n if (!window) {\n return {\n pixelRatio: ref(1)\n };\n }\n const pixelRatio = ref(window.devicePixelRatio);\n const handleDevicePixelRatio = () => {\n pixelRatio.value = window.devicePixelRatio;\n };\n useEventListener(window, \"resize\", handleDevicePixelRatio, { passive: true });\n DEVICE_PIXEL_RATIO_SCALES.forEach((dppx) => {\n const mqlMin = useMediaQuery(`screen and (min-resolution: ${dppx}dppx)`);\n const mqlMax = useMediaQuery(`screen and (max-resolution: ${dppx}dppx)`);\n watch([mqlMin, mqlMax], handleDevicePixelRatio);\n });\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = Boolean(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)\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 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 let isSupported = false;\n const permissionGranted = ref(false);\n async function update() {\n if (!isSupported)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n }\n async function ensurePermissions() {\n if (!isSupported)\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 const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach((t) => t.stop());\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (navigator) {\n isSupported = Boolean(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n if (isSupported) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\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, _b;\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 = Boolean((_b = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _b.getDisplayMedia);\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n if (!isSupported || 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(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\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\nvar __defProp$b = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;\n const position = ref((_b = options.initialValue) != null ? _b : { x: 0, y: 0 });\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (options.pointerTypes)\n return options.pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (unref(options.preventDefault))\n e.preventDefault();\n if (unref(options.stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (unref(options.exact) && e.target !== unref(target))\n return;\n const rect = unref(target).getBoundingClientRect();\n const pos = {\n x: e.pageX - rect.left,\n y: e.pageY - rect.top\n };\n if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, 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 position.value = {\n x: e.pageX - pressedDelta.value.x,\n y: e.pageY - pressedDelta.value.y\n };\n (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n useEventListener(target, \"pointerdown\", start, true);\n useEventListener(draggingElement, \"pointermove\", move, true);\n useEventListener(draggingElement, \"pointerup\", end, true);\n }\n return __spreadProps$4(__spreadValues$b({}, toRefs(position)), {\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`)\n });\n}\n\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = window && \"ResizeObserver\" in window;\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported && window && el) {\n observer = new ResizeObserver(callback);\n observer.observe(el, observerOptions);\n }\n }, { immediate: true, flush: \"post\" });\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 } = 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, { passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n function loop() {\n if (!isActive.value || !window)\n return;\n fn();\n window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const element = ref(null);\n const { x, y } = options;\n const controls = useRafFn(() => {\n element.value = document.elementFromPoint(unref(x), unref(y));\n });\n return __spreadValues$a({\n element\n }, controls);\n}\n\nfunction useElementHover(el) {\n const isHovered = ref(false);\n useEventListener(el, \"mouseenter\", () => isHovered.value = true);\n useEventListener(el, \"mouseleave\", () => isHovered.value = false);\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n useResizeObserver(target, ([entry]) => {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }, options);\n watch(() => unrefElement(target), (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n });\n return {\n width,\n height\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = ref(false);\n const testBounding = () => {\n if (!window)\n return;\n const document = window.document;\n if (!unref(element)) {\n elementIsVisible.value = false;\n } else {\n const rect = unref(element).getBoundingClientRect();\n elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;\n }\n };\n tryOnMounted(testBounding);\n if (window)\n tryOnMounted(() => useEventListener(unref(scrollTarget) || window, \"scroll\", testBounding, { capture: false, passive: true }));\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n const listeners = events.get(key) || [];\n listeners.push(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n scope == null ? void 0 : scope.cleanups.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 const index = listeners.indexOf(listener);\n if (index > -1)\n listeners.splice(index, 1);\n if (!listeners.length)\n events.delete(key);\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 = ref(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 = Boolean(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported)\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 = isRef(newIcon) ? newIcon : ref(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(favicon, (i, o) => {\n if (isString(i) && i !== o)\n applyIcon(i);\n }, { immediate: true });\n return favicon;\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\",\n formData: \"multipart/form-data\"\n};\nfunction isFetchOptions(obj) {\n return containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\");\n}\nfunction headersToObject(headers) {\n if (headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction createFetch(config = {}) {\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => config.baseUrl ? joinPaths(unref(config.baseUrl), unref(url)) : unref(url));\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadValues$9(__spreadValues$9({}, options), args[0]);\n } else {\n fetchOptions = __spreadProps$3(__spreadValues$9(__spreadValues$9({}, fetchOptions), args[0]), {\n headers: __spreadValues$9(__spreadValues$9({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1]))\n options = __spreadValues$9(__spreadValues$9({}, options), args[1]);\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 = { immediate: true, refetch: false, timeout: 0 };\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 = __spreadValues$9(__spreadValues$9({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$9(__spreadValues$9({}, 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);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort && controller)\n controller.abort();\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 const execute = async (throwOnFailed = false) => {\n var _a2;\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n controller = void 0;\n if (supportsAbort) {\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$3(__spreadValues$9({}, fetchOptions), {\n signal: controller.signal\n });\n }\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(unref(config.payload)) : unref(config.payload);\n }\n let isCanceled = false;\n const context = { url: unref(url), options: fetchOptions, cancel: () => {\n isCanceled = true;\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(context.url, __spreadProps$3(__spreadValues$9(__spreadValues$9({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$9(__spreadValues$9({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n if (!fetchResponse.ok)\n throw new Error(fetchResponse.statusText);\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n data.value = responseData;\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n watch(() => [\n unref(url),\n unref(options.refetch)\n ], () => unref(options.refetch) && execute(), { deep: true });\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 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 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 unref(config.payload),\n unref(options.refetch)\n ], () => unref(options.refetch) && execute(), { deep: true });\n }\n if (!payloadType && unref(payload) && Object.getPrototypeOf(unref(payload)) === Object.prototype)\n config.payloadType = \"json\";\n return shell;\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 __spreadProps$3(__spreadValues$9({}, 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 setTimeout(execute, 0);\n return __spreadProps$3(__spreadValues$9({}, 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\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = unref(options);\n const window = _window;\n const isSupported = Boolean(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)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$8(__spreadValues$8({}, unref(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$8(__spreadValues$8({}, unref(options)), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported)\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)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$8(__spreadValues$8({}, unref(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 if (unref(dataType) === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n if (unref(dataType) === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n if (unref(dataType) === \"Blob\")\n data.value = file.value;\n }\n watch(() => unref(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 } = options;\n const activeElement = useActiveElement(options);\n const targetElement = computed(() => unrefElement(target));\n const focused = computed({\n get() {\n return activeElement.value === targetElement.value;\n },\n set(value) {\n var _a, _b;\n if (!value && focused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n if (value && !focused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n watch(targetElement, () => {\n focused.value = initialValue;\n }, { immediate: true, flush: \"post\" });\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 functionsMap = [\n [\n \"requestFullscreen\",\n \"exitFullscreen\",\n \"fullscreenElement\",\n \"fullscreenEnabled\",\n \"fullscreenchange\",\n \"fullscreenerror\"\n ],\n [\n \"webkitRequestFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitFullscreenElement\",\n \"webkitFullscreenEnabled\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"webkitRequestFullScreen\",\n \"webkitCancelFullScreen\",\n \"webkitCurrentFullScreenElement\",\n \"webkitCancelFullScreen\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"mozRequestFullScreen\",\n \"mozCancelFullScreen\",\n \"mozFullScreenElement\",\n \"mozFullScreenEnabled\",\n \"mozfullscreenchange\",\n \"mozfullscreenerror\"\n ],\n [\n \"msRequestFullscreen\",\n \"msExitFullscreen\",\n \"msFullscreenElement\",\n \"msFullscreenEnabled\",\n \"MSFullscreenChange\",\n \"MSFullscreenError\"\n ]\n];\nfunction useFullscreen(target, options = {}) {\n const { document = defaultDocument, autoExit = false } = options;\n const targetRef = target || (document == null ? void 0 : document.querySelector(\"html\"));\n const isFullscreen = ref(false);\n let isSupported = false;\n let map = functionsMap[0];\n if (!document) {\n isSupported = false;\n } else {\n for (const m of functionsMap) {\n if (m[1] in document) {\n map = m;\n isSupported = true;\n break;\n }\n }\n }\n const [REQUEST, EXIT, ELEMENT, , EVENT] = map;\n async function exit() {\n if (!isSupported)\n return;\n if (document == null ? void 0 : document[ELEMENT])\n await document[EXIT]();\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported)\n return;\n await exit();\n const target2 = unrefElement(targetRef);\n if (target2) {\n await target2[REQUEST]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n if (isFullscreen.value)\n await exit();\n else\n await enter();\n }\n if (document) {\n useEventListener(document, EVENT, () => {\n isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]);\n }, false);\n }\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 = 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 id: gamepad.id,\n hapticActuators,\n index: gamepad.index,\n mapping: gamepad.mapping,\n connected: gamepad.connected,\n timestamp: gamepad.timestamp,\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$1(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$1(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener$1(\"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 } = options;\n const isSupported = navigator && \"geolocation\" in navigator;\n const locatedAt = ref(null);\n const error = ref(null);\n const coords = ref({\n accuracy: 0,\n latitude: Infinity,\n longitude: 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 if (isSupported) {\n watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n enableHighAccuracy,\n maximumAge,\n timeout\n });\n }\n tryOnScopeDispose(() => {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error\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 onEvent = createFilterWrapper(eventFilter, () => {\n idle.value = false;\n lastActive.value = timestamp();\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\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 }\n timer = setTimeout(() => idle.value = true, timeout);\n return { idle, lastActive };\n}\n\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 } = options;\n const x = ref(0);\n const y = ref(0);\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 if (element) {\n const onScrollEnd = useDebounceFn((e) => {\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n }, throttle + idle);\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n const scrollLeft = eventTarget.scrollLeft;\n directions.left = scrollLeft < x.value;\n directions.right = scrollLeft > x.value;\n arrivedState.left = scrollLeft <= 0 + (offset.left || 0);\n arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);\n x.value = scrollLeft;\n const scrollTop = eventTarget.scrollTop;\n directions.top = scrollTop < y.value;\n directions.bottom = scrollTop > y.value;\n arrivedState.top = scrollTop <= 0 + (offset.top || 0);\n arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);\n y.value = scrollTop;\n isScrolling.value = true;\n onScrollEnd(e);\n onScroll(e);\n };\n useEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);\n }\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const state = reactive(useScroll(element, __spreadProps$2(__spreadValues$7({}, options), {\n offset: __spreadValues$7({\n bottom: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })));\n watch(() => state.arrivedState.bottom, (v) => {\n if (v)\n onLoadMore(state);\n });\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow\n } = options;\n const isSupported = window && \"IntersectionObserver\" in window;\n let cleanup = noop;\n const stopWatch = isSupported ? watch(() => ({\n el: unrefElement(target),\n root: unrefElement(root)\n }), ({ el, root: root2 }) => {\n cleanup();\n if (!el)\n return;\n const observer = new IntersectionObserver(callback, {\n root: root2,\n rootMargin,\n threshold\n });\n observer.observe(el);\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n }, { immediate: true, flush: \"post\" }) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\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 = { toJSON() {\n return {};\n }, current };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__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 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 (code) {\n if (value)\n current.add(e.code);\n else\n current.delete(e.code);\n }\n for (const key2 of values)\n setRefs(key2, value);\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n if (target) {\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 }\n const proxy = new Proxy(refs, {\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) => unref(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? unref(r) : r;\n }\n });\n return proxy;\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (unref(source))\n cb(unref(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 = __spreadValues$6(__spreadValues$6({}, defaultOptions), options);\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 = isNumber(track) ? 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 = isNumber(track) ? 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 = unref(target);\n if (!el)\n return;\n const src = unref(options.src);\n let sources = [];\n if (!src)\n return;\n if (isString(src))\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 = unref(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch(volume, (vol) => {\n const el = unref(target);\n if (!el)\n return;\n el.volume = vol;\n });\n watch(muted, (mute) => {\n const el = unref(target);\n if (!el)\n return;\n el.muted = mute;\n });\n watch(rate, (rate2) => {\n const el = unref(target);\n if (!el)\n return;\n el.playbackRate = rate2;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = unref(options.tracks);\n const el = unref(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 = unref(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = unref(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = unref(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = unref(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(unref(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, \"waiting\", () => waiting.value = true);\n useEventListener(target, \"playing\", () => waiting.value = false);\n useEventListener(target, \"ratechange\", () => rate.value = unref(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 = unref(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 = unref(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 muted,\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n onSourceError: sourceErrorEvent.on\n };\n}\n\nconst getMapVue2Compat = () => {\n const data = reactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => Object.prototype.hasOwnProperty.call(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 = typeof performance !== \"undefined\" && \"memory\" in performance;\n if (isSupported) {\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\nfunction useMounted() {\n const isMounted = ref(false);\n onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n}\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 eventFilter\n } = options;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const mouseHandler = (event) => {\n if (type === \"page\") {\n x.value = event.pageX;\n y.value = event.pageY;\n } else if (type === \"client\") {\n x.value = event.clientX;\n y.value = event.clientY;\n }\n sourceType.value = \"mouse\";\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const touch2 = event.touches[0];\n if (type === \"page\") {\n x.value = touch2.pageX;\n y.value = touch2.pageY;\n } else if (type === \"client\") {\n x.value = touch2.clientX;\n y.value = touch2.clientY;\n }\n sourceType.value = \"touch\";\n }\n };\n const mouseHandlerWrapper = (event) => {\n return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {});\n };\n const touchHandlerWrapper = (event) => {\n return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {});\n };\n if (window) {\n useEventListener(window, \"mousemove\", mouseHandlerWrapper, { passive: true });\n useEventListener(window, \"dragover\", mouseHandlerWrapper, { passive: true });\n if (touch) {\n useEventListener(window, \"touchstart\", touchHandlerWrapper, { passive: true });\n useEventListener(window, \"touchmove\", touchHandlerWrapper, { passive: true });\n if (resetOnTouchEnds)\n useEventListener(window, \"touchend\", reset, { passive: true });\n }\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 { 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(false);\n let stop = () => {\n };\n if (window) {\n stop = watch([targetRef, x, y], () => {\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 + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\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 = elX < 0 || elY < 0 || elX > elementWidth.value || elY > elementHeight.value;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n }, { immediate: true });\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 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 });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, [\"window\"]);\n let observer;\n const isSupported = window && \"IntersectionObserver\" in window;\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n }, { immediate: true });\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nconst useNavigatorLanguage = (options = {}) => {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = Boolean(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 = Boolean(navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = 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 && 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 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 });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(new Date());\n const update = () => now.value = new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$5({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Infinity,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Infinity);\n const pageCount = computed(() => Math.ceil(unref(total) / unref(currentPageSize)));\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\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\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 useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$1(__spreadValues$4({}, toRefs(state)), {\n isInside\n });\n}\n\nvar SwipeDirection = /* @__PURE__ */ ((SwipeDirection2) => {\n SwipeDirection2[\"UP\"] = \"UP\";\n SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n SwipeDirection2[\"DOWN\"] = \"DOWN\";\n SwipeDirection2[\"LEFT\"] = \"LEFT\";\n SwipeDirection2[\"NONE\"] = \"NONE\";\n return SwipeDirection2;\n})(SwipeDirection || {});\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\" /* NONE */;\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"LEFT\" /* LEFT */ : \"RIGHT\" /* RIGHT */;\n } else {\n return diffY.value > 0 ? \"UP\" /* UP */ : \"DOWN\" /* 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 (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 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\", onTouchEnd, listenerOptions),\n useEventListener(target, \"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 usePointerSwipe(target, options = {}) {\n const targetRef = ref(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 SwipeDirection.NONE;\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n } else {\n return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n }\n });\n const filterEvent = (e) => {\n if (options.pointerTypes)\n return options.pointerTypes.includes(e.pointerType);\n return true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!filterEvent(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 (!filterEvent(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 (!filterEvent(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 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\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=\"${src}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = unref(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 for (const attr in attrs)\n el[attr] = attrs[attr];\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=\"${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\nvar _a, _b;\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst isIOS = isClient && (window == null ? void 0 : window.navigator) && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let touchMoveListener = null;\n let initialOverflow;\n watch(() => unref(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = unref(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n touchMoveListener = useEventListener(document, \"touchmove\", preventDefault, { passive: false });\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = unref(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (touchMoveListener == null ? void 0 : touchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\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\nvar __defProp$3 = Object.defineProperty;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = _navigator && \"canShare\" in _navigator;\n const share = async (overrideOptions = {}) => {\n if (isSupported) {\n const data = __spreadValues$3(__spreadValues$3({}, unref(shareOptions)), unref(overrideOptions));\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\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = ref(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 = Boolean(SpeechRecognition);\n let recognition;\n if (isSupported) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = unref(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 = unref(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 var _a, _b;\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 = Boolean(synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const voiceInfo = {\n lang: ((_a = options.voice) == null ? void 0 : _a.lang) || \"default\",\n name: ((_b = options.voice) == null ? void 0 : _b.name) || \"\"\n };\n const spokenText = ref(text || \"\");\n const lang = ref(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 = unref(lang);\n options.voice && (utterance2.voice = options.voice);\n utterance2.pitch = pitch;\n utterance2.rate = 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 utterance2.onend = () => {\n isPlaying.value = false;\n utterance2.lang = unref(lang);\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 if (isSupported) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\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 voiceInfo,\n utterance,\n error,\n toggle,\n speak\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 shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = unref(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 {\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) => setTimeout(() => read(e), 0));\n if (storage) {\n watchWithFilter(data, 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 flush,\n deep,\n eventFilter\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 el.type = \"text/css\";\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n if (isLoaded.value)\n return;\n stop = watch(cssRef, (value) => {\n el.innerText = value;\n }, { immediate: true });\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 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 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 getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n const ranges = new Array(rangeCount);\n for (let i = 0; i < rangeCount; i++) {\n const range = selection.getRangeAt(i);\n ranges[i] = range;\n }\n return ranges;\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\nvar __defProp$2 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps(__spreadValues$2({}, options), { eventFilter: filter }));\n return __spreadValues$2({}, history);\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst 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: 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};\nconst DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n max,\n updateInterval = 3e4,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER\n } = options;\n const { abs, round } = Math;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n function getTimeago(from, now2) {\n var _a2;\n const diff = +now2 - +from;\n const absDiff = abs(diff);\n if (absDiff < 6e4)\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 = (_a2 = UNITS.find((i) => i.name === max)) == null ? void 0 : _a2.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const unit of UNITS) {\n if (absDiff < unit.max)\n return format(diff, unit);\n }\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 function format(diff, unit) {\n const val = round(abs(diff) / unit.value);\n const past = diff > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n const timeAgo = computed(() => getTimeago(new Date(unref(time)), unref(now.value)));\n if (exposeControls) {\n return __spreadValues$1({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval);\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\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\"\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate }) : useIntervalFn(update, interval, { immediate });\n if (exposeControls) {\n return __spreadValues({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument,\n observe = false,\n titleTemplate = \"%s\"\n } = options;\n const title = ref((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n watch(title, (t, o) => {\n if (isString(t) && t !== o && document)\n document.title = titleTemplate.replace(\"%s\", t);\n }, { immediate: true });\n if (observe && document) {\n useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector(\"title\"), () => {\n if (document && document.title !== title.value)\n title.value = titleTemplate.replace(\"%s\", document.title);\n }, { childList: true });\n }\n return title;\n}\n\nconst TransitionPresets = {\n linear: identity,\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};\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 useTransition(source, options = {}) {\n const {\n delay = 0,\n disabled = false,\n duration = 1e3,\n onFinished = noop,\n onStarted = noop,\n transition = identity\n } = options;\n const currentTransition = computed(() => {\n const t = unref(transition);\n return isFunction(t) ? t : createEasingFunction(t);\n });\n const sourceValue = computed(() => {\n const s = unref(source);\n return isNumber(s) ? s : s.map(unref);\n });\n const sourceVector = computed(() => isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value);\n const outputVector = ref(sourceVector.value.slice(0));\n let currentDuration;\n let diffVector;\n let endAt;\n let startAt;\n let startVector;\n const { resume, pause } = useRafFn(() => {\n const now = Date.now();\n const progress = clamp(1 - (endAt - now) / currentDuration, 0, 1);\n outputVector.value = startVector.map((val, i) => {\n var _a;\n return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress);\n });\n if (progress >= 1) {\n pause();\n onFinished();\n }\n }, { immediate: false });\n const start = () => {\n pause();\n currentDuration = unref(duration);\n diffVector = outputVector.value.map((n, i) => {\n var _a, _b;\n return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0);\n });\n startVector = outputVector.value.slice(0);\n startAt = Date.now();\n endAt = startAt + currentDuration;\n resume();\n onStarted();\n };\n const timeout = useTimeoutFn(start, delay, { immediate: false });\n watch(sourceVector, () => {\n if (unref(disabled)) {\n outputVector.value = sourceVector.value.slice(0);\n } else {\n if (unref(delay) <= 0)\n start();\n else\n timeout.start();\n }\n }, { deep: true });\n return computed(() => {\n const targetVector = unref(disabled) ? sourceVector : outputVector;\n return isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value;\n });\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive(initialValue);\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}` : \"\"}${location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${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(state, () => {\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 }, { deep: true });\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState({}, \"\", window.location.pathname + constructQuery(params));\n resume();\n }\n function onChanged() {\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n updateState(read());\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b, _c;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const videoDeviceId = ref(options.videoDeviceId);\n const audioDeviceId = ref(options.audioDeviceId);\n const { navigator = defaultNavigator } = options;\n const isSupported = Boolean((_c = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _c.getUserMedia);\n const stream = shallowRef();\n function getDeviceOptions(device) {\n if (device.value === \"none\" || device.value === false)\n return false;\n if (device.value == null)\n return true;\n return {\n deviceId: device.value\n };\n }\n async function _start() {\n if (!isSupported || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(videoDeviceId),\n audio: getDeviceOptions(audioDeviceId)\n });\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 async function restart() {\n _stop();\n return await start();\n }\n watch(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n watch([videoDeviceId, audioDeviceId], () => {\n if (autoSwitch.value && stream.value)\n restart();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n videoDeviceId,\n audioDeviceId,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n passive = false,\n eventName,\n deep = false\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));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$options) == null ? void 0 : _c.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 = eventName || event || `update:${key}`;\n if (passive) {\n const proxy = ref(props[key]);\n watch(() => props[key], (v) => proxy.value = v);\n watch(proxy, (v) => {\n if (v !== props[key] || deep)\n _emit(event, v);\n }, {\n deep\n });\n return proxy;\n } else {\n return computed({\n get() {\n return props[key];\n },\n set(value) {\n _emit(event, value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = typeof navigator !== \"undefined\" && \"vibrate\" in navigator;\n const patternRef = ref(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(vibrate, interval, {\n immediate: false,\n immediateCallback: false\n });\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const containerRef = ref();\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = (containerHeight) => {\n if (typeof itemHeight === \"number\")\n return Math.ceil(containerHeight / itemHeight);\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 height = itemHeight(i);\n sum += height;\n if (sum >= containerHeight) {\n capacity = i;\n break;\n }\n }\n return capacity - start;\n };\n const getOffset = (scrollTop) => {\n if (typeof itemHeight === \"number\")\n return Math.floor(scrollTop / itemHeight) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const height = itemHeight(i);\n sum += height;\n if (sum >= scrollTop) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n const calculateRange = () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(element.scrollTop);\n const viewCapacity = getViewCapacity(element.clientHeight);\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 watch([size.width, size.height, list], () => {\n calculateRange();\n });\n const totalHeight = computed(() => {\n if (typeof itemHeight === \"number\")\n return source.value.length * itemHeight;\n return source.value.reduce((sum, _, index) => sum + itemHeight(index), 0);\n });\n const getDistanceTop = (index) => {\n if (typeof itemHeight === \"number\") {\n const height2 = index * itemHeight;\n return height2;\n }\n const height = source.value.slice(0, index).reduce((sum, _, i) => sum + itemHeight(i), 0);\n return height;\n };\n const scrollTo = (index) => {\n if (containerRef.value) {\n containerRef.value.scrollTop = getDistanceTop(index);\n calculateRange();\n }\n };\n const offsetTop = computed(() => getDistanceTop(state.value.start));\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 const containerStyle = { overflowY: \"auto\" };\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}\n\nconst useWakeLock = (options = {}) => {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = navigator && \"wakeLock\" in navigator;\n const isActive = ref(false);\n async function onVisibilityChange() {\n if (!isSupported || !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)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported || !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\nconst useWebNotification = (defaultOptions = {}) => {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = !!window && \"Notification\" in window;\n const notification = ref(null);\n const requestPermission = async () => {\n if (!isSupported)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const onClick = createEventHook();\n const onShow = createEventHook();\n const onError = createEventHook();\n const onClose = createEventHook();\n const show = async (overrides) => {\n if (!isSupported)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = (event) => onClick.trigger(event);\n notification.value.onshow = (event) => onShow.trigger(event);\n notification.value.onerror = (event) => onError.trigger(event);\n notification.value.onclose = (event) => onClose.trigger(event);\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n tryOnMounted(async () => {\n if (isSupported)\n await requestPermission();\n });\n tryOnScopeDispose(close);\n if (isSupported && 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 show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n};\n\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(\"CONNECTING\");\n const wsRef = ref();\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\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 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 const ws = new WebSocket(url, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n explicitlyClosed = false;\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 data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = \"ping\",\n interval = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(() => send(message, false), interval, { immediate: false });\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (immediate)\n _init();\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n retried = 0;\n _init();\n };\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(url, workerOptions, options = {}) {\n const {\n window = defaultWindow\n } = options;\n const data = ref(null);\n const worker = shallowRef();\n const post = function post2(val) {\n if (!worker.value)\n return;\n worker.value.postMessage(val);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n worker.value = new Worker(url, workerOptions);\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\nconst jobRunner = (userFunc) => (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\nconst depsParser = (deps) => {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n};\n\nconst 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\nconst 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 reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(() => workerTerminate(\"TIMEOUT_EXPIRED\"), timeout);\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(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\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({ window = defaultWindow } = {}) {\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({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const x = ref(window.pageXOffset);\n const y = ref(window.pageYOffset);\n useEventListener(\"scroll\", () => {\n x.value = window.pageXOffset;\n y.value = window.pageYOffset;\n }, {\n capture: false,\n passive: true\n });\n return { x, y };\n}\n\nfunction useWindowSize({ window = defaultWindow, initialWidth = Infinity, initialHeight = Infinity } = {}) {\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, SwipeDirection, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, computedAsync, computedInject, createFetch, createUnrefFn, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAsyncQueue, useAsyncState, useBase64, useBattery, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClamp, useClipboard, useColorMode, useConfirmDialog, useCssVar, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useOffsetPagination, useOnline, usePageLeave, useParallax, usePermission, usePointer, usePointerSwipe, usePreferredColorScheme, usePreferredDark, usePreferredLanguages, useRafFn, useRefHistory, useResizeObserver, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSpeechRecognition, useSpeechSynthesis, useStorage, useStorageAsync, useStyleTag, useSwipe, useTemplateRefsList, useTextSelection, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar vueDemi = require('vue-demi');\n\nvar __defProp$8 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = vueDemi.shallowRef();\n vueDemi.watchEffect(() => {\n result.value = fn();\n }, __spreadProps$5(__spreadValues$8({}, 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 vueDemi.watch(source, () => {\n dirty.value = true;\n trigger();\n }, { flush: \"sync\" });\n return vueDemi.customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = fn();\n dirty.value = false;\n }\n track();\n return v;\n },\n set() {\n }\n };\n });\n}\n\nfunction createEventHook() {\n const fns = [];\n const off = (fn) => {\n const index = fns.indexOf(fn);\n if (index !== -1)\n fns.splice(index, 1);\n };\n const on = (fn) => {\n fns.push(fn);\n return {\n off: () => off(fn)\n };\n };\n const trigger = (param) => {\n fns.forEach((fn) => fn(param));\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 () => {\n if (!initialized) {\n state = scope.run(stateFactory);\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n vueDemi.provide(key, composable(...args));\n };\n const useInjectedState = () => vueDemi.inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction tryOnScopeDispose(fn) {\n if (vueDemi.getCurrentScope()) {\n vueDemi.onScopeDispose(fn);\n return true;\n }\n return false;\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 __onlyVue3(name = \"this function\") {\n if (vueDemi.isVue3)\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nconst directiveHooks = {\n mounted: vueDemi.isVue3 ? \"mounted\" : \"inserted\",\n updated: vueDemi.isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: vueDemi.isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n __onlyVue3();\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 logicAnd(...args) {\n return vueDemi.computed(() => args.every((i) => vueDemi.unref(i)));\n}\n\nfunction logicNot(v) {\n return vueDemi.computed(() => !vueDemi.unref(v));\n}\n\nfunction logicOr(...args) {\n return vueDemi.computed(() => args.some((i) => vueDemi.unref(i)));\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$7({}, 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 reactify(fn) {\n return function(...args) {\n return vueDemi.computed(() => fn.apply(this, args.map((i) => vueDemi.unref(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\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(keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj)) : value\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 return reactiveComputed(() => Object.fromEntries(Object.entries(vueDemi.toRefs(obj)).filter((e) => !keys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n return vueDemi.reactive(Object.fromEntries(keys.map((k) => [k, vueDemi.toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return vueDemi.customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, vueDemi.unref(afterMs));\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\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\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};\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n filter(() => fn.apply(this, args), { fn, thisArg: this, args });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n const filter = (invoke) => {\n const duration = vueDemi.unref(ms);\n const maxDuration = vueDemi.unref(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 invoke();\n }\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n clearTimeout(timer);\n maxTimer = null;\n invoke();\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n clearTimeout(maxTimer);\n maxTimer = null;\n invoke();\n }, duration);\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true) {\n let lastExec = 0;\n let timer;\n let preventLeading = !leading;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n };\n const filter = (invoke) => {\n const duration = vueDemi.unref(ms);\n const elapsed = Date.now() - lastExec;\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration) {\n lastExec = Date.now();\n if (preventLeading)\n preventLeading = false;\n else\n invoke();\n }\n if (trailing) {\n timer = setTimeout(() => {\n lastExec = Date.now();\n if (!leading)\n preventLeading = true;\n clear();\n invoke();\n }, duration);\n }\n if (!leading && !timer)\n timer = setTimeout(() => preventLeading = true, duration);\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, pause, resume, eventFilter };\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 = 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}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n if (ms <= 0)\n return value;\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 = true, leading = true) {\n return createFilterWrapper(throttleFilter(ms, trailing, leading), fn);\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(ref, {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n }, { enumerable: true });\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 syncRef(left, right, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\"\n } = options;\n let stop1, stop2;\n if (direction === \"both\" || direction === \"ltr\") {\n stop1 = vueDemi.watch(left, (newValue) => right.value = newValue, { flush, deep, immediate });\n }\n if (direction === \"both\" || direction === \"rtl\") {\n stop2 = vueDemi.watch(right, (newValue) => left.value = newValue, { flush, deep, immediate });\n }\n return () => {\n stop1 == null ? void 0 : stop1();\n stop2 == null ? void 0 : stop2();\n };\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(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction toRefs(objectRef) {\n if (!vueDemi.isRef(objectRef))\n return vueDemi.toRefs(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(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 if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n objectRef.value = __spreadProps$4(__spreadValues$6({}, 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 until(r) {\n let 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(r, (v) => {\n if (condition(v) === !isNot) {\n stop == null ? void 0 : stop();\n resolve();\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).finally(() => {\n stop == null ? void 0 : stop();\n }));\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n return toMatch((v) => v === vueDemi.unref(value), options);\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(vueDemi.unref(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(vueDemi.unref(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n isNot = !isNot;\n return this;\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 isNot = !isNot;\n return this;\n }\n };\n return instance;\n }\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = vueDemi.ref(initialValue);\n const {\n max = Infinity,\n min = -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 = 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 = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst formatDate = (date, formatStr) => {\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 matches = {\n YY: String(years).slice(-2),\n YYYY: years,\n M: month + 1,\n MM: `${month + 1}`.padStart(2, \"0\"),\n D: String(days),\n DD: `${days}`.padStart(2, \"0\"),\n H: String(hours),\n HH: `${hours}`.padStart(2, \"0\"),\n h: `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: String(minutes),\n mm: `${minutes}`.padStart(2, \"0\"),\n s: String(seconds),\n ss: `${seconds}`.padStart(2, \"0\"),\n SSS: `${milliseconds}`.padStart(3, \"0\"),\n d: day\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]);\n};\nconst normalizeDate = (date) => {\n if (date === null)\n return new Date(NaN);\n if (date === void 0)\n return 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\") {\n return vueDemi.computed(() => formatDate(normalizeDate(vueDemi.unref(date)), vueDemi.unref(formatStr)));\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 if (interval <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, vueDemi.unref(interval));\n }\n if (immediate && isClient)\n resume();\n if (vueDemi.isRef(interval)) {\n const stopWatch = vueDemi.watch(interval, () => {\n if (immediate && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true\n } = options;\n const counter = vueDemi.ref(0);\n const controls = useIntervalFn(() => counter.value += 1, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$5({\n counter\n }, controls);\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(source, () => ms.value = timestamp(), options);\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 }, vueDemi.unref(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending,\n start,\n stop\n };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$6.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(b)) {\n if (__propIsEnum$6.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false\n } = options;\n const controls = useTimeoutFn(noop, interval, options);\n const ready = vueDemi.computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$4({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToggle(initialValue = false) {\n if (vueDemi.isRef(initialValue)) {\n return (value) => {\n initialValue.value = typeof value === \"boolean\" ? value : !initialValue.value;\n return initialValue.value;\n };\n } else {\n const boolean = vueDemi.ref(initialValue);\n const toggle = (value) => {\n boolean.value = typeof value === \"boolean\" ? value : !boolean.value;\n return boolean.value;\n };\n return [boolean, toggle];\n }\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return vueDemi.watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = vueDemi.ref(0);\n const stop = watchWithFilter(source, (...args) => {\n current.value += 1;\n if (current.value >= vueDemi.unref(count))\n vueDemi.nextTick(() => stop());\n cb(...args);\n }, watchOptions);\n return { count: current, stop };\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$3(__spreadValues$3({}, watchOptions), {\n eventFilter: debounceFilter(debounce)\n }));\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(eventFilter, cb);\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(source, (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n }, watchOptions);\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(vueDemi.watch(source, () => {\n syncCounter.value++;\n }, __spreadProps$2(__spreadValues$2({}, watchOptions), { flush: \"sync\" })));\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(vueDemi.watch(source, (...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 }, watchOptions));\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\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}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter\n }));\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(source, cb, __spreadProps(__spreadValues({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n }));\n}\n\nfunction whenever(source, cb, options) {\n return vueDemi.watch(source, (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n }, options);\n}\n\nexports.__onlyVue3 = __onlyVue3;\nexports.and = logicAnd;\nexports.assert = assert;\nexports.autoResetRef = refAutoReset;\nexports.bypassFilter = bypassFilter;\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.identity = identity;\nexports.ignorableWatch = watchIgnorable;\nexports.increaseWithUnit = increaseWithUnit;\nexports.invoke = invoke;\nexports.isBoolean = isBoolean;\nexports.isClient = isClient;\nexports.isDef = isDef;\nexports.isDefined = isDefined;\nexports.isFunction = isFunction;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isString = isString;\nexports.isWindow = isWindow;\nexports.logicAnd = logicAnd;\nexports.logicNot = logicNot;\nexports.logicOr = logicOr;\nexports.makeDestructurable = makeDestructurable;\nexports.noop = noop;\nexports.normalizeDate = normalizeDate;\nexports.not = logicNot;\nexports.now = now;\nexports.objectPick = objectPick;\nexports.or = logicOr;\nexports.pausableFilter = pausableFilter;\nexports.pausableWatch = watchPausable;\nexports.promiseTimeout = promiseTimeout;\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.set = set;\nexports.syncRef = syncRef;\nexports.syncRefs = syncRefs;\nexports.throttleFilter = throttleFilter;\nexports.throttledRef = refThrottled;\nexports.throttledWatch = watchThrottled;\nexports.timestamp = timestamp;\nexports.toReactive = toReactive;\nexports.toRefs = toRefs;\nexports.tryOnBeforeMount = tryOnBeforeMount;\nexports.tryOnBeforeUnmount = tryOnBeforeUnmount;\nexports.tryOnMounted = tryOnMounted;\nexports.tryOnScopeDispose = tryOnScopeDispose;\nexports.tryOnUnmounted = tryOnUnmounted;\nexports.until = until;\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.useToggle = useToggle;\nexports.watchAtMost = watchAtMost;\nexports.watchDebounced = watchDebounced;\nexports.watchIgnorable = watchIgnorable;\nexports.watchOnce = watchOnce;\nexports.watchPausable = watchPausable;\nexports.watchThrottled = watchThrottled;\nexports.watchWithFilter = watchWithFilter;\nexports.whenever = whenever;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\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 onError = shared.noop\n } = options;\n const started = vueDemi.ref(!lazy);\n const current = 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)\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\nconst createUnrefFn = (fn) => {\n return function(...args) {\n return fn.apply(this, args.map((i) => vueDemi.unref(i)));\n };\n};\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = vueDemi.unref(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 event;\n let listener;\n let options;\n if (shared.isString(args[0])) {\n [event, listener, options] = args;\n target = defaultWindow;\n } else {\n [target, event, listener, options] = args;\n }\n if (!target)\n return shared.noop;\n let cleanup = shared.noop;\n const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {\n cleanup();\n if (!el)\n return;\n el.addEventListener(event, listener, options);\n cleanup = () => {\n el.removeEventListener(event, listener, options);\n cleanup = shared.noop;\n };\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n stopWatch();\n cleanup();\n };\n shared.tryOnScopeDispose(stop);\n return stop;\n}\n\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore, capture = true } = options;\n if (!window)\n return;\n const shouldListen = vueDemi.ref(true);\n const listener = (event) => {\n const el = unrefElement(target);\n const composedPath = event.composedPath();\n if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value)\n return;\n if (ignore && ignore.length > 0) {\n if (ignore.some((target2) => {\n const el2 = unrefElement(target2);\n return el2 && (event.target === el2 || composedPath.includes(el2));\n }))\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.value = !!el && !e.composedPath().includes(el);\n }, { passive: true })\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nvar __defProp$h = Object.defineProperty;\nvar __defProps$8 = Object.defineProperties;\nvar __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$j = Object.getOwnPropertySymbols;\nvar __hasOwnProp$j = Object.prototype.hasOwnProperty;\nvar __propIsEnum$j = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$h = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n if (__getOwnPropSymbols$j)\n for (var prop of __getOwnPropSymbols$j(b)) {\n if (__propIsEnum$j.call(b, prop))\n __defNormalProp$h(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b));\nconst 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 else if (keyFilter)\n return () => true;\n else\n return () => false;\n};\nfunction onKeyStroke(key, handler, options = {}) {\n const { target = defaultWindow, eventName = \"keydown\", passive = false } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\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, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keydown\" }));\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keypress\" }));\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, __spreadProps$8(__spreadValues$h({}, options), { eventName: \"keyup\" }));\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n const elementRef = vueDemi.computed(() => core.unrefElement(target));\n let timeout = null;\n function clear() {\n if (timeout != null) {\n clearTimeout(timeout);\n timeout = null;\n }\n }\n function onDown(ev) {\n var _a;\n clear();\n timeout = setTimeout(() => handler(ev), (_a = options == null ? void 0 : options.delay) != null ? _a : DEFAULT_DELAY);\n }\n core.useEventListener(elementRef, \"pointerdown\", onDown);\n core.useEventListener(elementRef, \"pointerup\", clear);\n core.useEventListener(elementRef, \"pointerleave\", clear);\n}\n\nconst 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};\nconst isTypedCharValid = ({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) => {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\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 const { window = defaultWindow } = options;\n const counter = vueDemi.ref(0);\n if (window) {\n useEventListener(window, \"blur\", () => counter.value += 1, true);\n useEventListener(window, \"focus\", () => counter.value += 1, true);\n }\n return vueDemi.computed(() => {\n counter.value;\n return window == null ? void 0 : window.document.activeElement;\n });\n}\n\nfunction useAsyncQueue(tasks, options = {}) {\n const {\n interrupt = true,\n onError = shared.noop,\n onFinished = shared.noop\n } = options;\n const promiseState = {\n pending: \"pending\",\n rejected: \"rejected\",\n fulfilled: \"fulfilled\"\n };\n const initialResult = Array.from(new Array(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 (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n return curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n activeIndex.value === tasks.length - 1 && onFinished();\n return currentRes;\n });\n }).catch((e) => {\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = shared.noop,\n resetOnExecute = true,\n shallow = true\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.ref(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 } catch (e) {\n error.value = e;\n onError(e);\n }\n isLoading.value = false;\n return state.value;\n }\n if (immediate)\n execute(delay);\n return {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\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 = vueDemi.unref(target);\n if (_target === void 0 || _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 {\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 vueDemi.watch(target, execute, { immediate: true });\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({ navigator = defaultNavigator } = {}) {\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = 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) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n for (const event of events)\n useEventListener(battery, event, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n let mediaQuery;\n const matches = vueDemi.ref(false);\n const update = () => {\n if (!window)\n return;\n if (!mediaQuery)\n mediaQuery = window.matchMedia(query);\n matches.value = mediaQuery.matches;\n };\n shared.tryOnBeforeMount(() => {\n update();\n if (!mediaQuery)\n return;\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", update);\n else\n mediaQuery.addListener(update);\n shared.tryOnScopeDispose(() => {\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", update);\n else\n mediaQuery.removeListener(update);\n });\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 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};\n\nvar __defProp$g = Object.defineProperty;\nvar __getOwnPropSymbols$i = Object.getOwnPropertySymbols;\nvar __hasOwnProp$i = Object.prototype.hasOwnProperty;\nvar __propIsEnum$i = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$g = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n if (__getOwnPropSymbols$i)\n for (var prop of __getOwnPropSymbols$i(b)) {\n if (__propIsEnum$i.call(b, prop))\n __defNormalProp$g(a, prop, b[prop]);\n }\n return a;\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 greater = (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: () => greater(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n return __spreadValues$g({\n greater,\n smaller(k) {\n return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, 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)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n }\n }, shortcutMethods);\n}\n\nconst useBroadcastChannel = (options) => {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = window && \"BroadcastChannel\" in window;\n const isClosed = vueDemi.ref(false);\n const channel = vueDemi.ref();\n const data = vueDemi.ref();\n const error = vueDemi.ref(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) {\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\nfunction useBrowserLocation({ window = defaultWindow } = {}) {\n const buildState = (trigger) => {\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {};\n return {\n trigger,\n state: state2,\n length,\n hash,\n host,\n hostname,\n href,\n origin,\n pathname,\n port,\n protocol,\n search\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 useClamp(value, min, max) {\n const _value = vueDemi.ref(value);\n return vueDemi.computed({\n get() {\n return _value.value = shared.clamp(_value.value, vueDemi.unref(min), vueDemi.unref(max));\n },\n set(value2) {\n _value.value = shared.clamp(value2, vueDemi.unref(min), vueDemi.unref(max));\n }\n });\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const events = [\"copy\", \"cut\"];\n const isSupported = Boolean(navigator && \"clipboard\" in navigator);\n const text = vueDemi.ref(\"\");\n const copied = vueDemi.ref(false);\n const timeout = shared.useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n }\n if (isSupported && read) {\n for (const event of events)\n useEventListener(event, updateText);\n }\n async function copy(value = vueDemi.unref(source)) {\n if (isSupported && value != null) {\n await navigator.clipboard.writeText(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\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__\";\n_global[globalKey] = _global[globalKey] || {};\nconst handlers = _global[globalKey];\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\" : Array.isArray(rawInit) ? \"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};\nfunction useStorage(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const data = (shallow ? vueDemi.shallowRef : vueDemi.ref)(initialValue);\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 = vueDemi.unref(initialValue);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = shared.pausableWatch(data, () => write(data.value), { flush, deep, eventFilter });\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", update);\n update();\n return data;\n function write(v) {\n try {\n if (v == null)\n storage.removeItem(key);\n else\n storage.setItem(key, serializer.write(v));\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\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 (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n } finally {\n resumeWatch();\n }\n }\n function update(event) {\n if (event && event.key !== key)\n return;\n data.value = read(event);\n }\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropSymbols$h = Object.getOwnPropertySymbols;\nvar __hasOwnProp$h = Object.prototype.hasOwnProperty;\nvar __propIsEnum$h = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$f = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n if (__getOwnPropSymbols$h)\n for (var prop of __getOwnPropSymbols$h(b)) {\n if (__propIsEnum$h.call(b, prop))\n __defNormalProp$f(a, prop, b[prop]);\n }\n return a;\n};\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef\n } = options;\n const modes = __spreadValues$f({\n auto: \"\",\n light: \"light\",\n dark: \"dark\"\n }, options.modes || {});\n const preferredDark = usePreferredDark({ window });\n const preferredMode = vueDemi.computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? vueDemi.ref(\"auto\") : useStorage(storageKey, \"auto\", storage, { window, listenToStorageChanges }));\n const state = vueDemi.computed({\n get() {\n return store.value === \"auto\" ? preferredMode.value : store.value;\n },\n set(v) {\n store.value = v;\n }\n });\n const updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector2, attribute2, value) => {\n const el = window == null ? void 0 : window.document.querySelector(selector2);\n if (!el)\n return;\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 });\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 return state;\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 useCssVar(prop, target, { window = defaultWindow } = {}) {\n const variable = vueDemi.ref(\"\");\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 vueDemi.watch([elRef, () => vueDemi.unref(prop)], ([el, prop2]) => {\n if (el && window)\n variable.value = window.getComputedStyle(el).getPropertyValue(prop2);\n }, { immediate: true });\n vueDemi.watch(variable, (val) => {\n var _a;\n if ((_a = elRef.value) == null ? void 0 : _a.style)\n elRef.value.style.setProperty(vueDemi.unref(prop), val);\n });\n return variable;\n}\n\nfunction useCycleList(list, options) {\n var _a;\n const state = vueDemi.shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]);\n const index = vueDemi.computed({\n get() {\n var _a2;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const length = list.length;\n const index2 = (i % length + length) % length;\n const value = list[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 return {\n state,\n index,\n next,\n prev\n };\n}\n\nvar __defProp$e = Object.defineProperty;\nvar __defProps$7 = Object.defineProperties;\nvar __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$g = Object.getOwnPropertySymbols;\nvar __hasOwnProp$g = Object.prototype.hasOwnProperty;\nvar __propIsEnum$g = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$e = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n if (__getOwnPropSymbols$g)\n for (var prop of __getOwnPropSymbols$g(b)) {\n if (__propIsEnum$g.call(b, prop))\n __defNormalProp$e(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode(__spreadProps$7(__spreadValues$e({}, options), {\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\");\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n }));\n const preferredDark = usePreferredDark({ window });\n const isDark = vueDemi.computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n if (v === preferredDark.value)\n mode.value = \"auto\";\n else\n mode.value = v ? \"dark\" : \"light\";\n }\n });\n return isDark;\n}\n\nconst fnClone = (v) => JSON.parse(JSON.stringify(v));\nconst fnBypass = (v) => v;\nconst fnSetSource = (source, value) => source.value = value;\nfunction defaultDump(clone) {\n return clone ? shared.isFunction(clone) ? clone : fnClone : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? shared.isFunction(clone) ? clone : fnClone : 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, 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\nvar __defProp$d = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$f = Object.getOwnPropertySymbols;\nvar __hasOwnProp$f = Object.prototype.hasOwnProperty;\nvar __propIsEnum$f = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$d = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n if (__getOwnPropSymbols$f)\n for (var prop of __getOwnPropSymbols$f(b)) {\n if (__propIsEnum$f.call(b, prop))\n __defNormalProp$d(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\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(source, commit, { deep, flush, eventFilter: composedFilter });\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$d({}, 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 __spreadProps$6(__spreadValues$d({}, manualHistory), {\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n });\n}\n\nvar __defProp$c = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$e = Object.getOwnPropertySymbols;\nvar __hasOwnProp$e = Object.prototype.hasOwnProperty;\nvar __propIsEnum$e = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$c = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n if (__getOwnPropSymbols$e)\n for (var prop of __getOwnPropSymbols$e(b)) {\n if (__propIsEnum$e.call(b, prop))\n __defNormalProp$c(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? shared.debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, __spreadProps$5(__spreadValues$c({}, options), { eventFilter: filter }));\n return __spreadValues$c({}, history);\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(eventFilter, (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\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 = Boolean(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) {\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\nconst DEVICE_PIXEL_RATIO_SCALES = [\n 1,\n 1.325,\n 1.4,\n 1.5,\n 1.8,\n 2,\n 2.4,\n 2.5,\n 2.75,\n 3,\n 3.5,\n 4\n];\nfunction useDevicePixelRatio({\n window = defaultWindow\n} = {}) {\n if (!window) {\n return {\n pixelRatio: vueDemi.ref(1)\n };\n }\n const pixelRatio = vueDemi.ref(window.devicePixelRatio);\n const handleDevicePixelRatio = () => {\n pixelRatio.value = window.devicePixelRatio;\n };\n useEventListener(window, \"resize\", handleDevicePixelRatio, { passive: true });\n DEVICE_PIXEL_RATIO_SCALES.forEach((dppx) => {\n const mqlMin = useMediaQuery(`screen and (min-resolution: ${dppx}dppx)`);\n const mqlMax = useMediaQuery(`screen and (max-resolution: ${dppx}dppx)`);\n vueDemi.watch([mqlMin, mqlMax], handleDevicePixelRatio);\n });\n return { pixelRatio };\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = Boolean(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)\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 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 let isSupported = false;\n const permissionGranted = vueDemi.ref(false);\n async function update() {\n if (!isSupported)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n }\n async function ensurePermissions() {\n if (!isSupported)\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 const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach((t) => t.stop());\n update();\n permissionGranted.value = true;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (navigator) {\n isSupported = Boolean(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n if (isSupported) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\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, _b;\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 = Boolean((_b = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _b.getDisplayMedia);\n const constraint = { audio, video };\n const stream = vueDemi.shallowRef();\n async function _start() {\n if (!isSupported || 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(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility({ document = defaultDocument } = {}) {\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\nvar __defProp$b = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$d = Object.getOwnPropertySymbols;\nvar __hasOwnProp$d = Object.prototype.hasOwnProperty;\nvar __propIsEnum$d = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$b = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n if (__getOwnPropSymbols$d)\n for (var prop of __getOwnPropSymbols$d(b)) {\n if (__propIsEnum$d.call(b, prop))\n __defNormalProp$b(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;\n const position = vueDemi.ref((_b = options.initialValue) != null ? _b : { x: 0, y: 0 });\n const pressedDelta = vueDemi.ref();\n const filterEvent = (e) => {\n if (options.pointerTypes)\n return options.pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (vueDemi.unref(options.preventDefault))\n e.preventDefault();\n if (vueDemi.unref(options.stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (vueDemi.unref(options.exact) && e.target !== vueDemi.unref(target))\n return;\n const rect = vueDemi.unref(target).getBoundingClientRect();\n const pos = {\n x: e.pageX - rect.left,\n y: e.pageY - rect.top\n };\n if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, 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 position.value = {\n x: e.pageX - pressedDelta.value.x,\n y: e.pageY - pressedDelta.value.y\n };\n (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n var _a2;\n if (!filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e);\n handleEvent(e);\n };\n if (shared.isClient) {\n useEventListener(target, \"pointerdown\", start, true);\n useEventListener(draggingElement, \"pointermove\", move, true);\n useEventListener(draggingElement, \"pointerup\", end, true);\n }\n return __spreadProps$4(__spreadValues$b({}, shared.toRefs(position)), {\n position,\n isDragging: vueDemi.computed(() => !!pressedDelta.value),\n style: vueDemi.computed(() => `left:${position.value.x}px;top:${position.value.y}px;`)\n });\n}\n\nvar __getOwnPropSymbols$c = Object.getOwnPropertySymbols;\nvar __hasOwnProp$c = Object.prototype.hasOwnProperty;\nvar __propIsEnum$c = Object.prototype.propertyIsEnumerable;\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$c)\n for (var prop of __getOwnPropSymbols$c(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useResizeObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, [\"window\"]);\n let observer;\n const isSupported = window && \"ResizeObserver\" in window;\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported && window && el) {\n observer = new ResizeObserver(callback);\n observer.observe(el, observerOptions);\n }\n }, { immediate: true, flush: \"post\" });\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 } = 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, { passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n window = defaultWindow\n } = options;\n const isActive = vueDemi.ref(false);\n function loop() {\n if (!isActive.value || !window)\n return;\n fn();\n window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate)\n resume();\n shared.tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$a = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$a(a, prop, b[prop]);\n }\n return a;\n};\nfunction useElementByPoint(options) {\n const element = vueDemi.ref(null);\n const { x, y } = options;\n const controls = useRafFn(() => {\n element.value = document.elementFromPoint(vueDemi.unref(x), vueDemi.unref(y));\n });\n return __spreadValues$a({\n element\n }, controls);\n}\n\nfunction useElementHover(el) {\n const isHovered = vueDemi.ref(false);\n useEventListener(el, \"mouseenter\", () => isHovered.value = true);\n useEventListener(el, \"mouseleave\", () => isHovered.value = false);\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const width = vueDemi.ref(initialSize.width);\n const height = vueDemi.ref(initialSize.height);\n useResizeObserver(target, ([entry]) => {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }, options);\n vueDemi.watch(() => unrefElement(target), (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n });\n return {\n width,\n height\n };\n}\n\nfunction useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) {\n const elementIsVisible = vueDemi.ref(false);\n const testBounding = () => {\n if (!window)\n return;\n const document = window.document;\n if (!vueDemi.unref(element)) {\n elementIsVisible.value = false;\n } else {\n const rect = vueDemi.unref(element).getBoundingClientRect();\n elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;\n }\n };\n shared.tryOnMounted(testBounding);\n if (window)\n shared.tryOnMounted(() => useEventListener(vueDemi.unref(scrollTarget) || window, \"scroll\", testBounding, { capture: false, passive: true }));\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = vueDemi.getCurrentScope();\n function on(listener) {\n const listeners = events.get(key) || [];\n listeners.push(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n scope == null ? void 0 : scope.cleanups.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 const index = listeners.indexOf(listener);\n if (index > -1)\n listeners.splice(index, 1);\n if (!listeners.length)\n events.delete(key);\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.ref(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 = Boolean(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = vueDemi.ref(initialValue);\n async function open(openOptions) {\n if (!isSupported)\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 = vueDemi.isRef(newIcon) ? newIcon : vueDemi.ref(newIcon);\n const applyIcon = (icon) => {\n document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`).forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n vueDemi.watch(favicon, (i, o) => {\n if (shared.isString(i) && i !== o)\n applyIcon(i);\n }, { immediate: true });\n return favicon;\n}\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\",\n formData: \"multipart/form-data\"\n};\nfunction isFetchOptions(obj) {\n return shared.containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\");\n}\nfunction headersToObject(headers) {\n if (headers instanceof Headers)\n return Object.fromEntries([...headers.entries()]);\n return headers;\n}\nfunction createFetch(config = {}) {\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = vueDemi.computed(() => config.baseUrl ? joinPaths(vueDemi.unref(config.baseUrl), vueDemi.unref(url)) : vueDemi.unref(url));\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = __spreadValues$9(__spreadValues$9({}, options), args[0]);\n } else {\n fetchOptions = __spreadProps$3(__spreadValues$9(__spreadValues$9({}, fetchOptions), args[0]), {\n headers: __spreadValues$9(__spreadValues$9({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})\n });\n }\n }\n if (args.length > 1 && isFetchOptions(args[1]))\n options = __spreadValues$9(__spreadValues$9({}, options), args[1]);\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 = { immediate: true, refetch: false, timeout: 0 };\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 = __spreadValues$9(__spreadValues$9({}, options), args[0]);\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = __spreadValues$9(__spreadValues$9({}, 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);\n const canAbort = vueDemi.computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort && controller)\n controller.abort();\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 const execute = async (throwOnFailed = false) => {\n var _a2;\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n controller = void 0;\n if (supportsAbort) {\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = __spreadProps$3(__spreadValues$9({}, fetchOptions), {\n signal: controller.signal\n });\n }\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(vueDemi.unref(config.payload)) : vueDemi.unref(config.payload);\n }\n let isCanceled = false;\n const context = { url: vueDemi.unref(url), options: fetchOptions, cancel: () => {\n isCanceled = true;\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(context.url, __spreadProps$3(__spreadValues$9(__spreadValues$9({}, defaultFetchOptions), context.options), {\n headers: __spreadValues$9(__spreadValues$9({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))\n })).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse[config.type]();\n if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300)\n ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse }));\n data.value = responseData;\n if (!fetchResponse.ok)\n throw new Error(fetchResponse.statusText);\n responseEvent.trigger(fetchResponse);\n return resolve(fetchResponse);\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError)\n ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value }));\n data.value = responseData;\n error.value = errorData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n return reject(fetchError);\n return resolve(null);\n }).finally(() => {\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n });\n };\n vueDemi.watch(() => [\n vueDemi.unref(url),\n vueDemi.unref(options.refetch)\n ], () => vueDemi.unref(options.refetch) && execute(), { deep: true });\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 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 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 vueDemi.unref(config.payload),\n vueDemi.unref(options.refetch)\n ], () => vueDemi.unref(options.refetch) && execute(), { deep: true });\n }\n if (!payloadType && vueDemi.unref(payload) && Object.getPrototypeOf(vueDemi.unref(payload)) === Object.prototype)\n config.payloadType = \"json\";\n return shell;\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 __spreadProps$3(__spreadValues$9({}, 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 setTimeout(execute, 0);\n return __spreadProps$3(__spreadValues$9({}, 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\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = vueDemi.unref(options);\n const window = _window;\n const isSupported = Boolean(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)\n return;\n const [handle] = await window.showOpenFilePicker(__spreadValues$8(__spreadValues$8({}, vueDemi.unref(options)), _options));\n fileHandle.value = handle;\n await updateFile();\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$8(__spreadValues$8({}, vueDemi.unref(options)), _options));\n data.value = void 0;\n await updateFile();\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported)\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)\n return;\n fileHandle.value = await window.showSaveFilePicker(__spreadValues$8(__spreadValues$8({}, vueDemi.unref(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 if (vueDemi.unref(dataType) === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n if (vueDemi.unref(dataType) === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n if (vueDemi.unref(dataType) === \"Blob\")\n data.value = file.value;\n }\n vueDemi.watch(() => vueDemi.unref(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 } = options;\n const activeElement = useActiveElement(options);\n const targetElement = vueDemi.computed(() => unrefElement(target));\n const focused = vueDemi.computed({\n get() {\n return activeElement.value === targetElement.value;\n },\n set(value) {\n var _a, _b;\n if (!value && focused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n if (value && !focused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus();\n }\n });\n vueDemi.watch(targetElement, () => {\n focused.value = initialValue;\n }, { immediate: true, flush: \"post\" });\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 functionsMap = [\n [\n \"requestFullscreen\",\n \"exitFullscreen\",\n \"fullscreenElement\",\n \"fullscreenEnabled\",\n \"fullscreenchange\",\n \"fullscreenerror\"\n ],\n [\n \"webkitRequestFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitFullscreenElement\",\n \"webkitFullscreenEnabled\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"webkitRequestFullScreen\",\n \"webkitCancelFullScreen\",\n \"webkitCurrentFullScreenElement\",\n \"webkitCancelFullScreen\",\n \"webkitfullscreenchange\",\n \"webkitfullscreenerror\"\n ],\n [\n \"mozRequestFullScreen\",\n \"mozCancelFullScreen\",\n \"mozFullScreenElement\",\n \"mozFullScreenEnabled\",\n \"mozfullscreenchange\",\n \"mozfullscreenerror\"\n ],\n [\n \"msRequestFullscreen\",\n \"msExitFullscreen\",\n \"msFullscreenElement\",\n \"msFullscreenEnabled\",\n \"MSFullscreenChange\",\n \"MSFullscreenError\"\n ]\n];\nfunction useFullscreen(target, options = {}) {\n const { document = defaultDocument, autoExit = false } = options;\n const targetRef = target || (document == null ? void 0 : document.querySelector(\"html\"));\n const isFullscreen = vueDemi.ref(false);\n let isSupported = false;\n let map = functionsMap[0];\n if (!document) {\n isSupported = false;\n } else {\n for (const m of functionsMap) {\n if (m[1] in document) {\n map = m;\n isSupported = true;\n break;\n }\n }\n }\n const [REQUEST, EXIT, ELEMENT, , EVENT] = map;\n async function exit() {\n if (!isSupported)\n return;\n if (document == null ? void 0 : document[ELEMENT])\n await document[EXIT]();\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported)\n return;\n await exit();\n const target2 = unrefElement(targetRef);\n if (target2) {\n await target2[REQUEST]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n if (isFullscreen.value)\n await exit();\n else\n await enter();\n }\n if (document) {\n useEventListener(document, EVENT, () => {\n isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]);\n }, false);\n }\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 = 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 id: gamepad.id,\n hapticActuators,\n index: gamepad.index,\n mapping: gamepad.mapping,\n connected: gamepad.connected,\n timestamp: gamepad.timestamp,\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 } = core.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 core.useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n core.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 } = options;\n const isSupported = navigator && \"geolocation\" in navigator;\n const locatedAt = vueDemi.ref(null);\n const error = vueDemi.ref(null);\n const coords = vueDemi.ref({\n accuracy: 0,\n latitude: Infinity,\n longitude: 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 if (isSupported) {\n watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n enableHighAccuracy,\n maximumAge,\n timeout\n });\n }\n shared.tryOnScopeDispose(() => {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error\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 onEvent = shared.createFilterWrapper(eventFilter, () => {\n idle.value = false;\n lastActive.value = shared.timestamp();\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\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 }\n timer = setTimeout(() => idle.value = true, timeout);\n return { idle, lastActive };\n}\n\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 } = options;\n const x = vueDemi.ref(0);\n const y = vueDemi.ref(0);\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 if (element) {\n const onScrollEnd = shared.useDebounceFn((e) => {\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n }, throttle + idle);\n const onScrollHandler = (e) => {\n const eventTarget = e.target === document ? e.target.documentElement : e.target;\n const scrollLeft = eventTarget.scrollLeft;\n directions.left = scrollLeft < x.value;\n directions.right = scrollLeft > x.value;\n arrivedState.left = scrollLeft <= 0 + (offset.left || 0);\n arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);\n x.value = scrollLeft;\n const scrollTop = eventTarget.scrollTop;\n directions.top = scrollTop < y.value;\n directions.bottom = scrollTop > y.value;\n arrivedState.top = scrollTop <= 0 + (offset.top || 0);\n arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);\n y.value = scrollTop;\n isScrolling.value = true;\n onScrollEnd(e);\n onScroll(e);\n };\n useEventListener(element, \"scroll\", throttle ? shared.useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);\n }\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions\n };\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const state = vueDemi.reactive(useScroll(element, __spreadProps$2(__spreadValues$7({}, options), {\n offset: __spreadValues$7({\n bottom: (_a = options.distance) != null ? _a : 0\n }, options.offset)\n })));\n vueDemi.watch(() => state.arrivedState.bottom, (v) => {\n if (v)\n onLoadMore(state);\n });\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0.1,\n window = defaultWindow\n } = options;\n const isSupported = window && \"IntersectionObserver\" in window;\n let cleanup = shared.noop;\n const stopWatch = isSupported ? vueDemi.watch(() => ({\n el: unrefElement(target),\n root: unrefElement(root)\n }), ({ el, root: root2 }) => {\n cleanup();\n if (!el)\n return;\n const observer = new IntersectionObserver(callback, {\n root: root2,\n rootMargin,\n threshold\n });\n observer.observe(el);\n cleanup = () => {\n observer.disconnect();\n cleanup = shared.noop;\n };\n }, { immediate: true, flush: \"post\" }) : shared.noop;\n const stop = () => {\n cleanup();\n stopWatch();\n };\n shared.tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\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 = { toJSON() {\n return {};\n }, current };\n const refs = useReactive ? vueDemi.reactive(obj) : obj;\n const metaDeps = /* @__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 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 (code) {\n if (value)\n current.add(e.code);\n else\n current.delete(e.code);\n }\n for (const key2 of values)\n setRefs(key2, value);\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n if (target) {\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 }\n const proxy = new Proxy(refs, {\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) => vueDemi.unref(proxy[key])));\n } else {\n refs[prop] = vueDemi.ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? vueDemi.unref(r) : r;\n }\n });\n return proxy;\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nfunction usingElRef(source, cb) {\n if (vueDemi.unref(source))\n cb(vueDemi.unref(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 = __spreadValues$6(__spreadValues$6({}, defaultOptions), options);\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 = shared.isNumber(track) ? 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 = shared.isNumber(track) ? 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 = vueDemi.unref(target);\n if (!el)\n return;\n const src = vueDemi.unref(options.src);\n let sources = [];\n if (!src)\n return;\n if (shared.isString(src))\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 = vueDemi.unref(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n vueDemi.watch(volume, (vol) => {\n const el = vueDemi.unref(target);\n if (!el)\n return;\n el.volume = vol;\n });\n vueDemi.watch(muted, (mute) => {\n const el = vueDemi.unref(target);\n if (!el)\n return;\n el.muted = mute;\n });\n vueDemi.watch(rate, (rate2) => {\n const el = vueDemi.unref(target);\n if (!el)\n return;\n el.playbackRate = rate2;\n });\n vueDemi.watchEffect(() => {\n if (!document)\n return;\n const textTracks = vueDemi.unref(options.tracks);\n const el = vueDemi.unref(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 = vueDemi.unref(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = shared.watchIgnorable(playing, (isPlaying) => {\n const el = vueDemi.unref(target);\n if (!el)\n return;\n isPlaying ? el.play() : el.pause();\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = vueDemi.unref(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = vueDemi.unref(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(vueDemi.unref(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, \"waiting\", () => waiting.value = true);\n useEventListener(target, \"playing\", () => waiting.value = false);\n useEventListener(target, \"ratechange\", () => rate.value = vueDemi.unref(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 = vueDemi.unref(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 = vueDemi.unref(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 muted,\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n onSourceError: sourceErrorEvent.on\n };\n}\n\nconst 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) => Object.prototype.hasOwnProperty.call(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 = typeof performance !== \"undefined\" && \"memory\" in performance;\n if (isSupported) {\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\nfunction useMounted() {\n const isMounted = vueDemi.ref(false);\n vueDemi.onMounted(() => {\n isMounted.value = true;\n });\n return isMounted;\n}\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 eventFilter\n } = options;\n const x = vueDemi.ref(initialValue.x);\n const y = vueDemi.ref(initialValue.y);\n const sourceType = vueDemi.ref(null);\n const mouseHandler = (event) => {\n if (type === \"page\") {\n x.value = event.pageX;\n y.value = event.pageY;\n } else if (type === \"client\") {\n x.value = event.clientX;\n y.value = event.clientY;\n }\n sourceType.value = \"mouse\";\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const touch2 = event.touches[0];\n if (type === \"page\") {\n x.value = touch2.pageX;\n y.value = touch2.pageY;\n } else if (type === \"client\") {\n x.value = touch2.clientX;\n y.value = touch2.clientY;\n }\n sourceType.value = \"touch\";\n }\n };\n const mouseHandlerWrapper = (event) => {\n return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {});\n };\n const touchHandlerWrapper = (event) => {\n return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {});\n };\n if (window) {\n useEventListener(window, \"mousemove\", mouseHandlerWrapper, { passive: true });\n useEventListener(window, \"dragover\", mouseHandlerWrapper, { passive: true });\n if (touch) {\n useEventListener(window, \"touchstart\", touchHandlerWrapper, { passive: true });\n useEventListener(window, \"touchmove\", touchHandlerWrapper, { passive: true });\n if (resetOnTouchEnds)\n useEventListener(window, \"touchend\", reset, { passive: true });\n }\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 { 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(false);\n let stop = () => {\n };\n if (window) {\n stop = vueDemi.watch([targetRef, x, y], () => {\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 + window.pageXOffset;\n elementPositionY.value = top + window.pageYOffset;\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 = elX < 0 || elY < 0 || elX > elementWidth.value || elY > elementHeight.value;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n }, { immediate: true });\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 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 });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true });\n useEventListener(window, \"mouseup\", onReleased, { passive: true });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true });\n useEventListener(window, \"drop\", onReleased, { passive: true });\n useEventListener(window, \"dragend\", onReleased, { passive: true });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true });\n useEventListener(window, \"touchend\", onReleased, { passive: true });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction useMutationObserver(target, callback, options = {}) {\n const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, [\"window\"]);\n let observer;\n const isSupported = window && \"IntersectionObserver\" in window;\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const stopWatch = vueDemi.watch(() => unrefElement(target), (el) => {\n cleanup();\n if (isSupported && window && el) {\n observer = new MutationObserver(callback);\n observer.observe(el, mutationOptions);\n }\n }, { immediate: true });\n const stop = () => {\n cleanup();\n stopWatch();\n };\n shared.tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nconst useNavigatorLanguage = (options = {}) => {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = Boolean(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 = Boolean(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 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 && 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 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 });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline,\n saveData,\n offlineAt,\n downlink,\n downlinkMax,\n effectiveType,\n rtt,\n type\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = vueDemi.ref(new Date());\n const update = () => now.value = new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : shared.useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return __spreadValues$5({\n now\n }, controls);\n } else {\n return now;\n }\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = 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, Infinity);\n const pageCount = vueDemi.computed(() => Math.ceil(vueDemi.unref(total) / vueDemi.unref(currentPageSize)));\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\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\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 useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$1(__spreadValues$4({}, shared.toRefs(state)), {\n isInside\n });\n}\n\nvar SwipeDirection = /* @__PURE__ */ ((SwipeDirection2) => {\n SwipeDirection2[\"UP\"] = \"UP\";\n SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n SwipeDirection2[\"DOWN\"] = \"DOWN\";\n SwipeDirection2[\"LEFT\"] = \"LEFT\";\n SwipeDirection2[\"NONE\"] = \"NONE\";\n return SwipeDirection2;\n})(SwipeDirection || {});\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\" /* NONE */;\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"LEFT\" /* LEFT */ : \"RIGHT\" /* RIGHT */;\n } else {\n return diffY.value > 0 ? \"UP\" /* UP */ : \"DOWN\" /* 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 (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 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\", onTouchEnd, listenerOptions),\n useEventListener(target, \"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 usePointerSwipe(target, options = {}) {\n const targetRef = vueDemi.ref(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 SwipeDirection.NONE;\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;\n } else {\n return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;\n }\n });\n const filterEvent = (e) => {\n if (options.pointerTypes)\n return options.pointerTypes.includes(e.pointerType);\n return true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n var _a, _b;\n if (!filterEvent(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 (!filterEvent(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 (!filterEvent(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 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\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=\"${src}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = vueDemi.unref(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 for (const attr in attrs)\n el[attr] = attrs[attr];\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=\"${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\nvar _a, _b;\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst isIOS = shared.isClient && (window == null ? void 0 : window.navigator) && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);\nfunction useScrollLock(element, initialState = false) {\n const isLocked = vueDemi.ref(initialState);\n let touchMoveListener = null;\n let initialOverflow;\n vueDemi.watch(() => vueDemi.unref(element), (el) => {\n if (el) {\n const ele = el;\n initialOverflow = ele.style.overflow;\n if (isLocked.value)\n ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const ele = vueDemi.unref(element);\n if (!ele || isLocked.value)\n return;\n if (isIOS) {\n touchMoveListener = useEventListener(document, \"touchmove\", preventDefault, { passive: false });\n }\n ele.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const ele = vueDemi.unref(element);\n if (!ele || !isLocked.value)\n return;\n isIOS && (touchMoveListener == null ? void 0 : touchMoveListener());\n ele.style.overflow = initialOverflow;\n isLocked.value = false;\n };\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\nvar __defProp$3 = Object.defineProperty;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = _navigator && \"canShare\" in _navigator;\n const share = async (overrideOptions = {}) => {\n if (isSupported) {\n const data = __spreadValues$3(__spreadValues$3({}, vueDemi.unref(shareOptions)), vueDemi.unref(overrideOptions));\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\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n window = defaultWindow\n } = options;\n const lang = vueDemi.ref(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 = Boolean(SpeechRecognition);\n let recognition;\n if (isSupported) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = vueDemi.unref(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 = vueDemi.unref(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 var _a, _b;\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 = Boolean(synth);\n const isPlaying = vueDemi.ref(false);\n const status = vueDemi.ref(\"init\");\n const voiceInfo = {\n lang: ((_a = options.voice) == null ? void 0 : _a.lang) || \"default\",\n name: ((_b = options.voice) == null ? void 0 : _b.name) || \"\"\n };\n const spokenText = vueDemi.ref(text || \"\");\n const lang = vueDemi.ref(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 = vueDemi.unref(lang);\n options.voice && (utterance2.voice = options.voice);\n utterance2.pitch = pitch;\n utterance2.rate = 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 utterance2.onend = () => {\n isPlaying.value = false;\n utterance2.lang = vueDemi.unref(lang);\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 if (isSupported) {\n bindEventsForUtterance(utterance.value);\n vueDemi.watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\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 voiceInfo,\n utterance,\n error,\n toggle,\n speak\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 shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = vueDemi.unref(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 {\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) => setTimeout(() => read(e), 0));\n if (storage) {\n shared.watchWithFilter(data, 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 flush,\n deep,\n eventFilter\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 el.type = \"text/css\";\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n if (isLoaded.value)\n return;\n stop = vueDemi.watch(cssRef, (value) => {\n el.innerText = value;\n }, { immediate: true });\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 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 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 getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n const ranges = new Array(rangeCount);\n for (let i = 0; i < rangeCount; i++) {\n const range = selection.getRangeAt(i);\n ranges[i] = range;\n }\n return ranges;\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\nvar __defProp$2 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = shared.throttleFilter(throttle, trailing);\n const history = useRefHistory(source, __spreadProps(__spreadValues$2({}, options), { eventFilter: filter }));\n return __spreadValues$2({}, history);\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst 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: 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};\nconst DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n max,\n updateInterval = 3e4,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER\n } = options;\n const { abs, round } = Math;\n const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, [\"now\"]);\n function getTimeago(from, now2) {\n var _a2;\n const diff = +now2 - +from;\n const absDiff = abs(diff);\n if (absDiff < 6e4)\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 = (_a2 = UNITS.find((i) => i.name === max)) == null ? void 0 : _a2.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const unit of UNITS) {\n if (absDiff < unit.max)\n return format(diff, unit);\n }\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 function format(diff, unit) {\n const val = round(abs(diff) / unit.value);\n const past = diff > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n const timeAgo = vueDemi.computed(() => getTimeago(new Date(vueDemi.unref(time)), vueDemi.unref(now.value)));\n if (exposeControls) {\n return __spreadValues$1({\n timeAgo\n }, controls);\n } else {\n return timeAgo;\n }\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = shared.useTimeoutFn(loop, interval);\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\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\"\n } = options;\n const ts = vueDemi.ref(shared.timestamp() + offset);\n const update = () => ts.value = shared.timestamp() + offset;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate }) : shared.useIntervalFn(update, interval, { immediate });\n if (exposeControls) {\n return __spreadValues({\n timestamp: ts\n }, controls);\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b;\n const {\n document = defaultDocument,\n observe = false,\n titleTemplate = \"%s\"\n } = options;\n const title = vueDemi.ref((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n vueDemi.watch(title, (t, o) => {\n if (shared.isString(t) && t !== o && document)\n document.title = titleTemplate.replace(\"%s\", t);\n }, { immediate: true });\n if (observe && document) {\n useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector(\"title\"), () => {\n if (document && document.title !== title.value)\n title.value = titleTemplate.replace(\"%s\", document.title);\n }, { childList: true });\n }\n return title;\n}\n\nconst TransitionPresets = {\n linear: shared.identity,\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};\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 useTransition(source, options = {}) {\n const {\n delay = 0,\n disabled = false,\n duration = 1e3,\n onFinished = shared.noop,\n onStarted = shared.noop,\n transition = shared.identity\n } = options;\n const currentTransition = vueDemi.computed(() => {\n const t = vueDemi.unref(transition);\n return shared.isFunction(t) ? t : createEasingFunction(t);\n });\n const sourceValue = vueDemi.computed(() => {\n const s = vueDemi.unref(source);\n return shared.isNumber(s) ? s : s.map(vueDemi.unref);\n });\n const sourceVector = vueDemi.computed(() => shared.isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value);\n const outputVector = vueDemi.ref(sourceVector.value.slice(0));\n let currentDuration;\n let diffVector;\n let endAt;\n let startAt;\n let startVector;\n const { resume, pause } = useRafFn(() => {\n const now = Date.now();\n const progress = shared.clamp(1 - (endAt - now) / currentDuration, 0, 1);\n outputVector.value = startVector.map((val, i) => {\n var _a;\n return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress);\n });\n if (progress >= 1) {\n pause();\n onFinished();\n }\n }, { immediate: false });\n const start = () => {\n pause();\n currentDuration = vueDemi.unref(duration);\n diffVector = outputVector.value.map((n, i) => {\n var _a, _b;\n return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0);\n });\n startVector = outputVector.value.slice(0);\n startAt = Date.now();\n endAt = startAt + currentDuration;\n resume();\n onStarted();\n };\n const timeout = shared.useTimeoutFn(start, delay, { immediate: false });\n vueDemi.watch(sourceVector, () => {\n if (vueDemi.unref(disabled)) {\n outputVector.value = sourceVector.value.slice(0);\n } else {\n if (vueDemi.unref(delay) <= 0)\n start();\n else\n timeout.start();\n }\n }, { deep: true });\n return vueDemi.computed(() => {\n const targetVector = vueDemi.unref(disabled) ? sourceVector : outputVector;\n return shared.isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value;\n });\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n window = defaultWindow\n } = options;\n if (!window)\n return vueDemi.reactive(initialValue);\n const state = vueDemi.reactive(initialValue);\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}` : \"\"}${location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${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(state, () => {\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 }, { deep: true });\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState({}, \"\", window.location.pathname + constructQuery(params));\n resume();\n }\n function onChanged() {\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n updateState(read());\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b, _c;\n const enabled = vueDemi.ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = vueDemi.ref((_b = options.autoSwitch) != null ? _b : true);\n const videoDeviceId = vueDemi.ref(options.videoDeviceId);\n const audioDeviceId = vueDemi.ref(options.audioDeviceId);\n const { navigator = defaultNavigator } = options;\n const isSupported = Boolean((_c = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _c.getUserMedia);\n const stream = vueDemi.shallowRef();\n function getDeviceOptions(device) {\n if (device.value === \"none\" || device.value === false)\n return false;\n if (device.value == null)\n return true;\n return {\n deviceId: device.value\n };\n }\n async function _start() {\n if (!isSupported || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(videoDeviceId),\n audio: getDeviceOptions(audioDeviceId)\n });\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 async function restart() {\n _stop();\n return await start();\n }\n vueDemi.watch(enabled, (v) => {\n if (v)\n _start();\n else\n _stop();\n }, { immediate: true });\n vueDemi.watch([videoDeviceId, audioDeviceId], () => {\n if (autoSwitch.value && stream.value)\n restart();\n }, { immediate: true });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n videoDeviceId,\n audioDeviceId,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n passive = false,\n eventName,\n deep = false\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));\n let event = eventName;\n if (!key) {\n if (vueDemi.isVue2) {\n const modelOptions = (_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$options) == null ? void 0 : _c.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 = eventName || event || `update:${key}`;\n if (passive) {\n const proxy = vueDemi.ref(props[key]);\n vueDemi.watch(() => props[key], (v) => proxy.value = v);\n vueDemi.watch(proxy, (v) => {\n if (v !== props[key] || deep)\n _emit(event, v);\n }, {\n deep\n });\n return proxy;\n } else {\n return vueDemi.computed({\n get() {\n return props[key];\n },\n set(value) {\n _emit(event, value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props)\n ret[key] = useVModel(props, key, emit, options);\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = typeof navigator !== \"undefined\" && \"vibrate\" in navigator;\n const patternRef = vueDemi.ref(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = shared.useIntervalFn(vibrate, interval, {\n immediate: false,\n immediateCallback: false\n });\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const containerRef = vueDemi.ref();\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 const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = (containerHeight) => {\n if (typeof itemHeight === \"number\")\n return Math.ceil(containerHeight / itemHeight);\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 height = itemHeight(i);\n sum += height;\n if (sum >= containerHeight) {\n capacity = i;\n break;\n }\n }\n return capacity - start;\n };\n const getOffset = (scrollTop) => {\n if (typeof itemHeight === \"number\")\n return Math.floor(scrollTop / itemHeight) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const height = itemHeight(i);\n sum += height;\n if (sum >= scrollTop) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n const calculateRange = () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(element.scrollTop);\n const viewCapacity = getViewCapacity(element.clientHeight);\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 vueDemi.watch([size.width, size.height, list], () => {\n calculateRange();\n });\n const totalHeight = vueDemi.computed(() => {\n if (typeof itemHeight === \"number\")\n return source.value.length * itemHeight;\n return source.value.reduce((sum, _, index) => sum + itemHeight(index), 0);\n });\n const getDistanceTop = (index) => {\n if (typeof itemHeight === \"number\") {\n const height2 = index * itemHeight;\n return height2;\n }\n const height = source.value.slice(0, index).reduce((sum, _, i) => sum + itemHeight(i), 0);\n return height;\n };\n const scrollTo = (index) => {\n if (containerRef.value) {\n containerRef.value.scrollTop = getDistanceTop(index);\n calculateRange();\n }\n };\n const offsetTop = vueDemi.computed(() => getDistanceTop(state.value.start));\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 const containerStyle = { overflowY: \"auto\" };\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}\n\nconst useWakeLock = (options = {}) => {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n let wakeLock;\n const isSupported = navigator && \"wakeLock\" in navigator;\n const isActive = vueDemi.ref(false);\n async function onVisibilityChange() {\n if (!isSupported || !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)\n return;\n wakeLock = await navigator.wakeLock.request(type);\n isActive.value = !wakeLock.released;\n }\n async function release() {\n if (!isSupported || !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\nconst useWebNotification = (defaultOptions = {}) => {\n const {\n window = defaultWindow\n } = defaultOptions;\n const isSupported = !!window && \"Notification\" in window;\n const notification = vueDemi.ref(null);\n const requestPermission = async () => {\n if (!isSupported)\n return;\n if (\"permission\" in Notification && Notification.permission !== \"denied\")\n await Notification.requestPermission();\n };\n const onClick = shared.createEventHook();\n const onShow = shared.createEventHook();\n const onError = shared.createEventHook();\n const onClose = shared.createEventHook();\n const show = async (overrides) => {\n if (!isSupported)\n return;\n await requestPermission();\n const options = Object.assign({}, defaultOptions, overrides);\n notification.value = new Notification(options.title || \"\", options);\n notification.value.onclick = (event) => onClick.trigger(event);\n notification.value.onshow = (event) => onShow.trigger(event);\n notification.value.onerror = (event) => onError.trigger(event);\n notification.value.onclose = (event) => onClose.trigger(event);\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n shared.tryOnMounted(async () => {\n if (isSupported)\n await requestPermission();\n });\n shared.tryOnScopeDispose(close);\n if (isSupported && 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 show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n};\n\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(\"CONNECTING\");\n const wsRef = vueDemi.ref();\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n const close = (code = 1e3, reason) => {\n if (!wsRef.value)\n return;\n explicitlyClosed = true;\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n };\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 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 const ws = new WebSocket(url, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n explicitlyClosed = false;\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 data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = \"ping\",\n interval = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = shared.useIntervalFn(() => send(message, false), interval, { immediate: false });\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (immediate)\n _init();\n if (autoClose) {\n useEventListener(window, \"beforeunload\", () => close());\n shared.tryOnScopeDispose(close);\n }\n const open = () => {\n close();\n retried = 0;\n _init();\n };\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(url, workerOptions, options = {}) {\n const {\n window = defaultWindow\n } = options;\n const data = vueDemi.ref(null);\n const worker = vueDemi.shallowRef();\n const post = function post2(val) {\n if (!worker.value)\n return;\n worker.value.postMessage(val);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n worker.value = new Worker(url, workerOptions);\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\nconst jobRunner = (userFunc) => (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\nconst depsParser = (deps) => {\n if (deps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n return `importScripts(${depsString})`;\n};\n\nconst 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\nconst 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 reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(() => workerTerminate(\"TIMEOUT_EXPIRED\"), timeout);\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(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\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({ window = defaultWindow } = {}) {\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({ window = defaultWindow } = {}) {\n if (!window) {\n return {\n x: vueDemi.ref(0),\n y: vueDemi.ref(0)\n };\n }\n const x = vueDemi.ref(window.pageXOffset);\n const y = vueDemi.ref(window.pageYOffset);\n useEventListener(\"scroll\", () => {\n x.value = window.pageXOffset;\n y.value = window.pageYOffset;\n }, {\n capture: false,\n passive: true\n });\n return { x, y };\n}\n\nfunction useWindowSize({ window = defaultWindow, initialWidth = Infinity, initialHeight = Infinity } = {}) {\n const width = vueDemi.ref(initialWidth);\n const height = vueDemi.ref(initialHeight);\n const update = () => {\n if (window) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n }\n };\n update();\n shared.tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n return { width, height };\n}\n\nexports.DefaultMagicKeysAliasMap = DefaultMagicKeysAliasMap;\nexports.StorageSerializers = StorageSerializers;\nexports.SwipeDirection = SwipeDirection;\nexports.TransitionPresets = TransitionPresets;\nexports.asyncComputed = computedAsync;\nexports.breakpointsAntDesign = breakpointsAntDesign;\nexports.breakpointsBootstrapV5 = breakpointsBootstrapV5;\nexports.breakpointsQuasar = breakpointsQuasar;\nexports.breakpointsSematic = breakpointsSematic;\nexports.breakpointsTailwind = breakpointsTailwind;\nexports.breakpointsVuetify = breakpointsVuetify;\nexports.computedAsync = computedAsync;\nexports.computedInject = computedInject;\nexports.createFetch = createFetch;\nexports.createUnrefFn = createUnrefFn;\nexports.defaultDocument = defaultDocument;\nexports.defaultLocation = defaultLocation;\nexports.defaultNavigator = defaultNavigator;\nexports.defaultWindow = defaultWindow;\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.useAsyncQueue = useAsyncQueue;\nexports.useAsyncState = useAsyncState;\nexports.useBase64 = useBase64;\nexports.useBattery = useBattery;\nexports.useBreakpoints = useBreakpoints;\nexports.useBroadcastChannel = useBroadcastChannel;\nexports.useBrowserLocation = useBrowserLocation;\nexports.useCached = useCached;\nexports.useClamp = useClamp;\nexports.useClipboard = useClipboard;\nexports.useColorMode = useColorMode;\nexports.useConfirmDialog = useConfirmDialog;\nexports.useCssVar = useCssVar;\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.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.useFileSystemAccess = useFileSystemAccess;\nexports.useFocus = useFocus;\nexports.useFocusWithin = useFocusWithin;\nexports.useFps = useFps;\nexports.useFullscreen = useFullscreen;\nexports.useGamepad = useGamepad;\nexports.useGeolocation = useGeolocation;\nexports.useIdle = useIdle;\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.useOffsetPagination = useOffsetPagination;\nexports.useOnline = useOnline;\nexports.usePageLeave = usePageLeave;\nexports.useParallax = useParallax;\nexports.usePermission = usePermission;\nexports.usePointer = usePointer;\nexports.usePointerSwipe = usePointerSwipe;\nexports.usePreferredColorScheme = usePreferredColorScheme;\nexports.usePreferredDark = usePreferredDark;\nexports.usePreferredLanguages = usePreferredLanguages;\nexports.useRafFn = useRafFn;\nexports.useRefHistory = useRefHistory;\nexports.useResizeObserver = useResizeObserver;\nexports.useScreenSafeArea = useScreenSafeArea;\nexports.useScriptTag = useScriptTag;\nexports.useScroll = useScroll;\nexports.useScrollLock = useScrollLock;\nexports.useSessionStorage = useSessionStorage;\nexports.useShare = useShare;\nexports.useSpeechRecognition = useSpeechRecognition;\nexports.useSpeechSynthesis = useSpeechSynthesis;\nexports.useStorage = useStorage;\nexports.useStorageAsync = useStorageAsync;\nexports.useStyleTag = useStyleTag;\nexports.useSwipe = useSwipe;\nexports.useTemplateRefsList = useTemplateRefsList;\nexports.useTextSelection = useTextSelection;\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' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () { return shared[k]; }\n });\n});\n","import { defineComponent as _defineComponent } from 'vue'\nimport { vShow as _vShow, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0c4540d8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"goods-image\" }\nconst _hoisted_2 = { class: \"image-slot\" }\nconst _hoisted_3 = { class: \"small\" }\nconst _hoisted_4 = { class: \"image-slot\" }\n\nimport { ref, watch, reactive } from 'vue'\r\nimport { useMouseInElement } from '@vueuse/core'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'enlarge-images',\n props: {\r\n images: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n MainGraph: {\r\n type: String,\r\n default: () => null,\r\n },\r\n},\n setup(__props) {\n\nconst props = __props\n\r\n\r\n\r\nconst currIndex = ref(0)\r\nconst target = ref(null)\r\nconst isShow = ref(false)\r\n// 遮罩层的坐标\r\nconst position = reactive({\r\n left: 0,\r\n top: 0,\r\n})\r\n\r\n// 控制背景图的位置\r\nconst bgPosition = reactive({\r\n backgroundPositionX: 0,\r\n backgroundPositionY: 0,\r\n})\r\n\r\nconst { elementX, elementY, isOutside } = useMouseInElement(target)\r\n// 侦听鼠标移动后信息\r\nwatch([elementX, elementY, isOutside], () => {\r\n // 每次有值发生变化,就读取新的数据即可\r\n isShow.value = !isOutside.value\r\n // 鼠标在图片的区域之外,不需要计算坐标\r\n if (isOutside.value) return\r\n // 水平方向\r\n if (elementX.value < 100) {\r\n // 左边界\r\n position.left = 0\r\n } else if (elementX.value > 300) {\r\n // 右边界\r\n position.left = 200\r\n } else {\r\n // 中间的状态\r\n position.left = elementX.value - 100\r\n }\r\n // 垂直方向\r\n if (elementY.value < 100) {\r\n // 上边界\r\n position.top = 0\r\n } else if (elementY.value > 300) {\r\n // 下边界\r\n position.top = 200\r\n } else {\r\n // 中间的状态\r\n position.top = elementY.value - 100\r\n }\r\n // console.log(elementX.value, elementY.value, isOutside.value)\r\n // 计算预览大图背景的位置\r\n bgPosition.backgroundPositionX = -position.left * 2 + 'px'\r\n bgPosition.backgroundPositionY = -position.top * 2 + 'px'\r\n // 计算左侧遮罩层位置\r\n position.left += 'px'\r\n position.top += 'px'\r\n})\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_icon_picture = _resolveComponent(\"icon-picture\")!\n const _component_el_icon = _resolveComponent(\"el-icon\")!\n const _component_el_image = _resolveComponent(\"el-image\")!\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"large\",\n style: _normalizeStyle([\r\n {\r\n backgroundImage: `url(${__props.MainGraph ? __props.MainGraph : __props.images[currIndex.value]})`,\r\n },\r\n bgPosition,\r\n ])\n }, null, 4), [\n [_vShow, isShow.value]\n ]),\n _createElementVNode(\"div\", {\n class: \"middle\",\n ref_key: \"target\",\n ref: target\n }, [\n _createVNode(_component_el_image, {\n fit: \"scale-down\",\n class: \"GoodsImage\",\n src: __props.MainGraph ? __props.MainGraph : __props.images[currIndex.value]\n }, {\n error: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_icon_picture)\n ]),\n _: 1\n })\n ])\n ]),\n _: 1\n }, 8, [\"src\"]),\n _withDirectives(_createElementVNode(\"div\", {\n class: \"layer\",\n style: _normalizeStyle([position])\n }, null, 4), [\n [_vShow, isShow.value]\n ])\n ], 512),\n _createVNode(_component_el_scrollbar, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.images, (img, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"small_box\",\n key: img\n }, [\n _createVNode(_component_el_image, {\n class: _normalizeClass([{ active: i === currIndex.value && !__props.MainGraph }, \"GoodsImage\"]),\n onMouseenter: ($event: any) => {;(currIndex.value = i), (__props.MainGraph = null)},\n fit: \"scale-down\",\n src: img\n }, {\n error: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_icon_picture)\n ]),\n _: 1\n })\n ])\n ]),\n _: 2\n }, 1032, [\"class\", \"onMouseenter\", \"src\"])\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./enlarge-images.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./enlarge-images.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./enlarge-images.vue?vue&type=style&index=0&id=0c4540d8&scoped=true&lang=scss\"\n\nimport exportComponent from \"F:\\\\NewLODAPC\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0c4540d8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, vShow as _vShow, withDirectives as _withDirectives, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, Transition as _Transition, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/imgs/weixin.png'\nimport _imports_1 from '../assets/imgs/facebook.png'\nimport _imports_2 from '../assets/imgs/zh-cn.png'\nimport _imports_3 from '../assets/imgs/km.png'\nimport _imports_4 from '../assets/imgs/ShoppingCart.png'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-32ac5178\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"container\"\n}\nconst _hoisted_2 = { class: \"subject\" }\nconst _hoisted_3 = { class: \"Exhibition\" }\nconst _hoisted_4 = { class: \"Favorite\" }\nconst _hoisted_5 = { class: \"Share\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 }, null, -1))\nconst _hoisted_7 = { class: \"weixinQr\" }\nconst _hoisted_8 = { class: \"details\" }\nconst _hoisted_9 = { class: \"GoodsName\" }\nconst _hoisted_10 = {\n key: 1,\n class: \"LadderPrices\"\n}\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sub\", null, \"$\", -1))\nconst _hoisted_12 = { key: 0 }\nconst _hoisted_13 = { key: 1 }\nconst _hoisted_14 = { class: \"MallPrice\" }\nconst _hoisted_15 = { key: 0 }\nconst _hoisted_16 = {\n key: 1,\n class: \"itemPrice\"\n}\nconst _hoisted_17 = {\n key: 2,\n class: \"Citie SkuMargin\"\n}\nconst _hoisted_18 = { class: \"SkuTitle\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = {\n key: 3,\n class: \"Freight SkuMargin\"\n}\nconst _hoisted_21 = { class: \"SkuTitle\" }\nconst _hoisted_22 = {\n key: 0,\n style: {\"width\":\"30px\",\"height\":\"30px\"},\n src: _imports_2\n}\nconst _hoisted_23 = {\n key: 1,\n style: {\"width\":\"30px\",\"height\":\"30px\"},\n src: _imports_3\n}\nconst _hoisted_24 = {\n key: 4,\n class: \"Freight SkuMargin\"\n}\nconst _hoisted_25 = { class: \"SkuTitle\" }\nconst _hoisted_26 = {\n key: 5,\n class: \"Freight SkuMargin\"\n}\nconst _hoisted_27 = { class: \"SkuTitle\" }\nconst _hoisted_28 = {\n key: 6,\n class: \"Freight SkuMargin\"\n}\nconst _hoisted_29 = { class: \"SkuTitle\" }\nconst _hoisted_30 = {\n key: 7,\n class: \"MallName SkuMargin\"\n}\nconst _hoisted_31 = { class: \"SkuTitle\" }\nconst _hoisted_32 = { class: \"ExchangeRate\" }\nconst _hoisted_33 = {\n key: 8,\n class: \"Sku SkuMargin\"\n}\nconst _hoisted_34 = { class: \"SkuTitle\" }\nconst _hoisted_35 = { class: \"AliValues\" }\nconst _hoisted_36 = [\"onClick\"]\nconst _hoisted_37 = { class: \"ValueName\" }\nconst _hoisted_38 = {\n key: 9,\n class: \"Sku SkuMargin\"\n}\nconst _hoisted_39 = { class: \"SkuTitle\" }\nconst _hoisted_40 = { class: \"SkuValues\" }\nconst _hoisted_41 = { class: \"ValueName\" }\nconst _hoisted_42 = { class: \"Price\" }\nconst _hoisted_43 = {\n key: 10,\n class: \"Sku SkuMargin\"\n}\nconst _hoisted_44 = { class: \"SkuTitle\" }\nconst _hoisted_45 = { class: \"SkuValues\" }\nconst _hoisted_46 = { class: \"ValueName\" }\nconst _hoisted_47 = { class: \"Price\" }\nconst _hoisted_48 = { class: \"SkuTitle\" }\nconst _hoisted_49 = { class: \"Values\" }\nconst _hoisted_50 = [\"onClick\"]\nconst _hoisted_51 = {\n key: 12,\n class: \"Sku SkuValueQty\"\n}\nconst _hoisted_52 = { class: \"SkuTitle\" }\nconst _hoisted_53 = {\n key: 0,\n class: \"StockQty\"\n}\nconst _hoisted_54 = {\n key: 1,\n class: \"StockQty\"\n}\nconst _hoisted_55 = {\n key: 13,\n class: \"Sku\"\n}\nconst _hoisted_56 = { class: \"SkuTitle\" }\nconst _hoisted_57 = { class: \"Sku\" }\nconst _hoisted_58 = { class: \"SkuTitle\" }\nconst _hoisted_59 = {\n key: 0,\n class: \"Total\"\n}\nconst _hoisted_60 = { class: \"TotalPrice\" }\nconst _hoisted_61 = {\n key: 1,\n class: \"Total\"\n}\nconst _hoisted_62 = { class: \"TotalPrice\" }\nconst _hoisted_63 = {\n key: 2,\n class: \"Total\"\n}\nconst _hoisted_64 = { class: \"TotalPrice\" }\nconst _hoisted_65 = { class: \"TotalNumber\" }\nconst _hoisted_66 = { class: \"skus\" }\nconst _hoisted_67 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"SKU\", -1))\nconst _hoisted_68 = { key: 0 }\nconst _hoisted_69 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sub\", null, \"x\", -1))\nconst _hoisted_70 = { class: \"ProductButton SkuMargin\" }\nconst _hoisted_71 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_4 }, null, -1))\nconst _hoisted_72 = {\n key: 1,\n class: \"AddCart noMore\"\n}\nconst _hoisted_73 = {\n key: 0,\n class: \"Shop\"\n}\nconst _hoisted_74 = { class: \"ShopC\" }\nconst _hoisted_75 = { class: \"ShopName\" }\nconst _hoisted_76 = { class: \"ShopButton\" }\nconst _hoisted_77 = { class: \"SellerInfo\" }\nconst _hoisted_78 = { class: \"bt\" }\nconst _hoisted_79 = { class: \"GoodsRecommendList\" }\nconst _hoisted_80 = { class: \"GoodsRecommendTitle\" }\nconst _hoisted_81 = [\"innerHTML\"]\nconst _hoisted_82 = {\n key: 0,\n class: \"container isLoading\"\n}\nconst _hoisted_83 = { class: \"ProducHead\" }\nconst _hoisted_84 = { class: \"ProductImg\" }\nconst _hoisted_85 = { class: \"ProductName\" }\nconst _hoisted_86 = { class: \"ProducBody\" }\nconst _hoisted_87 = { class: \"ProductName\" }\nconst _hoisted_88 = {\n key: 0,\n class: \"container isShelves\"\n}\nconst _hoisted_89 = /*#__PURE__*/_createTextVNode(\"     \")\nconst _hoisted_90 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_91 = {\n key: 0,\n class: \"container isShelves\"\n}\nconst _hoisted_92 = /*#__PURE__*/_createTextVNode(\"     \")\nconst _hoisted_93 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_94 = { key: 0 }\nconst _hoisted_95 = /*#__PURE__*/_createTextVNode(\"     \")\nconst _hoisted_96 = {\n key: 0,\n class: \"IsBlacklist\"\n}\nconst _hoisted_97 = {\n key: 0,\n class: \"container isShelves\"\n}\nconst _hoisted_98 = /*#__PURE__*/_createTextVNode(\"     \")\nconst _hoisted_99 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nimport { ref, onMounted, unref, toRefs, watch } from 'vue'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { useI18n } from 'vue-i18n'\r\nimport { ElMessageBox, ElMessage, ElLoading } from 'element-plus'\r\nimport { ClickOutside as vClickOutside } from 'element-plus'\r\nimport * as Api from '@/utils/api'\r\nimport { toWechat } from '@/utils/share'\r\nimport CommodityCard from '@/components/CommodityCard.vue'\r\nimport EnlargeImages from '@/components/enlarge-images.vue'\r\nimport MallLabel from '@/components/mall_label.vue'\r\nimport QrcodeVue from 'qrcode.vue'\r\nimport { ShareFacebook } from '@/utils/fb'\r\n\r\nimport { useUsersStore } from '@/pinia'\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'product-details',\n setup(__props) {\n\r\nconst store = useUsersStore()\r\nconst { Cities, Token } = toRefs(store)\r\n\r\nconst { t } = useI18n()\r\nconst Router = useRouter()\r\n\r\nconst hrefUrl = ref(location.href)\r\n\r\nconst route = useRoute()\r\nconst item = ref(null)\r\nconst MainGraph = ref(null)\r\nconst GoodsRecommendList = ref([])\r\nconst currentIndex = ref(0)\r\nconst isLadderPrices = ref(null)\r\nconst TotalPrice = ref(0)\r\nconst TotalNumber = ref(0)\r\nconst ShowCities = ref(false)\r\nconst Citie = ref(null)\r\nconst SkuValueQty = ref(1)\r\nconst CombinationSku = ref([])\r\nconst CurrentSku = ref(null)\r\nconst NoGoods = ref(false)\r\nconst Remark = ref(null)\r\nconst IsBlacklist = ref(false)\r\n\r\nconst PriceRange = ref(null)\r\n\r\nconst buttonRef = ref()\r\nconst popoverRef = ref()\r\nconst onClickOutside = () => {\r\n unref(popoverRef).popperRef?.delayHide?.()\r\n}\r\n\r\nconst setCurrentIndex = (index) => {\r\n currentIndex.value = index\r\n PriceRange.value = null\r\n // 价格区间\r\n let arr = []\r\n if (item.value.Skus.length > 1) {\r\n for (let items of item.value.AliValues[index].Values) {\r\n arr.push(parseFloat(items.Price))\r\n }\r\n } else {\r\n for (let items of item.value.SkuMap) {\r\n arr.push(parseFloat(items.Price))\r\n }\r\n }\r\n for (var i = 0; i < arr.length - 1; i++) {\r\n if (arr[i] > arr[i + 1]) {\r\n var num = arr[i]\r\n arr[i] = arr[i + 1]\r\n arr[i + 1] = num\r\n }\r\n }\r\n if (arr.length > 1 && arr[0] !== arr[arr.length - 1]) {\r\n PriceRange.value = arr[0] + '~' + arr[arr.length - 1]\r\n }\r\n}\r\n\r\nconst SameParagraph = () => {\r\n Router.push({\r\n name: 'searchList',\r\n params: { img: item.value.Imgs[0] },\r\n })\r\n}\r\n\r\nconst ShowNoMore = () => {\r\n if (item.value.MallId != 15 && CurrentSku.value && !Beyond.value) {\r\n if (item.value.MallId == 111036) {\r\n return CurrentSku.value.StockQty < 1 ? false : true\r\n } else {\r\n return true\r\n }\r\n } else if (item.value.MallId == 15 || !item.value.SkuMap.length) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nconst WechatShare = () => {\r\n toWechat(hrefUrl.value, document.title)\r\n}\r\n\r\nconst FavoriteLoding = ref(false)\r\nconst FavoriteId = ref(null)\r\nconst CustomerFavorite = () => {\r\n let body = {}\r\n if (FavoriteId.value) {\r\n body = {\r\n Id: FavoriteId.value,\r\n }\r\n } else {\r\n body = {\r\n OutProductId: item.value.OutID,\r\n ProductUrl: item.value.OutID,\r\n ProductImgUrl: item.value.MasterImg,\r\n ProductName: item.value.GoodsName,\r\n }\r\n }\r\n FavoriteLoding.value = true\r\n Api.Post('user/api/CustomerFavorites/', body).then(\r\n (res) => {\r\n FavoriteLoding.value = false\r\n FavoriteId.value = res.Id\r\n },\r\n () => {\r\n FavoriteLoding.value = false\r\n }\r\n )\r\n}\r\n\r\nconst CheckFavoriteFavorite = (pId) => {\r\n FavoriteLoding.value = true\r\n Api.Get('sellers/api/CheckFavorite/', {\r\n pId,\r\n }).then((res) => {\r\n FavoriteLoding.value = false\r\n FavoriteId.value = res.FavoriteId\r\n })\r\n}\r\n\r\nconst GetCities = () => {\r\n store.setState('basic/api/Cities/', { province_id: 1311160291 }, 'Cities')\r\n}\r\n\r\nconst Beyond = ref(false)\r\nconst TemplatesDetails = ref([])\r\nconst CityFreight = ref(null)\r\nconst ChangeCityFreight = (City) => {\r\n let CityID = City.CityId\r\n Citie.value = City\r\n ShowCities.value = false\r\n CityFreight.value = null\r\n Beyond.value = false\r\n TemplatesDetails.value = []\r\n let Templates = item.value.FreightTemplatesDetails\r\n if (Templates.NoDeliveryCityId) {\r\n let Cid = Templates.NoDeliveryCityId.findIndex((res) => res == CityID)\r\n Beyond.value = Cid == -1 ? false : true\r\n }\r\n\r\n Templates.FreightRules?.forEach((val) => {\r\n if (!val.CityId) {\r\n TemplatesDetails.value.push(val)\r\n }\r\n if (val.CityId == CityID) {\r\n TemplatesDetails.value.push(val)\r\n }\r\n })\r\n\r\n let isTemplates = Templates.FreightTemplates.findIndex((res) => {\r\n return res.CityId == CityID\r\n })\r\n if (isTemplates != -1) {\r\n CityFreight.value = Templates.FreightTemplates[isTemplates].Freight\r\n }\r\n if (CityFreight.value == null) {\r\n CityFreight.value = Templates.FreightTemplates[0].Freight\r\n }\r\n}\r\n\r\nwatch(\r\n [() => Cities.value, () => item.value],\r\n () => {\r\n if (item.value?.FreightTemplatesDetails && Cities.value) {\r\n ChangeCityFreight(Cities.value.Cities[0])\r\n }\r\n },\r\n {\r\n deep: true, // 深度监听\r\n immediate: true,\r\n }\r\n)\r\n\r\nconst SkuValues1688 = () => {\r\n let SkuValues = []\r\n if (item.value.SkuMap.length) {\r\n if (item.value.Skus.length == 1) {\r\n item.value.SkuMap.forEach((Value) => {\r\n if (Value.Qty) {\r\n SkuValues.push({\r\n Price: Value.Price,\r\n Qty: Value.Qty,\r\n RmbPrice: Value.RmbPrice,\r\n SkuImgUrl: Value.ImgUrl || item.value.MasterImg,\r\n SkuTitle: Value.Value,\r\n SkuValue: Value.OutSkuId,\r\n SkuValueId: null,\r\n })\r\n }\r\n })\r\n } else {\r\n for (const i in item.value.AliValues) {\r\n item.value.AliValues[i]\r\n for (const skuIndex in item.value.AliValues[i].Values) {\r\n let Value = item.value.AliValues[i].Values[skuIndex]\r\n let SkuImgUrl =\r\n Value.ImgUrl ||\r\n item.value.AliValues[i].ImgUrl ||\r\n item.value.MasterImg\r\n if (Value.Qty) {\r\n SkuValues.push({\r\n Price: Value.Price,\r\n Qty: Value.Qty,\r\n RmbPrice: Value.RmbPrice,\r\n SkuImgUrl,\r\n SkuTitle:\r\n item.value.AliValues[i].Value +\r\n ';' +\r\n Value.Name +\r\n ' ' +\r\n Value.Value,\r\n SkuValue: Value.ValueId,\r\n SkuValueId: null,\r\n })\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n SkuValues.push({\r\n Price: item.value.Price,\r\n Qty: SkuValueQty.value,\r\n RmbPrice: item.value.RmbPrice,\r\n SkuImgUrl: item.value.MasterImg,\r\n SkuTitle: 'There is no SKU',\r\n SkuValue: '0',\r\n SkuValueId: null,\r\n })\r\n }\r\n\r\n return SkuValues\r\n}\r\n\r\n//可兼容多维(大于2)SKU组合\r\nconst MallSkus = (index, Value) => {\r\n CombinationSku.value[index] = Value.Value\r\n let Skus = ''\r\n CombinationSku.value.forEach((ele) => {\r\n Skus += ele + ';'\r\n })\r\n\r\n if (item.value.Skus.length == CombinationSku.value.length) {\r\n CurrentSku.value = item.value.SkuMap.find((item) => {\r\n return Skus.includes(item.Value)\r\n })\r\n }\r\n if (Value.ImgUrl) {\r\n MainGraph.value = Value.ImgUrl\r\n } else {\r\n MainGraph.value = CurrentSku.value?.ImgUrl\r\n }\r\n if (CurrentSku.value?.RedirectUrl) {\r\n route.query.Url = CurrentSku.value?.RedirectUrl\r\n GetProduct()\r\n }\r\n}\r\n\r\nconst SkuValues = () => {\r\n if (item.value.SkuMap.length) {\r\n return [\r\n {\r\n Price: CurrentSku.value.Price,\r\n Qty: SkuValueQty.value,\r\n RmbPrice: item.value.RmbPrice,\r\n SkuImgUrl: item.value.MasterImg,\r\n SkuTitle: CurrentSku.value.Title,\r\n SkuValue: CurrentSku.value.OutSkuId,\r\n SkuValueId: null,\r\n },\r\n ]\r\n } else {\r\n return [\r\n {\r\n Price: item.value.Price,\r\n Qty: SkuValueQty.value,\r\n RmbPrice: item.value.RmbPrice,\r\n SkuImgUrl: item.value.MasterImg,\r\n SkuTitle: 'There is no SKU',\r\n SkuValue: '0',\r\n SkuValueId: null,\r\n },\r\n ]\r\n }\r\n}\r\n\r\nconst AddCart = () => {\r\n if (item.value.MallId != 15) {\r\n if (item.value.SkuMap.length) {\r\n if (!CurrentSku.value) {\r\n ElMessage.error(t('未选择商品'))\r\n return false\r\n }\r\n if (\r\n item.value.MallId == 111036 &&\r\n CurrentSku.value.StockQty < SkuValueQty.value\r\n ) {\r\n ElMessage.error(t('大于库存'))\r\n return false\r\n }\r\n } else {\r\n if (item.value.StockQty && item.value.StockQty < SkuValueQty.value) {\r\n ElMessage.error(t('大于库存'))\r\n return false\r\n }\r\n }\r\n }\r\n if (item.value.MinQuantity) {\r\n if (item.value.MallId == 15 && item.value.SkuMap.length) {\r\n if (TotalNumber.value < item.value.MinQuantity) {\r\n ElMessage.error(t('小于起批量'))\r\n return false\r\n }\r\n } else if (SkuValueQty.value < item.value.MinQuantity) {\r\n ElMessage.error(t('小于起批量'))\r\n return false\r\n }\r\n }\r\n let data = {\r\n MallId: item.value.MallId,\r\n OutId: item.value.OutID,\r\n ProductName: item.value.GoodsName,\r\n ProductUrl: item.value.Url,\r\n PurchasingSiteId: 1,\r\n ShopName: item.value.ShopName,\r\n SkuValues: item.value.MallId == 15 ? SkuValues1688() : SkuValues(),\r\n CustomerMemo: null,\r\n ProductId: null,\r\n Remark: Remark.value,\r\n RemarkImg: null,\r\n SellerPId: item.value.MallId == 111036 ? item.value.OutID : null,\r\n CategoryId:\r\n item.value.MallId == 111036 ? null : item.value.CategoryId.toString(),\r\n }\r\n const loading = ElLoading.service({\r\n lock: true,\r\n text: t('加入购物车中'),\r\n background: 'rgba(0, 0, 0, 0.7)',\r\n })\r\n Api.Post('cart/api/NewShoppingCart/', data)\r\n .then((res) => {\r\n loading.close()\r\n Api.Get('cart/api/NewShoppingCart/', { PageIndex: 1, PageSize: 1 })\r\n if (!res.IsError) {\r\n ElMessageBox.confirm(t('成功添加'), t('信息'), {\r\n confirmButtonText: t('继续'),\r\n cancelButtonText: t('购物车详情'),\r\n type: 'success',\r\n })\r\n .then(() => {})\r\n .catch(() => {\r\n Router.push({\r\n path: '/shoppingCart',\r\n })\r\n })\r\n }\r\n })\r\n .catch(() => {\r\n loading.close()\r\n })\r\n}\r\n\r\nconst SkuTotal = (item) => {\r\n let Total = 0\r\n item.Values.forEach((e) => {\r\n Total += e.Qty || 0\r\n })\r\n return Total\r\n}\r\n\r\nconst Total = () => {\r\n //有阶梯价条件下\r\n TotalNumber.value = 0\r\n TotalPrice.value = 0\r\n\r\n if (item.value.LadderPrices.length) {\r\n for (const i in item.value.AliValues) {\r\n let SkuTotal = item.value.AliValues[i].SkuTotal\r\n if (SkuTotal) {\r\n TotalNumber.value += SkuTotal\r\n }\r\n }\r\n let LadderPrices = item.value.LadderPrices.find((Ladder) => {\r\n return Ladder.EndQuantity != null\r\n ? TotalNumber.value >= Ladder.StartQuantity &&\r\n TotalNumber.value <= Ladder.EndQuantity\r\n : TotalNumber.value >= Ladder.StartQuantity\r\n })\r\n\r\n isLadderPrices.value = LadderPrices\r\n ? LadderPrices.Price\r\n : item.value.LadderPrices[0].Price\r\n let Price = isLadderPrices.value ? isLadderPrices.value : item.value.Price\r\n TotalPrice.value = TotalNumber.value * Price\r\n } else {\r\n item.value.SkuMap.map((item) => {\r\n if (item.Qty) {\r\n TotalNumber.value += item.Qty\r\n TotalPrice.value += item.Qty * item.Price\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst isBatchNumber = (val, obj) => {\r\n if (typeof obj == 'object') {\r\n if (item.value.BatchNumber) {\r\n let Surplus = val % item.value.BatchNumber\r\n let Quotient = parseInt(val / item.value.BatchNumber)\r\n if (Surplus) {\r\n obj.Qty = Quotient * item.value.BatchNumber\r\n }\r\n SkuQtyChange(val, obj)\r\n }\r\n }\r\n}\r\n\r\nconst SkuQtyChange = (val, obj) => {\r\n if (typeof obj == 'object') {\r\n let SkuIndex = item.value.SkuMap.findIndex((item) => {\r\n return item.OutSkuId == obj.ValueId\r\n })\r\n item.value.SkuMap[SkuIndex].Qty = obj.Qty\r\n }\r\n\r\n if (item.value.Skus.length > 1) {\r\n let val = item.value.AliValues[currentIndex.value]\r\n item.value.AliValues[currentIndex.value].SkuTotal = SkuTotal(val)\r\n Total()\r\n } else {\r\n TotalPrice.value = 0\r\n TotalNumber.value = 0\r\n item.value.SkuMap.forEach((ele) => {\r\n TotalPrice.value += ele.Qty * ele.Price\r\n TotalNumber.value += ele.Qty\r\n })\r\n }\r\n}\r\n\r\nconst GetGoodsRecommend = (item) => {\r\n document.title =\r\n (item.GoodsName || t('很抱歉,没有淘到该代购商品!')) + '- LODA'\r\n Api.Get('grapgoods/api/GoodsRecommend/', {\r\n TypeId: item.MallId == 1 ? 1 : 2,\r\n frontCartId: item.CategoryId,\r\n }).then((res) => {\r\n GoodsRecommendList.value = res.Goods\r\n })\r\n}\r\n\r\nconst GetProduct = (Update) => {\r\n NoGoods.value = false\r\n item.value = null\r\n if (route.query.mallId == 111036) {\r\n CheckFavoriteFavorite(route.query.outId)\r\n Api.Get('sellers/api/SellerProductSku/', {\r\n pid: route.query.outId,\r\n }).then((res) => {\r\n item.value = res.GoodsItem\r\n GetCities()\r\n\r\n NoGoods.value = item.value?.GoodsName ? false : true\r\n\r\n if (item.value.Skus.length) {\r\n for (let i in item.value.Skus) {\r\n MallSkus(i, item.value.Skus[i].Values[0])\r\n }\r\n }\r\n GetGoodsRecommend(item.value)\r\n })\r\n } else {\r\n Api.Post('grapgoods/api/GoodsSearch/', {\r\n IsUpdate: Update,\r\n Url: route.query.Url,\r\n OutId: route.query.outId,\r\n MallId: route.query.mallId,\r\n }).then((res) => {\r\n item.value = res.GoodsItem\r\n IsBlacklist.value = res.GoodsItem?.IsBlacklist\r\n NoGoods.value = item.value?.GoodsName ? false : true\r\n\r\n if (item.value.AliValues && item.value.AliValues.length) {\r\n setCurrentIndex(0)\r\n }\r\n\r\n if (!item.value.Skus.length) {\r\n CurrentSku.value = {\r\n ImgUrl: item.value.MasterImg,\r\n Price: item.value.Price,\r\n Qty: 1,\r\n OutSkuId: '0',\r\n }\r\n } else {\r\n switch (Number(item.value.MallId)) {\r\n case 3:\r\n case 5:\r\n let skus = item.value.Skus\r\n let OutID =\r\n item.value.MallId == 5\r\n ? item.value.OutID.split('-')[1]\r\n : item.value.OutID\r\n let IdIndex = item.value.SkuMap.findIndex((i) => {\r\n return (\r\n OutID ==\r\n (item.value.MallId == 5 ? i.OutSkuId.split('-')[0] : i.OutSkuId)\r\n )\r\n })\r\n if (IdIndex != -1) {\r\n let JDsku = item.value.SkuMap[IdIndex].Value.split(';')\r\n for (let i in JDsku) {\r\n let SkusIndex = skus[i].Values.findIndex((Skusi) => {\r\n return JDsku[i] == Skusi.Value\r\n })\r\n MallSkus(i, skus[i].Values[SkusIndex])\r\n }\r\n } else {\r\n for (let s in skus) {\r\n let noSkuMap = skus[s].Values.findIndex((i) => {\r\n return OutID == i.ValueId\r\n })\r\n if (noSkuMap != -1) {\r\n MallSkus(s, skus[s].Values[noSkuMap])\r\n }\r\n }\r\n }\r\n break\r\n case 15:\r\n Total()\r\n break\r\n default:\r\n for (let i in item.value.Skus) {\r\n MallSkus(i, item.value.Skus[i].Values[0])\r\n }\r\n break\r\n }\r\n }\r\n GetGoodsRecommend(item.value)\r\n })\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n GetProduct(false)\r\n})\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_el_popover = _resolveComponent(\"el-popover\")!\n const _component_Star = _resolveComponent(\"Star\")!\n const _component_el_icon = _resolveComponent(\"el-icon\")!\n const _component_StarFilled = _resolveComponent(\"StarFilled\")!\n const _component_el_link = _resolveComponent(\"el-link\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_arrow_down_bold = _resolveComponent(\"arrow-down-bold\")!\n const _component_suffix_img = _resolveComponent(\"suffix-img\")!\n const _component_el_input_number = _resolveComponent(\"el-input-number\")!\n const _component_el_input = _resolveComponent(\"el-input\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_el_skeleton_item = _resolveComponent(\"el-skeleton-item\")!\n const _component_el_skeleton = _resolveComponent(\"el-skeleton\")!\n const _component_CircleCloseFilled = _resolveComponent(\"CircleCloseFilled\")!\n const _component_SemiSelect = _resolveComponent(\"SemiSelect\")!\n const _component_WarningFilled = _resolveComponent(\"WarningFilled\")!\n const _directive_loading = _resolveDirective(\"loading\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n (\r\n item.value &&\r\n !NoGoods.value &&\r\n !item.value?.IsShelves &&\r\n !item.value?.NotSupportLink &&\r\n !IsBlacklist.value\r\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(EnlargeImages, {\n images: item.value.Imgs.length > 0 ? item.value.Imgs : [item.value.MasterImg],\n MainGraph: MainGraph.value\n }, null, 8, [\"images\", \"MainGraph\"]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('分享')), 1),\n _createVNode(_component_el_popover, {\n placement: \"top\",\n width: 25,\n trigger: \"click\"\n }, {\n reference: _withCtx(() => [\n _hoisted_6\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(QrcodeVue, {\n value: hrefUrl.value,\n \"size:300\": \"\",\n level: \"H\"\n }, null, 8, [\"value\"])\n ])\n ]),\n _: 1\n }),\n _createElementVNode(\"img\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_unref(ShareFacebook) && _unref(ShareFacebook)(...args))),\n src: _imports_1\n })\n ]),\n _withDirectives((_openBlock(), _createElementBlock(\"div\", { onClick: CustomerFavorite }, [\n _withDirectives(_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_Star)\n ]),\n _: 1\n }, 512), [\n [_vShow, !FavoriteId.value]\n ]),\n _withDirectives(_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_StarFilled)\n ]),\n _: 1\n }, 512), [\n [_vShow, FavoriteId.value]\n ]),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('收藏商品')), 1)\n ])), [\n [_directive_loading, FavoriteLoding.value]\n ])\n ], 512), [\n [_vShow, _unref(route).query.mallId == 111036]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n _withDirectives(_createVNode(MallLabel, null, null, 512), [\n [_vShow, item.value.MallId == 111036]\n ]),\n _createVNode(_component_el_link, {\n href: item.value.Url,\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.value.GoodsName), 1)\n ]),\n _: 1\n }, 8, [\"href\"])\n ]),\n (item.value.MallId != 111036)\n ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n class: \"SameParagraph\",\n onClick: SameParagraph,\n type: \"danger\",\n text: \"\",\n bg: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('找同款')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (item.value.LadderPrices && item.value.LadderPrices.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('价格')), 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('起批量')), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.LadderPrices, (LadderPrice) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: LadderPrice }, [\n _createElementVNode(\"span\", null, [\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(LadderPrice.Price), 1)\n ]),\n (LadderPrice.EndQuantity)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_12, _toDisplayString(LadderPrice.StartQuantity + '~' + LadderPrice.EndQuantity), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" ≥ \" + _toDisplayString(LadderPrice.StartQuantity), 1))\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_14, [\n (!item.value.DiscountPrice)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, \" $\" + _toDisplayString(PriceRange.value || CurrentSku.value?.Price || item.value.Price), 1))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"span\", null, \"$\" + _toDisplayString(CurrentSku.value.Price || item.value.Price), 1),\n _createElementVNode(\"span\", null, \" $\" + _toDisplayString(CurrentSku.value.DiscountPrice || item.value.DiscountPrice), 1),\n _createElementVNode(\"span\", null, _toDisplayString(CurrentSku.value.DiscountRate || item.value.DiscountRate) + \"  OFF \", 1)\n ])),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('LODA承诺您的交易安全:我们只会在买家收到货后拨款给卖家!')), 1)\n ]),\n (item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('配送至')), 1),\n (_unref(Cities))\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"CityName\",\n onMouseenter: _cache[1] || (_cache[1] = ($event: any) => (ShowCities.value = true))\n }, [\n _createTextVNode(_toDisplayString(Citie.value ? Citie.value.CityName : _unref(Cities).Cities[0].CityName) + \" \", 1),\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_arrow_down_bold)\n ]),\n _: 1\n })\n ], 32))\n : _createCommentVNode(\"\", true),\n (CityFreight.value)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(TemplatesDetails.value, (TemplatesDetail, index) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n key: index,\n class: \"TemplatesDetail\"\n }, _toDisplayString(TemplatesDetail.ConditionValue), 1))\n }), 128))\n : _createCommentVNode(\"\", true),\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"Cities\",\n onMouseleave: _cache[2] || (_cache[2] = ($event: any) => (ShowCities.value = false))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(Cities)?.Cities, (C) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n key: C.CityId,\n onClick: ($event: any) => (ChangeCityFreight(C))\n }, _toDisplayString(C.CityName), 9, _hoisted_19))\n }), 128))\n ], 544), [\n [_vShow, ShowCities.value]\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"span\", _hoisted_21, [\n (item.value.Country == 1)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_22))\n : (_openBlock(), _createElementBlock(\"img\", _hoisted_23))\n ]),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.DeliveryCountry), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('付款方式')), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.Payments, (Payment) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n key: Payment.PaymentTypeId\n }, _toDisplayString(Payment.PaymentValue) + \"    \", 1))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MinQuantity && item.value.MallId != 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"span\", _hoisted_27, _toDisplayString(_ctx.$t('起批量')), 1),\n _createElementVNode(\"span\", null, \"≥\" + _toDisplayString(item.value.MinQuantity), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [\n _createElementVNode(\"span\", _hoisted_29, _toDisplayString(_ctx.$t('运费')), 1),\n _createElementVNode(\"span\", null, _toDisplayString(Beyond.value\r\n ? _ctx.$t('该地址不支持配送')\r\n : CityFreight.value\r\n ? '$ ' + CityFreight.value\r\n : _ctx.$t('包邮')), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId != 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_30, [\n _createElementVNode(\"span\", _hoisted_31, _toDisplayString(_ctx.$t('商品来自')), 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.MallName), 1),\n _createElementVNode(\"span\", null, \"  \" + _toDisplayString(item.value.RmbPrice) + \"RMB\", 1),\n _createElementVNode(\"span\", _hoisted_32, [\n _createTextVNode(_toDisplayString(_ctx.$t('汇率')) + \" \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.ExchangeRate), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (item.value && item.value.MallId == 15 && item.value.Skus.length > 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [\n _createElementVNode(\"div\", _hoisted_34, _toDisplayString(item.value.AliValues[0].Name), 1),\n _createElementVNode(\"div\", _hoisted_35, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.AliValues, (AliValue, index) => {\n return (_openBlock(), _createElementBlock(\"span\", {\n key: index,\n onClick: ($event: any) => {;(MainGraph.value = AliValue.ImgUrl), setCurrentIndex(index)},\n class: _normalizeClass(['AliValue', { current: currentIndex.value === index }])\n }, [\n (AliValue.ImgUrl)\n ? (_openBlock(), _createBlock(_component_suffix_img, {\n key: 0,\n class: \"GoodsImage SkuImage\",\n url: AliValue.ImgUrl\n }, null, 8, [\"url\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_37, _toDisplayString(AliValue.Value), 1),\n _withDirectives(_createElementVNode(\"span\", { class: \"SkuTotal\" }, _toDisplayString(SkuTotal(item.value.AliValues[index])), 513), [\n [_vShow, SkuTotal(item.value.AliValues[index])]\n ])\n ], 10, _hoisted_36))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (\r\n item.value.AliValues &&\r\n item.value.AliValues.length > 0 &&\r\n item.value.AliValues[currentIndex.value].Values.length > 0\r\n )\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"div\", _hoisted_39, _toDisplayString(item.value.AliValues[currentIndex.value].Values[0].Name), 1),\n _createElementVNode(\"div\", _hoisted_40, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.AliValues[currentIndex.value].Values, (SkuValue, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"SkuValue\",\n key: index\n }, [\n _createElementVNode(\"div\", _hoisted_41, _toDisplayString(SkuValue.Value), 1),\n _createElementVNode(\"div\", _hoisted_42, \" $\" + _toDisplayString(isLadderPrices.value ? isLadderPrices.value : SkuValue.Price), 1),\n _withDirectives(_createElementVNode(\"div\", null, _toDisplayString(SkuValue.Qty ? SkuValue.Qty : (SkuValue.Qty = 0)), 513), [\n [_vShow, false]\n ]),\n _createVNode(_component_el_input_number, {\n modelValue: SkuValue.Qty,\n \"onUpdate:modelValue\": ($event: any) => ((SkuValue.Qty) = $event),\n min: 0,\n step: item.value.BatchNumber || 1,\n onChange: ($event: any) => (SkuQtyChange(SkuValue.Qty, SkuValue)),\n onBlur: ($event: any) => (isBatchNumber(SkuValue.Qty, SkuValue)),\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"step\", \"onChange\", \"onBlur\"])\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (item.value && item.value.MallId == 15 && item.value.Skus.length == 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [\n _createElementVNode(\"div\", _hoisted_44, _toDisplayString(item.value.Skus[0].Name), 1),\n _createElementVNode(\"div\", _hoisted_45, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.SkuMap, (SkuValue, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"SkuValue\",\n key: index\n }, [\n (SkuValue.ImgUrl)\n ? (_openBlock(), _createBlock(_component_suffix_img, {\n key: 0,\n class: \"SkuMapImgUrl\",\n url: SkuValue.ImgUrl\n }, null, 8, [\"url\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_46, _toDisplayString(SkuValue.Value), 1),\n _createElementVNode(\"div\", _hoisted_47, \"$\" + _toDisplayString(SkuValue.Price), 1),\n _withDirectives(_createElementVNode(\"div\", null, _toDisplayString(SkuValue.Qty ? SkuValue.Qty : (SkuValue.Qty = 0)), 513), [\n [_vShow, false]\n ]),\n _createVNode(_component_el_input_number, {\n modelValue: SkuValue.Qty,\n \"onUpdate:modelValue\": ($event: any) => ((SkuValue.Qty) = $event),\n min: 0,\n onChange: SkuQtyChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId != 15)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 11 }, _renderList(item.value.Skus, (Sku, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"Skus\",\n key: Sku.Index\n }, [\n _createElementVNode(\"div\", _hoisted_48, _toDisplayString(Sku.Name), 1),\n _createElementVNode(\"div\", _hoisted_49, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Sku.Values, (Value) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: Value,\n class: _normalizeClass([\r\n 'Value',\r\n { checkVal: CombinationSku.value[index] === Value.Value },\r\n ]),\n onClick: ($event: any) => (MallSkus(index, Value))\n }, [\n (Value.ImgUrl)\n ? (_openBlock(), _createBlock(_component_suffix_img, {\n key: 0,\n class: \"ValueImage\",\n url: Value.ImgUrl\n }, null, 8, [\"url\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", null, _toDisplayString(Value.Name), 1)\n ], 10, _hoisted_50))\n }), 128))\n ])\n ]))\n }), 128))\n : _createCommentVNode(\"\", true),\n (CurrentSku.value || !item.value.SkuMap.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_51, [\n _createElementVNode(\"div\", _hoisted_52, _toDisplayString(_ctx.$t('数量')), 1),\n _createVNode(_component_el_input_number, {\n modelValue: SkuValueQty.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((SkuValueQty).value = $event)),\n min: 1\n }, null, 8, [\"modelValue\"]),\n (CurrentSku.value && item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_53, _toDisplayString(_ctx.$t('库存')) + \": \" + _toDisplayString(CurrentSku.value.StockQty), 1))\n : _createCommentVNode(\"\", true),\n (!item.value.SkuMap.length && item.value.StockQty)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_54, _toDisplayString(_ctx.$t('库存')) + \": \" + _toDisplayString(item.value.StockQty), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId != 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_55, [\n _createElementVNode(\"div\", _hoisted_56, _toDisplayString(_ctx.$t('给客服留言')) + \":\", 1),\n _createVNode(_component_el_input, {\n modelValue: Remark.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((Remark).value = $event)),\n rows: 5,\n type: \"textarea\",\n maxlength: \"100\",\n \"show-word-limit\": \"\",\n placeholder: _ctx.$t('请输入')\n }, null, 8, [\"modelValue\", \"placeholder\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_57, [\n _createElementVNode(\"div\", _hoisted_58, _toDisplayString(_ctx.$t('总额')) + \":\", 1),\n (!item.value.SkuMap.length && !CurrentSku.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_59, [\n _createElementVNode(\"span\", _hoisted_60, \" $\" + _toDisplayString((SkuValueQty.value * item.value.Price).toFixed(2)), 1)\n ]))\n : (CurrentSku.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_61, [\n _createElementVNode(\"span\", _hoisted_62, \" $\" + _toDisplayString((\r\n SkuValueQty.value *\r\n (CurrentSku.value?.DiscountPrice || CurrentSku.value?.Price)\r\n ).toFixed(2)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (item.value.MallId == 15 && item.value.SkuMap?.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_63, [\n _createElementVNode(\"span\", _hoisted_64, \"$\" + _toDisplayString(TotalPrice.value.toFixed(2)), 1),\n _createElementVNode(\"span\", _hoisted_65, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('数量')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(TotalNumber.value), 1),\n _withDirectives((_openBlock(), _createElementBlock(\"span\", {\n ref_key: \"buttonRef\",\n ref: buttonRef\n }, [\n _createTextVNode(_toDisplayString(_ctx.$t('采购清单')), 1)\n ])), [\n [_vShow, TotalNumber.value],\n [_unref(vClickOutside), onClickOutside]\n ]),\n _createVNode(_component_el_popover, {\n placement: \"top\",\n ref_key: \"popoverRef\",\n ref: popoverRef,\n \"virtual-ref\": buttonRef.value,\n trigger: \"hover\",\n width: \"300px\",\n title: _ctx.$t('采购清单'),\n \"virtual-triggering\": \"\",\n \"popper-class\": \"PurchaseList\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_66, [\n _createElementVNode(\"div\", null, [\n _hoisted_67,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('数量')), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.value.SkuMap, (skuQty, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, { key: index }, [\n (skuQty.Qty)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_68, [\n _createElementVNode(\"span\", null, _toDisplayString(skuQty.Value), 1),\n _createElementVNode(\"span\", null, [\n _hoisted_69,\n _createTextVNode(\" \" + _toDisplayString(skuQty.Qty), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ])\n ]),\n _: 1\n }, 8, [\"virtual-ref\", \"title\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_70, [\n (ShowNoMore())\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"AddCart\",\n onClick: AddCart\n }, [\n _hoisted_71,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('加入购物车')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_72, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('已售完')), 1)\n ])),\n _withDirectives(_createElementVNode(\"div\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (GetProduct(true))),\n class: \"DirectPurchase SkuMargin\"\n }, _toDisplayString(_ctx.$t('更新商品数据')), 513), [\n [_vShow, item.value.MallId != 111036]\n ])\n ])\n ])\n ]),\n (item.value.MallId == 111036)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_73, [\n _createVNode(_component_suffix_img, {\n class: \"ShopLogo\",\n url: item.value.SellerInfo.ShopLogo\n }, null, 8, [\"url\"]),\n _createElementVNode(\"div\", _hoisted_74, [\n _createElementVNode(\"div\", _hoisted_75, _toDisplayString(item.value.SellerInfo.ShopName), 1),\n _createElementVNode(\"div\", _hoisted_76, [\n _createVNode(_component_router_link, {\n to: {\r\n path: '/IM',\r\n query: {\r\n type: 'Grabgood',\r\n GoodsName: item.value.GoodsName,\r\n ImgUrl: item.value.MasterImg,\r\n Price: item.value.Price,\r\n Url: hrefUrl.value,\r\n shopId: item.value.ShopId,\r\n },\r\n },\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"button\", null, _toDisplayString(_ctx.$t('即时聊天')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]),\n _createElementVNode(\"button\", {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (\r\n _unref(Router).push({\r\n path: '/mallHome',\r\n query: { ShopId: item.value.ShopId },\r\n })\r\n ))\n }, _toDisplayString(_ctx.$t('进入商店')), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_77, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('聊天回应率')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.SellerInfo.ChatResponseRate) + \"%\", 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('回应速度')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.SellerInfo.ChatResponseSpeed) + \" \" + _toDisplayString(_ctx.$t('小时内')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('商品')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.SellerInfo.ProductNum), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('评价')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.SellerInfo.Evaluation.toFixed(1)), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('加入时间')) + \":\", 1),\n _createElementVNode(\"span\", null, _toDisplayString(item.value.SellerInfo.CreatedMonth) + \" \" + _toDisplayString(_ctx.$t('个月前')), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_78, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_79, [\n _createElementVNode(\"div\", _hoisted_80, _toDisplayString(_ctx.$t('推荐商品')), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(GoodsRecommendList.value, (GoodsRecommend, index) => {\n return (_openBlock(), _createBlock(CommodityCard, {\n key: GoodsRecommend,\n data: GoodsRecommend,\n index: index,\n class: \"CCard\"\n }, null, 8, [\"data\", \"index\"]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"Description\",\n innerHTML: item.value.Description\n }, null, 8, _hoisted_81)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_Transition, { name: \"el-zoom-in-center\" }, {\n default: _withCtx(() => [\n (!item.value && !NoGoods.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_82, [\n _createVNode(_component_el_skeleton, { animated: \"\" }, {\n template: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_83, [\n _createElementVNode(\"div\", _hoisted_84, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(6, (isImage) => {\n return _createVNode(_component_el_skeleton_item, {\n key: isImage,\n variant: \"image\"\n })\n }), 64))\n ]),\n _createElementVNode(\"div\", _hoisted_85, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (isText) => {\n return _createVNode(_component_el_skeleton_item, {\n key: isText,\n style: _normalizeStyle('width:' + 200 / isText + '%'),\n variant: \"text\"\n }, null, 8, [\"style\"])\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_86, [\n _createElementVNode(\"div\", _hoisted_87, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(6, (isText) => {\n return _createVNode(_component_el_skeleton_item, {\n key: isText,\n variant: \"text\"\n })\n }), 64))\n ])\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n (item.value?.IsShelves)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_88, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_89,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_90,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_SemiSelect)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('商品已下架')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n (item.value && NoGoods.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_91, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_92,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_93,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_SemiSelect)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('很抱歉,没有淘到该代购商品!')) + \" \", 1),\n (_unref(route).query?.Url)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_94, _toDisplayString(_ctx.$t('您可以仔细检查输入的代购链接是否正确')), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", null, [\n (_unref(route).query?.Url || item.value?.Url)\n ? (_openBlock(), _createBlock(_component_el_link, {\n key: 0,\n type: \"danger\",\n href: _unref(route).query.Url || item.value?.Url,\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('打开原链接')), 1)\n ]),\n _: 1\n }, 8, [\"href\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_95,\n _createVNode(_component_el_link, {\n type: \"warning\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (GetProduct(false)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('更新商品数据')), 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n (IsBlacklist.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_96, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_WarningFilled)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('很抱歉,该商品为黑名单商品!')), 1),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('商品名字')) + \": \" + _toDisplayString(item.value.GoodsName), 1),\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('您可以选择其他喜爱商品再次尝试,谢谢。')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_Transition, { name: \"el-fade-in-linear\" }, {\n default: _withCtx(() => [\n (item.value?.NotSupportLink)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_97, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_98,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_CircleCloseFilled)\n ]),\n _: 1\n }),\n _hoisted_99,\n _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [\n _createVNode(_component_SemiSelect)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t('暂时不支持该链接')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ], 64))\n}\n}\n\n})","import script from \"./product-details.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./product-details.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./product-details.vue?vue&type=style&index=0&id=32ac5178&lang=scss\"\nimport \"./product-details.vue?vue&type=style&index=1&id=32ac5178&scoped=true&lang=scss\"\n\nimport exportComponent from \"F:\\\\NewLODAPC\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-32ac5178\"]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./product-details.vue?vue&type=style&index=1&id=32ac5178&scoped=true&lang=scss\"","// fb.ts\r\n// 引入登录SDK\r\nexport const fbJsdk = (typeIndex) => {\r\n ;(function (d: any, s: any, id: any) {\r\n var js\r\n var fjs = d.getElementsByTagName(s)[0]\r\n if (d.getElementById(id)) {\r\n return\r\n }\r\n js = d.createElement(s)\r\n js.id = id\r\n ;(js as any).src = 'https://connect.facebook.net/zh_CN/sdk.js'\r\n ;(fjs as any).parentNode.insertBefore(js, fjs)\r\n })(document, 'script', 'facebook-jssdk')\r\n // 初始化\r\n ;(window as any).fbAsyncInit = function () {\r\n // @ts-ignore:\r\n // eslint-disable-next-line no-undef\r\n FB.init({\r\n appId: '990922070918466', // 应用编号\r\n autoLogAppEvents: true,\r\n xfbml: true,\r\n version: 'v16.0',\r\n })\r\n if (typeIndex) {\r\n ShareFacebook()\r\n }\r\n }\r\n}\r\n\r\ndeclare const FB: any\r\nexport const ShareFacebook = () => {\r\n console.log(typeof FB)\r\n if (typeof FB == 'object') {\r\n FB.ui(\r\n {\r\n // display: 'popup',\r\n method: 'share',\r\n },\r\n function (response) {}\r\n )\r\n } else {\r\n fbJsdk(1)\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./product-details.vue?vue&type=style&index=0&id=32ac5178&lang=scss\"","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","/*!\n * qrcode.vue v3.3.3\n * A Vue.js component to generate QRCode.\n * © 2017-2021 @scopewu(https://github.com/scopewu)\n * MIT License.\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue')) :\n typeof define === 'function' && define.amd ? define(['vue'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.QrcodeVue = factory(global.Vue));\n})(this, (function (vue) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var mode$1 = {\n \tMODE_NUMBER :\t\t1 << 0,\n \tMODE_ALPHA_NUM : \t1 << 1,\n \tMODE_8BIT_BYTE : \t1 << 2,\n \tMODE_KANJI :\t\t1 << 3\n };\n\n var mode = mode$1;\n\n function QR8bitByte(data) {\n \tthis.mode = mode.MODE_8BIT_BYTE;\n \tthis.data = data;\n }\n\n QR8bitByte.prototype = {\n\n \tgetLength : function(buffer) {\n \t\treturn this.data.length;\n \t},\n \t\n \twrite : function(buffer) {\n \t\tfor (var i = 0; i < this.data.length; i++) {\n \t\t\t// not JIS ...\n \t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n \t\t}\n \t}\n };\n\n var _8BitByte = QR8bitByte;\n\n var ErrorCorrectLevel = {\n \tL : 1,\n \tM : 0,\n \tQ : 3,\n \tH : 2\n };\n\n // ErrorCorrectLevel\n var ECL = ErrorCorrectLevel;\n\n function QRRSBlock(totalCount, dataCount) {\n \tthis.totalCount = totalCount;\n \tthis.dataCount = dataCount;\n }\n\n QRRSBlock.RS_BLOCK_TABLE = [\n\n \t// L\n \t// M\n \t// Q\n \t// H\n\n \t// 1\n \t[1, 26, 19],\n \t[1, 26, 16],\n \t[1, 26, 13],\n \t[1, 26, 9],\n \t\n \t// 2\n \t[1, 44, 34],\n \t[1, 44, 28],\n \t[1, 44, 22],\n \t[1, 44, 16],\n\n \t// 3\n \t[1, 70, 55],\n \t[1, 70, 44],\n \t[2, 35, 17],\n \t[2, 35, 13],\n\n \t// 4\t\t\n \t[1, 100, 80],\n \t[2, 50, 32],\n \t[2, 50, 24],\n \t[4, 25, 9],\n \t\n \t// 5\n \t[1, 134, 108],\n \t[2, 67, 43],\n \t[2, 33, 15, 2, 34, 16],\n \t[2, 33, 11, 2, 34, 12],\n \t\n \t// 6\n \t[2, 86, 68],\n \t[4, 43, 27],\n \t[4, 43, 19],\n \t[4, 43, 15],\n \t\n \t// 7\t\t\n \t[2, 98, 78],\n \t[4, 49, 31],\n \t[2, 32, 14, 4, 33, 15],\n \t[4, 39, 13, 1, 40, 14],\n \t\n \t// 8\n \t[2, 121, 97],\n \t[2, 60, 38, 2, 61, 39],\n \t[4, 40, 18, 2, 41, 19],\n \t[4, 40, 14, 2, 41, 15],\n \t\n \t// 9\n \t[2, 146, 116],\n \t[3, 58, 36, 2, 59, 37],\n \t[4, 36, 16, 4, 37, 17],\n \t[4, 36, 12, 4, 37, 13],\n \t\n \t// 10\t\t\n \t[2, 86, 68, 2, 87, 69],\n \t[4, 69, 43, 1, 70, 44],\n \t[6, 43, 19, 2, 44, 20],\n \t[6, 43, 15, 2, 44, 16],\n\n \t// 11\n \t[4, 101, 81],\n \t[1, 80, 50, 4, 81, 51],\n \t[4, 50, 22, 4, 51, 23],\n \t[3, 36, 12, 8, 37, 13],\n\n \t// 12\n \t[2, 116, 92, 2, 117, 93],\n \t[6, 58, 36, 2, 59, 37],\n \t[4, 46, 20, 6, 47, 21],\n \t[7, 42, 14, 4, 43, 15],\n\n \t// 13\n \t[4, 133, 107],\n \t[8, 59, 37, 1, 60, 38],\n \t[8, 44, 20, 4, 45, 21],\n \t[12, 33, 11, 4, 34, 12],\n\n \t// 14\n \t[3, 145, 115, 1, 146, 116],\n \t[4, 64, 40, 5, 65, 41],\n \t[11, 36, 16, 5, 37, 17],\n \t[11, 36, 12, 5, 37, 13],\n\n \t// 15\n \t[5, 109, 87, 1, 110, 88],\n \t[5, 65, 41, 5, 66, 42],\n \t[5, 54, 24, 7, 55, 25],\n \t[11, 36, 12],\n\n \t// 16\n \t[5, 122, 98, 1, 123, 99],\n \t[7, 73, 45, 3, 74, 46],\n \t[15, 43, 19, 2, 44, 20],\n \t[3, 45, 15, 13, 46, 16],\n\n \t// 17\n \t[1, 135, 107, 5, 136, 108],\n \t[10, 74, 46, 1, 75, 47],\n \t[1, 50, 22, 15, 51, 23],\n \t[2, 42, 14, 17, 43, 15],\n\n \t// 18\n \t[5, 150, 120, 1, 151, 121],\n \t[9, 69, 43, 4, 70, 44],\n \t[17, 50, 22, 1, 51, 23],\n \t[2, 42, 14, 19, 43, 15],\n\n \t// 19\n \t[3, 141, 113, 4, 142, 114],\n \t[3, 70, 44, 11, 71, 45],\n \t[17, 47, 21, 4, 48, 22],\n \t[9, 39, 13, 16, 40, 14],\n\n \t// 20\n \t[3, 135, 107, 5, 136, 108],\n \t[3, 67, 41, 13, 68, 42],\n \t[15, 54, 24, 5, 55, 25],\n \t[15, 43, 15, 10, 44, 16],\n\n \t// 21\n \t[4, 144, 116, 4, 145, 117],\n \t[17, 68, 42],\n \t[17, 50, 22, 6, 51, 23],\n \t[19, 46, 16, 6, 47, 17],\n\n \t// 22\n \t[2, 139, 111, 7, 140, 112],\n \t[17, 74, 46],\n \t[7, 54, 24, 16, 55, 25],\n \t[34, 37, 13],\n\n \t// 23\n \t[4, 151, 121, 5, 152, 122],\n \t[4, 75, 47, 14, 76, 48],\n \t[11, 54, 24, 14, 55, 25],\n \t[16, 45, 15, 14, 46, 16],\n\n \t// 24\n \t[6, 147, 117, 4, 148, 118],\n \t[6, 73, 45, 14, 74, 46],\n \t[11, 54, 24, 16, 55, 25],\n \t[30, 46, 16, 2, 47, 17],\n\n \t// 25\n \t[8, 132, 106, 4, 133, 107],\n \t[8, 75, 47, 13, 76, 48],\n \t[7, 54, 24, 22, 55, 25],\n \t[22, 45, 15, 13, 46, 16],\n\n \t// 26\n \t[10, 142, 114, 2, 143, 115],\n \t[19, 74, 46, 4, 75, 47],\n \t[28, 50, 22, 6, 51, 23],\n \t[33, 46, 16, 4, 47, 17],\n\n \t// 27\n \t[8, 152, 122, 4, 153, 123],\n \t[22, 73, 45, 3, 74, 46],\n \t[8, 53, 23, 26, 54, 24],\n \t[12, 45, 15, 28, 46, 16],\n\n \t// 28\n \t[3, 147, 117, 10, 148, 118],\n \t[3, 73, 45, 23, 74, 46],\n \t[4, 54, 24, 31, 55, 25],\n \t[11, 45, 15, 31, 46, 16],\n\n \t// 29\n \t[7, 146, 116, 7, 147, 117],\n \t[21, 73, 45, 7, 74, 46],\n \t[1, 53, 23, 37, 54, 24],\n \t[19, 45, 15, 26, 46, 16],\n\n \t// 30\n \t[5, 145, 115, 10, 146, 116],\n \t[19, 75, 47, 10, 76, 48],\n \t[15, 54, 24, 25, 55, 25],\n \t[23, 45, 15, 25, 46, 16],\n\n \t// 31\n \t[13, 145, 115, 3, 146, 116],\n \t[2, 74, 46, 29, 75, 47],\n \t[42, 54, 24, 1, 55, 25],\n \t[23, 45, 15, 28, 46, 16],\n\n \t// 32\n \t[17, 145, 115],\n \t[10, 74, 46, 23, 75, 47],\n \t[10, 54, 24, 35, 55, 25],\n \t[19, 45, 15, 35, 46, 16],\n\n \t// 33\n \t[17, 145, 115, 1, 146, 116],\n \t[14, 74, 46, 21, 75, 47],\n \t[29, 54, 24, 19, 55, 25],\n \t[11, 45, 15, 46, 46, 16],\n\n \t// 34\n \t[13, 145, 115, 6, 146, 116],\n \t[14, 74, 46, 23, 75, 47],\n \t[44, 54, 24, 7, 55, 25],\n \t[59, 46, 16, 1, 47, 17],\n\n \t// 35\n \t[12, 151, 121, 7, 152, 122],\n \t[12, 75, 47, 26, 76, 48],\n \t[39, 54, 24, 14, 55, 25],\n \t[22, 45, 15, 41, 46, 16],\n\n \t// 36\n \t[6, 151, 121, 14, 152, 122],\n \t[6, 75, 47, 34, 76, 48],\n \t[46, 54, 24, 10, 55, 25],\n \t[2, 45, 15, 64, 46, 16],\n\n \t// 37\n \t[17, 152, 122, 4, 153, 123],\n \t[29, 74, 46, 14, 75, 47],\n \t[49, 54, 24, 10, 55, 25],\n \t[24, 45, 15, 46, 46, 16],\n\n \t// 38\n \t[4, 152, 122, 18, 153, 123],\n \t[13, 74, 46, 32, 75, 47],\n \t[48, 54, 24, 14, 55, 25],\n \t[42, 45, 15, 32, 46, 16],\n\n \t// 39\n \t[20, 147, 117, 4, 148, 118],\n \t[40, 75, 47, 7, 76, 48],\n \t[43, 54, 24, 22, 55, 25],\n \t[10, 45, 15, 67, 46, 16],\n\n \t// 40\n \t[19, 148, 118, 6, 149, 119],\n \t[18, 75, 47, 31, 76, 48],\n \t[34, 54, 24, 34, 55, 25],\n \t[20, 45, 15, 61, 46, 16]\n ];\n\n QRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n \t\n \tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n \t\n \tif (rsBlock == undefined) {\n \t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n \t}\n\n \tvar length = rsBlock.length / 3;\n \t\n \tvar list = new Array();\n \t\n \tfor (var i = 0; i < length; i++) {\n\n \t\tvar count = rsBlock[i * 3 + 0];\n \t\tvar totalCount = rsBlock[i * 3 + 1];\n \t\tvar dataCount = rsBlock[i * 3 + 2];\n\n \t\tfor (var j = 0; j < count; j++) {\n \t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n \t\t}\n \t}\n \t\n \treturn list;\n };\n\n QRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n \tswitch(errorCorrectLevel) {\n \tcase ECL.L :\n \t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n \tcase ECL.M :\n \t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n \tcase ECL.Q :\n \t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n \tcase ECL.H :\n \t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n \tdefault :\n \t\treturn undefined;\n \t}\n };\n\n var RSBlock$1 = QRRSBlock;\n\n function QRBitBuffer() {\n \tthis.buffer = new Array();\n \tthis.length = 0;\n }\n\n QRBitBuffer.prototype = {\n\n \tget : function(index) {\n \t\tvar bufIndex = Math.floor(index / 8);\n \t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n \t},\n \t\n \tput : function(num, length) {\n \t\tfor (var i = 0; i < length; i++) {\n \t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n \t\t}\n \t},\n \t\n \tgetLengthInBits : function() {\n \t\treturn this.length;\n \t},\n \t\n \tputBit : function(bit) {\n \t\n \t\tvar bufIndex = Math.floor(this.length / 8);\n \t\tif (this.buffer.length <= bufIndex) {\n \t\t\tthis.buffer.push(0);\n \t\t}\n \t\n \t\tif (bit) {\n \t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n \t\t}\n \t\n \t\tthis.length++;\n \t}\n };\n\n var BitBuffer$1 = QRBitBuffer;\n\n var QRMath = {\n\n \tglog : function(n) {\n \t\n \t\tif (n < 1) {\n \t\t\tthrow new Error(\"glog(\" + n + \")\");\n \t\t}\n \t\t\n \t\treturn QRMath.LOG_TABLE[n];\n \t},\n \t\n \tgexp : function(n) {\n \t\n \t\twhile (n < 0) {\n \t\t\tn += 255;\n \t\t}\n \t\n \t\twhile (n >= 256) {\n \t\t\tn -= 255;\n \t\t}\n \t\n \t\treturn QRMath.EXP_TABLE[n];\n \t},\n \t\n \tEXP_TABLE : new Array(256),\n \t\n \tLOG_TABLE : new Array(256)\n\n };\n \t\n for (var i = 0; i < 8; i++) {\n \tQRMath.EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i++) {\n \tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n \t\t^ QRMath.EXP_TABLE[i - 5]\n \t\t^ QRMath.EXP_TABLE[i - 6]\n \t\t^ QRMath.EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i++) {\n \tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n }\n\n var math$2 = QRMath;\n\n var math$1 = math$2;\n\n function QRPolynomial(num, shift) {\n\n \tif (num.length == undefined) {\n \t\tthrow new Error(num.length + \"/\" + shift);\n \t}\n\n \tvar offset = 0;\n\n \twhile (offset < num.length && num[offset] == 0) {\n \t\toffset++;\n \t}\n\n \tthis.num = new Array(num.length - offset + shift);\n \tfor (var i = 0; i < num.length - offset; i++) {\n \t\tthis.num[i] = num[i + offset];\n \t}\n }\n\n QRPolynomial.prototype = {\n\n \tget : function(index) {\n \t\treturn this.num[index];\n \t},\n \t\n \tgetLength : function() {\n \t\treturn this.num.length;\n \t},\n \t\n \tmultiply : function(e) {\n \t\n \t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n \t\n \t\tfor (var i = 0; i < this.getLength(); i++) {\n \t\t\tfor (var j = 0; j < e.getLength(); j++) {\n \t\t\t\tnum[i + j] ^= math$1.gexp(math$1.glog(this.get(i) ) + math$1.glog(e.get(j) ) );\n \t\t\t}\n \t\t}\n \t\n \t\treturn new QRPolynomial(num, 0);\n \t},\n \t\n \tmod : function(e) {\n \t\n \t\tif (this.getLength() - e.getLength() < 0) {\n \t\t\treturn this;\n \t\t}\n \t\n \t\tvar ratio = math$1.glog(this.get(0) ) - math$1.glog(e.get(0) );\n \t\n \t\tvar num = new Array(this.getLength() );\n \t\t\n \t\tfor (var i = 0; i < this.getLength(); i++) {\n \t\t\tnum[i] = this.get(i);\n \t\t}\n \t\t\n \t\tfor (var i = 0; i < e.getLength(); i++) {\n \t\t\tnum[i] ^= math$1.gexp(math$1.glog(e.get(i) ) + ratio);\n \t\t}\n \t\n \t\t// recursive call\n \t\treturn new QRPolynomial(num, 0).mod(e);\n \t}\n };\n\n var Polynomial$2 = QRPolynomial;\n\n var Mode = mode$1;\n var Polynomial$1 = Polynomial$2;\n var math = math$2;\n\n var QRMaskPattern = {\n \tPATTERN000 : 0,\n \tPATTERN001 : 1,\n \tPATTERN010 : 2,\n \tPATTERN011 : 3,\n \tPATTERN100 : 4,\n \tPATTERN101 : 5,\n \tPATTERN110 : 6,\n \tPATTERN111 : 7\n };\n\n var QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n \t [],\n \t [6, 18],\n \t [6, 22],\n \t [6, 26],\n \t [6, 30],\n \t [6, 34],\n \t [6, 22, 38],\n \t [6, 24, 42],\n \t [6, 26, 46],\n \t [6, 28, 50],\n \t [6, 30, 54],\t\t\n \t [6, 32, 58],\n \t [6, 34, 62],\n \t [6, 26, 46, 66],\n \t [6, 26, 48, 70],\n \t [6, 26, 50, 74],\n \t [6, 30, 54, 78],\n \t [6, 30, 56, 82],\n \t [6, 30, 58, 86],\n \t [6, 34, 62, 90],\n \t [6, 28, 50, 72, 94],\n \t [6, 26, 50, 74, 98],\n \t [6, 30, 54, 78, 102],\n \t [6, 28, 54, 80, 106],\n \t [6, 32, 58, 84, 110],\n \t [6, 30, 58, 86, 114],\n \t [6, 34, 62, 90, 118],\n \t [6, 26, 50, 74, 98, 122],\n \t [6, 30, 54, 78, 102, 126],\n \t [6, 26, 52, 78, 104, 130],\n \t [6, 30, 56, 82, 108, 134],\n \t [6, 34, 60, 86, 112, 138],\n \t [6, 30, 58, 86, 114, 142],\n \t [6, 34, 62, 90, 118, 146],\n \t [6, 30, 54, 78, 102, 126, 150],\n \t [6, 24, 50, 76, 102, 128, 154],\n \t [6, 28, 54, 80, 106, 132, 158],\n \t [6, 32, 58, 84, 110, 136, 162],\n \t [6, 26, 54, 82, 110, 138, 166],\n \t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n \t var d = data << 10;\n \t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n \t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n \t }\n \t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n \t var d = data << 12;\n \t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n \t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n \t }\n \t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n \t var digit = 0;\n\n \t while (data != 0) {\n \t\t digit++;\n \t\t data >>>= 1;\n \t }\n\n \t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n \t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n \t \n \t switch (maskPattern) {\n \t\t \n \t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n \t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n \t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n \t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n \t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n \t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n \t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n \t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n \t default :\n \t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n \t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n \t var a = new Polynomial$1([1], 0);\n\n \t for (var i = 0; i < errorCorrectLength; i++) {\n \t\t a = a.multiply(new Polynomial$1([1, math.gexp(i)], 0) );\n \t }\n\n \t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n \t if (1 <= type && type < 10) {\n\n \t\t // 1 - 9\n\n \t\t switch(mode) {\n \t\t case Mode.MODE_NUMBER \t: return 10;\n \t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n \t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n \t\t case Mode.MODE_KANJI \t: return 8;\n \t\t default :\n \t\t\t throw new Error(\"mode:\" + mode);\n \t\t }\n\n \t } else if (type < 27) {\n\n \t\t // 10 - 26\n\n \t\t switch(mode) {\n \t\t case Mode.MODE_NUMBER \t: return 12;\n \t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n \t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n \t\t case Mode.MODE_KANJI \t: return 10;\n \t\t default :\n \t\t\t throw new Error(\"mode:\" + mode);\n \t\t }\n\n \t } else if (type < 41) {\n\n \t\t // 27 - 40\n\n \t\t switch(mode) {\n \t\t case Mode.MODE_NUMBER \t: return 14;\n \t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n \t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n \t\t case Mode.MODE_KANJI \t: return 12;\n \t\t default :\n \t\t\t throw new Error(\"mode:\" + mode);\n \t\t }\n\n \t } else {\n \t\t throw new Error(\"type:\" + type);\n \t }\n },\n\n getLostPoint : function(qrCode) {\n \t \n \t var moduleCount = qrCode.getModuleCount();\n \t \n \t var lostPoint = 0;\n \t \n \t // LEVEL1\n \t \n \t for (var row = 0; row < moduleCount; row++) {\n\n \t\t for (var col = 0; col < moduleCount; col++) {\n\n \t\t\t var sameCount = 0;\n \t\t\t var dark = qrCode.isDark(row, col);\n\n \t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n \t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n \t\t\t\t\t continue;\n \t\t\t\t }\n\n \t\t\t\t for (var c = -1; c <= 1; c++) {\n\n \t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n \t\t\t\t\t\t continue;\n \t\t\t\t\t }\n\n \t\t\t\t\t if (r == 0 && c == 0) {\n \t\t\t\t\t\t continue;\n \t\t\t\t\t }\n\n \t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n \t\t\t\t\t\t sameCount++;\n \t\t\t\t\t }\n \t\t\t\t }\n \t\t\t }\n\n \t\t\t if (sameCount > 5) {\n \t\t\t\t lostPoint += (3 + sameCount - 5);\n \t\t\t }\n \t\t }\n \t }\n\n \t // LEVEL2\n\n \t for (var row = 0; row < moduleCount - 1; row++) {\n \t\t for (var col = 0; col < moduleCount - 1; col++) {\n \t\t\t var count = 0;\n \t\t\t if (qrCode.isDark(row, col ) ) count++;\n \t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n \t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n \t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n \t\t\t if (count == 0 || count == 4) {\n \t\t\t\t lostPoint += 3;\n \t\t\t }\n \t\t }\n \t }\n\n \t // LEVEL3\n\n \t for (var row = 0; row < moduleCount; row++) {\n \t\t for (var col = 0; col < moduleCount - 6; col++) {\n \t\t\t if (qrCode.isDark(row, col)\n \t\t\t\t\t && !qrCode.isDark(row, col + 1)\n \t\t\t\t\t && qrCode.isDark(row, col + 2)\n \t\t\t\t\t && qrCode.isDark(row, col + 3)\n \t\t\t\t\t && qrCode.isDark(row, col + 4)\n \t\t\t\t\t && !qrCode.isDark(row, col + 5)\n \t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n \t\t\t\t lostPoint += 40;\n \t\t\t }\n \t\t }\n \t }\n\n \t for (var col = 0; col < moduleCount; col++) {\n \t\t for (var row = 0; row < moduleCount - 6; row++) {\n \t\t\t if (qrCode.isDark(row, col)\n \t\t\t\t\t && !qrCode.isDark(row + 1, col)\n \t\t\t\t\t && qrCode.isDark(row + 2, col)\n \t\t\t\t\t && qrCode.isDark(row + 3, col)\n \t\t\t\t\t && qrCode.isDark(row + 4, col)\n \t\t\t\t\t && !qrCode.isDark(row + 5, col)\n \t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n \t\t\t\t lostPoint += 40;\n \t\t\t }\n \t\t }\n \t }\n\n \t // LEVEL4\n \t \n \t var darkCount = 0;\n\n \t for (var col = 0; col < moduleCount; col++) {\n \t\t for (var row = 0; row < moduleCount; row++) {\n \t\t\t if (qrCode.isDark(row, col) ) {\n \t\t\t\t darkCount++;\n \t\t\t }\n \t\t }\n \t }\n \t \n \t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n \t lostPoint += ratio * 10;\n\n \t return lostPoint;\t\t\n }\n };\n\n var util$1 = QRUtil;\n\n var BitByte = _8BitByte;\n var RSBlock = RSBlock$1;\n var BitBuffer = BitBuffer$1;\n var util = util$1;\n var Polynomial = Polynomial$2;\n\n function QRCode$1(typeNumber, errorCorrectLevel) {\n \tthis.typeNumber = typeNumber;\n \tthis.errorCorrectLevel = errorCorrectLevel;\n \tthis.modules = null;\n \tthis.moduleCount = 0;\n \tthis.dataCache = null;\n \tthis.dataList = [];\n }\n\n // for client side minification\n var proto = QRCode$1.prototype;\n\n proto.addData = function(data) {\n \tvar newData = new BitByte(data);\n \tthis.dataList.push(newData);\n \tthis.dataCache = null;\n };\n\n proto.isDark = function(row, col) {\n \tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n \t\tthrow new Error(row + \",\" + col);\n \t}\n \treturn this.modules[row][col];\n };\n\n proto.getModuleCount = function() {\n \treturn this.moduleCount;\n };\n\n proto.make = function() {\n \t// Calculate automatically typeNumber if provided is < 1\n \tif (this.typeNumber < 1 ){\n \t\tvar typeNumber = 1;\n \t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n \t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n \t\t\tvar buffer = new BitBuffer();\n \t\t\tvar totalDataCount = 0;\n \t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n \t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n \t\t\t}\n\n \t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n \t\t\t\tvar data = this.dataList[i];\n \t\t\t\tbuffer.put(data.mode, 4);\n \t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n \t\t\t\tdata.write(buffer);\n \t\t\t}\n \t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n \t\t\t\tbreak;\n \t\t}\n \t\tthis.typeNumber = typeNumber;\n \t}\n \tthis.makeImpl(false, this.getBestMaskPattern() );\n };\n\n proto.makeImpl = function(test, maskPattern) {\n \t\n \tthis.moduleCount = this.typeNumber * 4 + 17;\n \tthis.modules = new Array(this.moduleCount);\n \t\n \tfor (var row = 0; row < this.moduleCount; row++) {\n \t\t\n \t\tthis.modules[row] = new Array(this.moduleCount);\n \t\t\n \t\tfor (var col = 0; col < this.moduleCount; col++) {\n \t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n \t\t}\n \t}\n\n \tthis.setupPositionProbePattern(0, 0);\n \tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n \tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n \tthis.setupPositionAdjustPattern();\n \tthis.setupTimingPattern();\n \tthis.setupTypeInfo(test, maskPattern);\n \t\n \tif (this.typeNumber >= 7) {\n \t\tthis.setupTypeNumber(test);\n \t}\n\n \tif (this.dataCache == null) {\n \t\tthis.dataCache = QRCode$1.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n \t}\n\n \tthis.mapData(this.dataCache, maskPattern);\n };\n\n proto.setupPositionProbePattern = function(row, col) {\n \t\n \tfor (var r = -1; r <= 7; r++) {\n \t\t\n \t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n \t\t\n \t\tfor (var c = -1; c <= 7; c++) {\n \t\t\t\n \t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n \t\t\t\n \t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n \t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n \t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n \t\t\t\tthis.modules[row + r][col + c] = true;\n \t\t\t} else {\n \t\t\t\tthis.modules[row + r][col + c] = false;\n \t\t\t}\n \t\t}\t\t\n \t}\t\t\n };\n\n proto.getBestMaskPattern = function() {\n\n \tvar minLostPoint = 0;\n \tvar pattern = 0;\n\n \tfor (var i = 0; i < 8; i++) {\n \t\t\n \t\tthis.makeImpl(true, i);\n\n \t\tvar lostPoint = util.getLostPoint(this);\n\n \t\tif (i == 0 || minLostPoint > lostPoint) {\n \t\t\tminLostPoint = lostPoint;\n \t\t\tpattern = i;\n \t\t}\n \t}\n\n \treturn pattern;\n };\n\n proto.createMovieClip = function(target_mc, instance_name, depth) {\n\n \tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n \tvar cs = 1;\n\n \tthis.make();\n\n \tfor (var row = 0; row < this.modules.length; row++) {\n \t\t\n \t\tvar y = row * cs;\n \t\t\n \t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n \t\t\tvar x = col * cs;\n \t\t\tvar dark = this.modules[row][col];\n \t\t\n \t\t\tif (dark) {\n \t\t\t\tqr_mc.beginFill(0, 100);\n \t\t\t\tqr_mc.moveTo(x, y);\n \t\t\t\tqr_mc.lineTo(x + cs, y);\n \t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n \t\t\t\tqr_mc.lineTo(x, y + cs);\n \t\t\t\tqr_mc.endFill();\n \t\t\t}\n \t\t}\n \t}\n \t\n \treturn qr_mc;\n };\n\n proto.setupTimingPattern = function() {\n \t\n \tfor (var r = 8; r < this.moduleCount - 8; r++) {\n \t\tif (this.modules[r][6] != null) {\n \t\t\tcontinue;\n \t\t}\n \t\tthis.modules[r][6] = (r % 2 == 0);\n \t}\n\n \tfor (var c = 8; c < this.moduleCount - 8; c++) {\n \t\tif (this.modules[6][c] != null) {\n \t\t\tcontinue;\n \t\t}\n \t\tthis.modules[6][c] = (c % 2 == 0);\n \t}\n };\n\n proto.setupPositionAdjustPattern = function() {\n\n \tvar pos = util.getPatternPosition(this.typeNumber);\n \t\n \tfor (var i = 0; i < pos.length; i++) {\n \t\n \t\tfor (var j = 0; j < pos.length; j++) {\n \t\t\n \t\t\tvar row = pos[i];\n \t\t\tvar col = pos[j];\n \t\t\t\n \t\t\tif (this.modules[row][col] != null) {\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t\t\n \t\t\tfor (var r = -2; r <= 2; r++) {\n \t\t\t\n \t\t\t\tfor (var c = -2; c <= 2; c++) {\n \t\t\t\t\n \t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n \t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n \t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n \t\t\t\t\t} else {\n \t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t}\n };\n\n proto.setupTypeNumber = function(test) {\n\n \tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n \tfor (var i = 0; i < 18; i++) {\n \t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n \t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n \t}\n\n \tfor (var i = 0; i < 18; i++) {\n \t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n \t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n \t}\n };\n\n proto.setupTypeInfo = function(test, maskPattern) {\n\n \tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n \tvar bits = util.getBCHTypeInfo(data);\n\n \t// vertical\t\t\n \tfor (var i = 0; i < 15; i++) {\n\n \t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n \t\tif (i < 6) {\n \t\t\tthis.modules[i][8] = mod;\n \t\t} else if (i < 8) {\n \t\t\tthis.modules[i + 1][8] = mod;\n \t\t} else {\n \t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n \t\t}\n \t}\n\n \t// horizontal\n \tfor (var i = 0; i < 15; i++) {\n\n \t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n \t\t\n \t\tif (i < 8) {\n \t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n \t\t} else if (i < 9) {\n \t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n \t\t} else {\n \t\t\tthis.modules[8][15 - i - 1] = mod;\n \t\t}\n \t}\n\n \t// fixed module\n \tthis.modules[this.moduleCount - 8][8] = (!test);\n };\n\n proto.mapData = function(data, maskPattern) {\n \t\n \tvar inc = -1;\n \tvar row = this.moduleCount - 1;\n \tvar bitIndex = 7;\n \tvar byteIndex = 0;\n \t\n \tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n \t\tif (col == 6) col--;\n\n \t\twhile (true) {\n\n \t\t\tfor (var c = 0; c < 2; c++) {\n \t\t\t\t\n \t\t\t\tif (this.modules[row][col - c] == null) {\n \t\t\t\t\t\n \t\t\t\t\tvar dark = false;\n\n \t\t\t\t\tif (byteIndex < data.length) {\n \t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n \t\t\t\t\t}\n\n \t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n \t\t\t\t\tif (mask) {\n \t\t\t\t\t\tdark = !dark;\n \t\t\t\t\t}\n \t\t\t\t\t\n \t\t\t\t\tthis.modules[row][col - c] = dark;\n \t\t\t\t\tbitIndex--;\n\n \t\t\t\t\tif (bitIndex == -1) {\n \t\t\t\t\t\tbyteIndex++;\n \t\t\t\t\t\tbitIndex = 7;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t\t\t\t\t\t\n \t\t\trow += inc;\n\n \t\t\tif (row < 0 || this.moduleCount <= row) {\n \t\t\t\trow -= inc;\n \t\t\t\tinc = -inc;\n \t\t\t\tbreak;\n \t\t\t}\n \t\t}\n \t}\n };\n\n QRCode$1.PAD0 = 0xEC;\n QRCode$1.PAD1 = 0x11;\n\n QRCode$1.createData = function(typeNumber, errorCorrectLevel, dataList) {\n \t\n \tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n \t\n \tvar buffer = new BitBuffer();\n \t\n \tfor (var i = 0; i < dataList.length; i++) {\n \t\tvar data = dataList[i];\n \t\tbuffer.put(data.mode, 4);\n \t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n \t\tdata.write(buffer);\n \t}\n\n \t// calc num max data.\n \tvar totalDataCount = 0;\n \tfor (var i = 0; i < rsBlocks.length; i++) {\n \t\ttotalDataCount += rsBlocks[i].dataCount;\n \t}\n\n \tif (buffer.getLengthInBits() > totalDataCount * 8) {\n \t\tthrow new Error(\"code length overflow. (\"\n \t\t\t+ buffer.getLengthInBits()\n \t\t\t+ \">\"\n \t\t\t+ totalDataCount * 8\n \t\t\t+ \")\");\n \t}\n\n \t// end code\n \tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n \t\tbuffer.put(0, 4);\n \t}\n\n \t// padding\n \twhile (buffer.getLengthInBits() % 8 != 0) {\n \t\tbuffer.putBit(false);\n \t}\n\n \t// padding\n \twhile (true) {\n \t\t\n \t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n \t\t\tbreak;\n \t\t}\n \t\tbuffer.put(QRCode$1.PAD0, 8);\n \t\t\n \t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n \t\t\tbreak;\n \t\t}\n \t\tbuffer.put(QRCode$1.PAD1, 8);\n \t}\n\n \treturn QRCode$1.createBytes(buffer, rsBlocks);\n };\n\n QRCode$1.createBytes = function(buffer, rsBlocks) {\n\n \tvar offset = 0;\n \t\n \tvar maxDcCount = 0;\n \tvar maxEcCount = 0;\n \t\n \tvar dcdata = new Array(rsBlocks.length);\n \tvar ecdata = new Array(rsBlocks.length);\n \t\n \tfor (var r = 0; r < rsBlocks.length; r++) {\n\n \t\tvar dcCount = rsBlocks[r].dataCount;\n \t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n \t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n \t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n \t\t\n \t\tdcdata[r] = new Array(dcCount);\n \t\t\n \t\tfor (var i = 0; i < dcdata[r].length; i++) {\n \t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n \t\t}\n \t\toffset += dcCount;\n \t\t\n \t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n \t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n \t\tvar modPoly = rawPoly.mod(rsPoly);\n \t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n \t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n \t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n \t\t}\n\n \t}\n \t\n \tvar totalCodeCount = 0;\n \tfor (var i = 0; i < rsBlocks.length; i++) {\n \t\ttotalCodeCount += rsBlocks[i].totalCount;\n \t}\n\n \tvar data = new Array(totalCodeCount);\n \tvar index = 0;\n\n \tfor (var i = 0; i < maxDcCount; i++) {\n \t\tfor (var r = 0; r < rsBlocks.length; r++) {\n \t\t\tif (i < dcdata[r].length) {\n \t\t\t\tdata[index++] = dcdata[r][i];\n \t\t\t}\n \t\t}\n \t}\n\n \tfor (var i = 0; i < maxEcCount; i++) {\n \t\tfor (var r = 0; r < rsBlocks.length; r++) {\n \t\t\tif (i < ecdata[r].length) {\n \t\t\t\tdata[index++] = ecdata[r][i];\n \t\t\t}\n \t\t}\n \t}\n\n \treturn data;\n };\n\n var QRCode_1 = QRCode$1;\n\n var defaultErrorCorrectLevel = 'H';\r\n // Thanks the `qrcode.react`\r\n var SUPPORTS_PATH2D = (function () {\r\n try {\r\n new Path2D().addPath(new Path2D());\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n return true;\r\n })();\r\n function QRCode(data, level) {\r\n var errorCorrectLevel = ErrorCorrectLevel[level];\r\n // We'll use type===-1 to force QRCode to automatically pick the best type\r\n var qrcode = new QRCode_1(-1, errorCorrectLevel);\r\n qrcode.addData(toUTF8String(data));\r\n qrcode.make();\r\n return qrcode;\r\n }\r\n function validErrorCorrectLevel(level) {\r\n return level in ErrorCorrectLevel;\r\n }\r\n /**\r\n * Encode UTF16 to UTF8.\r\n * See: http://jonisalonen.com/2012/from-utf-16-to-utf-8-in-javascript/\r\n * @param str {string}\r\n * @returns {string}\r\n */\r\n function toUTF8String(str) {\r\n var utf8Str = '';\r\n for (var i = 0; i < str.length; i++) {\r\n var charCode = str.charCodeAt(i);\r\n if (charCode < 0x0080) {\r\n utf8Str += String.fromCharCode(charCode);\r\n }\r\n else if (charCode < 0x0800) {\r\n utf8Str += String.fromCharCode(0xc0 | (charCode >> 6));\r\n utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f));\r\n }\r\n else if (charCode < 0xd800 || charCode >= 0xe000) {\r\n utf8Str += String.fromCharCode(0xe0 | (charCode >> 12));\r\n utf8Str += String.fromCharCode(0x80 | ((charCode >> 6) & 0x3f));\r\n utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f));\r\n }\r\n else {\r\n // surrogate pair\r\n i++;\r\n // UTF-16 encodes 0x10000-0x10FFFF by\r\n // subtracting 0x10000 and splitting the\r\n // 20 bits of 0x0-0xFFFFF into two halves\r\n charCode =\r\n 0x10000 + (((charCode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\r\n utf8Str += String.fromCharCode(0xf0 | (charCode >> 18));\r\n utf8Str += String.fromCharCode(0x80 | ((charCode >> 12) & 0x3f));\r\n utf8Str += String.fromCharCode(0x80 | ((charCode >> 6) & 0x3f));\r\n utf8Str += String.fromCharCode(0x80 | (charCode & 0x3f));\r\n }\r\n }\r\n return utf8Str;\r\n }\r\n function generatePath(modules, margin) {\r\n if (margin === void 0) { margin = 0; }\r\n var ops = [];\r\n modules.forEach(function (row, y) {\r\n var start = null;\r\n row.forEach(function (cell, x) {\r\n if (!cell && start !== null) {\r\n // M0 0h7v1H0z injects the space with the move and drops the comma,\r\n // saving a char per operation\r\n ops.push(\"M\" + (start + margin) + \" \" + (y + margin) + \"h\" + (x - start) + \"v1H\" + (start + margin) + \"z\");\r\n start = null;\r\n return;\r\n }\r\n // end of row, clean up or skip\r\n if (x === row.length - 1) {\r\n if (!cell) {\r\n // We would have closed the op above already so this can only mean\r\n // 2+ light modules in a row.\r\n return;\r\n }\r\n if (start === null) {\r\n // Just a single dark module.\r\n ops.push(\"M\" + (x + margin) + \",\" + (y + margin) + \" h1v1H\" + (x + margin) + \"z\");\r\n }\r\n else {\r\n // Otherwise finish the current line.\r\n ops.push(\"M\" + (start + margin) + \",\" + (y + margin) + \" h\" + (x + 1 - start) + \"v1H\" + (start + margin) + \"z\");\r\n }\r\n return;\r\n }\r\n if (cell && start === null) {\r\n start = x;\r\n }\r\n });\r\n });\r\n return ops.join('');\r\n }\r\n var QRCodeProps = {\r\n value: {\r\n type: String,\r\n required: true,\r\n \"default\": '',\r\n },\r\n size: {\r\n type: Number,\r\n \"default\": 100,\r\n },\r\n level: {\r\n type: String,\r\n \"default\": defaultErrorCorrectLevel,\r\n validator: function (l) { return validErrorCorrectLevel(l); },\r\n },\r\n background: {\r\n type: String,\r\n \"default\": '#fff',\r\n },\r\n foreground: {\r\n type: String,\r\n \"default\": '#000',\r\n },\r\n margin: {\r\n type: Number,\r\n required: false,\r\n \"default\": 0,\r\n },\r\n };\r\n var QRCodeVueProps = __assign(__assign({}, QRCodeProps), { renderAs: {\r\n type: String,\r\n required: false,\r\n \"default\": 'canvas',\r\n validator: function (as) { return ['canvas', 'svg'].indexOf(as) > -1; },\r\n } });\r\n var QRCodeSvg = vue.defineComponent({\r\n name: 'QRCodeSvg',\r\n props: QRCodeProps,\r\n setup: function (props) {\r\n var numCells = vue.ref(0);\r\n var fgPath = vue.ref('');\r\n var generate = function () {\r\n var value = props.value, level = props.level, margin = props.margin;\r\n var cells = QRCode(value, level).modules;\r\n numCells.value = cells.length + margin * 2;\r\n // Drawing strategy: instead of a rect per module, we're going to create a\r\n // single path for the dark modules and layer that on top of a light rect,\r\n // for a total of 2 DOM nodes. We pay a bit more in string concat but that's\r\n // way faster than DOM ops.\r\n // For level 1, 441 nodes -> 2\r\n // For level 40, 31329 -> 2\r\n fgPath.value = generatePath(cells, margin);\r\n };\r\n generate();\r\n vue.onUpdated(generate);\r\n return function () { return vue.h('svg', {\r\n width: props.size,\r\n height: props.size,\r\n 'shape-rendering': \"crispEdges\",\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n viewBox: \"0 0 \" + numCells.value + \" \" + numCells.value,\r\n }, [\r\n vue.h('path', {\r\n fill: props.background,\r\n d: \"M0,0 h\" + numCells.value + \"v\" + numCells.value + \"H0z\",\r\n }),\r\n vue.h('path', { fill: props.foreground, d: fgPath.value }),\r\n ]); };\r\n },\r\n });\r\n var QRCodeCanvas = vue.defineComponent({\r\n name: 'QRCodeCanvas',\r\n props: QRCodeProps,\r\n setup: function (props) {\r\n var canvasEl = vue.ref(null);\r\n var generate = function () {\r\n var value = props.value, level = props.level, size = props.size, margin = props.margin, background = props.background, foreground = props.foreground;\r\n var cells = QRCode(value, level).modules;\r\n var numCells = cells.length + margin * 2;\r\n var canvas = canvasEl.value;\r\n if (!canvas) {\r\n return;\r\n }\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx) {\r\n return;\r\n }\r\n var devicePixelRatio = window.devicePixelRatio || 1;\r\n var scale = (size / numCells) * devicePixelRatio;\r\n canvas.height = canvas.width = size * devicePixelRatio;\r\n ctx.scale(scale, scale);\r\n ctx.fillStyle = background;\r\n ctx.fillRect(0, 0, numCells, numCells);\r\n ctx.fillStyle = foreground;\r\n if (SUPPORTS_PATH2D) {\r\n ctx.fill(new Path2D(generatePath(cells, margin)));\r\n }\r\n else {\r\n cells.forEach(function (row, rdx) {\r\n row.forEach(function (cell, cdx) {\r\n if (cell) {\r\n ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n vue.onMounted(generate);\r\n vue.onUpdated(generate);\r\n return function () { return vue.h('canvas', {\r\n ref: canvasEl,\r\n style: { width: props.size + \"px\", height: props.size + \"px\" },\r\n }); };\r\n },\r\n });\r\n var QrcodeVue = vue.defineComponent({\r\n name: 'Qrcode',\r\n render: function () {\r\n var _a = this.$props, renderAs = _a.renderAs, value = _a.value, _size = _a.size, _margin = _a.margin, _level = _a.level, background = _a.background, foreground = _a.foreground;\r\n var size = _size >>> 0;\r\n var margin = _margin >>> 0;\r\n var level = validErrorCorrectLevel(_level) ? _level : defaultErrorCorrectLevel;\r\n return vue.h(renderAs === 'svg' ? QRCodeSvg : QRCodeCanvas, { value: value, size: size, margin: margin, level: level, background: background, foreground: foreground });\r\n },\r\n props: QRCodeVueProps,\r\n });\n\n return QrcodeVue;\n\n}));\n"],"sourceRoot":""}