{"version":3,"sources":["jsdelivr-header.js","/npm/vue-next-use@0.0.27/dist/vue-next-use.bundle.esm.js"],"names":[],"mappings":"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","file":"/npm/vue-next-use@0.0.27/dist/vue-next-use.bundle.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/vue-next-use@0.0.27/dist/vue-next-use.bundle.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { isRef, isReactive, ref, onMounted, onUnmounted, watch, unref, computed, onBeforeUnmount, isVNode, createVNode, cloneVNode, reactive, toRaw, readonly } from 'vue';\nexport { ref as useRef } from 'vue';\nimport writeText from 'copy-to-clipboard';\nimport screenfull from 'screenfull';\nimport Cookies from 'js-cookie';\nimport { setHarmonicInterval, clearHarmonicInterval } from 'set-harmonic-interval';\nimport { SpringSystem } from 'rebound';\n\nconst noop = () => {\n};\nfunction on(obj, ...args) {\n    if (obj && obj.addEventListener) {\n        obj.addEventListener(...args);\n    }\n}\nfunction off(obj, ...args) {\n    if (obj && obj.removeEventListener) {\n        obj.removeEventListener(...args);\n    }\n}\nconst isBrowser = typeof window !== 'undefined';\nconst isNavigator = typeof navigator !== 'undefined';\nconst isWatchSource = (target) => {\n    // A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.\n    if (isRef(target) || isReactive(target) || target instanceof Function) {\n        return true;\n    }\n    return false;\n};\n/**\n * filter watch sources\n * @param target\n * @returns\n */\nconst sources = (target) => {\n    const deps = [];\n    if (Array.isArray(target)) {\n        target.forEach((item) => {\n            if (isWatchSource(item)) {\n                deps.push(item);\n            }\n        });\n        return deps.length > 0 ? deps : null;\n    }\n    if (isWatchSource(target)) {\n        return target;\n    }\n    return null;\n};\n\nfunction useMountedState() {\n    const mountedRef = ref(false);\n    const get = () => mountedRef.value;\n    onMounted(() => {\n        mountedRef.value = true;\n    });\n    onUnmounted(() => {\n        mountedRef.value = false;\n    });\n    return get;\n}\n\nfunction useAsyncFn(fn, initialState = { loading: false }) {\n    const lastCallId = ref(0);\n    const isMounted = useMountedState();\n    const [state, set] = useReactive(initialState);\n    const callback = (...args) => {\n        const callId = ++lastCallId.value;\n        state.loading = true;\n        return fn(...args).then((value) => {\n            isMounted() && callId === lastCallId.value && set({ value, loading: false });\n            return value;\n        }, (error) => {\n            isMounted() && callId === lastCallId.value && set({ error, loading: false });\n            return error;\n        });\n    };\n    return [state, callback];\n}\n\nfunction useAsync(fn, deps) {\n    const [state, callback] = useAsyncFn(fn, {\n        loading: true,\n    });\n    if (deps) {\n        watch(deps, () => {\n            callback();\n        }, {\n            immediate: true\n        });\n    }\n    else {\n        callback();\n    }\n    return state;\n}\n\nfunction resolveHookState(nextState, currentState) {\n    if (typeof nextState === 'function') {\n        return nextState.length ? nextState(currentState) : nextState();\n    }\n    return nextState;\n}\n\nfunction useState(initialState) {\n    const state = ref(resolveHookState(initialState));\n    const set = (value) => {\n        if (value instanceof Function) {\n            state.value = value(state.value);\n        }\n        else {\n            state.value = unref(value);\n        }\n    };\n    return [state, set];\n}\n\nfunction useAsyncRetry(fn, deps = []) {\n    const [attempt, setAttempt] = useState(0);\n    const state = useAsync(fn, [...deps, attempt]);\n    state.retry = () => {\n        if (state.loading) {\n            if (process.env.NODE_ENV === 'development') {\n                console.log('You are calling useAsyncRetry hook retry() method while loading in progress, this is a no-op.');\n            }\n            return;\n        }\n        setAttempt((currentAttempt) => currentAttempt + 1);\n    };\n    return state;\n}\n\n// for internal\nfunction useComputedState(initialState) {\n    const [state, setState] = useState(initialState);\n    return [\n        computed(() => {\n            return state.value;\n        }),\n        setState\n    ];\n}\n\nconst useBeforeUnload = (enabled = true, message) => {\n    const handler = (event) => {\n        const finalEnabled = typeof enabled === 'function' ? enabled() : true;\n        if (!finalEnabled) {\n            return;\n        }\n        event.preventDefault();\n        if (message) {\n            event.returnValue = message;\n        }\n        return message;\n    };\n    onMounted(() => {\n        watch([enabled], ([value], oldValue) => {\n            if (value) {\n                on(window, 'beforeunload', handler);\n            }\n            else {\n                off(window, 'beforeunload', handler);\n            }\n        }, {\n            immediate: true\n        });\n    });\n    onBeforeUnmount(() => {\n        off(window, 'beforeunload', handler);\n    });\n};\n\n// 队列\nconst useQueue = (initialValue = []) => {\n    const [state, set] = useState(initialValue);\n    return {\n        add: (value) => {\n            set((queue) => [...queue, value]);\n        },\n        remove: () => {\n            let result = undefined;\n            set(([first, ...rest]) => {\n                result = first;\n                return rest;\n            });\n            return result;\n        },\n        first: computed(() => {\n            return state.value[0];\n        }),\n        last: computed(() => {\n            return state.value[state.value.length - 1];\n        }),\n        size: computed(() => {\n            return state.value.length;\n        }),\n    };\n};\n\nfunction useList(initialList = []) {\n    const [list] = useState(resolveHookState(initialList));\n    const actions = {\n        set: (newList) => {\n            list.value = resolveHookState(newList, list.value);\n        },\n        push: (...items) => {\n            items.length && actions.set((curr) => curr.concat(items));\n        },\n        updateAt: (index, item) => {\n            actions.set((curr) => {\n                const arr = curr.slice();\n                arr[index] = item;\n                return arr;\n            });\n        },\n        insertAt: (index, item) => {\n            actions.set((curr) => {\n                const arr = curr.slice();\n                index > arr.length ? (arr[index] = item) : arr.splice(index, 0, item);\n                return arr;\n            });\n        },\n        update: (predicate, newItem) => {\n            actions.set((curr) => curr.map((item) => (predicate(item, newItem) ? newItem : item)));\n        },\n        updateFirst: (predicate, newItem) => {\n            const index = list.value.findIndex((item) => predicate(item, newItem));\n            index >= 0 && actions.updateAt(index, newItem);\n        },\n        upsert: (predicate, newItem) => {\n            const index = list.value.findIndex((item) => predicate(item, newItem));\n            index >= 0 ? actions.updateAt(index, newItem) : actions.push(newItem);\n        },\n        sort: (compareFn) => {\n            actions.set((curr) => curr.slice().sort(compareFn));\n        },\n        filter: (callbackFn, thisArg) => {\n            actions.set((curr) => curr.slice().filter(callbackFn, thisArg));\n        },\n        removeAt: (index) => {\n            actions.set((curr) => {\n                const arr = curr.slice();\n                arr.splice(index, 1);\n                return arr;\n            });\n        },\n        clear: () => {\n            actions.set([]);\n        },\n        reset: () => {\n            actions.set(resolveHookState(initialList).slice());\n        }\n    };\n    return [computed(() => {\n            return list.value;\n        }), actions];\n}\n\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction __rest(s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n}\n\nconst useMap = (initialMap = {}) => {\n    const [map, set] = useState(initialMap);\n    const stableActions = {\n        set: (key, entry) => {\n            set((prevMap) => (Object.assign(Object.assign({}, prevMap), { [key]: entry })));\n        },\n        setAll: (newMap) => {\n            set(newMap);\n        },\n        remove: (key) => {\n            set((prevMap) => {\n                const _a = prevMap, _b = key; _a[_b]; const rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n                return rest;\n            });\n        },\n        reset: () => set(initialMap),\n    };\n    const utils = Object.assign({ get: (key) => map.value[key] }, stableActions);\n    return [computed(() => {\n            return map.value;\n        }), utils];\n};\n\nfunction useSetState(initialState) {\n    const state = ref(resolveHookState(initialState));\n    const setState = (patch) => {\n        state.value = Object.assign({}, state.value, resolveHookState(patch, state.value));\n    };\n    return [state, setState];\n}\nconst [state, setState] = useSetState({\n    name: '123',\n    id: '123'\n});\nsetState({ name: '123' });\nsetState(() => ({ name: '123' }));\n\nfunction useComputedSetState(initialState) {\n    const [state, setState] = useSetState(initialState);\n    return [computed(() => {\n            return state.value;\n        }), setState];\n}\n\nconst useCopyToClipboard = () => {\n    const isMounted = useMountedState();\n    const [state, setState] = useReactive({\n        value: undefined,\n        error: undefined,\n        noUserInteraction: true,\n    });\n    const copyToClipboard = (value) => {\n        if (!isMounted()) {\n            return;\n        }\n        let noUserInteraction;\n        let normalizedValue;\n        try {\n            value = unref(value);\n            // only strings and numbers casted to strings can be copied to clipboard\n            if (typeof value !== 'string' && typeof value !== 'number') {\n                const error = new Error(`Cannot copy typeof ${typeof value} to clipboard, must be a string`);\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value,\n                    error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            // empty strings are also considered invalid\n            else if (value === '') {\n                const error = new Error(`Cannot copy empty string to clipboard.`);\n                if (process.env.NODE_ENV === 'development')\n                    console.error(error);\n                setState({\n                    value,\n                    error,\n                    noUserInteraction: true,\n                });\n                return;\n            }\n            normalizedValue = value.toString();\n            noUserInteraction = writeText(normalizedValue);\n            setState({\n                value: normalizedValue,\n                error: undefined,\n                noUserInteraction,\n            });\n        }\n        catch (error) {\n            setState({\n                value: normalizedValue,\n                error,\n                noUserInteraction,\n            });\n        }\n    };\n    return [state, copyToClipboard];\n};\n\nconst useToggle = (initialValue) => {\n    const [state, set] = useState(initialValue);\n    const toggle = (nextValue) => {\n        set(typeof nextValue === 'boolean' ? nextValue : !state.value);\n    };\n    return [state, toggle];\n};\n\n// 这个 hook 对于 vue 来说应该意义不大，但还是拿过来吧\nfunction useGetSet(initialState) {\n    const [state, set] = useState(resolveHookState(initialState));\n    return [\n        () => state.value,\n        (newState) => {\n            state.value = resolveHookState(newState, state.value);\n        },\n    ];\n}\n\nconst useSet = (initialSet = new Set()) => {\n    const [set, setSet] = useState(initialSet);\n    const stableActions = () => {\n        const add = (item) => setSet((prevSet) => new Set([...Array.from(prevSet), item]));\n        const remove = (item) => setSet((prevSet) => new Set(Array.from(prevSet).filter((i) => i !== item)));\n        const toggle = (item) => setSet((prevSet) => prevSet.has(item)\n            ? new Set(Array.from(prevSet).filter((i) => i !== item))\n            : new Set([...Array.from(prevSet), item]));\n        return { add, remove, toggle, reset: () => setSet(initialSet) };\n    };\n    const utils = Object.assign({ has: (item) => set.value.has(item) }, stableActions());\n    return [set, utils];\n};\n\nfunction parseTimeRanges(ranges) {\n    const result = [];\n    for (let i = 0; i < ranges.length; i++) {\n        result.push({\n            start: ranges.start(i),\n            end: ranges.end(i),\n        });\n    }\n    return result;\n}\n\nfunction createHTMLMediaHook(tag) {\n    return (elOrProps) => {\n        let element;\n        let props;\n        if (isVNode(elOrProps)) {\n            element = elOrProps;\n            props = element.props;\n        }\n        else {\n            props = elOrProps;\n        }\n        const [state, setState] = useSetState({\n            buffered: [],\n            time: 0,\n            duration: 0,\n            paused: true,\n            muted: false,\n            volume: 1,\n            controls: false,\n            autoplay: true\n        });\n        const ref$1 = ref(null);\n        const wrapEvent = (userEvent, proxyEvent) => {\n            return (event) => {\n                try {\n                    proxyEvent && proxyEvent(event);\n                }\n                finally {\n                    userEvent && userEvent(event);\n                }\n            };\n        };\n        const onPlay = () => setState({ paused: false });\n        const onPause = () => setState({ paused: true });\n        const onVolumeChange = () => {\n            const el = ref$1.value;\n            if (!el) {\n                return;\n            }\n            setState({\n                muted: el.muted,\n                volume: el.volume,\n            });\n        };\n        const onDurationChange = () => {\n            const el = ref$1.value;\n            if (!el) {\n                return;\n            }\n            const { duration, buffered } = el;\n            setState({\n                duration,\n                buffered: parseTimeRanges(buffered),\n            });\n        };\n        const onTimeUpdate = () => {\n            const el = ref$1.value;\n            if (!el) {\n                return;\n            }\n            setState({ time: el.currentTime });\n        };\n        const onProgress = () => {\n            const el = ref$1.value;\n            if (!el) {\n                return;\n            }\n            setState({ buffered: parseTimeRanges(el.buffered) });\n        };\n        if (element) {\n            element = createVNode({\n                render() {\n                    return element && createVNode(element, Object.assign(Object.assign({ controls: false }, props), { ref: ref$1, onPlay: wrapEvent(props.onPlay, onPlay), onPause: wrapEvent(props.onPause, onPause), onVolumechange: wrapEvent(props.onVolumechange, onVolumeChange), onDurationchange: wrapEvent(props.onDurationchange, onDurationChange), onTimeupdate: wrapEvent(props.onTimeupdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) }));\n                }\n            });\n        }\n        else {\n            element = createVNode({\n                setup() {\n                    return () => createVNode(tag, Object.assign(Object.assign({ controls: false }, props), { ref: ref$1, onPlay: wrapEvent(props.onPlay, onPlay), onPause: wrapEvent(props.onPause, onPause), onVolumechange: wrapEvent(props.onVolumechange, onVolumeChange), onDurationchange: wrapEvent(props.onDurationchange, onDurationChange), onTimeupdate: wrapEvent(props.onTimeupdate, onTimeUpdate), onProgress: wrapEvent(props.onProgress, onProgress) }));\n                }\n            }); // TODO: fix this typing.\n        }\n        // Some browsers return `Promise` on `.play()` and may throw errors\n        // if one tries to execute another `.play()` or `.pause()` while that\n        // promise is resolving. So we prevent that with this lock.\n        // See: https://bugs.chromium.org/p/chromium/issues/detail?id=593273\n        let lockPlay = false;\n        const controls = {\n            play: () => {\n                const el = ref$1.value;\n                if (!el) {\n                    return undefined;\n                }\n                if (!lockPlay) {\n                    const promise = el.play();\n                    const isPromise = typeof promise === 'object';\n                    if (isPromise) {\n                        lockPlay = true;\n                        const resetLock = () => {\n                            lockPlay = false;\n                        };\n                        promise.then(resetLock, resetLock);\n                    }\n                    return promise;\n                }\n                return undefined;\n            },\n            pause: () => {\n                const el = ref$1.value;\n                if (el && !lockPlay) {\n                    return el.pause();\n                }\n            },\n            seek: (time) => {\n                const el = ref$1.value;\n                if (!el || state.value.duration === undefined) {\n                    return;\n                }\n                time = Math.min(state.value.duration, Math.max(0, time));\n                if (isNaN(time)) {\n                    console.error(\"HTMLMediaElement currentTime must be a number\", time);\n                }\n                el.currentTime = time;\n            },\n            volume: (volume) => {\n                const el = ref$1.value;\n                if (!el) {\n                    return;\n                }\n                volume = Math.min(1, Math.max(0, volume));\n                el.volume = volume;\n                setState({ volume });\n            },\n            mute: () => {\n                const el = ref$1.value;\n                if (!el) {\n                    return;\n                }\n                el.muted = true;\n                setState({ muted: el.muted });\n            },\n            unmute: () => {\n                const el = ref$1.value;\n                if (!el) {\n                    return;\n                }\n                el.muted = false;\n                setState({ muted: el.muted });\n            },\n            toggle: (controls) => {\n                const el = ref$1.value;\n                if (!el) {\n                    return;\n                }\n                if (controls === undefined) {\n                    el.controls = !el.controls;\n                }\n                else {\n                    el.controls = !!controls;\n                }\n                setState({ controls: el.controls });\n            },\n            autoplay: (autoplay) => {\n                const el = ref$1.value;\n                if (!el) {\n                    if (process.env.NODE_ENV !== 'production') {\n                        if (tag === 'audio') {\n                            console.error('useAudio() ref to <audio> element is empty at mount. ' +\n                                'It seem you have not rendered the audio element, which it ' +\n                                'returns as the first argument const [audio] = useAudio(...).');\n                        }\n                        else if (tag === 'video') {\n                            console.error('useVideo() ref to <video> element is empty at mount. ' +\n                                'It seem you have not rendered the video element, which it ' +\n                                'returns as the first argument const [video] = useVideo(...).');\n                        }\n                    }\n                    return;\n                }\n                el.autoplay = !!autoplay;\n            },\n            change: (src) => {\n                const el = ref$1.value;\n                if (!el) {\n                    return;\n                }\n                if (el.src == src) {\n                    return;\n                }\n                el.src = src;\n                setState({\n                    volume: el.volume,\n                    muted: el.muted,\n                    paused: el.paused,\n                });\n                // Start media, if autoPlay requested.\n                if (el.autoplay && el.paused) {\n                    controls.play();\n                }\n            }\n        };\n        useEffect(() => {\n            const el = ref$1.value;\n            if (!el) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (tag === 'audio') {\n                        console.error('useAudio() ref to <audio> element is empty at mount. ' +\n                            'It seem you have not rendered the audio element, which it ' +\n                            'returns as the first argument const [audio] = useAudio(...).');\n                    }\n                    else if (tag === 'video') {\n                        console.error('useVideo() ref to <video> element is empty at mount. ' +\n                            'It seem you have not rendered the video element, which it ' +\n                            'returns as the first argument const [video] = useVideo(...).');\n                    }\n                }\n                return;\n            }\n            if (el.src == unref(props.src)) {\n                return;\n            }\n            el.src = unref(props.src);\n            setState({\n                volume: el.volume,\n                muted: el.muted,\n                paused: el.paused,\n            });\n            // Start media, if autoPlay requested.\n            if (props.autoplay && el.paused) {\n                controls.play();\n            }\n        }, sources(props.src));\n        return [() => element, computed(() => {\n                return state.value;\n            }), controls, ref$1];\n    };\n}\n\nconst useAudio = createHTMLMediaHook('audio');\n\nconst useVideo = createHTMLMediaHook('video');\n\nconst voices = isBrowser && typeof window.speechSynthesis === 'object' ? window.speechSynthesis.getVoices() : [];\nconst useSpeech = (text, opts = {}) => {\n    const [state, setState] = useReadonly({\n        isPlaying: false,\n        lang: opts.lang || 'default',\n        voice: opts.voice || voices[0],\n        rate: opts.rate || 1,\n        pitch: opts.pitch || 1,\n        volume: opts.volume || 1,\n    });\n    const utteranceRef = ref(null);\n    useMounted(() => {\n        const utterance = new SpeechSynthesisUtterance(text);\n        opts.lang && (utterance.lang = opts.lang);\n        opts.voice && (utterance.voice = opts.voice);\n        utterance.rate = opts.rate || 1;\n        utterance.pitch = opts.pitch || 1;\n        utterance.volume = opts.volume || 1;\n        utterance.onstart = () => setState({ isPlaying: true });\n        utterance.onresume = () => setState({ isPlaying: true });\n        utterance.onend = () => setState({ isPlaying: false });\n        utterance.onpause = () => setState({ isPlaying: false });\n        utteranceRef.value = utterance;\n        window.speechSynthesis.speak(utteranceRef.value);\n    });\n    return state;\n};\n\nconst defaultEvents$1 = ['mousedown', 'touchstart'];\nconst useClickAway = (ref, onClickAway, events = defaultEvents$1) => {\n    const handler = (event) => {\n        const { value: el } = ref;\n        el && !el.contains(event.target) && onClickAway(event);\n    };\n    useEffect(() => {\n        for (const eventName of events) {\n            on(document, eventName, handler);\n        }\n        return () => {\n            for (const eventName of events) {\n                off(document, eventName, handler);\n            }\n        };\n    });\n};\n\nconst createProcess$1 = (options, isMounted) => (dataTransfer, event) => {\n    const uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (dataTransfer.items && dataTransfer.items.length) {\n        dataTransfer.items[0].getAsString((text) => {\n            if (isMounted()) {\n                (options.onText || noop)(text, event);\n            }\n        });\n    }\n};\nconst useDrop = (options = {}, args = []) => {\n    const { ref, onFiles, onText, onUri } = options;\n    const [state, set] = useReadonly({ over: false });\n    const setOver = (over) => {\n        set({ over });\n    };\n    const isMounted = useMountedState();\n    const process = createProcess$1(options, isMounted);\n    useEffect(() => {\n        const element = (ref === null || ref === void 0 ? void 0 : ref.value) ? ref.value : document;\n        const onDragOver = (event) => {\n            event.preventDefault();\n            setOver(true);\n        };\n        const onDragEnter = (event) => {\n            event.preventDefault();\n            setOver(true);\n        };\n        const onDragLeave = () => {\n            setOver(false);\n        };\n        const onDragExit = () => {\n            setOver(false);\n        };\n        const onDrop = (event) => {\n            event.preventDefault();\n            setOver(false);\n            process(event.dataTransfer, event);\n        };\n        const onPaste = (event) => {\n            process(event.clipboardData, event);\n        };\n        on(element, 'dragover', onDragOver);\n        on(element, 'dragenter', onDragEnter);\n        on(element, 'dragleave', onDragLeave);\n        on(element, 'dragexit', onDragExit);\n        on(element, 'drop', onDrop);\n        if (onText) {\n            on(element, 'paste', onPaste);\n        }\n        return () => {\n            off(element, 'dragover', onDragOver);\n            off(element, 'dragenter', onDragEnter);\n            off(element, 'dragleave', onDragLeave);\n            off(element, 'dragexit', onDragExit);\n            off(element, 'drop', onDrop);\n            off(element, 'paste', onPaste);\n        };\n    }, sources([ref]));\n    return state;\n};\n\n/*\nconst defaultState: DropAreaState = {\n  over: false,\n};\n*/\nconst createProcess = (options, isMounted) => (dataTransfer, event) => {\n    const uri = dataTransfer.getData('text/uri-list');\n    if (uri) {\n        (options.onUri || noop)(uri, event);\n        return;\n    }\n    if (dataTransfer.files && dataTransfer.files.length) {\n        (options.onFiles || noop)(Array.from(dataTransfer.files), event);\n        return;\n    }\n    if (dataTransfer.items && dataTransfer.items.length) {\n        dataTransfer.items[0].getAsString((text) => {\n            if (isMounted()) {\n                (options.onText || noop)(text, event);\n            }\n        });\n    }\n};\nconst createBond = (process, setOver) => ({\n    onDragover: (event) => {\n        event.preventDefault();\n        setOver(true);\n    },\n    onDragenter: (event) => {\n        event.preventDefault();\n        setOver(true);\n    },\n    onDragleave: () => {\n        setOver(false);\n    },\n    onDrop: (event) => {\n        event.preventDefault();\n        setOver(false);\n        process(event.dataTransfer, event);\n    },\n    onPaste: (event) => {\n        process(event.clipboardData, event);\n    },\n});\n// 绑定事件\n// @dragover=\"bond.onDragOver\"\n// @dragenter=\"bond.onDragEnter\"\n// @dragleave=\"bond.onDragLeave\"\n// @drop=\"bond.onDrop\"\n// @paste=\"bond.onPaste\"\nconst useDropArea = (options = {}) => {\n    const isMounted = useMountedState();\n    const [state, set] = useReadonly({ over: false });\n    const setOver = (over) => {\n        set({ over });\n    };\n    const process = createProcess(options, isMounted);\n    const bond = createBond(process, setOver);\n    return [bond, state];\n};\n\nconst useFullscreen = (ref, enabled, options = {}) => {\n    const { video, onClose = noop } = options;\n    const [isFullscreen, setIsFullscreen] = useState(unref(enabled));\n    useEffect(() => {\n        if (!unref(enabled)) {\n            return;\n        }\n        if (!ref.value) {\n            return;\n        }\n        const onWebkitEndFullscreen = () => {\n            if (video === null || video === void 0 ? void 0 : video.value) {\n                off(video.value, 'webkitendfullscreen', onWebkitEndFullscreen);\n            }\n            onClose();\n        };\n        const onChange = () => {\n            if (screenfull.isEnabled) {\n                const isScreenfullFullscreen = screenfull.isFullscreen;\n                setIsFullscreen(isScreenfullFullscreen);\n                if (!isScreenfullFullscreen) {\n                    onClose();\n                }\n            }\n        };\n        if (screenfull.isEnabled) {\n            try {\n                screenfull.request(ref.value);\n                setIsFullscreen(true);\n            }\n            catch (error) {\n                onClose(error);\n                setIsFullscreen(false);\n            }\n            screenfull.on('change', onChange);\n        }\n        else if (video && video.value && video.value.webkitEnterFullscreen) {\n            video.value.webkitEnterFullscreen();\n            on(video.value, 'webkitendfullscreen', onWebkitEndFullscreen);\n            setIsFullscreen(true);\n        }\n        else {\n            onClose();\n            setIsFullscreen(false);\n        }\n        return () => {\n            setIsFullscreen(false);\n            if (screenfull.isEnabled) {\n                try {\n                    screenfull.off('change', onChange);\n                    screenfull.exit();\n                }\n                catch (_a) {\n                }\n            }\n            else if (video && video.value && video.value.webkitExitFullscreen) {\n                off(video.value, 'webkitendfullscreen', onWebkitEndFullscreen);\n                video.value.webkitExitFullscreen();\n            }\n        };\n    }, enabled);\n    return computed(() => {\n        return isFullscreen.value;\n    });\n};\n\nconst useCookie = (cookieName) => {\n    const [value, setValue] = useComputedState(() => (Cookies.get(cookieName) || null));\n    const updateCookie = (newValue, options) => {\n        Cookies.set(cookieName, newValue, options);\n        setValue(newValue);\n    };\n    const deleteCookie = () => {\n        Cookies.remove(cookieName);\n        setValue(null);\n    };\n    return [value, updateCookie, deleteCookie];\n};\n\n// fn: Function - function that will be called;\n// ms: number - delay in milliseconds;\n// isReady: ComputedRef<boolean|null> - the current timeout state:\n//      false - pending\n//      true - called\n//      null - cancelled\n// cancel: ()=>void - cancel the timeout\n// reset: ()=>void - reset the timeout\nfunction useTimeoutFn(fn, ms = 0) {\n    const timeout = ref();\n    const isReady = ref(false);\n    const set = () => {\n        isReady.value = false;\n        timeout.value && clearTimeout(timeout.value);\n        timeout.value = setTimeout(() => {\n            isReady.value = true;\n            unref(fn)();\n        }, unref(ms));\n    };\n    const clear = () => {\n        isReady.value = null;\n        timeout.value && clearTimeout(timeout.value);\n    };\n    // set on mount, clear on unmount\n    useEffect(() => {\n        set();\n        return clear;\n    }, isRef(ms) ? ms : null);\n    return [computed(() => {\n            return isReady.value;\n        }), clear, set];\n}\n\nfunction useTimeout(ms = 0) {\n    return useTimeoutFn(() => {\n        return;\n    }, ms);\n}\n\nconst useInterval = (callback, delay) => {\n    const savedCallback = ref(unref(callback));\n    if (isRef(callback)) {\n        watch(callback, () => {\n            savedCallback.value = unref(callback);\n        });\n    }\n    useEffect(() => {\n        if (unref(delay) !== null) {\n            const interval = setInterval(unref(savedCallback), unref(delay) || 0);\n            return () => clearInterval(interval);\n        }\n        return undefined;\n    }, sources(delay));\n};\n\nconst useHarmonicIntervalFn = (fn, delay = 0) => {\n    const latestCallback = ref(() => {\n        // void\n    });\n    useEffect(() => {\n        latestCallback.value = fn;\n    });\n    useEffect(() => {\n        if (unref(delay) !== null) {\n            const interval = setHarmonicInterval(() => latestCallback.value, unref(delay) || 0);\n            return () => clearHarmonicInterval(interval);\n        }\n        return undefined;\n    }, isRef(delay) ? delay : undefined);\n};\n\nfunction useEffect(fn, deps = undefined) {\n    const [callback, setCallback] = useState(undefined);\n    onMounted(() => {\n        setCallback(() => fn());\n        if (deps) {\n            watch(deps, (newValue, oldValue) => {\n                if (callback.value instanceof Function) {\n                    callback.value();\n                }\n                setCallback(() => fn());\n            });\n        }\n    });\n    onUnmounted(() => {\n        if (callback.value instanceof Function) {\n            callback.value();\n        }\n    });\n}\n\nconst useSpring = (targetValue = 0, tension = 50, friction = 3) => {\n    const [spring, setSpring] = useState(null);\n    const [value, setValue] = useState(unref(targetValue));\n    // memoize listener to being able to unsubscribe later properly, otherwise\n    // listener fn will be different on each re-render and wouldn't unsubscribe properly.\n    const listener = {\n        onSpringUpdate: (currentSpring) => {\n            const newValue = currentSpring.getCurrentValue();\n            setValue(newValue);\n        },\n    };\n    useEffect(() => {\n        if (!spring.value) {\n            const newSpring = new SpringSystem().createSpring(unref(tension), unref(friction));\n            newSpring.setCurrentValue(unref(targetValue));\n            setSpring(newSpring);\n            newSpring.addListener(listener);\n        }\n        return () => {\n            if (spring.value) {\n                spring.value.removeListener(listener);\n                setSpring(null);\n            }\n        };\n    }, [\n        computed(() => {\n            return unref(tension);\n        }),\n        computed(() => {\n            return unref(friction);\n        })\n    ]);\n    useEffect(() => {\n        if (spring.value) {\n            spring.value.setEndValue(unref(targetValue));\n        }\n    }, isRef(targetValue) ? targetValue : null);\n    return value;\n};\n\nconst defaultTarget = isBrowser ? window : null;\nconst isListenerType1 = (target) => {\n    return !!target.addEventListener;\n};\nconst isListenerType2 = (target) => {\n    return !!target.on;\n};\nconst useEvent = (name, handler, target = defaultTarget, options) => {\n    useEffect(() => {\n        if (!handler) {\n            return;\n        }\n        if (!target) {\n            return;\n        }\n        const element = unref(target);\n        const fn = unref(handler);\n        if (isListenerType1(element)) {\n            on(element, name, fn, options);\n        }\n        else if (isListenerType2(element)) {\n            element.on(name, fn, options);\n        }\n        return () => {\n            if (isListenerType1(element)) {\n                off(element, name, fn, options);\n            }\n            else if (isListenerType2(element)) {\n                element.off(name, fn, options);\n            }\n        };\n    }, sources([name, isRef(handler) ? handler : () => handler, target, JSON.stringify(options)]));\n};\n\nconst createKeyPredicate = (keyFilter) => typeof keyFilter === 'function'\n    ? keyFilter\n    : typeof keyFilter === 'string'\n        ? (event) => event.key === keyFilter\n        : keyFilter\n            ? () => true\n            : () => false;\nconst useKey = (key, fn = noop, opts = {}) => {\n    const { event = 'keydown', target, options } = opts;\n    const [predicate, setPredicate] = useState(() => createKeyPredicate(unref(key)));\n    if (isRef(key)) {\n        watch(key, () => {\n            setPredicate(() => createKeyPredicate(unref(key)));\n        });\n    }\n    const handler = (handlerEvent) => {\n        if (unref(predicate)(handlerEvent)) {\n            return fn(handlerEvent);\n        }\n    };\n    useEvent(event, handler, target, options);\n};\n\nvar UseKey = {\n  template: '<Fragment></Fragment>',\n  props: {\n    filter: {\n      type: [String, Function],\n      required: true\n    },\n    fn: {\n      type: Function\n    },\n    event: {\n      type: String\n    },\n    target: {\n      Object\n    },\n    options: {\n      Object\n    }\n  },\n  setup(props) {\n    const {\n      filter,\n      fn,\n      ...rest\n    } = props;\n    useKey(filter, fn, rest);\n    return {};\n  }\n};\n\nconst useGeolocation = (options) => {\n    const [state, setState] = useReadonly({\n        loading: true,\n        accuracy: null,\n        altitude: null,\n        altitudeAccuracy: null,\n        heading: null,\n        latitude: null,\n        longitude: null,\n        speed: null,\n        timestamp: Date.now(),\n    });\n    let mounted = true;\n    let watchId;\n    const onEvent = (event) => {\n        if (mounted) {\n            setState({\n                loading: false,\n                accuracy: event.coords.accuracy,\n                altitude: event.coords.altitude,\n                altitudeAccuracy: event.coords.altitudeAccuracy,\n                heading: event.coords.heading,\n                latitude: event.coords.latitude,\n                longitude: event.coords.longitude,\n                speed: event.coords.speed,\n                timestamp: event.timestamp,\n            });\n        }\n    };\n    const onEventError = (error) => mounted && setState((oldState) => (Object.assign(Object.assign({}, oldState), { loading: false, error })));\n    useEffect(() => {\n        navigator.geolocation.getCurrentPosition(onEvent, onEventError, options);\n        watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options);\n        return () => {\n            mounted = false;\n            navigator.geolocation.clearWatch(watchId);\n        };\n    });\n    return state;\n};\n\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n  var timeoutID;\n  var cancelled = false;\n  var lastExec = 0;\n  function clearExistingTimeout() {\n    if (timeoutID) {\n      clearTimeout(timeoutID);\n    }\n  }\n  function cancel() {\n    clearExistingTimeout();\n    cancelled = true;\n  }\n  if (typeof noTrailing !== 'boolean') {\n    debounceMode = callback;\n    callback = noTrailing;\n    noTrailing = undefined;\n  }\n  function wrapper() {\n    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n      arguments_[_key] = arguments[_key];\n    }\n    var self = this;\n    var elapsed = Date.now() - lastExec;\n    if (cancelled) {\n      return;\n    }\n    function exec() {\n      lastExec = Date.now();\n      callback.apply(self, arguments_);\n    }\n    function clear() {\n      timeoutID = undefined;\n    }\n    if (debounceMode && !timeoutID) {\n      exec();\n    }\n    clearExistingTimeout();\n    if (debounceMode === undefined && elapsed > delay) {\n      exec();\n    } else if (noTrailing !== true) {\n      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n    }\n  }\n  wrapper.cancel = cancel;\n  return wrapper;\n}\n\nconst defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nconst oneMinute = 60e3;\nconst useIdle = (ms = oneMinute, initialState = false, events = defaultEvents) => {\n    const [state, setState] = useState(initialState);\n    useEffect(() => {\n        let mounted = true;\n        let timeout;\n        let localState = state.value;\n        const set = (newState) => {\n            if (mounted) {\n                localState = newState;\n                setState(newState);\n            }\n        };\n        const onEvent = throttle(50, () => {\n            if (localState) {\n                set(false);\n            }\n            clearTimeout(timeout);\n            timeout = setTimeout(() => set(true), unref(ms));\n        });\n        const onVisibility = () => {\n            if (!document.hidden) {\n                onEvent();\n            }\n        };\n        const e = unref(events);\n        for (let i = 0; i < e.length; i++) {\n            on(window, e[i], onEvent);\n        }\n        on(document, 'visibilitychange', onVisibility);\n        timeout = setTimeout(() => set(true), ms);\n        return () => {\n            mounted = false;\n            for (let i = 0; i < e.length; i++) {\n                off(window, e[i], onEvent);\n            }\n            off(document, 'visibilitychange', onVisibility);\n        };\n    }, sources([ms, events]));\n    return computed(() => {\n        return state.value;\n    });\n};\n\nconst useHover = (element) => {\n    var _a, _b;\n    const [state, setState] = useState(false);\n    const onMouseEnter = (originalOnMouseEnter) => (event) => {\n        (originalOnMouseEnter || noop)(event);\n        setState(true);\n    };\n    const onMouseLeave = (originalOnMouseLeave) => (event) => {\n        (originalOnMouseLeave || noop)(event);\n        setState(false);\n    };\n    if (typeof element === 'function') {\n        element = element(state);\n    }\n    const el = cloneVNode(element, {\n        onmouseenter: onMouseEnter((_a = element === null || element === void 0 ? void 0 : element.props) === null || _a === void 0 ? void 0 : _a.onMouseEnter),\n        onmouseleave: onMouseLeave((_b = element === null || element === void 0 ? void 0 : element.props) === null || _b === void 0 ? void 0 : _b.onMouseLeave),\n    });\n    return [el, computed(() => {\n            return state.value;\n        })];\n};\n\n// kudos: https://usehooks.com/\nconst useHoverDirty = (ref, enabled = true) => {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof unref(ref) === 'undefined') {\n            console.error('useHoverDirty expects a single ref argument.');\n        }\n    }\n    const [value, setValue] = useComputedState(false);\n    const onMouseOver = () => setValue(true);\n    const onMouseOut = () => setValue(false);\n    useEffect(() => {\n        if (enabled && ref && ref.value) {\n            on(ref.value, 'mouseover', onMouseOver);\n            on(ref.value, 'mouseout', onMouseOut);\n        }\n        // fixes react-hooks/exhaustive-deps warning about stale ref elements\n        const { value } = ref;\n        return () => {\n            if (enabled && value) {\n                off(value, 'mouseover', onMouseOver);\n                off(value, 'mouseout', onMouseOut);\n            }\n        };\n    }, sources([enabled, ref]));\n    return value;\n};\n\n/**\n * read and write url hash, response to url hash change\n */\nfunction useHash() {\n    const [hash, setHash] = useState(() => window.location.hash);\n    const onHashChange = () => {\n        setHash(window.location.hash);\n    };\n    useEffect(() => {\n        on(window, 'hashchange', onHashChange);\n        return () => {\n            off(window, 'hashchange', onHashChange);\n        };\n    });\n    watch(hash, (newHash) => {\n        if (window.location.hash != newHash) {\n            window.location.hash = newHash;\n        }\n    });\n    const _setHash = (newHash) => {\n        if (newHash !== unref(hash)) {\n            window.location.hash = newHash;\n        }\n    };\n    return [hash, _setHash];\n}\n\nconst useIntersection = (ref, options) => {\n    const [intersectionObserverEntry, setIntersectionObserverEntry,] = useComputedState(null);\n    const deps = [ref];\n    if (isRef(options)) {\n        deps.push(() => unref(options).threshold);\n        deps.push(() => unref(options).root);\n        deps.push(() => unref(options).rootMargin);\n    }\n    else {\n        deps.push(options === null || options === void 0 ? void 0 : options.threshold);\n        deps.push(options === null || options === void 0 ? void 0 : options.root);\n        deps.push(options === null || options === void 0 ? void 0 : options.rootMargin);\n    }\n    useEffect(() => {\n        if (ref.value && typeof IntersectionObserver === 'function') {\n            const handler = (entries) => {\n                setIntersectionObserverEntry(entries[0]);\n            };\n            const observer = new IntersectionObserver(handler, unref(options));\n            observer.observe(ref.value);\n            return () => {\n                setIntersectionObserverEntry(null);\n                observer.disconnect();\n            };\n        }\n        return () => {\n        };\n    }, sources(deps));\n    return intersectionObserverEntry;\n};\n\nconst useKeyPress = (keyFilter) => {\n    const [state, set] = useState([false, null]);\n    useKey(keyFilter, (event) => set([true, event]), { event: 'keydown' });\n    useKey(keyFilter, (event) => set([false, event]), { event: 'keyup' });\n    return [computed(() => state.value[0]), computed(() => state.value[1])];\n};\n\nconst useKeyPressEvent = (key, keydown, keyup, useKeyPress$1 = useKeyPress) => {\n    const [pressed, event] = useKeyPress$1(key);\n    watch(pressed, (newPressed) => {\n        if (!newPressed && keyup) {\n            keyup(unref(event));\n        }\n        else if (newPressed && keydown) {\n            keydown(unref(event));\n        }\n    });\n};\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn) {\n  var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nvar keyboard = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n  module.exports = factory() ;\n}(commonjsGlobal, (function () {  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n    return _typeof(obj);\n  }\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n  }\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n    return arr2;\n  }\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var KeyCombo = function () {\n    function KeyCombo(keyComboStr) {\n      _classCallCheck(this, KeyCombo);\n      this.sourceStr = keyComboStr;\n      this.subCombos = KeyCombo.parseComboStr(keyComboStr);\n      this.keyNames = this.subCombos.reduce(function (memo, nextSubCombo) {\n        return memo.concat(nextSubCombo);\n      }, []);\n    }\n    _createClass(KeyCombo, [{\n      key: \"check\",\n      value: function check(pressedKeyNames) {\n        var startingKeyNameIndex = 0;\n        for (var i = 0; i < this.subCombos.length; i += 1) {\n          startingKeyNameIndex = this._checkSubCombo(this.subCombos[i], startingKeyNameIndex, pressedKeyNames);\n          if (startingKeyNameIndex === -1) {\n            return false;\n          }\n        }\n        return true;\n      }\n    }, {\n      key: \"isEqual\",\n      value: function isEqual(otherKeyCombo) {\n        if (!otherKeyCombo || typeof otherKeyCombo !== 'string' && _typeof(otherKeyCombo) !== 'object') {\n          return false;\n        }\n        if (typeof otherKeyCombo === 'string') {\n          otherKeyCombo = new KeyCombo(otherKeyCombo);\n        }\n        if (this.subCombos.length !== otherKeyCombo.subCombos.length) {\n          return false;\n        }\n        for (var i = 0; i < this.subCombos.length; i += 1) {\n          if (this.subCombos[i].length !== otherKeyCombo.subCombos[i].length) {\n            return false;\n          }\n        }\n        for (var _i = 0; _i < this.subCombos.length; _i += 1) {\n          var subCombo = this.subCombos[_i];\n          var otherSubCombo = otherKeyCombo.subCombos[_i].slice(0);\n          for (var j = 0; j < subCombo.length; j += 1) {\n            var keyName = subCombo[j];\n            var index = otherSubCombo.indexOf(keyName);\n            if (index > -1) {\n              otherSubCombo.splice(index, 1);\n            }\n          }\n          if (otherSubCombo.length !== 0) {\n            return false;\n          }\n        }\n        return true;\n      }\n    }, {\n      key: \"_checkSubCombo\",\n      value: function _checkSubCombo(subCombo, startingKeyNameIndex, pressedKeyNames) {\n        subCombo = subCombo.slice(0);\n        pressedKeyNames = pressedKeyNames.slice(startingKeyNameIndex);\n        var endIndex = startingKeyNameIndex;\n        for (var i = 0; i < subCombo.length; i += 1) {\n          var keyName = subCombo[i];\n          if (keyName[0] === '\\\\') {\n            var escapedKeyName = keyName.slice(1);\n            if (escapedKeyName === KeyCombo.comboDeliminator || escapedKeyName === KeyCombo.keyDeliminator) {\n              keyName = escapedKeyName;\n            }\n          }\n          var index = pressedKeyNames.indexOf(keyName);\n          if (index > -1) {\n            subCombo.splice(i, 1);\n            i -= 1;\n            if (index > endIndex) {\n              endIndex = index;\n            }\n            if (subCombo.length === 0) {\n              return endIndex;\n            }\n          }\n        }\n        return -1;\n      }\n    }]);\n    return KeyCombo;\n  }();\n  KeyCombo.comboDeliminator = '>';\n  KeyCombo.keyDeliminator = '+';\n  KeyCombo.parseComboStr = function (keyComboStr) {\n    var subComboStrs = KeyCombo._splitStr(keyComboStr, KeyCombo.comboDeliminator);\n    var combo = [];\n    for (var i = 0; i < subComboStrs.length; i += 1) {\n      combo.push(KeyCombo._splitStr(subComboStrs[i], KeyCombo.keyDeliminator));\n    }\n    return combo;\n  };\n  KeyCombo._splitStr = function (str, deliminator) {\n    var s = str;\n    var d = deliminator;\n    var c = '';\n    var ca = [];\n    for (var ci = 0; ci < s.length; ci += 1) {\n      if (ci > 0 && s[ci] === d && s[ci - 1] !== '\\\\') {\n        ca.push(c.trim());\n        c = '';\n        ci += 1;\n      }\n      c += s[ci];\n    }\n    if (c) {\n      ca.push(c.trim());\n    }\n    return ca;\n  };\n  var Locale = function () {\n    function Locale(name) {\n      _classCallCheck(this, Locale);\n      this.localeName = name;\n      this.activeTargetKeys = [];\n      this.pressedKeys = [];\n      this._appliedMacros = [];\n      this._keyMap = {};\n      this._killKeyCodes = [];\n      this._macros = [];\n    }\n    _createClass(Locale, [{\n      key: \"bindKeyCode\",\n      value: function bindKeyCode(keyCode, keyNames) {\n        if (typeof keyNames === 'string') {\n          keyNames = [keyNames];\n        }\n        this._keyMap[keyCode] = keyNames;\n      }\n    }, {\n      key: \"bindMacro\",\n      value: function bindMacro(keyComboStr, keyNames) {\n        if (typeof keyNames === 'string') {\n          keyNames = [keyNames];\n        }\n        var handler = null;\n        if (typeof keyNames === 'function') {\n          handler = keyNames;\n          keyNames = null;\n        }\n        var macro = {\n          keyCombo: new KeyCombo(keyComboStr),\n          keyNames: keyNames,\n          handler: handler\n        };\n        this._macros.push(macro);\n      }\n    }, {\n      key: \"getKeyCodes\",\n      value: function getKeyCodes(keyName) {\n        var keyCodes = [];\n        for (var keyCode in this._keyMap) {\n          var index = this._keyMap[keyCode].indexOf(keyName);\n          if (index > -1) {\n            keyCodes.push(keyCode | 0);\n          }\n        }\n        return keyCodes;\n      }\n    }, {\n      key: \"getKeyNames\",\n      value: function getKeyNames(keyCode) {\n        return this._keyMap[keyCode] || [];\n      }\n    }, {\n      key: \"setKillKey\",\n      value: function setKillKey(keyCode) {\n        if (typeof keyCode === 'string') {\n          var keyCodes = this.getKeyCodes(keyCode);\n          for (var i = 0; i < keyCodes.length; i += 1) {\n            this.setKillKey(keyCodes[i]);\n          }\n          return;\n        }\n        this._killKeyCodes.push(keyCode);\n      }\n    }, {\n      key: \"pressKey\",\n      value: function pressKey(keyCode) {\n        if (typeof keyCode === 'string') {\n          var keyCodes = this.getKeyCodes(keyCode);\n          for (var i = 0; i < keyCodes.length; i += 1) {\n            this.pressKey(keyCodes[i]);\n          }\n          return;\n        }\n        this.activeTargetKeys.length = 0;\n        var keyNames = this.getKeyNames(keyCode);\n        for (var _i = 0; _i < keyNames.length; _i += 1) {\n          this.activeTargetKeys.push(keyNames[_i]);\n          if (this.pressedKeys.indexOf(keyNames[_i]) === -1) {\n            this.pressedKeys.push(keyNames[_i]);\n          }\n        }\n        this._applyMacros();\n      }\n    }, {\n      key: \"releaseKey\",\n      value: function releaseKey(keyCode) {\n        if (typeof keyCode === 'string') {\n          var keyCodes = this.getKeyCodes(keyCode);\n          for (var i = 0; i < keyCodes.length; i += 1) {\n            this.releaseKey(keyCodes[i]);\n          }\n        } else {\n          var keyNames = this.getKeyNames(keyCode);\n          var killKeyCodeIndex = this._killKeyCodes.indexOf(keyCode);\n          if (killKeyCodeIndex !== -1) {\n            this.pressedKeys.length = 0;\n          } else {\n            for (var _i2 = 0; _i2 < keyNames.length; _i2 += 1) {\n              var index = this.pressedKeys.indexOf(keyNames[_i2]);\n              if (index > -1) {\n                this.pressedKeys.splice(index, 1);\n              }\n            }\n          }\n          this.activeTargetKeys.length = 0;\n          this._clearMacros();\n        }\n      }\n    }, {\n      key: \"_applyMacros\",\n      value: function _applyMacros() {\n        var macros = this._macros.slice(0);\n        for (var i = 0; i < macros.length; i += 1) {\n          var macro = macros[i];\n          if (macro.keyCombo.check(this.pressedKeys)) {\n            if (macro.handler) {\n              macro.keyNames = macro.handler(this.pressedKeys);\n            }\n            for (var j = 0; j < macro.keyNames.length; j += 1) {\n              if (this.pressedKeys.indexOf(macro.keyNames[j]) === -1) {\n                this.pressedKeys.push(macro.keyNames[j]);\n              }\n            }\n            this._appliedMacros.push(macro);\n          }\n        }\n      }\n    }, {\n      key: \"_clearMacros\",\n      value: function _clearMacros() {\n        for (var i = 0; i < this._appliedMacros.length; i += 1) {\n          var macro = this._appliedMacros[i];\n          if (!macro.keyCombo.check(this.pressedKeys)) {\n            for (var j = 0; j < macro.keyNames.length; j += 1) {\n              var index = this.pressedKeys.indexOf(macro.keyNames[j]);\n              if (index > -1) {\n                this.pressedKeys.splice(index, 1);\n              }\n            }\n            if (macro.handler) {\n              macro.keyNames = null;\n            }\n            this._appliedMacros.splice(i, 1);\n            i -= 1;\n          }\n        }\n      }\n    }]);\n    return Locale;\n  }();\n  var Keyboard = function () {\n    function Keyboard(targetWindow, targetElement, targetPlatform, targetUserAgent) {\n      _classCallCheck(this, Keyboard);\n      this._locale = null;\n      this._currentContext = '';\n      this._contexts = {};\n      this._listeners = [];\n      this._appliedListeners = [];\n      this._locales = {};\n      this._targetElement = null;\n      this._targetWindow = null;\n      this._targetPlatform = '';\n      this._targetUserAgent = '';\n      this._isModernBrowser = false;\n      this._targetKeyDownBinding = null;\n      this._targetKeyUpBinding = null;\n      this._targetResetBinding = null;\n      this._paused = false;\n      this._contexts.global = {\n        listeners: this._listeners,\n        targetWindow: targetWindow,\n        targetElement: targetElement,\n        targetPlatform: targetPlatform,\n        targetUserAgent: targetUserAgent\n      };\n      this.setContext('global');\n    }\n    _createClass(Keyboard, [{\n      key: \"setLocale\",\n      value: function setLocale(localeName, localeBuilder) {\n        var locale = null;\n        if (typeof localeName === 'string') {\n          if (localeBuilder) {\n            locale = new Locale(localeName);\n            localeBuilder(locale, this._targetPlatform, this._targetUserAgent);\n          } else {\n            locale = this._locales[localeName] || null;\n          }\n        } else {\n          locale = localeName;\n          localeName = locale._localeName;\n        }\n        this._locale = locale;\n        this._locales[localeName] = locale;\n        if (locale) {\n          this._locale.pressedKeys = locale.pressedKeys;\n        }\n        return this;\n      }\n    }, {\n      key: \"getLocale\",\n      value: function getLocale(localName) {\n        localName || (localName = this._locale.localeName);\n        return this._locales[localName] || null;\n      }\n    }, {\n      key: \"bind\",\n      value: function bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault) {\n        if (keyComboStr === null || typeof keyComboStr === 'function') {\n          preventRepeatByDefault = releaseHandler;\n          releaseHandler = pressHandler;\n          pressHandler = keyComboStr;\n          keyComboStr = null;\n        }\n        if (keyComboStr && _typeof(keyComboStr) === 'object' && typeof keyComboStr.length === 'number') {\n          for (var i = 0; i < keyComboStr.length; i += 1) {\n            this.bind(keyComboStr[i], pressHandler, releaseHandler);\n          }\n          return this;\n        }\n        this._listeners.push({\n          keyCombo: keyComboStr ? new KeyCombo(keyComboStr) : null,\n          pressHandler: pressHandler || null,\n          releaseHandler: releaseHandler || null,\n          preventRepeat: preventRepeatByDefault || false,\n          preventRepeatByDefault: preventRepeatByDefault || false,\n          executingHandler: false\n        });\n        return this;\n      }\n    }, {\n      key: \"addListener\",\n      value: function addListener(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault) {\n        return this.bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault);\n      }\n    }, {\n      key: \"on\",\n      value: function on(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault) {\n        return this.bind(keyComboStr, pressHandler, releaseHandler, preventRepeatByDefault);\n      }\n    }, {\n      key: \"bindPress\",\n      value: function bindPress(keyComboStr, pressHandler, preventRepeatByDefault) {\n        return this.bind(keyComboStr, pressHandler, null, preventRepeatByDefault);\n      }\n    }, {\n      key: \"bindRelease\",\n      value: function bindRelease(keyComboStr, releaseHandler) {\n        return this.bind(keyComboStr, null, releaseHandler, preventRepeatByDefault);\n      }\n    }, {\n      key: \"unbind\",\n      value: function unbind(keyComboStr, pressHandler, releaseHandler) {\n        if (keyComboStr === null || typeof keyComboStr === 'function') {\n          releaseHandler = pressHandler;\n          pressHandler = keyComboStr;\n          keyComboStr = null;\n        }\n        if (keyComboStr && _typeof(keyComboStr) === 'object' && typeof keyComboStr.length === 'number') {\n          for (var i = 0; i < keyComboStr.length; i += 1) {\n            this.unbind(keyComboStr[i], pressHandler, releaseHandler);\n          }\n          return this;\n        }\n        for (var _i = 0; _i < this._listeners.length; _i += 1) {\n          var listener = this._listeners[_i];\n          var comboMatches = !keyComboStr && !listener.keyCombo || listener.keyCombo && listener.keyCombo.isEqual(keyComboStr);\n          var pressHandlerMatches = !pressHandler && !releaseHandler || !pressHandler && !listener.pressHandler || pressHandler === listener.pressHandler;\n          var releaseHandlerMatches = !pressHandler && !releaseHandler || !releaseHandler && !listener.releaseHandler || releaseHandler === listener.releaseHandler;\n          if (comboMatches && pressHandlerMatches && releaseHandlerMatches) {\n            this._listeners.splice(_i, 1);\n            _i -= 1;\n          }\n        }\n        return this;\n      }\n    }, {\n      key: \"removeListener\",\n      value: function removeListener(keyComboStr, pressHandler, releaseHandler) {\n        return this.unbind(keyComboStr, pressHandler, releaseHandler);\n      }\n    }, {\n      key: \"off\",\n      value: function off(keyComboStr, pressHandler, releaseHandler) {\n        return this.unbind(keyComboStr, pressHandler, releaseHandler);\n      }\n    }, {\n      key: \"setContext\",\n      value: function setContext(contextName) {\n        if (this._locale) {\n          this.releaseAllKeys();\n        }\n        if (!this._contexts[contextName]) {\n          var globalContext = this._contexts.global;\n          this._contexts[contextName] = {\n            listeners: [],\n            targetWindow: globalContext.targetWindow,\n            targetElement: globalContext.targetElement,\n            targetPlatform: globalContext.targetPlatform,\n            targetUserAgent: globalContext.targetUserAgent\n          };\n        }\n        var context = this._contexts[contextName];\n        this._currentContext = contextName;\n        this._listeners = context.listeners;\n        this.stop();\n        this.watch(context.targetWindow, context.targetElement, context.targetPlatform, context.targetUserAgent);\n        return this;\n      }\n    }, {\n      key: \"getContext\",\n      value: function getContext() {\n        return this._currentContext;\n      }\n    }, {\n      key: \"withContext\",\n      value: function withContext(contextName, callback) {\n        var previousContextName = this.getContext();\n        this.setContext(contextName);\n        callback();\n        this.setContext(previousContextName);\n        return this;\n      }\n    }, {\n      key: \"watch\",\n      value: function watch(targetWindow, targetElement, targetPlatform, targetUserAgent) {\n        var _this = this;\n        this.stop();\n        var win = typeof globalThis !== 'undefined' ? globalThis : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof window !== 'undefined' ? window : {};\n        if (!targetWindow) {\n          if (!win.addEventListener && !win.attachEvent) {\n            throw new Error('Cannot find window functions addEventListener or attachEvent.');\n          }\n          targetWindow = win;\n        }\n        if (typeof targetWindow.nodeType === 'number') {\n          targetUserAgent = targetPlatform;\n          targetPlatform = targetElement;\n          targetElement = targetWindow;\n          targetWindow = win;\n        }\n        if (!targetWindow.addEventListener && !targetWindow.attachEvent) {\n          throw new Error('Cannot find addEventListener or attachEvent methods on targetWindow.');\n        }\n        this._isModernBrowser = !!targetWindow.addEventListener;\n        var userAgent = targetWindow.navigator && targetWindow.navigator.userAgent || '';\n        var platform = targetWindow.navigator && targetWindow.navigator.platform || '';\n        targetElement && targetElement !== null || (targetElement = targetWindow.document);\n        targetPlatform && targetPlatform !== null || (targetPlatform = platform);\n        targetUserAgent && targetUserAgent !== null || (targetUserAgent = userAgent);\n        this._targetKeyDownBinding = function (event) {\n          _this.pressKey(event.keyCode, event);\n          _this._handleCommandBug(event, platform);\n        };\n        this._targetKeyUpBinding = function (event) {\n          _this.releaseKey(event.keyCode, event);\n        };\n        this._targetResetBinding = function (event) {\n          _this.releaseAllKeys(event);\n        };\n        this._bindEvent(targetElement, 'keydown', this._targetKeyDownBinding);\n        this._bindEvent(targetElement, 'keyup', this._targetKeyUpBinding);\n        this._bindEvent(targetWindow, 'focus', this._targetResetBinding);\n        this._bindEvent(targetWindow, 'blur', this._targetResetBinding);\n        this._targetElement = targetElement;\n        this._targetWindow = targetWindow;\n        this._targetPlatform = targetPlatform;\n        this._targetUserAgent = targetUserAgent;\n        var currentContext = this._contexts[this._currentContext];\n        currentContext.targetWindow = this._targetWindow;\n        currentContext.targetElement = this._targetElement;\n        currentContext.targetPlatform = this._targetPlatform;\n        currentContext.targetUserAgent = this._targetUserAgent;\n        return this;\n      }\n    }, {\n      key: \"stop\",\n      value: function stop() {\n        if (!this._targetElement || !this._targetWindow) {\n          return;\n        }\n        this._unbindEvent(this._targetElement, 'keydown', this._targetKeyDownBinding);\n        this._unbindEvent(this._targetElement, 'keyup', this._targetKeyUpBinding);\n        this._unbindEvent(this._targetWindow, 'focus', this._targetResetBinding);\n        this._unbindEvent(this._targetWindow, 'blur', this._targetResetBinding);\n        this._targetWindow = null;\n        this._targetElement = null;\n        return this;\n      }\n    }, {\n      key: \"pressKey\",\n      value: function pressKey(keyCode, event) {\n        if (this._paused) {\n          return this;\n        }\n        if (!this._locale) {\n          throw new Error('Locale not set');\n        }\n        this._locale.pressKey(keyCode);\n        this._applyBindings(event);\n        return this;\n      }\n    }, {\n      key: \"releaseKey\",\n      value: function releaseKey(keyCode, event) {\n        if (this._paused) {\n          return this;\n        }\n        if (!this._locale) {\n          throw new Error('Locale not set');\n        }\n        this._locale.releaseKey(keyCode);\n        this._clearBindings(event);\n        return this;\n      }\n    }, {\n      key: \"releaseAllKeys\",\n      value: function releaseAllKeys(event) {\n        if (this._paused) {\n          return this;\n        }\n        if (!this._locale) {\n          throw new Error('Locale not set');\n        }\n        this._locale.pressedKeys.length = 0;\n        this._clearBindings(event);\n        return this;\n      }\n    }, {\n      key: \"pause\",\n      value: function pause() {\n        if (this._paused) {\n          return this;\n        }\n        if (this._locale) {\n          this.releaseAllKeys();\n        }\n        this._paused = true;\n        return this;\n      }\n    }, {\n      key: \"resume\",\n      value: function resume() {\n        this._paused = false;\n        return this;\n      }\n    }, {\n      key: \"reset\",\n      value: function reset() {\n        this.releaseAllKeys();\n        this._listeners.length = 0;\n        return this;\n      }\n    }, {\n      key: \"_bindEvent\",\n      value: function _bindEvent(targetElement, eventName, handler) {\n        return this._isModernBrowser ? targetElement.addEventListener(eventName, handler, false) : targetElement.attachEvent('on' + eventName, handler);\n      }\n    }, {\n      key: \"_unbindEvent\",\n      value: function _unbindEvent(targetElement, eventName, handler) {\n        return this._isModernBrowser ? targetElement.removeEventListener(eventName, handler, false) : targetElement.detachEvent('on' + eventName, handler);\n      }\n    }, {\n      key: \"_getGroupedListeners\",\n      value: function _getGroupedListeners() {\n        var listenerGroups = [];\n        var listenerGroupMap = [];\n        var listeners = this._listeners;\n        if (this._currentContext !== 'global') {\n          listeners = [].concat(_toConsumableArray(listeners), _toConsumableArray(this._contexts.global.listeners));\n        }\n        listeners.sort(function (a, b) {\n          return (b.keyCombo ? b.keyCombo.keyNames.length : 0) - (a.keyCombo ? a.keyCombo.keyNames.length : 0);\n        }).forEach(function (l) {\n          var mapIndex = -1;\n          for (var i = 0; i < listenerGroupMap.length; i += 1) {\n            if (listenerGroupMap[i] === null && l.keyCombo === null || listenerGroupMap[i] !== null && listenerGroupMap[i].isEqual(l.keyCombo)) {\n              mapIndex = i;\n            }\n          }\n          if (mapIndex === -1) {\n            mapIndex = listenerGroupMap.length;\n            listenerGroupMap.push(l.keyCombo);\n          }\n          if (!listenerGroups[mapIndex]) {\n            listenerGroups[mapIndex] = [];\n          }\n          listenerGroups[mapIndex].push(l);\n        });\n        return listenerGroups;\n      }\n    }, {\n      key: \"_applyBindings\",\n      value: function _applyBindings(event) {\n        var _this2 = this;\n        var preventRepeat = false;\n        event || (event = {});\n        event.preventRepeat = function () {\n          preventRepeat = true;\n        };\n        event.pressedKeys = this._locale.pressedKeys.slice(0);\n        var activeTargetKeys = this._locale.activeTargetKeys;\n        var pressedKeys = this._locale.pressedKeys.slice(0);\n        var listenerGroups = this._getGroupedListeners();\n        var _loop = function _loop(i) {\n          var listeners = listenerGroups[i];\n          var keyCombo = listeners[0].keyCombo;\n          if (keyCombo === null || keyCombo.check(pressedKeys) && activeTargetKeys.some(function (k) {\n            return keyCombo.keyNames.includes(k);\n          })) {\n            for (var j = 0; j < listeners.length; j += 1) {\n              var listener = listeners[j];\n              if (!listener.executingHandler && listener.pressHandler && !listener.preventRepeat) {\n                listener.executingHandler = true;\n                listener.pressHandler.call(_this2, event);\n                listener.executingHandler = false;\n                if (preventRepeat || listener.preventRepeatByDefault) {\n                  listener.preventRepeat = true;\n                  preventRepeat = false;\n                }\n              }\n              if (_this2._appliedListeners.indexOf(listener) === -1) {\n                _this2._appliedListeners.push(listener);\n              }\n            }\n            if (keyCombo) {\n              for (var _j = 0; _j < keyCombo.keyNames.length; _j += 1) {\n                var index = pressedKeys.indexOf(keyCombo.keyNames[_j]);\n                if (index !== -1) {\n                  pressedKeys.splice(index, 1);\n                  _j -= 1;\n                }\n              }\n            }\n          }\n        };\n        for (var i = 0; i < listenerGroups.length; i += 1) {\n          _loop(i);\n        }\n      }\n    }, {\n      key: \"_clearBindings\",\n      value: function _clearBindings(event) {\n        event || (event = {});\n        event.pressedKeys = this._locale.pressedKeys.slice(0);\n        for (var i = 0; i < this._appliedListeners.length; i += 1) {\n          var listener = this._appliedListeners[i];\n          var keyCombo = listener.keyCombo;\n          if (keyCombo === null || !keyCombo.check(this._locale.pressedKeys)) {\n            listener.preventRepeat = false;\n            if (keyCombo !== null || event.pressedKeys.length === 0) {\n              this._appliedListeners.splice(i, 1);\n              i -= 1;\n            }\n            if (!listener.executingHandler && listener.releaseHandler) {\n              listener.executingHandler = true;\n              listener.releaseHandler.call(this, event);\n              listener.executingHandler = false;\n            }\n          }\n        }\n      }\n    }, {\n      key: \"_handleCommandBug\",\n      value: function _handleCommandBug(event, platform) {\n        var modifierKeys = [\"shift\", \"ctrl\", \"alt\", \"capslock\", \"tab\", \"command\"];\n        if (platform.match(\"Mac\") && this._locale.pressedKeys.includes(\"command\") && !modifierKeys.includes(this._locale.getKeyNames(event.keyCode)[0])) {\n          this._targetKeyUpBinding(event);\n        }\n      }\n    }]);\n    return Keyboard;\n  }();\n  function us(locale, platform, userAgent) {\n    locale.bindKeyCode(3, ['cancel']);\n    locale.bindKeyCode(8, ['backspace']);\n    locale.bindKeyCode(9, ['tab']);\n    locale.bindKeyCode(12, ['clear']);\n    locale.bindKeyCode(13, ['enter']);\n    locale.bindKeyCode(16, ['shift']);\n    locale.bindKeyCode(17, ['ctrl']);\n    locale.bindKeyCode(18, ['alt', 'menu']);\n    locale.bindKeyCode(19, ['pause', 'break']);\n    locale.bindKeyCode(20, ['capslock']);\n    locale.bindKeyCode(27, ['escape', 'esc']);\n    locale.bindKeyCode(32, ['space', 'spacebar']);\n    locale.bindKeyCode(33, ['pageup']);\n    locale.bindKeyCode(34, ['pagedown']);\n    locale.bindKeyCode(35, ['end']);\n    locale.bindKeyCode(36, ['home']);\n    locale.bindKeyCode(37, ['left']);\n    locale.bindKeyCode(38, ['up']);\n    locale.bindKeyCode(39, ['right']);\n    locale.bindKeyCode(40, ['down']);\n    locale.bindKeyCode(41, ['select']);\n    locale.bindKeyCode(42, ['printscreen']);\n    locale.bindKeyCode(43, ['execute']);\n    locale.bindKeyCode(44, ['snapshot']);\n    locale.bindKeyCode(45, ['insert', 'ins']);\n    locale.bindKeyCode(46, ['delete', 'del']);\n    locale.bindKeyCode(47, ['help']);\n    locale.bindKeyCode(145, ['scrolllock', 'scroll']);\n    locale.bindKeyCode(188, ['comma', ',']);\n    locale.bindKeyCode(190, ['period', '.']);\n    locale.bindKeyCode(191, ['slash', 'forwardslash', '/']);\n    locale.bindKeyCode(192, ['graveaccent', '`']);\n    locale.bindKeyCode(219, ['openbracket', '[']);\n    locale.bindKeyCode(220, ['backslash', '\\\\']);\n    locale.bindKeyCode(221, ['closebracket', ']']);\n    locale.bindKeyCode(222, ['apostrophe', '\\'']);\n    locale.bindKeyCode(48, ['zero', '0']);\n    locale.bindKeyCode(49, ['one', '1']);\n    locale.bindKeyCode(50, ['two', '2']);\n    locale.bindKeyCode(51, ['three', '3']);\n    locale.bindKeyCode(52, ['four', '4']);\n    locale.bindKeyCode(53, ['five', '5']);\n    locale.bindKeyCode(54, ['six', '6']);\n    locale.bindKeyCode(55, ['seven', '7']);\n    locale.bindKeyCode(56, ['eight', '8']);\n    locale.bindKeyCode(57, ['nine', '9']);\n    locale.bindKeyCode(96, ['numzero', 'num0']);\n    locale.bindKeyCode(97, ['numone', 'num1']);\n    locale.bindKeyCode(98, ['numtwo', 'num2']);\n    locale.bindKeyCode(99, ['numthree', 'num3']);\n    locale.bindKeyCode(100, ['numfour', 'num4']);\n    locale.bindKeyCode(101, ['numfive', 'num5']);\n    locale.bindKeyCode(102, ['numsix', 'num6']);\n    locale.bindKeyCode(103, ['numseven', 'num7']);\n    locale.bindKeyCode(104, ['numeight', 'num8']);\n    locale.bindKeyCode(105, ['numnine', 'num9']);\n    locale.bindKeyCode(106, ['nummultiply', 'num*']);\n    locale.bindKeyCode(107, ['numadd', 'num+']);\n    locale.bindKeyCode(108, ['numenter']);\n    locale.bindKeyCode(109, ['numsubtract', 'num-']);\n    locale.bindKeyCode(110, ['numdecimal', 'num.']);\n    locale.bindKeyCode(111, ['numdivide', 'num/']);\n    locale.bindKeyCode(144, ['numlock', 'num']);\n    locale.bindKeyCode(112, ['f1']);\n    locale.bindKeyCode(113, ['f2']);\n    locale.bindKeyCode(114, ['f3']);\n    locale.bindKeyCode(115, ['f4']);\n    locale.bindKeyCode(116, ['f5']);\n    locale.bindKeyCode(117, ['f6']);\n    locale.bindKeyCode(118, ['f7']);\n    locale.bindKeyCode(119, ['f8']);\n    locale.bindKeyCode(120, ['f9']);\n    locale.bindKeyCode(121, ['f10']);\n    locale.bindKeyCode(122, ['f11']);\n    locale.bindKeyCode(123, ['f12']);\n    locale.bindKeyCode(124, ['f13']);\n    locale.bindKeyCode(125, ['f14']);\n    locale.bindKeyCode(126, ['f15']);\n    locale.bindKeyCode(127, ['f16']);\n    locale.bindKeyCode(128, ['f17']);\n    locale.bindKeyCode(129, ['f18']);\n    locale.bindKeyCode(130, ['f19']);\n    locale.bindKeyCode(131, ['f20']);\n    locale.bindKeyCode(132, ['f21']);\n    locale.bindKeyCode(133, ['f22']);\n    locale.bindKeyCode(134, ['f23']);\n    locale.bindKeyCode(135, ['f24']);\n    locale.bindMacro('shift + `', ['tilde', '~']);\n    locale.bindMacro('shift + 1', ['exclamation', 'exclamationpoint', '!']);\n    locale.bindMacro('shift + 2', ['at', '@']);\n    locale.bindMacro('shift + 3', ['number', '#']);\n    locale.bindMacro('shift + 4', ['dollar', 'dollars', 'dollarsign', '$']);\n    locale.bindMacro('shift + 5', ['percent', '%']);\n    locale.bindMacro('shift + 6', ['caret', '^']);\n    locale.bindMacro('shift + 7', ['ampersand', 'and', '&']);\n    locale.bindMacro('shift + 8', ['asterisk', '*']);\n    locale.bindMacro('shift + 9', ['openparen', '(']);\n    locale.bindMacro('shift + 0', ['closeparen', ')']);\n    locale.bindMacro('shift + -', ['underscore', '_']);\n    locale.bindMacro('shift + =', ['plus', '+']);\n    locale.bindMacro('shift + [', ['opencurlybrace', 'opencurlybracket', '{']);\n    locale.bindMacro('shift + ]', ['closecurlybrace', 'closecurlybracket', '}']);\n    locale.bindMacro('shift + \\\\', ['verticalbar', '|']);\n    locale.bindMacro('shift + ;', ['colon', ':']);\n    locale.bindMacro('shift + \\'', ['quotationmark', '\\'']);\n    locale.bindMacro('shift + !,', ['openanglebracket', '<']);\n    locale.bindMacro('shift + .', ['closeanglebracket', '>']);\n    locale.bindMacro('shift + /', ['questionmark', '?']);\n    if (platform.match('Mac')) {\n      locale.bindMacro('command', ['mod', 'modifier']);\n    } else {\n      locale.bindMacro('ctrl', ['mod', 'modifier']);\n    }\n    for (var keyCode = 65; keyCode <= 90; keyCode += 1) {\n      var keyName = String.fromCharCode(keyCode + 32);\n      var capitalKeyName = String.fromCharCode(keyCode);\n      locale.bindKeyCode(keyCode, keyName);\n      locale.bindMacro('shift + ' + keyName, capitalKeyName);\n      locale.bindMacro('capslock + ' + keyName, capitalKeyName);\n    }\n    var semicolonKeyCode = userAgent.match('Firefox') ? 59 : 186;\n    var dashKeyCode = userAgent.match('Firefox') ? 173 : 189;\n    var equalKeyCode = userAgent.match('Firefox') ? 61 : 187;\n    var leftCommandKeyCode;\n    var rightCommandKeyCode;\n    if (platform.match('Mac') && (userAgent.match('Safari') || userAgent.match('Chrome'))) {\n      leftCommandKeyCode = 91;\n      rightCommandKeyCode = 93;\n    } else if (platform.match('Mac') && userAgent.match('Opera')) {\n      leftCommandKeyCode = 17;\n      rightCommandKeyCode = 17;\n    } else if (platform.match('Mac') && userAgent.match('Firefox')) {\n      leftCommandKeyCode = 224;\n      rightCommandKeyCode = 224;\n    }\n    locale.bindKeyCode(semicolonKeyCode, ['semicolon', ';']);\n    locale.bindKeyCode(dashKeyCode, ['dash', '-']);\n    locale.bindKeyCode(equalKeyCode, ['equal', 'equalsign', '=']);\n    locale.bindKeyCode(leftCommandKeyCode, ['command', 'windows', 'win', 'super', 'leftcommand', 'leftwindows', 'leftwin', 'leftsuper']);\n    locale.bindKeyCode(rightCommandKeyCode, ['command', 'windows', 'win', 'super', 'rightcommand', 'rightwindows', 'rightwin', 'rightsuper']);\n    locale.setKillKey('command');\n  }\n  var keyboard = new Keyboard();\n  keyboard.setLocale('us', us);\n  keyboard.Keyboard = Keyboard;\n  keyboard.Locale = Locale;\n  keyboard.KeyCombo = KeyCombo;\n  return keyboard;\n})));\n});\n\nconst useKeyboardJs = (combination) => {\n    const [state, set] = useState([false, null]);\n    const [keyboardJs, setKeyboardJs] = useState(null);\n    useMounted(() => {\n        // import('keyboardjs').then((k) => setKeyboardJs(keyboardjs.default || keyboardjs));\n        setKeyboardJs(keyboard);\n    });\n    useEffect(() => {\n        if (!keyboardJs.value) {\n            return;\n        }\n        const down = (event) => set([true, event]);\n        const up = (event) => set([false, event]);\n        keyboardJs.value.bind(combination, down, up, true);\n        return () => {\n            keyboardJs.value.unbind(combination, down, up);\n        };\n    }, sources([combination, keyboardJs]));\n    return [computed(() => state.value[0]), computed(() => state.value[1])];\n};\n\nfunction useMounted(fn) {\n    onMounted(() => {\n        fn();\n    });\n}\n\nconst patchHistoryMethod = (method) => {\n    const history = window.history;\n    const original = history[method];\n    history[method] = function (state) {\n        const result = original.apply(this, arguments);\n        const event = new Event(method.toLowerCase());\n        event.state = state;\n        window.dispatchEvent(event);\n        return result;\n    };\n};\nif (isBrowser) {\n    patchHistoryMethod('pushState');\n    patchHistoryMethod('replaceState');\n}\nconst useLocationServer = () => ({\n    trigger: 'load',\n    length: 1,\n});\nconst buildState = (trigger) => {\n    const { state, length } = window.history;\n    const { hash, host, hostname, href, origin, pathname, port, protocol, search } = window.location;\n    return {\n        trigger,\n        state,\n        length,\n        hash,\n        host,\n        hostname,\n        href,\n        origin,\n        pathname,\n        port,\n        protocol,\n        search,\n    };\n};\nconst useLocationBrowser = () => {\n    const [state, setState] = useComputedState(buildState('load'));\n    useEffect(() => {\n        const onPopstate = () => setState(buildState('popstate'));\n        const onPushstate = () => setState(buildState('pushstate'));\n        const onReplacestate = () => setState(buildState('replacestate'));\n        on(window, 'popstate', onPopstate);\n        on(window, 'pushstate', onPushstate);\n        on(window, 'replacestate', onReplacestate);\n        return () => {\n            off(window, 'popstate', onPopstate);\n            off(window, 'pushstate', onPushstate);\n            off(window, 'replacestate', onReplacestate);\n        };\n    }, []);\n    return state;\n};\nconst hasEventConstructor = typeof Event === 'function';\nvar useLocation = isBrowser && hasEventConstructor ? useLocationBrowser : useLocationServer;\n\nconst isTouchEvent = (ev) => {\n    return 'touches' in ev;\n};\nconst preventDefault$1 = (ev) => {\n    if (!isTouchEvent(ev))\n        return;\n    if (ev.touches.length < 2 && ev.preventDefault) {\n        ev.preventDefault();\n    }\n};\nconst useLongPress = (callback, options = { isPreventDefault: true, delay: 300 }) => {\n    const timeout = ref();\n    const target = ref();\n    const start = (event) => {\n        // prevent ghost click on mobile devices\n        if (unref(options.isPreventDefault) && event.target) {\n            on(event.target, 'touchend', preventDefault$1, { passive: false });\n            target.value = event.target;\n        }\n        timeout.value = setTimeout(() => unref(callback)(event), unref(options.delay));\n    };\n    const clear = () => {\n        // clearTimeout and removeEventListener\n        timeout.value && clearTimeout(timeout.value);\n        if (unref(options.isPreventDefault) && target.value) {\n            off(target.value, 'touchend', preventDefault$1);\n        }\n    };\n    return {\n        onMousedown: (e) => start(e),\n        onTouchstart: (e) => start(e),\n        onMouseup: clear,\n        onMouseleave: clear,\n        onTouchend: clear,\n    };\n};\n\nvar react = function equal(a, b) {\n  if (a === b) return true;\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!equal(a[key], b[key])) return false;\n    }\n    return true;\n  }\n  return a!==a && b!==b;\n};\n\nconst nav$1 = isNavigator ? navigator : undefined;\nconst isBatteryApiSupported = nav$1 && typeof nav$1.getBattery === 'function';\nfunction useBatteryMock() {\n    return { isSupported: false };\n}\nfunction useBattery() {\n    const [state, setState] = useReadonly({ isSupported: true, fetched: false });\n    useEffect(() => {\n        let isMounted = true;\n        let battery = null;\n        const handleChange = () => {\n            if (!isMounted || !battery) {\n                return;\n            }\n            const newState = {\n                isSupported: true,\n                fetched: true,\n                level: battery.level,\n                charging: battery.charging,\n                dischargingTime: battery.dischargingTime,\n                chargingTime: battery.chargingTime,\n            };\n            !react(state, newState) && setState(newState);\n        };\n        nav$1.getBattery().then((bat) => {\n            if (!isMounted) {\n                return;\n            }\n            battery = bat;\n            on(battery, 'chargingchange', handleChange);\n            on(battery, 'chargingtimechange', handleChange);\n            on(battery, 'dischargingtimechange', handleChange);\n            on(battery, 'levelchange', handleChange);\n            handleChange();\n        });\n        return () => {\n            isMounted = false;\n            if (battery) {\n                off(battery, 'chargingchange', handleChange);\n                off(battery, 'chargingtimechange', handleChange);\n                off(battery, 'dischargingtimechange', handleChange);\n                off(battery, 'levelchange', handleChange);\n            }\n        };\n    }, []);\n    return state;\n}\nvar useBattery$1 = isBatteryApiSupported ? useBattery : useBatteryMock;\n\nfunction useReactive(initialState = {}) {\n    const state = isReactive(initialState) ? initialState : (initialState instanceof Function ? reactive(initialState()) : reactive(initialState));\n    const setState = (patch) => {\n        Object.assign(state, resolveHookState(patch, toRaw(state)));\n    };\n    return [state, setState];\n}\n\nfunction useReadonly(initialState = {}) {\n    const [state, setState] = useReactive(initialState);\n    return [readonly(state), setState];\n}\n\nfunction useMediatedState(mediator, initialState) {\n    const mediatorFn = ref(mediator);\n    const [state, setMediatedState] = useState(initialState);\n    const setState = (newState) => {\n        if (mediatorFn.value.length === 2) {\n            mediatorFn.value(newState, setMediatedState);\n        }\n        else {\n            setMediatedState(mediatorFn.value(newState));\n        }\n    };\n    watch(state, (newState) => {\n        if (mediatorFn.value.length === 2) {\n            mediatorFn.value(newState, setMediatedState);\n        }\n        else {\n            setMediatedState(mediatorFn.value(newState));\n        }\n    });\n    return [state, setState];\n}\n\nfunction useReducer(reducer, initialState, initializer) {\n    if (initializer) {\n        initialState = initializer(resolveHookState(initialState));\n    }\n    const [state, setState] = useState(initialState);\n    const dispatch = (action) => {\n        setState(prevState => reducer(prevState, action));\n    };\n    return [computed(() => {\n            return state.value;\n        }), dispatch];\n}\n\nconst useMethods = (createMethods, initialState) => {\n    const reducer = (reducerState, action) => {\n        return createMethods(reducerState)[action.type](...action.payload);\n    };\n    const [state, dispatch] = useReducer(reducer, initialState);\n    const wrappedMethods = (() => {\n        const actionTypes = Object.keys(createMethods(initialState));\n        return actionTypes.reduce((acc, type) => {\n            acc[type] = (...payload) => dispatch({ type, payload });\n            return acc;\n        }, {});\n    })();\n    return [state, wrappedMethods];\n};\n\nconst useSlider = (ref$1, options = {}) => {\n    const isMounted = useMountedState();\n    const isSliding = ref(false);\n    const valueRef = ref(0);\n    const frame = ref(0);\n    const [state, setState] = useReactive({\n        isSliding: false,\n        value: 0,\n    });\n    valueRef.value = state.value;\n    useEffect(() => {\n        if (!isBrowser) {\n            return;\n        }\n        const reverse = toRaw(options.reverse) === undefined ? false : toRaw(options.reverse);\n        if (ref$1.value) {\n            ref$1.value.style.userSelect = 'none';\n        }\n        const startScrubbing = () => {\n            if (!isSliding.value && isMounted()) {\n                (options.onScrubStart || noop)();\n                isSliding.value = true;\n                setState({ isSliding: true });\n                bindEvents();\n            }\n        };\n        const stopScrubbing = () => {\n            if (isSliding.value && isMounted()) {\n                (options.onScrubStop || noop)(valueRef.value);\n                isSliding.value = false;\n                setState({ isSliding: false });\n                unbindEvents();\n            }\n        };\n        const onMouseDown = (event) => {\n            startScrubbing();\n            onMouseMove(event);\n        };\n        const onMouseMove = toRaw(options.vertical)\n            ? (event) => onScrub(event.clientY)\n            : (event) => onScrub(event.clientX);\n        const onTouchStart = (event) => {\n            startScrubbing();\n            onTouchMove(event);\n        };\n        const onTouchMove = toRaw(options.vertical)\n            ? (event) => onScrub(event.changedTouches[0].clientY)\n            : (event) => onScrub(event.changedTouches[0].clientX);\n        const bindEvents = () => {\n            on(document, 'mousemove', onMouseMove);\n            on(document, 'mouseup', stopScrubbing);\n            on(document, 'touchmove', onTouchMove);\n            on(document, 'touchend', stopScrubbing);\n        };\n        const unbindEvents = () => {\n            off(document, 'mousemove', onMouseMove);\n            off(document, 'mouseup', stopScrubbing);\n            off(document, 'touchmove', onTouchMove);\n            off(document, 'touchend', stopScrubbing);\n        };\n        const onScrub = (clientXY) => {\n            cancelAnimationFrame(frame.value);\n            frame.value = requestAnimationFrame(() => {\n                if (isMounted() && ref$1.value) {\n                    const rect = ref$1.value.getBoundingClientRect();\n                    const pos = toRaw(options.vertical) ? rect.top : rect.left;\n                    const length = toRaw(options.vertical) ? rect.height : rect.width;\n                    // Prevent returning 0 when element is hidden by CSS\n                    if (!length) {\n                        return;\n                    }\n                    let value = (clientXY - pos) / length;\n                    if (value > 1) {\n                        value = 1;\n                    }\n                    else if (value < 0) {\n                        value = 0;\n                    }\n                    if (reverse) {\n                        value = 1 - value;\n                    }\n                    setState({\n                        value,\n                    });\n                    (options.onScrub || noop)(value);\n                }\n            });\n        };\n        on(ref$1.value, 'mousedown', onMouseDown);\n        on(ref$1.value, 'touchstart', onTouchStart);\n        return () => {\n            off(ref$1.value, 'mousedown', onMouseDown);\n            off(ref$1.value, 'touchstart', onTouchStart);\n        };\n    }, sources([ref$1, options.vertical]));\n    return state;\n};\n\nfunction useDebounce(fn, ms = 0, deps = []) {\n    const [isReady, cancel, reset] = useTimeoutFn(fn, ms);\n    useEffect(reset, sources(deps));\n    return [isReady, cancel];\n}\n\nconst useFavicon = (href) => {\n    useEffect(() => {\n        const link = document.querySelector(\"link[rel*='icon']\") || document.createElement('link');\n        link.type = 'image/x-icon';\n        link.rel = 'shortcut icon';\n        link.href = unref(href);\n        document.getElementsByTagName('head')[0].appendChild(link);\n    }, sources([href]));\n};\n\nfunction useLocalStorage(key, initialValue, options) {\n    if (!isBrowser) {\n        return [computed(() => unref(initialValue)), noop, noop];\n    }\n    if (!key) {\n        throw new Error('useLocalStorage key may not be falsy');\n    }\n    const deserializer = options\n        ? options.raw\n            ? (value) => value\n            : options.deserializer\n        : JSON.parse;\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const [state, setState] = useState(() => {\n        try {\n            const serializer = options ? (options.raw ? String : options.serializer) : JSON.stringify;\n            const localStorageValue = localStorage.getItem(key);\n            if (localStorageValue !== null) {\n                return deserializer(localStorageValue);\n            }\n            else {\n                initialValue && localStorage.setItem(key, serializer(initialValue));\n                return initialValue;\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. JSON.parse and JSON.stringify\n            // can throw, too.\n            return initialValue;\n        }\n    });\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const set = (valOrFunc) => {\n        try {\n            const newState = typeof valOrFunc === 'function' ? valOrFunc(state) : valOrFunc;\n            if (typeof newState === 'undefined') {\n                return;\n            }\n            let value;\n            if (options)\n                if (options.raw) {\n                    if (typeof newState === 'string') {\n                        value = newState;\n                    }\n                    else {\n                        value = JSON.stringify(newState);\n                    }\n                }\n                else if (options.serializer) {\n                    value = options.serializer(newState);\n                }\n                else {\n                    value = JSON.stringify(newState);\n                }\n            else {\n                value = JSON.stringify(newState);\n            }\n            localStorage.setItem(key, value);\n            setState(deserializer(value));\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw. Also JSON.stringify can throw.\n        }\n    };\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const remove = () => {\n        try {\n            localStorage.removeItem(key);\n            setState(undefined);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // localStorage can throw.\n        }\n    };\n    return [computed(() => state.value), set, remove];\n}\n\nfunction getClosestBody(el) {\n    if (!el) {\n        return null;\n    }\n    else if (el.tagName === 'BODY') {\n        return el;\n    }\n    else if (el.tagName === 'IFRAME') {\n        const document = el.contentDocument;\n        return document ? document.body : null;\n    }\n    else if (!el.offsetParent) {\n        return null;\n    }\n    return getClosestBody(el.offsetParent);\n}\nfunction preventDefault(rawEvent) {\n    const e = rawEvent || window.event;\n    // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n    if (e.touches.length > 1)\n        return true;\n    if (e.preventDefault)\n        e.preventDefault();\n    return false;\n}\nconst isIosDevice = isBrowser &&\n    window.navigator &&\n    window.navigator.platform &&\n    /iP(ad|hone|od)/.test(window.navigator.platform);\nconst bodies = new Map();\nconst doc = typeof document === 'object' ? document : undefined;\nlet documentListenerAdded = false;\nvar useLockBodyScroll = !doc\n    ? function useLockBodyMock(_locked = true, _elementRef) {\n    }\n    : function useLockBody(locked = true, elementRef) {\n        const bodyRef = ref(doc.body);\n        elementRef = elementRef || bodyRef;\n        const lock = (body) => {\n            const bodyInfo = bodies.get(body);\n            if (!bodyInfo) {\n                bodies.set(body, { counter: 1, initialOverflow: body.style.overflow });\n                if (isIosDevice) {\n                    if (!documentListenerAdded) {\n                        on(document, 'touchmove', preventDefault, { passive: false });\n                        documentListenerAdded = true;\n                    }\n                }\n                else {\n                    body.style.overflow = 'hidden';\n                }\n            }\n            else {\n                bodies.set(body, {\n                    counter: bodyInfo.counter + 1,\n                    initialOverflow: bodyInfo.initialOverflow,\n                });\n            }\n        };\n        const unlock = (body) => {\n            const bodyInfo = bodies.get(body);\n            if (bodyInfo) {\n                if (bodyInfo.counter === 1) {\n                    bodies.delete(body);\n                    if (isIosDevice) {\n                        body.ontouchmove = null;\n                        if (documentListenerAdded) {\n                            off(document, 'touchmove', preventDefault);\n                            documentListenerAdded = false;\n                        }\n                    }\n                    else {\n                        body.style.overflow = bodyInfo.initialOverflow;\n                    }\n                }\n                else {\n                    bodies.set(body, {\n                        counter: bodyInfo.counter - 1,\n                        initialOverflow: bodyInfo.initialOverflow,\n                    });\n                }\n            }\n        };\n        useEffect(() => {\n            const body = getClosestBody(elementRef.value);\n            if (!body) {\n                return;\n            }\n            if (unref(locked)) {\n                lock(body);\n            }\n            else {\n                unlock(body);\n            }\n        }, sources([locked, elementRef]));\n        // clean up, on un-mount\n        useEffect(() => {\n            const body = getClosestBody(elementRef.value);\n            if (!body) {\n                return;\n            }\n            return () => {\n                unlock(body);\n            };\n        });\n    };\n\nconst usePermission = (permissionDesc) => {\n    let mounted = true;\n    let permissionStatus = null;\n    const [state, setState] = useState('');\n    const onChange = () => {\n        if (mounted && permissionStatus) {\n            setState(permissionStatus.state);\n        }\n    };\n    const changeState = () => {\n        onChange();\n        on(permissionStatus, 'change', onChange);\n    };\n    useEffect(() => {\n        navigator.permissions\n            .query(permissionDesc)\n            .then((status) => {\n            permissionStatus = status;\n            changeState();\n        })\n            .catch(noop);\n        return () => {\n            mounted = false;\n            permissionStatus && off(permissionStatus, 'change', onChange);\n        };\n    });\n    return state;\n};\n\n// https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestAnimationFrame\nfunction useRafLoop(callback, initiallyActive = true) {\n    const raf = ref(null);\n    const rafActivity = ref(false);\n    const rafCallback = ref(callback);\n    rafCallback.value = callback;\n    const step = (time) => {\n        if (rafActivity.value) {\n            rafCallback.value(time);\n            raf.value = requestAnimationFrame(step);\n        }\n    };\n    const stop = () => {\n        if (rafActivity.value) {\n            rafActivity.value = false;\n            raf.value && cancelAnimationFrame(raf.value);\n        }\n    };\n    const start = () => {\n        if (!rafActivity.value) {\n            rafActivity.value = true;\n            raf.value = requestAnimationFrame(step);\n        }\n    };\n    const isActive = computed(() => {\n        return rafActivity.value;\n    });\n    useEffect(() => {\n        if (initiallyActive) {\n            start();\n        }\n        return stop;\n    });\n    return [stop, start, isActive];\n}\n\nconst useSessionStorage = (key, initialValue, raw) => {\n    if (!isBrowser) {\n        return [ref(initialValue), () => {\n                //\n            }];\n    }\n    const [state, setState] = useState(() => {\n        try {\n            const sessionStorageValue = sessionStorage.getItem(key);\n            if (typeof sessionStorageValue !== 'string') {\n                sessionStorage.setItem(key, raw ? String(initialValue) : JSON.stringify(initialValue));\n                return initialValue;\n            }\n            else {\n                return raw ? sessionStorageValue : JSON.parse(sessionStorageValue || 'null');\n            }\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. JSON.parse and JSON.stringify\n            // cat throw, too.\n            return initialValue;\n        }\n    });\n    watch(state, () => {\n        try {\n            const serializedState = raw ? String(state.value) : JSON.stringify(state.value);\n            sessionStorage.setItem(key, serializedState);\n        }\n        catch (_a) {\n            // If user is in private mode or has storage restriction\n            // sessionStorage can throw. Also JSON.stringify can throw.\n        }\n    });\n    return [state, setState];\n};\n\nconst useThrottleFn = (fn, ms = 200, args) => {\n    const [state, setState] = useState(null);\n    const timeout = ref();\n    const nextArgs = ref();\n    useEffect(() => {\n        if (!timeout.value) {\n            setState(fn(...args));\n            const timeoutCallback = () => {\n                if (nextArgs.value) {\n                    setState(fn(...nextArgs.value));\n                    nextArgs.value = undefined;\n                    timeout.value = setTimeout(timeoutCallback, ms);\n                }\n                else {\n                    timeout.value = undefined;\n                }\n            };\n            timeout.value = setTimeout(timeoutCallback, ms);\n        }\n        else {\n            nextArgs.value = args;\n        }\n    }, sources(args));\n    onUnmounted(() => {\n        timeout.value && clearTimeout(timeout.value);\n    });\n    return state;\n};\n\nconst useThrottle = (value, ms = 200) => {\n    const [state, setState] = useState(isRef(value) ? unref(value) : value);\n    const timeout = ref();\n    const nextValue = ref(null);\n    const hasNextValue = ref(0);\n    useEffect(() => {\n        if (!timeout.value) {\n            setState(value);\n            const timeoutCallback = () => {\n                if (hasNextValue.value) {\n                    hasNextValue.value = false;\n                    setState(nextValue.value);\n                    timeout.value = setTimeout(timeoutCallback, ms);\n                }\n                else {\n                    timeout.value = undefined;\n                }\n            };\n            timeout.value = setTimeout(timeoutCallback, ms);\n        }\n        else {\n            nextValue.value = unref(value);\n            hasNextValue.value = true;\n        }\n    }, sources([value]));\n    onUnmounted(() => {\n        timeout.value && clearTimeout(timeout.value);\n    });\n    return state;\n};\n\nfunction useCounter(initialValue = 0, max = null, min = null) {\n    let init = isRef(initialValue) ? initialValue : ref(resolveHookState(initialValue));\n    if (typeof init.value !== 'number') {\n        console.error('initialValue has to be a number, got ' + typeof initialValue);\n    }\n    const minRef = ref(min);\n    const maxRef = ref(max);\n    if (typeof minRef.value === 'number') {\n        init.value = Math.max(init.value, minRef.value);\n    }\n    else if (minRef.value !== null) {\n        console.error('min has to be a number, got ' + typeof minRef.value);\n    }\n    if (typeof maxRef.value === 'number') {\n        init.value = Math.min(init.value, maxRef.value);\n    }\n    else if (maxRef.value !== null) {\n        console.error('max has to be a number, got ' + typeof maxRef.value);\n    }\n    const [current, setInternal] = useState(init.value);\n    const get = () => {\n        return current.value;\n    };\n    const set = (newState) => {\n        const prevState = get();\n        let rState = resolveHookState(newState, prevState);\n        if (prevState !== rState) {\n            if (typeof minRef.value === 'number') {\n                rState = Math.max(rState, minRef.value);\n            }\n            if (typeof maxRef.value === 'number') {\n                rState = Math.min(rState, maxRef.value);\n            }\n            prevState !== rState && setInternal(rState);\n        }\n    };\n    return [\n        computed(() => {\n            return current.value;\n        }),\n        {\n            get,\n            set,\n            inc: (delta = 1) => {\n                const rDelta = resolveHookState(delta, get());\n                if (typeof rDelta !== 'number') {\n                    console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                }\n                set((num) => num + rDelta);\n            },\n            dec: (delta = 1) => {\n                const rDelta = resolveHookState(delta, get());\n                if (typeof rDelta !== 'number') {\n                    console.error('delta has to be a number or function returning a number, got ' + typeof rDelta);\n                }\n                set((num) => num - rDelta);\n            },\n            reset: (value = initialValue) => {\n                const rValue = isRef(value) ? value.value : resolveHookState(value, get());\n                if (typeof rValue !== 'number') {\n                    console.error('value has to be a number or function returning a number, got ' + typeof rValue);\n                }\n                // eslint-disable-next-line react-hooks/exhaustive-deps\n                init.value = rValue;\n                set(rValue);\n            },\n        },\n    ];\n}\n\nconst DEFAULT_USE_TITLE_OPTIONS = {\n    restoreOnUnmount: false,\n};\nfunction useTitle(title, options = DEFAULT_USE_TITLE_OPTIONS) {\n    const prevTitleRef = ref(document.title);\n    document.title = title;\n    useEffect(() => {\n        if (options && options.restoreOnUnmount) {\n            return () => {\n                document.title = prevTitleRef.value;\n            };\n        }\n        else {\n            return;\n        }\n    });\n}\nvar useTitle$1 = typeof document !== 'undefined' ? useTitle : (_title) => { };\n\nfunction useRaf(ms = 1e12, delay = 0) {\n    const [elapsed, set] = useState(0);\n    useEffect(() => {\n        let raf;\n        let timerStop;\n        let start;\n        const onFrame = () => {\n            const time = Math.min(1, (Date.now() - start) / unref(ms));\n            set(time);\n            loop();\n        };\n        const loop = () => {\n            raf = requestAnimationFrame(onFrame);\n        };\n        const onStart = () => {\n            timerStop = setTimeout(() => {\n                cancelAnimationFrame(raf);\n                set(1);\n            }, unref(ms));\n            start = Date.now();\n            loop();\n        };\n        const timerDelay = setTimeout(onStart, unref(delay));\n        return () => {\n            clearTimeout(timerStop);\n            clearTimeout(timerDelay);\n            cancelAnimationFrame(raf);\n        };\n    }, sources([ms, delay]));\n    return computed(() => {\n        return elapsed.value;\n    });\n}\n\nvar KEBAB_REGEX = /[A-Z]/g;\nvar hash = function (str) {\n    var h = 5381, i = str.length;\n    while (i) h = (h * 33) ^ str.charCodeAt(--i);\n    return '_' + (h >>> 0).toString(36);\n};\nvar create = function (config) {\n    config = config || {};\n    var assign = config.assign || Object.assign;\n    var client = typeof window === 'object';\n    if (process.env.NODE_ENV !== 'production') {\n        if (client) {\n            if ((typeof document !== 'object') || !document.getElementsByTagName('HTML')) {\n                console.error(\n                    'nano-css detected browser environment because of \"window\" global, but ' +\n                    '\"document\" global seems to be defective.'\n                );\n            }\n        }\n    }\n    var renderer = assign({\n        raw: '',\n        pfx: '_',\n        client: client,\n        assign: assign,\n        stringify: JSON.stringify,\n        kebab: function (prop) {\n            return prop.replace(KEBAB_REGEX, '-$&').toLowerCase();\n        },\n        decl: function (key, value) {\n            key = renderer.kebab(key);\n            return key + ':' + value + ';';\n        },\n        hash: function (obj) {\n            return hash(renderer.stringify(obj));\n        },\n        selector: function (parent, selector) {\n            return parent + (selector[0] === ':' ? ''  : ' ') + selector;\n        },\n        putRaw: function (rawCssRule) {\n            renderer.raw += rawCssRule;\n        },\n    }, config);\n    if (renderer.client) {\n        if (!renderer.sh)\n            document.head.appendChild(renderer.sh = document.createElement('style'));\n        if (process.env.NODE_ENV !== 'production') {\n            renderer.sh.setAttribute('data-nano-css-dev', '');\n            renderer.shTest = document.createElement('style');\n            renderer.shTest.setAttribute('data-nano-css-dev-tests', '');\n            document.head.appendChild(renderer.shTest);\n        }\n        renderer.putRaw = function (rawCssRule) {\n            if (process.env.NODE_ENV === 'production') {\n                var sheet = renderer.sh.sheet;\n                try {\n                    sheet.insertRule(rawCssRule, sheet.cssRules.length);\n                } catch (error) {}\n            } else {\n                try {\n                    renderer.shTest.sheet.insertRule(rawCssRule, renderer.shTest.sheet.cssRules.length);\n                } catch (error) {\n                    if (config.verbose) {\n                        console.error(error);\n                    }\n                }\n                renderer.sh.appendChild(document.createTextNode(rawCssRule));\n            }\n        };\n    }\n    renderer.put = function (selector, decls, atrule) {\n        var str = '';\n        var prop, value;\n        var postponed = [];\n        for (prop in decls) {\n            value = decls[prop];\n            if ((value instanceof Object) && !(value instanceof Array)) {\n                postponed.push(prop);\n            } else {\n                if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                    str += '    ' + renderer.decl(prop, value, selector, atrule) + '\\n';\n                } else {\n                    str += renderer.decl(prop, value, selector, atrule);\n                }\n            }\n        }\n        if (str) {\n            if ((process.env.NODE_ENV !== 'production') && !renderer.sourcemaps) {\n                str = '\\n' + selector + ' {\\n' + str + '}\\n';\n            } else {\n                str = selector + '{' + str + '}';\n            }\n            renderer.putRaw(atrule ? atrule + '{' + str + '}' : str);\n        }\n        for (var i = 0; i < postponed.length; i++) {\n            prop = postponed[i];\n            if (prop[0] === '@' && prop !== '@font-face') {\n                renderer.putAt(selector, decls[prop], prop);\n            } else {\n                renderer.put(renderer.selector(selector, prop), decls[prop], atrule);\n            }\n        }\n    };\n    renderer.putAt = renderer.put;\n    return renderer;\n};\n\nvar pkgName = 'nano-css';\nvar warnOnMissingDependencies = function warnOnMissingDependencies (addon, renderer, deps) {\n    var missing = [];\n    for (var i = 0; i < deps.length; i++) {\n        var name = deps[i];\n        if (!renderer[name]) {\n            missing.push(name);\n        }\n    }\n    if (missing.length) {\n        var str = 'Addon \"' + addon + '\" is missing the following dependencies:';\n        for (var j = 0; j < missing.length; j++) {\n            str += '\\n require(\"' + pkgName + '/addon/' + missing[j] + '\").addon(nano);';\n        }\n        throw new Error(str);\n    }\n};\n\nvar addon$1 = function (renderer) {\n    if (!renderer.client) return;\n    if (process.env.NODE_ENV !== 'production') {\n        warnOnMissingDependencies('cssom', renderer, ['sh']);\n    }\n    document.head.appendChild(renderer.msh = document.createElement('style'));\n    renderer.createRule = function (selector, prelude) {\n        var rawCss = selector + '{}';\n        if (prelude) rawCss = prelude + '{' + rawCss + '}';\n        var sheet = prelude ? renderer.msh.sheet : renderer.sh.sheet;\n        var index = sheet.insertRule(rawCss, sheet.cssRules.length);\n        var rule = (sheet.cssRules || sheet.rules)[index];\n        rule.index = index;\n        if (prelude) {\n            var selectorRule = (rule.cssRules || rule.rules)[0];\n            rule.style = selectorRule.style;\n            rule.styleMap = selectorRule.styleMap;\n        }\n        return rule;\n    };\n};\n\nfunction removeRule$1 (rule) {\n    var maxIndex = rule.index;\n    var sh = rule.parentStyleSheet;\n    var rules = sh.cssRules || sh.rules;\n    maxIndex = Math.max(maxIndex, rules.length - 1);\n    while (maxIndex >= 0) {\n        if (rules[maxIndex] === rule) {\n            sh.deleteRule(maxIndex);\n            break;\n        }\n        maxIndex--;\n    }\n}\nvar removeRule_2 = removeRule$1;\nvar removeRule_1 = {\n\tremoveRule: removeRule_2\n};\n\nvar removeRule = removeRule_1.removeRule;\nvar addon = function (renderer) {\n    if (!renderer.client) return;\n    if (process.env.NODE_ENV !== 'production') {\n        warnOnMissingDependencies('cssom', renderer, ['createRule']);\n    }\n    var kebab = renderer.kebab;\n    function VRule (selector, prelude) {\n        this.rule = renderer.createRule(selector, prelude);\n        this.decl = {};\n    }\n    VRule.prototype.diff = function (newDecl) {\n        var oldDecl = this.decl;\n        var style = this.rule.style;\n        var property;\n        for (property in oldDecl)\n            if (newDecl[property] === undefined)\n                style.removeProperty(property);\n        for (property in newDecl)\n            if (newDecl[property] !== oldDecl[property])\n                style.setProperty(kebab(property), newDecl[property]);\n        this.decl = newDecl;\n    };\n    VRule.prototype.del = function () {\n        removeRule(this.rule);\n    };\n    function VSheet () {\n        this.tree = {};\n    }\n    VSheet.prototype.diff = function (newTree) {\n        var oldTree = this.tree;\n        for (var prelude in oldTree) {\n            if (newTree[prelude] === undefined) {\n                var rules = oldTree[prelude];\n                for (var selector in rules)\n                    rules[selector].del();\n            }\n        }\n        for (var prelude in newTree) {\n            if (oldTree[prelude] === undefined) {\n                for (var selector in newTree[prelude]) {\n                    var rule = new VRule(selector, prelude);\n                    rule.diff(newTree[prelude][selector]);\n                    newTree[prelude][selector] = rule;\n                }\n            } else {\n                var oldRules = oldTree[prelude];\n                var newRules = newTree[prelude];\n                for (var selector in oldRules)\n                    if (!newRules[selector])\n                        oldRules[selector].del();\n                for (var selector in newRules) {\n                    var rule = oldRules[selector];\n                    if (rule) {\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    } else {\n                        rule = new VRule(selector, prelude);\n                        rule.diff(newRules[selector]);\n                        newRules[selector] = rule;\n                    }\n                }\n            }\n        }\n        this.tree = newTree;\n    };\n    renderer.VRule = VRule;\n    renderer.VSheet = VSheet;\n};\n\nfunction cssToTree (tree, css, selector, prelude) {\n    var declarations = {};\n    var hasDeclarations = false;\n    var key, value;\n    for (key in css) {\n        value = css[key];\n        if (typeof value !== 'object') {\n            hasDeclarations = true;\n            declarations[key] = value;\n        }\n    }\n    if (hasDeclarations) {\n        if (!tree[prelude]) tree[prelude] = {};\n        tree[prelude][selector] = declarations;\n    }\n    for (key in css) {\n        value = css[key];\n        if (typeof value === 'object') {\n            if (key[0] === '@') {\n                cssToTree(tree, value, selector, key);\n            } else {\n                var hasCurrentSymbol = key.indexOf('&') > -1;\n                var selectorParts = selector.split(',');\n                if (hasCurrentSymbol) {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = key.replace(/&/g, selectorParts[i]);\n                    }\n                } else {\n                    for (var i = 0; i < selectorParts.length; i++) {\n                        selectorParts[i] = selectorParts[i] + ' ' + key;\n                    }\n                }\n                cssToTree(tree, value, selectorParts.join(','), prelude);\n            }\n        }\n    }\n}var cssToTree_2 = cssToTree;\n\nconst nano = create();\naddon$1(nano);\naddon(nano);\nlet counter = 0;\nfunction useCss(css) {\n    const className = 'vue-next-use-css-' + (counter++).toString(36);\n    const sheet = new nano.VSheet();\n    useEffect(() => {\n        const tree = {};\n        cssToTree_2(tree, unref(css), '.' + className, '');\n        sheet.diff(tree);\n        return () => {\n            sheet.diff({});\n        };\n    }, isRef(css) ? css : null);\n    return className;\n}\n\nvar easing = {\n    linear: function (t) { return t; },\n    quadratic: function (t) { return t * (-(t * t) * t + 4 * t * t - 6 * t + 4); },\n    cubic: function (t) { return t * (4 * t * t - 9 * t + 6); },\n    elastic: function (t) { return t * (33 * t * t * t * t - 106 * t * t * t + 126 * t * t - 67 * t + 15); },\n    inQuad: function (t) { return t * t; },\n    outQuad: function (t) { return t * (2 - t); },\n    inOutQuad: function (t) { return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t; },\n    inCubic: function (t) { return t * t * t; },\n    outCubic: function (t) { return (--t) * t * t + 1; },\n    inOutCubic: function (t) { return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; },\n    inQuart: function (t) { return t * t * t * t; },\n    outQuart: function (t) { return 1 - (--t) * t * t * t; },\n    inOutQuart: function (t) { return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t; },\n    inQuint: function (t) { return t * t * t * t * t; },\n    outQuint: function (t) { return 1 + (--t) * t * t * t * t; },\n    inOutQuint: function (t) { return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t; },\n    inSine: function (t) { return -Math.cos(t * (Math.PI / 2)) + 1; },\n    outSine: function (t) { return Math.sin(t * (Math.PI / 2)); },\n    inOutSine: function (t) { return -(Math.cos(Math.PI * t) - 1) / 2; },\n    inExpo: function (t) { return Math.pow(2, 10 * (t - 1)); },\n    outExpo: function (t) { return -Math.pow(2, -10 * t) + 1; },\n    inOutExpo: function (t) {\n        t /= .5;\n        if (t < 1)\n            return Math.pow(2, 10 * (t - 1)) / 2;\n        t--;\n        return (-Math.pow(2, -10 * t) + 2) / 2;\n    },\n    inCirc: function (t) { return -Math.sqrt(1 - t * t) + 1; },\n    outCirc: function (t) { return Math.sqrt(1 - (t = t - 1) * t); },\n    inOutCirc: function (t) {\n        t /= .5;\n        if (t < 1)\n            return -(Math.sqrt(1 - t * t) - 1) / 2;\n        t -= 2;\n        return (Math.sqrt(1 - t * t) + 1) / 2;\n    }\n};\nObject.defineProperty({\n\teasing: easing\n}, '__esModule', {value: true});\n\nconst useTween = (easingName = 'inCirc', ms = 200, delay = 0) => {\n    const fn = easing[easingName];\n    const t = useRaf(ms, delay);\n    if (process.env.NODE_ENV !== 'production') {\n        if (typeof fn !== 'function') {\n            console.error('useTween() expected \"easingName\" property to be a valid easing function name, like:' +\n                '\"' +\n                Object.keys(easing).join('\", \"') +\n                '\".');\n            console.trace();\n            return computed(() => 0);\n        }\n    }\n    return computed(() => {\n        return fn(t.value);\n    });\n};\n\nfunction createGlobalState(initialState) {\n    const store = {\n        state: initialState instanceof Function ? initialState() : initialState,\n        setState(nextState) {\n            store.state = resolveHookState(nextState, store.state);\n            store.setters.forEach((setter) => setter(store.state));\n        },\n        setters: [],\n    };\n    return () => {\n        const [globalState, stateSetter] = useState(store.state);\n        useEffect(() => () => {\n            store.setters = store.setters.filter((setter) => setter !== stateSetter);\n        });\n        useEffect(() => {\n            if (!store.setters.includes(stateSetter)) {\n                store.setters.push(stateSetter);\n            }\n        });\n        return [globalState, store.setState];\n    };\n}\n\nfunction useDefault(defaultValue, initialValue) {\n    const [value, setValue] = useState(resolveHookState(initialValue));\n    watch(value, (newValue) => {\n        if (newValue === undefined || newValue === null) {\n            setValue(defaultValue);\n        }\n    }, {\n        immediate: true\n    });\n    return [value, setValue];\n}\n\nfunction useRafState(initialState) {\n    const frame = ref(0);\n    const [state, setState] = useState(initialState);\n    const setRafState = (value) => {\n        cancelAnimationFrame(frame.value);\n        frame.value = requestAnimationFrame(() => {\n            setState(value);\n        });\n    };\n    onUnmounted(() => {\n        cancelAnimationFrame(frame.value);\n    });\n    return [state, setRafState];\n}\n\nfunction useRafReactive(initialState) {\n    const frame = ref(0);\n    const [state, setState] = useReactive(initialState);\n    const setRafState = (value) => {\n        cancelAnimationFrame(frame.value);\n        frame.value = requestAnimationFrame(() => {\n            setState(value);\n        });\n    };\n    onUnmounted(() => {\n        cancelAnimationFrame(frame.value);\n    });\n    return [state, setRafState];\n}\n\nfunction useStateList(stateSet = []) {\n    const isMounted = useMountedState();\n    const index = ref(0);\n    // If new state list is shorter that before - switch to the last element\n    useEffect(() => {\n        if (unref(stateSet).length <= index.value) {\n            index.value = unref(stateSet).length - 1;\n        }\n    }, computed(() => {\n        return unref(stateSet).length;\n    }));\n    const actions = {\n        next: () => actions.setStateAt(index.value + 1),\n        prev: () => actions.setStateAt(index.value - 1),\n        setStateAt: (newIndex) => {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            // do nothing on empty states list\n            if (!unref(stateSet).length)\n                return;\n            // in case new index is equal current - do nothing\n            if (newIndex === index.value)\n                return;\n            // it gives the ability to travel through the left and right borders.\n            // 4ex: if list contains 5 elements, attempt to set index 9 will bring use to 5th element\n            // in case of negative index it will start counting from the right, so -17 will bring us to 4th element\n            index.value =\n                newIndex >= 0\n                    ? newIndex % unref(stateSet).length\n                    : unref(stateSet).length + (newIndex % unref(stateSet).length);\n        },\n        setState: (state) => {\n            // do nothing on unmounted component\n            if (!isMounted())\n                return;\n            const newIndex = unref(stateSet).length ? unref(stateSet).indexOf(state) : -1;\n            if (newIndex === -1) {\n                throw new Error(`State '${state}' is not a valid state (does not exist in state list)`);\n            }\n            index.value = newIndex;\n        },\n    };\n    return Object.assign({ state: computed(() => {\n            return unref(stateSet)[index.value];\n        }), currentIndex: index.value }, actions);\n}\n\nfunction useMultiStateValidator(states, validator, initialValidity = [undefined]) {\n    if (typeof states !== 'object') {\n        throw new Error('states expected to be an object or array, got ' + typeof states);\n    }\n    const validatorInner = ref(validator);\n    const statesInner = ref(states);\n    validatorInner.value = validator;\n    statesInner.value = states;\n    const [validity, setValidity] = useReadonly(initialValidity);\n    const validate = () => {\n        if (validatorInner.value.length >= 2) {\n            validatorInner.value(statesInner.value.map(item => unref(item)), setValidity);\n        }\n        else {\n            setValidity(validatorInner.value(statesInner.value.map(item => unref(item))));\n        }\n    };\n    useEffect(() => {\n        validate();\n    }, Object.values(states));\n    return [validity, validate];\n}\n\nconst defaultState$2 = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0,\n    bottom: 0,\n    right: 0,\n};\nfunction useMeasure() {\n    const [element, ref] = useState(null);\n    const [rect, setRect] = useReadonly(defaultState$2);\n    const observer = new window.ResizeObserver((entries) => {\n        if (entries[0]) {\n            const { x, y, width, height, top, left, bottom, right } = entries[0].contentRect;\n            setRect({ x, y, width, height, top, left, bottom, right });\n        }\n    });\n    useEffect(() => {\n        if (!element) {\n            return;\n        }\n        observer.observe(element.value);\n        return () => {\n            observer.disconnect();\n        };\n    }, [element]);\n    return [ref, rect];\n}\nvar useMeasure$1 = isBrowser && typeof window.ResizeObserver !== 'undefined'\n    ? useMeasure\n    : (() => [noop, defaultState$2]);\n\nfunction useMedia(query, defaultState = false) {\n    const [state, setState] = useState(isBrowser ? () => window.matchMedia(unref(query)).matches : defaultState);\n    useEffect(() => {\n        let mounted = true;\n        const mql = window.matchMedia(unref(query));\n        const onChange = () => {\n            if (!mounted) {\n                return;\n            }\n            setState(!!mql.matches);\n        };\n        mql.addListener(onChange);\n        setState(mql.matches);\n        return () => {\n            mounted = false;\n            mql.removeListener(onChange);\n        };\n    }, sources([query]));\n    return computed(() => {\n        return state.value;\n    });\n}\n\nconst useMediaDevices = () => {\n    const [state, setState] = useReactive({});\n    useEffect(() => {\n        let mounted = true;\n        const onChange = () => {\n            navigator.mediaDevices\n                .enumerateDevices()\n                .then((devices) => {\n                if (mounted) {\n                    setState({\n                        devices: devices.map(({ deviceId, groupId, kind, label }) => ({\n                            deviceId,\n                            groupId,\n                            kind,\n                            label,\n                        })),\n                    });\n                }\n            })\n                .catch(noop);\n        };\n        on(navigator.mediaDevices, 'devicechange', onChange);\n        onChange();\n        return () => {\n            mounted = false;\n            off(navigator.mediaDevices, 'devicechange', onChange);\n        };\n    }, []);\n    return state;\n};\nconst useMediaDevicesMock = () => ({});\nvar useMediaDevices$1 = isNavigator && !!navigator.mediaDevices ? useMediaDevices : useMediaDevicesMock;\n\nconst defaultState$1 = {\n    acceleration: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    accelerationIncludingGravity: {\n        x: null,\n        y: null,\n        z: null,\n    },\n    rotationRate: {\n        alpha: null,\n        beta: null,\n        gamma: null,\n    },\n    interval: 16,\n};\nconst useMotion = (initialState = defaultState$1) => {\n    const [state, setState] = useReactive(initialState);\n    const handler = (event) => {\n        const { acceleration, accelerationIncludingGravity, rotationRate, interval } = event;\n        setState({\n            acceleration: {\n                x: acceleration.x,\n                y: acceleration.y,\n                z: acceleration.z,\n            },\n            accelerationIncludingGravity: {\n                x: accelerationIncludingGravity.x,\n                y: accelerationIncludingGravity.y,\n                z: accelerationIncludingGravity.z,\n            },\n            rotationRate: {\n                alpha: rotationRate.alpha,\n                beta: rotationRate.beta,\n                gamma: rotationRate.gamma,\n            },\n            interval,\n        });\n    };\n    let hasGranted = false;\n    const needGrantPermission = typeof DeviceMotionEvent.requestPermission === 'function';\n    const requestPermisson = () => {\n        if (needGrantPermission) {\n            if (hasGranted)\n                return;\n            hasGranted = true;\n            return DeviceMotionEvent.requestPermission().then(function (state) {\n                if ('granted' === state) {\n                    on(window, 'devicemotion', handler);\n                }\n            });\n        }\n        return new Promise((resolve) => {\n            resolve({ state: '' });\n        });\n    };\n    useEffect(() => {\n        if (!needGrantPermission) {\n            on(window, 'devicemotion', handler);\n        }\n        return () => {\n            off(window, 'devicemotion', handler);\n        };\n    }, []);\n    return [state, requestPermisson];\n};\n\nconst useMouse = (ref) => {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.value === 'undefined') {\n            console.error('useMouse expects a single ref argument.');\n        }\n    }\n    const [state, setState] = useRafState({\n        docX: 0,\n        docY: 0,\n        posX: 0,\n        posY: 0,\n        elX: 0,\n        elY: 0,\n        elH: 0,\n        elW: 0,\n    });\n    useEffect(() => {\n        const moveHandler = (event) => {\n            if (ref && ref.value) {\n                const { left, top, width: elW, height: elH } = ref.value.getBoundingClientRect();\n                const posX = left + window.pageXOffset;\n                const posY = top + window.pageYOffset;\n                const elX = event.pageX - posX;\n                const elY = event.pageY - posY;\n                setState({\n                    docX: event.pageX,\n                    docY: event.pageY,\n                    posX,\n                    posY,\n                    elX,\n                    elY,\n                    elH,\n                    elW,\n                });\n            }\n        };\n        on(document, 'mousemove', moveHandler);\n        return () => {\n            off(document, 'mousemove', moveHandler);\n        };\n    }, [ref]);\n    return computed(() => {\n        return state.value;\n    });\n};\n\nconst useMouseHovered = (ref, options = {}) => {\n    const whenHovered = !!unref(options.whenHovered);\n    const bound = !!unref(options.bound);\n    const isHovered = useHoverDirty(ref, whenHovered);\n    const state = useMouse(computed(() => {\n        return whenHovered && !isHovered.value ? null : ref.value;\n    }));\n    if (unref(bound)) {\n        watch(state, () => {\n            state.value.elX = Math.max(0, Math.min(state.value.elX, state.value.elW));\n            state.value.elY = Math.max(0, Math.min(state.value.elY, state.value.elH));\n        });\n    }\n    return state;\n};\n\nfunction useMouseWheel() {\n    const [mouseWheelScrolled, setMouseWheelScrolled] = useState(0);\n    useEffect(() => {\n        const updateScroll = (e) => {\n            setMouseWheelScrolled(e.deltaY + mouseWheelScrolled.value);\n        };\n        on(window, 'wheel', updateScroll, false);\n        return () => off(window, 'wheel', updateScroll);\n    });\n    return mouseWheelScrolled;\n}\n\nconst nav = isNavigator ? navigator : undefined;\nconst conn = nav && (nav.connection || nav.mozConnection || nav.webkitConnection);\nfunction getConnectionState(previousState) {\n    const online = nav === null || nav === void 0 ? void 0 : nav.onLine;\n    const previousOnline = previousState === null || previousState === void 0 ? void 0 : previousState.online;\n    return {\n        online,\n        previous: previousOnline,\n        since: online !== previousOnline ? new Date() : previousState === null || previousState === void 0 ? void 0 : previousState.since,\n        downlink: conn === null || conn === void 0 ? void 0 : conn.downlink,\n        downlinkMax: conn === null || conn === void 0 ? void 0 : conn.downlinkMax,\n        effectiveType: conn === null || conn === void 0 ? void 0 : conn.effectiveType,\n        rtt: conn === null || conn === void 0 ? void 0 : conn.rtt,\n        saveData: conn === null || conn === void 0 ? void 0 : conn.saveData,\n        type: conn === null || conn === void 0 ? void 0 : conn.type,\n    };\n}\nfunction useNetworkState(initialState) {\n    const [state, setState] = useReactive(initialState !== null && initialState !== void 0 ? initialState : getConnectionState);\n    useEffect(() => {\n        const handleStateChange = () => {\n            setState(getConnectionState);\n        };\n        on(window, 'online', handleStateChange, { passive: true });\n        on(window, 'offline', handleStateChange, { passive: true });\n        if (conn) {\n            on(conn, 'change', handleStateChange, { passive: true });\n        }\n        return () => {\n            off(window, 'online', handleStateChange);\n            off(window, 'offline', handleStateChange);\n            if (conn) {\n                off(conn, 'change', handleStateChange);\n            }\n        };\n    }, []);\n    return state;\n}\n\nconst defaultState = {\n    angle: 0,\n    type: 'landscape-primary',\n};\nfunction useOrientation(initialState = defaultState) {\n    const [state, setState] = useReactive(initialState);\n    useEffect(() => {\n        const screen = window.screen;\n        let mounted = true;\n        const onChange = () => {\n            if (mounted) {\n                const { orientation } = screen;\n                if (orientation) {\n                    const { angle, type } = orientation;\n                    setState({ angle, type });\n                }\n                else if (window.orientation !== undefined) {\n                    setState({\n                        angle: typeof window.orientation === 'number' ? window.orientation : 0,\n                        type: '',\n                    });\n                }\n                else {\n                    setState(initialState);\n                }\n            }\n        };\n        on(window, 'orientationchange', onChange);\n        onChange();\n        return () => {\n            mounted = false;\n            off(window, 'orientationchange', onChange);\n        };\n    }, []);\n    return state;\n}\n\nconst usePageLeave = (onPageLeave, args = []) => {\n    useEffect(() => {\n        if (!onPageLeave) {\n            return;\n        }\n        const handler = (event) => {\n            event = event ? event : window.event;\n            const from = event.relatedTarget || event.toElement;\n            if (!from || from.nodeName === 'HTML') {\n                onPageLeave();\n            }\n        };\n        on(document, 'mouseout', handler);\n        return () => {\n            off(document, 'mouseout', handler);\n        };\n    }, sources(args));\n};\n\nfunction useScratch(params = {}) {\n    const { disabled } = params;\n    const paramsRef = ref(params);\n    const [state, setState] = useState({ isScratching: false });\n    const refState = ref(state.value);\n    const refScratching = ref(false);\n    const refAnimationFrame = ref(null);\n    const [el, setEl] = useState(null);\n    useEffect(() => {\n        if (disabled)\n            return;\n        if (el.value == null)\n            return;\n        const onMoveEvent = (docX, docY) => {\n            cancelAnimationFrame(refAnimationFrame.value);\n            refAnimationFrame.value = requestAnimationFrame(() => {\n                if (el.value == null)\n                    return;\n                if (state.value.isScratching == false)\n                    return;\n                const { left, top } = el.value.getBoundingClientRect();\n                const elX = left + window.scrollX;\n                const elY = top + window.scrollY;\n                const x = docX - elX;\n                const y = docY - elY;\n                setState((oldState) => {\n                    const newState = Object.assign(Object.assign({}, oldState), { dx: x - (oldState.x || 0), dy: y - (oldState.y || 0), end: Date.now(), isScratching: true });\n                    refState.value = newState;\n                    (paramsRef.value.onScratch || noop)(newState);\n                    return newState;\n                });\n            });\n        };\n        const onMouseMove = (event) => {\n            onMoveEvent(event.pageX, event.pageY);\n        };\n        const onTouchMove = (event) => {\n            onMoveEvent(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        let onMouseUp;\n        let onTouchEnd;\n        const stopScratching = () => {\n            if (!refScratching.value)\n                return;\n            refScratching.value = false;\n            refState.value = Object.assign(Object.assign({}, refState.value), { isScratching: false });\n            (paramsRef.value.onScratchEnd || noop)(refState.value);\n            setState({ isScratching: false });\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n        };\n        onMouseUp = stopScratching;\n        onTouchEnd = stopScratching;\n        const startScratching = (docX, docY) => {\n            if (!refScratching.value)\n                return;\n            if (el.value == null)\n                return;\n            const { left, top } = el.value.getBoundingClientRect();\n            const elX = left + window.scrollX;\n            const elY = top + window.scrollY;\n            const x = docX - elX;\n            const y = docY - elY;\n            const time = Date.now();\n            const newState = {\n                isScratching: true,\n                start: time,\n                end: time,\n                docX,\n                docY,\n                x,\n                y,\n                dx: 0,\n                dy: 0,\n                elH: el.value.offsetHeight,\n                elW: el.value.offsetWidth,\n                elX,\n                elY,\n            };\n            refState.value = newState;\n            (paramsRef.value.onScratchStart || noop)(newState);\n            setState(newState);\n            on(window, 'mousemove', onMouseMove);\n            on(window, 'touchmove', onTouchMove);\n            on(window, 'mouseup', onMouseUp);\n            on(window, 'touchend', onTouchEnd);\n        };\n        const onMouseDown = (event) => {\n            refScratching.value = true;\n            startScratching(event.pageX, event.pageY);\n        };\n        const onTouchStart = (event) => {\n            refScratching.value = true;\n            startScratching(event.changedTouches[0].pageX, event.changedTouches[0].pageY);\n        };\n        on(el.value, 'mousedown', onMouseDown);\n        on(el.value, 'touchstart', onTouchStart);\n        return () => {\n            off(el.value, 'mousedown', onMouseDown);\n            off(el.value, 'touchstart', onTouchStart);\n            off(window, 'mousemove', onMouseMove);\n            off(window, 'touchmove', onTouchMove);\n            off(window, 'mouseup', onMouseUp);\n            off(window, 'touchend', onTouchEnd);\n            if (refAnimationFrame.value)\n                cancelAnimationFrame(refAnimationFrame.value);\n            refAnimationFrame.value = null;\n            refScratching.value = false;\n            refState.value = { isScratching: false };\n            setState(refState.value);\n        };\n    }, sources([el, disabled, paramsRef]));\n    return [setEl, computed(() => {\n            return state.value;\n        })];\n}\n\nfunction useScroll(ref) {\n    if (process.env.NODE_ENV === 'development') {\n        if (typeof ref !== 'object' || typeof ref.value === 'undefined') {\n            console.error('`useScroll` expects a single ref argument.');\n        }\n    }\n    const [state, setState] = useRafReactive({\n        x: 0,\n        y: 0,\n    });\n    useEffect(() => {\n        const handler = () => {\n            if (ref.value) {\n                setState({\n                    x: ref.value.scrollLeft,\n                    y: ref.value.scrollTop,\n                });\n            }\n        };\n        if (ref.value) {\n            on(ref.value, 'scroll', handler, {\n                capture: false,\n                passive: true,\n            });\n        }\n        return () => {\n            if (ref.value) {\n                off(ref.value, 'scroll', handler);\n            }\n        };\n    }, [ref]);\n    return readonly(state);\n}\n\nconst useScrolling = (ref) => {\n    const [scrolling, setScrolling] = useState(false);\n    useEffect(() => {\n        if (ref.value) {\n            let scrollingTimeout;\n            const handleScrollEnd = () => {\n                setScrolling(false);\n            };\n            const handleScroll = () => {\n                setScrolling(true);\n                clearTimeout(scrollingTimeout);\n                scrollingTimeout = setTimeout(() => handleScrollEnd(), 150);\n            };\n            on(ref.value, 'scroll', handleScroll, false);\n            return () => {\n                if (ref.value) {\n                    off(ref.value, 'scroll', handleScroll, false);\n                }\n            };\n        }\n        return () => {\n            // void\n        };\n    }, [ref]);\n    return readonly(scrolling);\n};\n\nconst getValue = (search, param) => new URLSearchParams(search).get(param);\nconst useSearchParam = (param) => {\n    const location = window.location;\n    const [value, setValue] = useState(() => getValue(location.search, unref(param)));\n    useEffect(() => {\n        const onChange = () => {\n            setValue(getValue(location.search, unref(param)));\n        };\n        on(window, 'popstate', onChange);\n        on(window, 'pushstate', onChange);\n        on(window, 'replacestate', onChange);\n        return () => {\n            off(window, 'popstate', onChange);\n            off(window, 'pushstate', onChange);\n            off(window, 'replacestate', onChange);\n        };\n    }, []);\n    return value;\n};\nconst useSearchParamServer = () => null;\nvar useSearchParam$1 = isBrowser ? useSearchParam : useSearchParamServer;\n\nconst DRAF = (callback) => setTimeout(callback, 35);\nconst useSize = ({ width = Infinity, height = Infinity } = {}) => {\n    if (!isBrowser) {\n        return [\n            createVNode(\"\"),\n            { width, height },\n        ];\n    }\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const [state, setState] = useReactive({ width, height });\n    const ref$1 = ref(null);\n    let window = null;\n    const setSize = () => {\n        const iframe = ref$1.value;\n        const size = iframe\n            ? {\n                width: iframe.offsetWidth,\n                height: iframe.offsetHeight,\n            }\n            : { width, height };\n        setState(size);\n    };\n    const onWindow = (windowToListenOn) => {\n        on(windowToListenOn, 'resize', setSize);\n        DRAF(setSize);\n    };\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(() => {\n        const iframe = ref$1.value;\n        if (!iframe) {\n            // iframe will be undefined if component is already unmounted\n            return;\n        }\n        if (iframe.parentElement) {\n            iframe.parentElement.style.position = 'relative';\n        }\n        if (iframe.contentWindow) {\n            window = iframe.contentWindow;\n            onWindow(window);\n        }\n        else {\n            const onLoad = () => {\n                on(iframe, 'load', onLoad);\n                window = iframe.contentWindow;\n                onWindow(window);\n            };\n            off(iframe, 'load', onLoad);\n        }\n        return () => {\n            if (window && window.removeEventListener) {\n                off(window, 'resize', setSize);\n            }\n        };\n    });\n    const Sized = createVNode({\n        render() {\n            return createVNode('iframe', {\n                ref: ref$1,\n                style: {\n                    background: 'transparent',\n                    border: 'none',\n                    height: '100%',\n                    left: 0,\n                    position: 'absolute',\n                    top: 0,\n                    width: '100%',\n                    zIndex: -1,\n                },\n            });\n        }\n    });\n    return [Sized, readonly(state)];\n};\n\nconst isFocusedElementEditable = () => {\n    const { activeElement, body } = document;\n    if (!activeElement) {\n        return false;\n    }\n    // If not element has focus, we assume it is not editable, too.\n    if (activeElement === body) {\n        return false;\n    }\n    // Assume <input> and <textarea> elements are editable.\n    switch (activeElement.tagName) {\n        case 'INPUT':\n        case 'TEXTAREA':\n            return true;\n    }\n    // Check if any other focused element id editable.\n    return activeElement.hasAttribute('contenteditable');\n};\nconst isTypedCharGood = ({ keyCode, metaKey, ctrlKey, altKey }) => {\n    if (metaKey || ctrlKey || altKey) {\n        return false;\n    }\n    // 0...9\n    if (keyCode >= 48 && keyCode <= 57) {\n        return true;\n    }\n    // a...z\n    if (keyCode >= 65 && keyCode <= 90) {\n        return true;\n    }\n    // All other keys.\n    return false;\n};\nconst useStartTyping = (onStartTyping) => {\n    useEffect(() => {\n        const keydown = (event) => {\n            !isFocusedElementEditable() && isTypedCharGood(event) && onStartTyping(event);\n        };\n        on(document, 'keydown', keydown);\n        return () => {\n            off(document, 'keydown', keydown);\n        };\n    });\n};\n\nconst useWindowScroll = () => {\n    const [state, setState] = useRafReactive(() => ({\n        x: isBrowser ? window.pageXOffset : 0,\n        y: isBrowser ? window.pageYOffset : 0,\n    }));\n    useEffect(() => {\n        const handler = () => {\n            setState((state) => {\n                const { pageXOffset, pageYOffset } = window;\n                //Check state for change, return same state if no change happened to prevent rerender\n                //(see useState/setState documentation). useState/setState is used internally in useRafState/setState.\n                return state.x !== pageXOffset || state.y !== pageYOffset\n                    ? {\n                        x: pageXOffset,\n                        y: pageYOffset,\n                    }\n                    : state;\n            });\n        };\n        //We have to update window scroll at mount, before subscription.\n        //Window scroll may be changed between render and effect handler.\n        handler();\n        on(window, 'scroll', handler, {\n            capture: false,\n            passive: true,\n        });\n        return () => {\n            off(window, 'scroll', handler);\n        };\n    });\n    return state;\n};\n\nconst useWindowSize = (initialWidth = Infinity, initialHeight = Infinity) => {\n    const [state, setState] = useRafReactive({\n        width: isBrowser ? window.innerWidth : initialWidth,\n        height: isBrowser ? window.innerHeight : initialHeight,\n    });\n    useEffect(() => {\n        if (isBrowser) {\n            const handler = () => {\n                setState({\n                    width: window.innerWidth,\n                    height: window.innerHeight,\n                });\n            };\n            on(window, 'resize', handler);\n            return () => {\n                off(window, 'resize', handler);\n            };\n        }\n    }, []);\n    return state;\n};\n\nfunction useMemo(factory, deps = undefined) {\n    const [state, setState] = useState(() => factory());\n    if (deps) {\n        watch(deps, function () {\n            setState(() => factory());\n        });\n    }\n    return state;\n}\n\nfunction useBreakpoint(breakpoints = { laptopL: 1440, laptop: 1024, tablet: 768 }) {\n    const [screen, setScreen] = useState(0);\n    useEffect(() => {\n        const setSideScreen = () => {\n            setScreen(window.innerWidth);\n        };\n        setSideScreen();\n        on(window, 'resize', setSideScreen);\n        return () => {\n            off(window, 'resize', setSideScreen);\n        };\n    });\n    const sortedBreakpoints = useMemo(() => {\n        return Object.entries(unref(breakpoints)).sort((a, b) => (a[1] >= b[1] ? 1 : -1));\n    }, sources([breakpoints]));\n    const result = useMemo(() => {\n        return sortedBreakpoints.value.reduce((acc, [name, width]) => {\n            if (screen.value >= width) {\n                return name;\n            }\n            else {\n                return acc;\n            }\n        }, sortedBreakpoints.value[0][0]);\n    }, screen);\n    return result;\n}\n\nfunction useStateValidator(state, validator, initialState = [undefined]) {\n    const stateInner = ref(state);\n    const validatorInner = ref(validator);\n    const [validity, setValidity] = useReadonly(initialState);\n    const validate = () => {\n        if (validatorInner.value.length >= 2) {\n            validatorInner.value(unref(stateInner.value), setValidity);\n        }\n        else {\n            setValidity(validatorInner.value(unref(stateInner.value)));\n        }\n    };\n    return [validity, validate];\n}\n\nexport { UseKey, createGlobalState, off, on, sources, useAsync, useAsyncFn, useAsyncRetry, useAudio, useBattery$1 as useBattery, useBeforeUnload, useToggle as useBoolean, useBreakpoint, useClickAway, useComputedSetState, useComputedState, useCookie, useCopyToClipboard, useCounter, useCss, useDebounce, useDefault, useDrop, useDropArea, useEffect, useEvent, useFavicon, useFullscreen, useGeolocation, useGetSet, useHarmonicIntervalFn, useHash, useHover, useHoverDirty, useIdle, useIntersection, useInterval, useKey, useKeyPress, useKeyPressEvent, useKeyboardJs, useList, useLocalStorage, useLocation, useLockBodyScroll, useLongPress, useMap, useMeasure$1 as useMeasure, useMedia, useMediaDevices$1 as useMediaDevices, useMediatedState, useMemo, useMethods, useMotion, useMounted, useMountedState, useMouse, useMouseHovered, useMouseWheel, useMultiStateValidator, useNetworkState, useOrientation, usePageLeave, usePermission, useQueue, useRaf, useRafLoop, useRafReactive, useRafState, useReactive, useReadonly, useReducer, useScratch, useScroll, useScrolling, useSearchParam$1 as useSearchParam, useSessionStorage, useSet, useSetState, useSize, useSlider, useSpeech, useSpring, useStartTyping, useState, useStateList, useStateValidator, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useTitle$1 as useTitle, useToggle, useTween, useVideo, useWindowScroll, useWindowSize };\n\n"]}