{"version":3,"sources":["jsdelivr-header.js","/npm/rooks@9.5.0/dist/esm/index.js"],"names":[],"mappings":"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,gBACN,IACH,OAAO,uBAAuB,EAAY,EAAc,EAC1D,uBAGwB,kBAAqB,QAC7C,SAAS,2BACP,MAAM,cAAE,EAAa,KAAE,GAAS,SAChC,IAAK,EAAe,OAAO,EAC3B,GAAI,IAAkB,EAAM,OAAO,EACnC,MAAM,EAAM,EAAc,QAC1B,MAAY,UAAR,GAA2B,aAAR,GAChB,EAAc,aAAa,kBACpC,CACA,SAAS,aAAa,EAAO,GAC3B,GAAI,EAAM,SAAW,EAAM,SAAW,EAAM,OAAQ,OAAO,EAC3D,MAAM,IAAE,GAAQ,EAChB,SAAI,EAAQ,YAAa,aAAa,KAAK,QACvC,EAAQ,iBAAkB,UAAU,KAAK,GAE/C,CACA,SAAS,iBAAiB,EAAU,GAClC,MAAM,EAAO,CACX,WAAW,EACX,gBAAgB,KACb,GAEC,EAAgB,aAAa,GAC7B,EAAU,eAAe,KACxB,4BAA8B,aAAa,EAAO,IACrD,EAAc,EAChB,GACC,CAAC,EAAe,EAAK,UAAW,EAAK,iBACxC,qBAAoB,KAClB,SAAS,iBAAiB,UAAW,GAC9B,KACL,SAAS,oBAAoB,UAAW,EAAQ,IAEjD,CAAC,GACN,QAEE,OACA,aACA,cACA,eACA,SACA,sBACA,yBACA,oBACA,sBACA,aACA,aACA,WACA,YACA,cACA,wBACA,mBACA,kBACA,qBACA,YACA,aACA,iBACA,yBACA,iBACA,2BACA,UACA,kBACA,oBACA,SACA,eACA,SACA,eACA,WACA,aACA,iBACA,YACA,aACA,cACA,eACA,gBACA,oBACA,aACA,SACA,2BACA,gBACA,mBACA,oBACA,OACA,eACA,UACA,QACA,mBACA,qBACA,kBACA,YACA,WACA,cACA,iBACA,aACA,SACA,kBACA,mBACA,uBACA,oBACA,uBACA,kBACA,qBACA,sBACA,gBACA,8BACA,cACA,cACA,eACA,oCACA,eACA,oCACA,iBACA,kBACA,kBACA,UACA,eACA,gBACA,mBACA,aACA,uBACA,wBACA,wBACA,qBACA,qBACA,WACA,cACA,OACA,cACA,eACA,qBACA,gBACA,oBACA,UACA,kBACA,uBACA,YACA,SACA,UACA,UACA,cACA,YACA,mBACA,eACA,UACA,SACA,iBACA,aACA,WACA,SACA,eACA,aACA,mBACA,eACA,uBACA,wBACA","file":"/npm/rooks@9.5.0/dist/esm/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/rooks@9.5.0/dist/esm/index.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 {\n  useBroadcastChannel\n} from \"./chunk-4BDODBWX.js\";\n\n// src/hooks/useOnLongHover.ts\nimport { useCallback as useCallback2, useEffect as useEffect4, useState } from \"react\";\n\n// src/hooks/useFreshCallback.ts\nimport { useCallback } from \"react\";\n\n// src/hooks/useFreshRef.ts\nimport { useEffect as useEffect2, useRef } from \"react\";\n\n// src/hooks/useIsomorphicEffect.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useIsomorphicEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\n// src/hooks/useFreshRef.ts\nfunction useFreshRef(value, preferLayoutEffect = false) {\n  const useEffectToUse = preferLayoutEffect ? useIsomorphicEffect : useEffect2;\n  const ref = useRef(value);\n  useEffectToUse(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n// src/hooks/useFreshCallback.ts\nfunction useFreshCallback(callback) {\n  const freshRef = useFreshRef(callback);\n  const tick = useCallback(\n    (...args) => {\n      return freshRef.current(...args);\n    },\n    [freshRef]\n  );\n  return tick;\n}\n\n// src/hooks/useTimeoutWhen.ts\nimport { useEffect as useEffect3 } from \"react\";\n\n// src/utils/noop.ts\nvar noop = () => {\n};\n\n// src/hooks/useTimeoutWhen.ts\nfunction useTimeoutWhen(callback, timeoutDelayMs = 0, when = true, key = 0) {\n  const freshCallback = useFreshCallback(callback);\n  useEffect3(() => {\n    if (when) {\n      let internalCallback2 = function() {\n        freshCallback();\n      };\n      var internalCallback = internalCallback2;\n      if (typeof window !== \"undefined\") {\n        const timeout = window.setTimeout(internalCallback2, timeoutDelayMs);\n        return () => {\n          window.clearTimeout(timeout);\n        };\n      } else {\n        console.warn(\"useTimeoutWhen: window is undefined.\");\n      }\n    }\n    return noop;\n  }, [timeoutDelayMs, when, key, freshCallback]);\n}\n\n// src/hooks/useOnLongHover.ts\nvar useOnLongHover = (callback, { duration = 300 } = {}) => {\n  const [targetNode, setTargetNode] = useState(null);\n  const ref = useCallback2((node) => {\n    setTargetNode(node);\n  }, []);\n  const [isHovering, setIsHovering] = useState(false);\n  const freshCallback = useFreshCallback(callback);\n  useTimeoutWhen(\n    () => {\n      freshCallback();\n    },\n    duration,\n    isHovering\n  );\n  const start = useCallback2(() => {\n    setIsHovering(true);\n  }, []);\n  const handleOnMouseLeave = useCallback2((_) => {\n    setIsHovering(false);\n  }, []);\n  useEffect4(() => {\n    if (targetNode) {\n      targetNode.addEventListener(\"mouseenter\", start);\n      targetNode.addEventListener(\"mouseleave\", handleOnMouseLeave);\n    }\n    return () => {\n      if (targetNode) {\n        targetNode.removeEventListener(\"mouseenter\", start);\n        targetNode.removeEventListener(\"mouseleave\", handleOnMouseLeave);\n      }\n    };\n  }, [start, handleOnMouseLeave, targetNode]);\n  return ref;\n};\n\n// src/hooks/useOnLongPress.ts\nimport { useCallback as useCallback3, useEffect as useEffect5, useState as useState2 } from \"react\";\nvar defaultOnClick = () => {\n};\nvar useOnLongPress = (callback, { onClick, duration = 300 } = {}) => {\n  const [targetNode, setTargetNode] = useState2(null);\n  const ref = useCallback3((node) => {\n    setTargetNode(node);\n  }, []);\n  const [isPressing, setIsPressing] = useState2(false);\n  const freshCallback = useFreshCallback(callback);\n  const freshClick = useFreshCallback(onClick ?? defaultOnClick);\n  useTimeoutWhen(freshCallback, duration, isPressing);\n  const start = useCallback3((_) => {\n    setIsPressing(true);\n  }, []);\n  const handleOnClick = useCallback3(\n    (event) => {\n      setIsPressing(false);\n      freshClick(event);\n    },\n    [freshClick]\n  );\n  useEffect5(() => {\n    if (targetNode) {\n      targetNode.addEventListener(\"mousedown\", start);\n      targetNode.addEventListener(\"mouseup\", handleOnClick);\n      targetNode.addEventListener(\"mouseleave\", handleOnClick);\n      targetNode.addEventListener(\"touchstart\", start);\n      targetNode.addEventListener(\"touchend\", handleOnClick);\n      targetNode.addEventListener(\"touchcancel\", handleOnClick);\n    }\n    return () => {\n      if (targetNode) {\n        targetNode.removeEventListener(\"mousedown\", start);\n        targetNode.removeEventListener(\"mouseup\", handleOnClick);\n        targetNode.removeEventListener(\"mouseleave\", handleOnClick);\n        targetNode.removeEventListener(\"touchstart\", start);\n        targetNode.removeEventListener(\"touchend\", handleOnClick);\n        targetNode.removeEventListener(\"touchcancel\", handleOnClick);\n      }\n    };\n  }, [start, handleOnClick, targetNode]);\n  return ref;\n};\n\n// src/hooks/useMapState.ts\nimport { useCallback as useCallback4, useState as useState3 } from \"react\";\nfunction useMapState(initialValue) {\n  const [map, setMap] = useState3(initialValue);\n  const set = useCallback4((key, value) => {\n    setMap((currentMap) => ({\n      ...currentMap,\n      [key]: value\n    }));\n  }, []);\n  const has = useCallback4(\n    (key) => {\n      return typeof map[key] !== \"undefined\";\n    },\n    [map]\n  );\n  const setMultiple = useCallback4((nextMap) => {\n    setMap((currentMap) => ({\n      ...currentMap,\n      ...nextMap\n    }));\n  }, []);\n  const removeMultiple = useCallback4(\n    (...keys) => {\n      setMap((currentMap) => {\n        const nextMap = { ...currentMap };\n        for (const key of keys) {\n          delete nextMap[key];\n        }\n        return nextMap;\n      });\n    },\n    [setMap]\n  );\n  const remove = useCallback4(\n    (key) => {\n      setMap((currentMap) => {\n        const nextMap = { ...currentMap };\n        delete nextMap[key];\n        return nextMap;\n      });\n    },\n    [setMap]\n  );\n  const removeAll = useCallback4(() => {\n    setMap((currentMap) => {\n      const nextMap = { ...currentMap };\n      for (const key in nextMap) {\n        if (nextMap.hasOwnProperty(key)) {\n          delete nextMap[key];\n        }\n      }\n      return nextMap;\n    });\n  }, [setMap]);\n  return [\n    map,\n    {\n      has,\n      remove,\n      removeAll,\n      removeMultiple,\n      set,\n      setMultiple\n    }\n  ];\n}\n\n// src/hooks/useAnimation.ts\nimport { useState as useState4, useEffect as useEffect7, useRef as useRef3 } from \"react\";\n\n// src/hooks/useRaf.ts\nimport raf from \"raf\";\nimport { useRef as useRef2, useEffect as useEffect6 } from \"react\";\nfunction useRaf(callback, isActive) {\n  const savedCallback = useRef2(null);\n  useEffect6(() => {\n    savedCallback.current = callback;\n  }, [callback]);\n  useEffect6(() => {\n    let animationFrame;\n    let startTime = Date.now();\n    function tick() {\n      const timeElapsed = Date.now() - startTime;\n      startTime = Date.now();\n      loop();\n      savedCallback.current?.(timeElapsed);\n    }\n    function loop() {\n      animationFrame = raf(tick);\n    }\n    if (isActive) {\n      startTime = Date.now();\n      loop();\n      return () => {\n        if (animationFrame) {\n          raf.cancel(animationFrame);\n        }\n      };\n    } else {\n      return noop;\n    }\n  }, [isActive]);\n}\n\n// src/hooks/useAnimation.ts\nvar hasWarnedDeprecation = false;\nfunction useAnimation(options) {\n  if (process.env.NODE_ENV === \"development\" && !hasWarnedDeprecation) {\n    console.warn(\n      \"[rooks] useAnimation is deprecated and will be removed in a future major version. Please migrate to useEasing for better control and features. See: https://rooks.vercel.app/docs/hooks/useEasing\"\n    );\n    hasWarnedDeprecation = true;\n  }\n  const { duration, easing = (t) => t, delay = 0, loop = false } = options;\n  const [value, setValue] = useState4(0);\n  const startTimeRef = useRef3(null);\n  const delayRef = useRef3(delay);\n  useRaf(() => {\n    if (startTimeRef.current === null) {\n      startTimeRef.current = performance.now();\n    }\n    const elapsed = performance.now() - startTimeRef.current;\n    if (elapsed < delayRef.current) {\n      return true;\n    }\n    const timeSinceStart = elapsed - delayRef.current;\n    const progress = Math.min(timeSinceStart / duration, 1);\n    const easedProgress = easing(progress);\n    setValue(easedProgress);\n    if (progress < 1) {\n      return true;\n    }\n    if (loop) {\n      startTimeRef.current = performance.now();\n      delayRef.current = 0;\n      return true;\n    }\n    return false;\n  }, true);\n  useEffect7(() => {\n    startTimeRef.current = null;\n    delayRef.current = delay;\n  }, [duration, easing, delay, loop]);\n  return value;\n}\n\n// src/hooks/useArrayState.ts\nimport { useCallback as useCallback5, useMemo, useState as useState5 } from \"react\";\nfunction useArrayState(initial) {\n  const [array, setArray] = useState5(initial ?? []);\n  const push = useCallback5(\n    (value) => {\n      setArray([...array, value]);\n    },\n    [array]\n  );\n  const pop = useCallback5(() => {\n    setArray(array.slice(0, array.length - 1));\n  }, [array]);\n  const clear = useCallback5(() => {\n    setArray([]);\n  }, []);\n  const unshift = useCallback5(\n    (value) => {\n      setArray([value, ...array]);\n    },\n    [array]\n  );\n  const shift = useCallback5(() => {\n    setArray(array.slice(1));\n  }, [array]);\n  const reverse = useCallback5(() => {\n    setArray([...array].reverse());\n  }, [array]);\n  const concat = useCallback5(\n    (value) => {\n      setArray([...array, ...value]);\n    },\n    [array]\n  );\n  const fill = useCallback5(\n    (value, start, end) => {\n      setArray([...array].fill(value, start, end));\n    },\n    [array]\n  );\n  const updateItemAtIndex = useCallback5(\n    (index, value) => {\n      setArray((prevArray) => {\n        const newArray = [...prevArray];\n        newArray[index] = value;\n        return newArray;\n      });\n    },\n    [setArray]\n  );\n  const splice = useCallback5(\n    (...args) => {\n      setArray((prevArray) => {\n        const newArray = [...prevArray];\n        newArray.splice(...args);\n        return newArray;\n      });\n    },\n    [setArray]\n  );\n  const removeItemAtIndex = useCallback5(\n    (index) => {\n      setArray((prevArray) => {\n        const newArray = [...prevArray];\n        newArray.splice(index, 1);\n        return newArray;\n      });\n    },\n    [setArray]\n  );\n  const replaceItemAtIndex = useCallback5(\n    (index, value) => {\n      setArray((prevArray) => {\n        const newArray = [...prevArray];\n        newArray.splice(index, 1, value);\n        return newArray;\n      });\n    },\n    [setArray]\n  );\n  const insertItemAtIndex = useCallback5(\n    (index, value) => {\n      setArray((prevArray) => {\n        const newArray = [...prevArray];\n        newArray.splice(index, 0, value);\n        return newArray;\n      });\n    },\n    [setArray]\n  );\n  const sort = useCallback5(\n    (compareFn) => {\n      setArray([...array].sort(compareFn));\n    },\n    [array]\n  );\n  const controls = useMemo(() => {\n    return {\n      push,\n      pop,\n      clear,\n      unshift,\n      shift,\n      reverse,\n      concat,\n      fill,\n      updateItemAtIndex,\n      setArray,\n      splice,\n      removeItemAtIndex,\n      replaceItemAtIndex,\n      insertItemAtIndex,\n      sort\n    };\n  }, [\n    push,\n    pop,\n    clear,\n    unshift,\n    shift,\n    reverse,\n    concat,\n    fill,\n    updateItemAtIndex,\n    setArray,\n    splice,\n    removeItemAtIndex,\n    replaceItemAtIndex,\n    insertItemAtIndex,\n    sort\n  ]);\n  const returnValue = useMemo(() => {\n    return [array, controls];\n  }, [array, controls]);\n  return returnValue;\n}\n\n// src/hooks/useAsyncEffect.ts\nimport { useEffect as useEffect9, useRef as useRef5, useCallback as useCallback7 } from \"react\";\n\n// src/hooks/useGetIsMounted.ts\nimport { useCallback as useCallback6, useEffect as useEffect8, useRef as useRef4 } from \"react\";\nvar useGetIsMounted = () => {\n  const isMountedRef = useRef4(false);\n  const get = useCallback6(() => isMountedRef.current, []);\n  useEffect8(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  return get;\n};\n\n// src/hooks/useAsyncEffect.ts\nfunction useAsyncEffect(effect, deps, cleanup) {\n  const lastCallId = useRef5(0);\n  const getIsMounted = useGetIsMounted();\n  const effectRef = useFreshRef(effect);\n  const callback = useCallback7(async () => {\n    const callId = ++lastCallId.current;\n    const shouldContinueEffect = () => {\n      return getIsMounted() && callId === lastCallId.current;\n    };\n    try {\n      return await effectRef.current(shouldContinueEffect);\n    } catch (error) {\n      throw error;\n    }\n  }, [getIsMounted, ...deps]);\n  useEffect9(() => {\n    let result;\n    callback().then((value) => {\n      result = value;\n    });\n    return () => {\n      cleanup?.(result);\n    };\n  }, [callback, cleanup]);\n}\n\n// src/hooks/useAudio.ts\nimport { useState as useState6, useEffect as useEffect10 } from \"react\";\nvar noop2 = () => {\n};\nfunction useAudio(options = {}, callbacks = {}) {\n  const {\n    autoPlay = false,\n    isMuted: initialIsMuted = false,\n    volume: initialVolume = 1,\n    playbackRate: initialPlaybackRate = 1,\n    loop: initialLoop = false,\n    preload = \"metadata\"\n  } = options;\n  const [audioNode, setAudioNode] = useState6(null);\n  const [state, setState] = useState6({\n    isPlaying: false,\n    isMuted: initialIsMuted,\n    volume: initialVolume,\n    currentTime: 0,\n    duration: 0,\n    playbackRate: initialPlaybackRate,\n    isLoading: false,\n    isBuffering: false,\n    loop: initialLoop,\n    hasError: false\n  });\n  const onPlay = useFreshCallback(callbacks.onPlay ?? noop2);\n  const onPause = useFreshCallback(callbacks.onPause ?? noop2);\n  const onEnded = useFreshCallback(callbacks.onEnded ?? noop2);\n  const onMute = useFreshCallback(callbacks.onMute ?? noop2);\n  const onUnmute = useFreshCallback(callbacks.onUnmute ?? noop2);\n  const onLoadedMetadata = useFreshCallback(callbacks.onLoadedMetadata ?? noop2);\n  const onTimeUpdate = useFreshCallback(callbacks.onTimeUpdate ?? noop2);\n  const onDurationChange = useFreshCallback(callbacks.onDurationChange ?? noop2);\n  const onVolumeChange = useFreshCallback(callbacks.onVolumeChange ?? noop2);\n  const onRateChange = useFreshCallback(callbacks.onRateChange ?? noop2);\n  const onError = useFreshCallback(callbacks.onError ?? noop2);\n  const onLoadStart = useFreshCallback(callbacks.onLoadStart ?? noop2);\n  const onCanPlay = useFreshCallback(callbacks.onCanPlay ?? noop2);\n  const onWaiting = useFreshCallback(callbacks.onWaiting ?? noop2);\n  const audioCallbackRef = (node) => {\n    if (node !== null) {\n      setAudioNode(node);\n    }\n  };\n  useEffect10(() => {\n    if (!audioNode) return;\n    audioNode.muted = state.isMuted;\n    audioNode.volume = state.volume;\n    audioNode.playbackRate = state.playbackRate;\n    audioNode.loop = state.loop;\n    audioNode.preload = preload;\n    if (autoPlay) {\n      audioNode.autoplay = true;\n    }\n  }, [audioNode, autoPlay, preload]);\n  useEffect10(() => {\n    if (!audioNode) return;\n    const handleLoadStart = () => {\n      setState((prev) => ({ ...prev, isLoading: true, hasError: false }));\n      onLoadStart();\n    };\n    const handleLoadedMetadata = () => {\n      setState((prev) => ({\n        ...prev,\n        duration: audioNode.duration,\n        isLoading: false,\n        hasError: false\n      }));\n      onLoadedMetadata();\n      onDurationChange(audioNode.duration);\n    };\n    const handleCanPlay = () => {\n      setState((prev) => ({ ...prev, isBuffering: false, hasError: false }));\n      onCanPlay();\n    };\n    const handleWaiting = () => {\n      setState((prev) => ({ ...prev, isBuffering: true }));\n      onWaiting();\n    };\n    const handlePlay = () => {\n      setState((prev) => ({ ...prev, isPlaying: true, hasError: false }));\n      onPlay();\n    };\n    const handlePause = () => {\n      setState((prev) => ({ ...prev, isPlaying: false }));\n      onPause();\n    };\n    const handleEnded = () => {\n      setState((prev) => ({ ...prev, isPlaying: false }));\n      onEnded();\n    };\n    const handleTimeUpdate = () => {\n      const currentTime = audioNode.currentTime;\n      setState((prev) => ({ ...prev, currentTime }));\n      onTimeUpdate(currentTime);\n    };\n    const handleDurationChange = () => {\n      const duration = audioNode.duration;\n      setState((prev) => ({ ...prev, duration }));\n      onDurationChange(duration);\n    };\n    const handleVolumeChange = () => {\n      const volume = audioNode.volume;\n      const isMuted = audioNode.muted;\n      setState((prev) => {\n        const newState = { ...prev, volume, isMuted };\n        if (isMuted !== prev.isMuted) {\n          if (isMuted) {\n            onMute();\n          } else {\n            onUnmute();\n          }\n        }\n        return newState;\n      });\n      onVolumeChange(volume);\n    };\n    const handleRateChange = () => {\n      const playbackRate = audioNode.playbackRate;\n      setState((prev) => ({ ...prev, playbackRate }));\n      onRateChange(playbackRate);\n    };\n    const handleError = () => {\n      const error = audioNode.error;\n      const errorMessage = error ? `Audio error (${error.code}): ${error.message}` : \"Unknown audio error occurred\";\n      setState((prev) => ({\n        ...prev,\n        hasError: true,\n        error: errorMessage,\n        isLoading: false,\n        isBuffering: false,\n        isPlaying: false\n      }));\n      onError(errorMessage);\n    };\n    audioNode.addEventListener(\"loadstart\", handleLoadStart);\n    audioNode.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n    audioNode.addEventListener(\"canplay\", handleCanPlay);\n    audioNode.addEventListener(\"waiting\", handleWaiting);\n    audioNode.addEventListener(\"play\", handlePlay);\n    audioNode.addEventListener(\"pause\", handlePause);\n    audioNode.addEventListener(\"ended\", handleEnded);\n    audioNode.addEventListener(\"timeupdate\", handleTimeUpdate);\n    audioNode.addEventListener(\"durationchange\", handleDurationChange);\n    audioNode.addEventListener(\"volumechange\", handleVolumeChange);\n    audioNode.addEventListener(\"ratechange\", handleRateChange);\n    audioNode.addEventListener(\"error\", handleError);\n    return () => {\n      audioNode.removeEventListener(\"loadstart\", handleLoadStart);\n      audioNode.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n      audioNode.removeEventListener(\"canplay\", handleCanPlay);\n      audioNode.removeEventListener(\"waiting\", handleWaiting);\n      audioNode.removeEventListener(\"play\", handlePlay);\n      audioNode.removeEventListener(\"pause\", handlePause);\n      audioNode.removeEventListener(\"ended\", handleEnded);\n      audioNode.removeEventListener(\"timeupdate\", handleTimeUpdate);\n      audioNode.removeEventListener(\"durationchange\", handleDurationChange);\n      audioNode.removeEventListener(\"volumechange\", handleVolumeChange);\n      audioNode.removeEventListener(\"ratechange\", handleRateChange);\n      audioNode.removeEventListener(\"error\", handleError);\n    };\n  }, [\n    audioNode,\n    onLoadStart,\n    onLoadedMetadata,\n    onCanPlay,\n    onWaiting,\n    onPlay,\n    onPause,\n    onEnded,\n    onTimeUpdate,\n    onDurationChange,\n    onVolumeChange,\n    onRateChange,\n    onError,\n    onMute,\n    onUnmute\n  ]);\n  const play = () => {\n    if (!audioNode) return;\n    audioNode.play().catch((error) => {\n      const errorMessage = error instanceof Error ? error.message : \"Failed to play audio\";\n      setState((prev) => ({\n        ...prev,\n        hasError: true,\n        error: errorMessage,\n        isPlaying: false\n      }));\n      onError(errorMessage);\n    });\n  };\n  const pause = () => {\n    if (!audioNode) return;\n    audioNode.pause();\n  };\n  const togglePlay = () => {\n    if (state.isPlaying) {\n      pause();\n    } else {\n      play();\n    }\n  };\n  const mute = () => {\n    if (!audioNode) return;\n    audioNode.muted = true;\n  };\n  const unmute = () => {\n    if (!audioNode) return;\n    audioNode.muted = false;\n  };\n  const toggleMute = () => {\n    if (state.isMuted) {\n      unmute();\n    } else {\n      mute();\n    }\n  };\n  const setVolume = (volume) => {\n    if (!audioNode) return;\n    const clampedVolume = Math.max(0, Math.min(1, volume));\n    audioNode.volume = clampedVolume;\n  };\n  const setCurrentTime = (time) => {\n    if (!audioNode) return;\n    const clampedTime = Math.max(0, Math.min(state.duration || 0, time));\n    audioNode.currentTime = clampedTime;\n  };\n  const setPlaybackRate = (rate) => {\n    if (!audioNode) return;\n    const clampedRate = Math.max(0.25, Math.min(4, rate));\n    audioNode.playbackRate = clampedRate;\n  };\n  const seek = (seconds) => {\n    setCurrentTime(state.currentTime + seconds);\n  };\n  const fastForward = (seconds = 10) => {\n    seek(seconds);\n  };\n  const rewind = (seconds = 10) => {\n    seek(-seconds);\n  };\n  const setLoop = (loop) => {\n    if (!audioNode) return;\n    audioNode.loop = loop;\n    setState((prev) => ({ ...prev, loop }));\n  };\n  const controls = {\n    play,\n    pause,\n    togglePlay,\n    mute,\n    unmute,\n    toggleMute,\n    setVolume,\n    setCurrentTime,\n    setPlaybackRate,\n    seek,\n    fastForward,\n    rewind,\n    setLoop\n  };\n  return [audioCallbackRef, state, controls];\n}\n\n// src/hooks/useBoundingclientrect.ts\nimport { useState as useState7, useCallback as useCallback8 } from \"react\";\n\n// src/hooks/useDidMount.ts\nimport { useEffect as useEffect11 } from \"react\";\nfunction useDidMount(callback) {\n  useEffect11(() => {\n    if (typeof callback === \"function\") {\n      callback();\n    }\n  }, []);\n}\n\n// src/hooks/useMutationObserver.ts\nimport { useEffect as useEffect12 } from \"react\";\nvar config = {\n  attributes: true,\n  characterData: true,\n  childList: true,\n  subtree: true\n};\nfunction useMutationObserver(ref, callback, options = config) {\n  useEffect12(() => {\n    if (ref.current) {\n      const observer = new MutationObserver(callback);\n      observer.observe(ref.current, options);\n      return () => {\n        observer.disconnect();\n      };\n    }\n    return noop;\n  }, [callback, options, ref]);\n}\n\n// src/hooks/useBoundingclientrect.ts\nfunction getBoundingClientRect(element) {\n  return element.getBoundingClientRect();\n}\nfunction useBoundingclientrect(ref) {\n  const [domRect, setDomRect] = useState7(null);\n  const update = useCallback8(() => {\n    setDomRect(ref.current ? getBoundingClientRect(ref.current) : null);\n  }, [ref]);\n  useDidMount(() => {\n    update();\n  });\n  useMutationObserver(ref, update);\n  return domRect;\n}\n\n// src/hooks/useBoundingclientrectRef.ts\nimport { useState as useState9, useEffect as useEffect14, useCallback as useCallback10 } from \"react\";\n\n// src/hooks/useForkRef.ts\nimport { useMemo as useMemo2 } from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction useForkRef(refA, refB) {\n  return useMemo2(() => {\n    if (refA === null && refB === null) {\n      return null;\n    }\n    return (refValue) => {\n      setRef(refA, refValue);\n      setRef(refB, refValue);\n    };\n  }, [refA, refB]);\n}\n\n// src/hooks/useMutationObserverRef.ts\nimport { useEffect as useEffect13, useCallback as useCallback9, useState as useState8 } from \"react\";\nvar config2 = {\n  attributes: true,\n  characterData: true,\n  childList: true,\n  subtree: true\n};\nfunction useMutationObserverRef(callback, options = config2) {\n  const [node, setNode] = useState8(null);\n  useEffect13(() => {\n    if (node) {\n      const observer = new MutationObserver(callback);\n      observer.observe(node, options);\n      return () => {\n        observer.disconnect();\n      };\n    }\n    return noop;\n  }, [node, callback, options]);\n  const ref = useCallback9((nodeElement) => {\n    setNode(nodeElement);\n  }, []);\n  return [ref];\n}\n\n// src/hooks/useBoundingclientrectRef.ts\nfunction getBoundingClientRect2(element) {\n  return element.getBoundingClientRect();\n}\nfunction useBoundingclientrectRef() {\n  const [domRect, setDomRect] = useState9(null);\n  const [node, setNode] = useState9(null);\n  const update = useCallback10(() => {\n    setDomRect(node ? getBoundingClientRect2(node) : null);\n  }, [node]);\n  useEffect14(() => {\n    update();\n  }, [update]);\n  const ref = useCallback10((nodeElement) => {\n    setNode(nodeElement);\n  }, []);\n  const [mutationObserverRef] = useMutationObserverRef(update);\n  const forkedRef = useForkRef(ref, mutationObserverRef);\n  return [forkedRef, domRect, update];\n}\n\n// src/hooks/useCheckboxInputState.ts\nimport { useState as useState10, useCallback as useCallback11, useMemo as useMemo3 } from \"react\";\nfunction useCheckboxInputState(initialValue) {\n  const [checked, setInternalChecked] = useState10(initialValue);\n  const setChecked = useCallback11((newChecked) => {\n    setInternalChecked(newChecked);\n  }, []);\n  const toggle = useCallback11(() => {\n    setInternalChecked((prev) => !prev);\n  }, []);\n  const handleChange = useCallback11(\n    (event) => {\n      setInternalChecked(event.target.checked);\n    },\n    []\n  );\n  const inputProps = useMemo3(\n    () => ({\n      checked,\n      onChange: handleChange\n    }),\n    [checked, handleChange]\n  );\n  return {\n    checked,\n    toggle,\n    setChecked,\n    inputProps\n  };\n}\n\n// src/hooks/useClipboard.ts\nimport { useState as useState11, useCallback as useCallback12 } from \"react\";\nfunction useClipboard() {\n  const [text, setText] = useState11(null);\n  const [error, setError] = useState11(null);\n  const isSupported = typeof window !== \"undefined\" && typeof navigator !== \"undefined\" && \"clipboard\" in navigator;\n  const copy = useCallback12(\n    async (value) => {\n      if (!isSupported) {\n        const err = new Error(\"Clipboard API is not supported\");\n        setError(err);\n        throw err;\n      }\n      try {\n        await navigator.clipboard.writeText(value);\n        setText(value);\n        setError(null);\n      } catch (err) {\n        const error2 = err instanceof Error ? err : new Error(\"Failed to copy to clipboard\");\n        setError(error2);\n        throw error2;\n      }\n    },\n    [isSupported]\n  );\n  const paste = useCallback12(async () => {\n    if (!isSupported) {\n      const err = new Error(\"Clipboard API is not supported\");\n      setError(err);\n      throw err;\n    }\n    try {\n      const clipboardText = await navigator.clipboard.readText();\n      setText(clipboardText);\n      setError(null);\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Failed to read from clipboard\");\n      setError(error2);\n      throw error2;\n    }\n  }, [isSupported]);\n  return {\n    text,\n    copy,\n    paste,\n    isSupported,\n    error\n  };\n}\n\n// src/hooks/useCountdown.ts\nimport { useState as useState12 } from \"react\";\n\n// src/hooks/useIntervalWhen.ts\nimport { useRef as useRef6, useEffect as useEffect15 } from \"react\";\nfunction useIntervalWhen(callback, intervalDurationMs = 0, when = true, startImmediate = false) {\n  const savedRefCallback = useRef6(void 0);\n  useEffect15(() => {\n    savedRefCallback.current = callback;\n  });\n  useEffect15(() => {\n    if (when) {\n      let internalCallback2 = function() {\n        savedRefCallback.current?.();\n      };\n      var internalCallback = internalCallback2;\n      if (startImmediate) {\n        internalCallback2();\n      }\n      const interval = window.setInterval(internalCallback2, intervalDurationMs);\n      return () => {\n        window.clearInterval(interval);\n      };\n    }\n    return noop;\n  }, [when, intervalDurationMs, startImmediate]);\n}\n\n// src/hooks/useCountdown.ts\nfunction useCountdown(endTime, options = {}) {\n  const { interval = 1e3, onDown, onEnd } = options;\n  const [time, setTime] = useState12(() => /* @__PURE__ */ new Date());\n  const restTime = endTime.getTime() - time.getTime();\n  const count = restTime > 0 ? Math.ceil(restTime / interval) : 0;\n  useIntervalWhen(onTick, count ? interval : void 0, true, true);\n  return count;\n  function onTick() {\n    const newTime = /* @__PURE__ */ new Date();\n    if (newTime > endTime) {\n      if (onEnd) {\n        onEnd(newTime);\n      }\n      setTime(endTime);\n      return;\n    }\n    if (onDown) {\n      onDown(restTime, newTime);\n    }\n    setTime(newTime);\n  }\n}\n\n// src/hooks/useCounter.ts\nimport { useCallback as useCallback13, useState as useState13 } from \"react\";\nfunction useCounter(initialValue) {\n  const [counter, setCounter] = useState13(initialValue);\n  const incrementBy = useCallback13((incrAmount) => {\n    setCounter((currentCounter) => currentCounter + incrAmount);\n  }, []);\n  const decrementBy = useCallback13(\n    (decrAmount) => {\n      incrementBy(-decrAmount);\n    },\n    [incrementBy]\n  );\n  const increment = useCallback13(() => {\n    incrementBy(1);\n  }, [incrementBy]);\n  const decrement = useCallback13(() => {\n    incrementBy(-1);\n  }, [incrementBy]);\n  const reset = useCallback13(() => {\n    setCounter(initialValue);\n  }, [initialValue]);\n  return {\n    decrement,\n    decrementBy,\n    increment,\n    incrementBy,\n    reset,\n    value: counter\n  };\n}\n\n// src/hooks/useDebounce.ts\nimport debounce from \"lodash.debounce\";\nimport { useRef as useRef7, useCallback as useCallback14 } from \"react\";\n\n// src/hooks/useWillUnmount.ts\nimport { useEffect as useEffect16 } from \"react\";\nfunction useWillUnmount(callback) {\n  useEffect16(() => {\n    return callback;\n  }, []);\n}\n\n// src/hooks/useDebounce.ts\nfunction useDebounce(callback, wait, options) {\n  const createDebouncedCallback = useCallback14(\n    (function_) => {\n      return debounce(function_, wait, options);\n    },\n    [wait, options]\n  );\n  const freshCallback = useFreshRef(callback);\n  function tick(...args) {\n    freshCallback.current?.(...args);\n  }\n  const debouncedCallbackRef = useRef7(\n    createDebouncedCallback(tick)\n  );\n  useWillUnmount(() => {\n    debouncedCallbackRef.current?.cancel();\n  });\n  return debouncedCallbackRef.current;\n}\n\n// src/hooks/useDebounceFn.ts\nimport { useRef as useRef8, useCallback as useCallback15, useState as useState14 } from \"react\";\nfunction useDebounceFn(func, delay, options = { leading: false, trailing: true }) {\n  const { leading, trailing, maxWait } = options;\n  if (!leading && !trailing) {\n    throw new Error(\"leading and trailing cannot both be false\");\n  } else if (typeof maxWait !== \"undefined\" && maxWait < delay) {\n    throw new Error(\"maxWait cannot be less than delay\");\n  }\n  const funcRef = useFreshCallback(func);\n  const [isTimeoutEnabled, setIsTimeoutEnabled] = useState14(false);\n  const [key, setKey] = useState14(0);\n  const lastExecutionTimeRef = useRef8(0);\n  const argsRef = useRef8(void 0);\n  const debouncedFn = useCallback15(\n    (...args) => {\n      argsRef.current = args;\n      const overrideTimeout = typeof maxWait !== \"undefined\" && lastExecutionTimeRef.current && Date.now() - lastExecutionTimeRef.current > maxWait;\n      if (leading) {\n        if (isTimeoutEnabled && overrideTimeout) {\n          setKey((prevKey) => prevKey + 1);\n          lastExecutionTimeRef.current = Date.now();\n          try {\n            funcRef(...args);\n          } catch (error) {\n            console.warn(error);\n          }\n        } else if (overrideTimeout && !isTimeoutEnabled) {\n          setIsTimeoutEnabled(true);\n          lastExecutionTimeRef.current = Date.now();\n          try {\n            funcRef(...args);\n          } catch (error) {\n            console.warn(error);\n          }\n        } else if (isTimeoutEnabled && !overrideTimeout) {\n        } else {\n          setIsTimeoutEnabled(true);\n          lastExecutionTimeRef.current = Date.now();\n          try {\n            funcRef(...args);\n          } catch (error) {\n            console.warn(error);\n          }\n        }\n      }\n      if (trailing) {\n        if (isTimeoutEnabled) {\n          setKey((prevKey) => prevKey + 1);\n        } else {\n          setIsTimeoutEnabled(true);\n        }\n      }\n    },\n    [maxWait, isTimeoutEnabled, leading, trailing, funcRef]\n  );\n  useTimeoutWhen(\n    () => {\n      if (typeof maxWait !== \"undefined\" && trailing) {\n        if (!argsRef.current) return;\n        lastExecutionTimeRef.current = Date.now();\n        try {\n          funcRef(...argsRef.current);\n        } catch (error) {\n          console.warn(error);\n        }\n      }\n    },\n    maxWait ?? Infinity,\n    isTimeoutEnabled && typeof maxWait !== \"undefined\" && trailing,\n    key\n  );\n  useTimeoutWhen(\n    () => {\n      if (trailing) {\n        if (!argsRef.current) return;\n        lastExecutionTimeRef.current = Date.now();\n        try {\n          funcRef(...argsRef.current);\n        } catch (error) {\n          console.warn(error);\n        }\n      }\n      setIsTimeoutEnabled(false);\n    },\n    delay,\n    isTimeoutEnabled && trailing,\n    key\n  );\n  const freshDebouncedFn = useFreshCallback(debouncedFn);\n  return [freshDebouncedFn, isTimeoutEnabled];\n}\n\n// src/hooks/useDebouncedAsyncEffect.ts\nimport { useEffect as useEffect17, useRef as useRef9, useCallback as useCallback16 } from \"react\";\nfunction useDebouncedAsyncEffect(effect, deps, delay = 500, cleanup, options) {\n  const lastCallId = useRef9(0);\n  const getIsMounted = useGetIsMounted();\n  const effectRef = useFreshRef(effect);\n  const resultRef = useRef9(void 0);\n  const asyncCallback = useCallback16(async () => {\n    const callId = ++lastCallId.current;\n    const shouldContinueEffect = () => {\n      return getIsMounted() && callId === lastCallId.current;\n    };\n    try {\n      const result = await effectRef.current(shouldContinueEffect);\n      if (shouldContinueEffect()) {\n        resultRef.current = result;\n      }\n      return result;\n    } catch (error) {\n      if (shouldContinueEffect()) {\n        throw error;\n      }\n    }\n  }, [getIsMounted, effectRef]);\n  const debouncedAsyncCallback = useDebounce(asyncCallback, delay, options);\n  const cleanupRef = useFreshRef(cleanup);\n  useEffect17(() => {\n    debouncedAsyncCallback();\n    const currentCleanup = cleanupRef.current;\n    return () => {\n      debouncedAsyncCallback.cancel();\n      if (currentCleanup) {\n        currentCleanup(resultRef.current);\n      }\n    };\n  }, deps);\n}\n\n// src/hooks/useDebouncedEffect.ts\nimport { useEffect as useEffect18, useRef as useRef10 } from \"react\";\nfunction useDebouncedEffect(effect, deps, delay = 500, options) {\n  const cleanupRef = useRef10(void 0);\n  const wrappedEffect = () => {\n    if (typeof cleanupRef.current === \"function\") {\n      cleanupRef.current();\n    }\n    cleanupRef.current = effect();\n  };\n  const debouncedEffect = useDebounce(wrappedEffect, delay, options);\n  useEffect18(() => {\n    debouncedEffect();\n    return () => {\n      debouncedEffect.cancel();\n      if (typeof cleanupRef.current === \"function\") {\n        cleanupRef.current();\n        cleanupRef.current = void 0;\n      }\n    };\n  }, deps);\n}\n\n// src/hooks/useDebouncedValue.ts\nimport { useState as useState15 } from \"react\";\n\n// src/hooks/useDidUpdate.ts\nimport { useEffect as useEffect19, useMemo as useMemo4, useRef as useRef11 } from \"react\";\nfunction useDidUpdate(callback, conditions) {\n  const hasMountedRef = useRef11(false);\n  const internalConditions = useMemo4(() => {\n    if (typeof conditions !== \"undefined\" && !Array.isArray(conditions)) {\n      return [conditions];\n    } else if (Array.isArray(conditions) && conditions.length === 0) {\n      console.warn(\n        \"Using [] as the second argument makes useDidUpdate a noop. The second argument should either be `undefined` or an array of length greater than 0.\"\n      );\n    }\n    return conditions;\n  }, [conditions]);\n  useEffect19(() => {\n    if (hasMountedRef.current) {\n      callback();\n    }\n  }, internalConditions);\n  useDidMount(() => {\n    hasMountedRef.current = true;\n  });\n  useWillUnmount(() => {\n    hasMountedRef.current = false;\n  });\n}\n\n// src/hooks/useDebouncedValue.ts\nvar defaultUseDebounceValueOptions = {\n  initializeWithNull: false\n};\nvar useDebouncedValue = (value, timeout, options = {}) => {\n  const { initializeWithNull } = Object.assign(\n    {},\n    defaultUseDebounceValueOptions,\n    options\n  );\n  const [updatedValue, setUpdatedValue] = useState15(\n    initializeWithNull ? null : value\n  );\n  const debouncedSetUpdatedValue = useDebounce(setUpdatedValue, timeout);\n  useDidMount(() => {\n    if (initializeWithNull) {\n      debouncedSetUpdatedValue(value);\n    }\n  });\n  useDidUpdate(() => {\n    debouncedSetUpdatedValue(value);\n  }, [value]);\n  return [updatedValue, setUpdatedValue];\n};\n\n// src/hooks/useDeepCompareEffect.ts\nimport { useEffect as useEffect20, useRef as useRef12 } from \"react\";\nimport isEqual from \"fast-deep-equal\";\n\n// src/hooks/warning.ts\nvar isDevelopmentEnvironment = process.env.NODE_ENV !== \"production\";\nvar warning = () => {\n};\nif (isDevelopmentEnvironment) {\n  const printWarning = (actualMessage) => {\n    const message = `Warning: ${actualMessage}`;\n    if (typeof console !== \"undefined\") {\n      console.error(message);\n    }\n    try {\n      throw new Error(message);\n    } catch {\n    }\n  };\n  warning = function(condition, actualMessage) {\n    if (!condition) {\n      printWarning(actualMessage);\n    }\n  };\n}\n\n// src/hooks/useDeepCompareEffect.ts\nfunction isPrimitive(value) {\n  const valueType = typeof value;\n  return valueType === \"string\" || valueType === \"number\" || valueType === \"bigint\" || valueType === \"boolean\" || valueType === \"undefined\" || valueType === \"symbol\";\n}\nfunction useDeepCompareEffect(callback, dependencies) {\n  const previousDeps = useRef12(dependencies);\n  if (!Array.isArray(dependencies)) {\n    throw new Error(\n      \"useDeepCompareEffect should be used with an array of dependencies\"\n    );\n  }\n  const hasPrimitives = dependencies.every(isPrimitive);\n  warning(\n    !hasPrimitives,\n    \"useDeepCompareEffect should not be used with primitive values as dependencies\"\n  );\n  if (!isEqual(previousDeps.current, dependencies)) {\n    previousDeps.current = dependencies;\n  }\n  useEffect20(callback, previousDeps.current);\n}\n\n// src/hooks/useDimensionsRef.ts\nimport { useState as useState16, useCallback as useCallback17, useLayoutEffect as useLayoutEffect2 } from \"react\";\n\n// src/hooks/useGlobalObjectEventListener.ts\nimport { useEffect as useEffect21 } from \"react\";\n\n// src/hooks/useFreshTick.ts\nfunction useFreshTick(callback) {\n  const freshRef = useFreshRef(callback);\n  function tick(...args) {\n    if (typeof freshRef.current === \"function\") {\n      freshRef.current(...args);\n    }\n  }\n  return tick;\n}\n\n// src/hooks/useGlobalObjectEventListener.ts\nfunction useGlobalObjectEventListener(globalObject, eventName, callback, listenerOptions = {}, when = true, isLayoutEffect = false) {\n  const freshCallback = useFreshTick(callback);\n  const useEffectToRun = isLayoutEffect ? useIsomorphicEffect : useEffect21;\n  useEffectToRun(() => {\n    warning(\n      typeof globalObject !== \"undefined\",\n      \"[useGlobalObjectEventListener]: Cannot attach event handlers to undefined.\"\n    );\n    if (typeof globalObject !== \"undefined\" && when) {\n      globalObject.addEventListener(eventName, freshCallback, listenerOptions);\n      return () => {\n        globalObject.removeEventListener(\n          eventName,\n          freshCallback,\n          listenerOptions\n        );\n      };\n    }\n    return () => {\n    };\n  }, [eventName, listenerOptions]);\n}\n\n// src/hooks/useOnWindowResize.ts\nfunction useOnWindowResize(callback, when = true, isLayoutEffect = false) {\n  useGlobalObjectEventListener(\n    typeof window !== \"undefined\" ? window : void 0,\n    \"resize\",\n    callback,\n    { passive: true },\n    when,\n    isLayoutEffect\n  );\n}\n\n// src/hooks/useOnWindowScroll.ts\nfunction useOnWindowScroll(callback, when = true, isLayoutEffect = false) {\n  useGlobalObjectEventListener(\n    typeof window !== \"undefined\" ? window : void 0,\n    \"scroll\",\n    callback,\n    { passive: true },\n    when,\n    isLayoutEffect\n  );\n}\n\n// src/hooks/useDimensionsRef.ts\nvar getDimensionObject = (node) => {\n  const rect = node.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width,\n    x: rect.left,\n    y: rect.top\n  };\n};\nvar noWindowReturnValue = [void 0, null, null];\nvar useDimensionsRef = ({\n  updateOnScroll = true,\n  updateOnResize = true\n} = {}) => {\n  const [dimensions, setDimensions] = useState16(null);\n  const [node, setNode] = useState16(null);\n  const ref = useCallback17((nodeFromCallback) => {\n    setNode(nodeFromCallback);\n  }, []);\n  const measure = useCallback17(() => {\n    window.requestAnimationFrame(() => {\n      if (node) {\n        setDimensions(getDimensionObject(node));\n      }\n    });\n  }, [node]);\n  useLayoutEffect2(() => {\n    measure();\n  }, [measure]);\n  useOnWindowResize(\n    () => {\n      measure();\n    },\n    updateOnResize,\n    true\n  );\n  useOnWindowScroll(\n    () => {\n      measure();\n    },\n    updateOnScroll,\n    true\n  );\n  if (typeof window === \"undefined\") {\n    console.warn(\"useDimensionsRef: window is undefined.\");\n    return noWindowReturnValue;\n  }\n  return [ref, dimensions, node];\n};\n\n// src/hooks/useDocumentEventListener.ts\nfunction useDocumentEventListener(eventName, callback, listenerOptions = {}, isLayoutEffect = false) {\n  useGlobalObjectEventListener(\n    typeof document !== \"undefined\" ? document : void 0,\n    eventName,\n    callback,\n    listenerOptions,\n    true,\n    isLayoutEffect\n  );\n}\n\n// src/hooks/useDocumentTitle.ts\nimport { useEffect as useEffect22, useRef as useRef13 } from \"react\";\nfunction useDocumentTitle(title, options = {}) {\n  const isBrowser = typeof window !== \"undefined\";\n  const prevTitleRef = useRef13(isBrowser ? document.title : \"\");\n  const { resetOnUnmount = false } = options;\n  useEffect22(() => {\n    if (isBrowser) {\n      document.title = title;\n      const lastTitle = prevTitleRef.current;\n      if (resetOnUnmount) {\n        return () => {\n          document.title = lastTitle;\n        };\n      }\n    }\n    return noop;\n  }, [title, isBrowser, resetOnUnmount]);\n}\n\n// src/hooks/useEasing.ts\nimport { useState as useState17, useEffect as useEffect23, useRef as useRef14, useCallback as useCallback18, useMemo as useMemo5 } from \"react\";\nvar Easing = {\n  linear: (t) => t,\n  easeInQuad: (t) => t * t,\n  easeOutQuad: (t) => t * (2 - t),\n  easeInOutQuad: (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,\n  easeInCubic: (t) => t * t * t,\n  easeOutCubic: (t) => --t * t * t + 1,\n  easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n};\nfunction useEasing(duration, options = {}) {\n  const {\n    easing = Easing.linear,\n    autoStart = true,\n    loop = false,\n    alternate = false,\n    delay = 0,\n    onEnd\n  } = options;\n  const [progress, setProgress] = useState17(0);\n  const [state, setState] = useState17(autoStart ? \"running\" : \"idle\");\n  const [direction, setDirection] = useState17(\"forward\");\n  const [endCount, setEndCount] = useState17(0);\n  const startTimeRef = useRef14(null);\n  const pausedRawProgressRef = useRef14(0);\n  const delayRemainingRef = useRef14(delay);\n  const isFirstRunRef = useRef14(true);\n  const hasCompletedRef = useRef14(false);\n  const currentRawProgressRef = useRef14(0);\n  const onEndRef = useRef14(onEnd);\n  onEndRef.current = onEnd;\n  const directionRef = useRef14(direction);\n  directionRef.current = direction;\n  const start = useCallback18(() => {\n    if (state === \"running\") return;\n    startTimeRef.current = null;\n    hasCompletedRef.current = false;\n    setState(\"running\");\n  }, [state]);\n  const stop = useCallback18(() => {\n    if (state === \"idle\") return;\n    pausedRawProgressRef.current = currentRawProgressRef.current;\n    setState(\"idle\");\n  }, [state]);\n  const reset = useCallback18(() => {\n    setState(\"idle\");\n    setProgress(0);\n    setDirection(\"forward\");\n    setEndCount(0);\n    startTimeRef.current = null;\n    pausedRawProgressRef.current = 0;\n    currentRawProgressRef.current = 0;\n    delayRemainingRef.current = delay;\n    isFirstRunRef.current = true;\n    hasCompletedRef.current = false;\n    directionRef.current = \"forward\";\n  }, [delay]);\n  const restart = useCallback18(() => {\n    reset();\n    setTimeout(() => {\n      setState(\"running\");\n    }, 0);\n  }, [reset]);\n  useRaf(() => {\n    if (startTimeRef.current === null) {\n      const resumeOffset = pausedRawProgressRef.current * duration;\n      startTimeRef.current = performance.now() - resumeOffset;\n    }\n    const elapsed = performance.now() - startTimeRef.current;\n    if (isFirstRunRef.current && delayRemainingRef.current > 0) {\n      if (elapsed < delayRemainingRef.current) {\n        return;\n      }\n      startTimeRef.current = performance.now() - (elapsed - delayRemainingRef.current);\n      delayRemainingRef.current = 0;\n      isFirstRunRef.current = false;\n    }\n    const adjustedElapsed = performance.now() - startTimeRef.current;\n    const rawProgress = Math.min(adjustedElapsed / duration, 1);\n    currentRawProgressRef.current = rawProgress;\n    const directionalProgress = directionRef.current === \"forward\" ? rawProgress : 1 - rawProgress;\n    const easedProgress = easing(directionalProgress);\n    setProgress(easedProgress);\n    if (rawProgress >= 1 && !hasCompletedRef.current) {\n      hasCompletedRef.current = true;\n      setEndCount((prev) => prev + 1);\n      onEndRef.current?.();\n      if (loop) {\n        startTimeRef.current = performance.now();\n        hasCompletedRef.current = false;\n        if (alternate) {\n          const newDirection = directionRef.current === \"forward\" ? \"backward\" : \"forward\";\n          directionRef.current = newDirection;\n          setDirection(newDirection);\n        }\n      } else {\n        setState(\"idle\");\n      }\n    }\n  }, state === \"running\");\n  useEffect23(() => {\n    if (autoStart) {\n      setState(\"running\");\n    }\n  }, []);\n  const controls = useMemo5(\n    () => ({\n      start,\n      stop,\n      reset,\n      restart,\n      state,\n      direction,\n      endCount\n    }),\n    [start, stop, reset, restart, state, direction, endCount]\n  );\n  return [progress, controls];\n}\n\n// src/hooks/useDocumentVisibilityState.ts\nimport { useSyncExternalStore } from \"react\";\nfunction getVisibilityStateSnapshot() {\n  if (typeof document !== \"undefined\") {\n    return document.visibilityState;\n  } else {\n    return null;\n  }\n}\nfunction getVisibilityStateSubscription(callback) {\n  if (typeof document !== \"undefined\") {\n    document.addEventListener(\"visibilitychange\", callback);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", callback);\n    };\n  }\n  return () => {\n  };\n}\nfunction getVisibilityStateServerSnapshot() {\n  return null;\n}\nfunction useDocumentVisibilityState() {\n  return useSyncExternalStore(getVisibilityStateSubscription, getVisibilityStateSnapshot, getVisibilityStateServerSnapshot);\n}\n\n// src/hooks/useEffectOnceWhen.ts\nimport { useEffect as useEffect24, useRef as useRef15 } from \"react\";\nfunction useEffectOnceWhen(callback, when = true) {\n  const hasRunOnceRef = useRef15(false);\n  const callbackRef = useRef15(callback);\n  useEffect24(() => {\n    callbackRef.current = callback;\n  });\n  useEffect24(() => {\n    if (when && !hasRunOnceRef.current) {\n      callbackRef.current();\n      hasRunOnceRef.current = true;\n    }\n  }, [when]);\n}\n\n// src/hooks/useEventListenerRef.ts\nimport { useEffect as useEffect25 } from \"react\";\n\n// src/hooks/useRefElement.ts\nimport { useCallback as useCallback19, useState as useState18 } from \"react\";\nfunction useRefElement() {\n  const [refElement, setRefElement] = useState18(null);\n  const ref = useCallback19(\n    (element) => {\n      setRefElement(element);\n    },\n    []\n  );\n  return [ref, refElement];\n}\n\n// src/hooks/useEventListenerRef.ts\nfunction useEventListenerRef(eventName, callback, listenerOptions = {}, isLayoutEffect = false) {\n  const [ref, element] = useRefElement();\n  const freshCallback = useFreshTick(callback);\n  const useEffectToRun = isLayoutEffect ? useIsomorphicEffect : useEffect25;\n  useEffectToRun(() => {\n    if (!element?.addEventListener) {\n      return noop;\n    }\n    element.addEventListener(eventName, freshCallback, listenerOptions);\n    return () => {\n      element.removeEventListener(eventName, freshCallback, listenerOptions);\n    };\n  }, [element, eventName, listenerOptions]);\n  return ref;\n}\n\n// src/hooks/useFileDropRef.ts\nimport { useCallback as useCallback20, useState as useState19, useEffect as useEffect26 } from \"react\";\nfunction useFileDropRef(options = {}, callbacks = {}) {\n  const { accept, maxFileSize, maxFiles } = options;\n  const {\n    onDrop = noop,\n    onFileAccepted = noop,\n    onFileRejected = noop,\n    onDragEnter = noop,\n    onDragLeave = noop\n  } = callbacks;\n  const [targetNode, setTargetNode] = useState19(null);\n  const freshOnDrop = useFreshCallback(onDrop);\n  const freshOnFileAccepted = useFreshCallback(onFileAccepted);\n  const freshOnFileRejected = useFreshCallback(onFileRejected);\n  const freshOnDragEnter = useFreshCallback(onDragEnter);\n  const freshOnDragLeave = useFreshCallback(onDragLeave);\n  useCallback20((node) => {\n    setTargetNode(node);\n  }, []);\n  const fileIsValid = useCallback20(\n    (file) => {\n      if (accept && !accept.includes(file.type)) {\n        return { valid: false, reason: \"File type not allowed\" };\n      }\n      if (maxFileSize && file.size > maxFileSize) {\n        return { valid: false, reason: \"File size exceeds the limit\" };\n      }\n      return { valid: true };\n    },\n    [accept, maxFileSize]\n  );\n  const handleDrop = useCallback20(\n    (event) => {\n      event.preventDefault();\n      const files = Array.from(event.dataTransfer?.files || []);\n      const acceptedFiles = [];\n      const rejectedFiles = [];\n      if (maxFiles && files.length > maxFiles) {\n        for (const file of files) {\n          freshOnFileRejected(file, \"Exceeded maximum number of files\");\n        }\n      } else {\n        files.forEach((file) => {\n          const validationResult = fileIsValid(file);\n          if (validationResult.valid) {\n            acceptedFiles.push(file);\n            freshOnFileAccepted(file);\n          } else {\n            rejectedFiles.push(file);\n            freshOnFileRejected(\n              file,\n              validationResult.reason || \"Unknown reason\"\n            );\n          }\n        });\n      }\n      freshOnDrop(acceptedFiles, rejectedFiles);\n    },\n    [\n      fileIsValid,\n      freshOnFileAccepted,\n      freshOnFileRejected,\n      maxFiles,\n      freshOnDrop\n    ]\n  );\n  const handleDragOver = useCallback20((event) => {\n    event.preventDefault();\n  }, []);\n  useEffect26(() => {\n    if (targetNode) {\n      targetNode.addEventListener(\"drop\", handleDrop);\n      targetNode.addEventListener(\"dragover\", handleDragOver);\n      targetNode.addEventListener(\"dragenter\", freshOnDragEnter);\n      targetNode.addEventListener(\"dragleave\", freshOnDragLeave);\n      return () => {\n        targetNode.removeEventListener(\"drop\", handleDrop);\n        targetNode.removeEventListener(\"dragover\", handleDragOver);\n        targetNode.removeEventListener(\"dragenter\", freshOnDragEnter);\n        targetNode.removeEventListener(\"dragleave\", freshOnDragLeave);\n      };\n    } else {\n      return () => {\n      };\n    }\n  }, [\n    targetNode,\n    handleDrop,\n    handleDragOver,\n    freshOnDragEnter,\n    freshOnDragLeave\n  ]);\n  return useCallback20((node) => {\n    setTargetNode(node);\n  }, []);\n}\n\n// src/hooks/useFullscreen.ts\nimport { useState as useState20, useCallback as useCallback21, useEffect as useEffect27 } from \"react\";\nvar FullscreenApi = {\n  DOM_UNAVAILABLE_ERROR: \"DOM is unavailable server-side. Please use this method client-side only.\",\n  FULLSCREEN_UNSUPPORTED_ERROR: \"Your browser does not support Fullscreen API.\",\n  getEventsNames() {\n    if (typeof document === \"undefined\") return null;\n    const _document = document;\n    if (\"exitFullscreen\" in _document)\n      return [\"fullscreenchange\", \"fullscreenerror\"];\n    if (\"webkitExitFullscreen\" in _document)\n      return [\"webkitfullscreenchange\", \"webkitfullscreenerror\"];\n    if (\"webkitCancelFullScreen\" in _document)\n      return [\"webkitfullscreenchange\", \"webkitfullscreenerror\"];\n    if (\"mozCancelFullScreen\" in _document)\n      return [\"mozfullscreenchange\", \"mozfullscreenerror\"];\n    if (\"msExitFullscreen\" in _document)\n      return [\"MSFullscreenChange\", \"MSFullscreenError\"];\n    return null;\n  },\n  getEventName(eventType) {\n    const eventsNames = this.getEventsNames();\n    if (!eventsNames) return null;\n    if (eventType === \"change\") return eventsNames[0];\n    return eventsNames[1];\n  },\n  get fullscreenEnabled() {\n    if (typeof document === \"undefined\") return false;\n    const _document = document;\n    return _document.fullscreenEnabled || _document.webkitFullscreenEnabled || !!_document.webkitCancelFullScreen || _document.mozFullScreenEnabled || _document.msFullscreenEnabled || false;\n  },\n  get fullscreenElement() {\n    if (typeof document === \"undefined\") return null;\n    const _document = document;\n    return _document.fullscreenElement || _document.webkitFullscreenElement || _document.webkitCurrentFullScreenElement || _document.mozFullScreenElement || _document.msFullscreenElement || null;\n  },\n  requestFullscreen(element, options) {\n    if (typeof document === \"undefined\")\n      throw new Error(this.DOM_UNAVAILABLE_ERROR);\n    const target = element ?? document.documentElement;\n    const method = target.requestFullscreen || target.webkitRequestFullscreen || target.webkitRequestFullScreen || target.mozRequestFullScreen || target.msRequestFullscreen;\n    if (!method) throw new Error(this.FULLSCREEN_UNSUPPORTED_ERROR);\n    return method.call(target, options);\n  },\n  exitFullscreen() {\n    if (typeof document === \"undefined\")\n      throw new Error(this.DOM_UNAVAILABLE_ERROR);\n    const _document = document;\n    const method = _document.exitFullscreen || _document.webkitExitFullscreen || _document.webkitCancelFullScreen || _document.mozCancelFullScreen || _document.msExitFullscreen;\n    if (!method) throw new Error(this.FULLSCREEN_UNSUPPORTED_ERROR);\n    return method.call(_document);\n  },\n  on(eventType, callback) {\n    const eventName = this.getEventName(eventType);\n    if (!eventName) return;\n    document.addEventListener(eventName, callback);\n  },\n  off(eventType, callback) {\n    const eventName = this.getEventName(eventType);\n    if (!eventName) return;\n    document.removeEventListener(eventName, callback);\n  }\n};\nfunction useFullscreen(props = {}) {\n  const { target, onChange, onError, requestFullScreenOptions } = props;\n  const [isFullscreenAvailable, setIsFullscreenAvailable] = useState20(false);\n  const [fullscreenElement, setFullscreenElement] = useState20(\n    null\n  );\n  const [isFullscreenEnabled, setIsFullscreenEnabled] = useState20(false);\n  const enableFullscreen = useCallback21(() => {\n    return FullscreenApi.requestFullscreen(\n      target?.current || null,\n      requestFullScreenOptions\n    );\n  }, [target, requestFullScreenOptions]);\n  const disableFullscreen = useCallback21(() => {\n    return FullscreenApi.exitFullscreen();\n  }, []);\n  const toggleFullscreen = useCallback21(() => {\n    if (FullscreenApi.fullscreenElement) return disableFullscreen();\n    return enableFullscreen();\n  }, [enableFullscreen, disableFullscreen]);\n  const onChangeHandler = useCallback21(\n    (event) => {\n      const fullscreenElement2 = FullscreenApi.fullscreenElement;\n      setFullscreenElement(fullscreenElement2);\n      setIsFullscreenEnabled(!!fullscreenElement2);\n      onChange?.(event);\n    },\n    [onChange]\n  );\n  const onErrorHandler = useCallback21(\n    (event) => {\n      const fullscreenElement2 = FullscreenApi.fullscreenElement;\n      setFullscreenElement(fullscreenElement2);\n      setIsFullscreenEnabled(!!fullscreenElement2);\n      onError?.(event);\n    },\n    [onError]\n  );\n  useEffect27(() => {\n    setIsFullscreenAvailable(FullscreenApi.fullscreenEnabled);\n  }, []);\n  useEffect27(() => {\n    FullscreenApi.on(\"change\", onChangeHandler);\n    FullscreenApi.on(\"error\", onErrorHandler);\n    return () => {\n      FullscreenApi.off(\"change\", onChangeHandler);\n      FullscreenApi.off(\"error\", onErrorHandler);\n    };\n  }, [onChangeHandler, onErrorHandler]);\n  return {\n    isFullscreenAvailable,\n    fullscreenElement,\n    isFullscreenEnabled,\n    enableFullscreen,\n    disableFullscreen,\n    toggleFullscreen\n  };\n}\n\n// src/hooks/useFocus.ts\nimport { useCallback as useCallback22 } from \"react\";\nvar useFocus = (props) => {\n  const {\n    onBlur: propsOnBlur,\n    onFocus: propsOnFocus,\n    onFocusChange: propsOnFocusChange\n  } = props;\n  const onBlur = useCallback22(\n    (e) => {\n      if (e.target === e.currentTarget) {\n        if (propsOnBlur) propsOnBlur(e);\n        if (propsOnFocusChange) propsOnFocusChange(false);\n      }\n    },\n    [propsOnBlur, propsOnFocusChange]\n  );\n  const onFocus = useCallback22(\n    (e) => {\n      if (e.target === e.currentTarget) {\n        if (propsOnFocus) propsOnFocus(e);\n        if (propsOnFocusChange) propsOnFocusChange(true);\n      }\n    },\n    [propsOnFocusChange, propsOnFocus]\n  );\n  return {\n    focusProps: {\n      onFocus,\n      onBlur\n    }\n  };\n};\n\n// src/hooks/useFocusWithin.ts\nimport { useCallback as useCallback23, useRef as useRef16 } from \"react\";\nvar useFocusWithin = (props) => {\n  const { onBlurWithin, onFocusWithin, onFocusWithinChange } = props;\n  const state = useRef16({\n    isFocusWithin: false\n  });\n  const onBlur = useCallback23(\n    (e) => {\n      if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n        state.current.isFocusWithin = false;\n        if (onBlurWithin) onBlurWithin(e);\n        if (onFocusWithinChange) onFocusWithinChange(false);\n      }\n    },\n    [onBlurWithin, onFocusWithinChange]\n  );\n  const onFocus = useCallback23(\n    (e) => {\n      if (!state.current.isFocusWithin) {\n        if (onFocusWithin) onFocusWithin(e);\n        if (onFocusWithinChange) onFocusWithinChange(true);\n        state.current.isFocusWithin = true;\n      }\n    },\n    [onFocusWithin, onFocusWithinChange]\n  );\n  return {\n    focusWithinProps: {\n      onFocus,\n      onBlur\n    }\n  };\n};\n\n// src/hooks/useFormState.ts\nimport { useState as useState21, useCallback as useCallback24 } from \"react\";\nfunction useFormState({\n  initialValues,\n  validate,\n  onSubmit\n}) {\n  const [values, setValues] = useState21(initialValues);\n  const [errors, setErrors] = useState21({});\n  const [touched, setTouched] = useState21({});\n  const [isSubmitting, setIsSubmitting] = useState21(false);\n  const validateField = useCallback24(\n    (name, value) => {\n      if (validate) {\n        return validate(name, value, values);\n      }\n      return void 0;\n    },\n    [validate, values]\n  );\n  const validateForm = useCallback24(() => {\n    if (!validate) {\n      return true;\n    }\n    const newErrors = {};\n    let isValid2 = true;\n    for (const key in values) {\n      const error = validate(key, values[key], values);\n      if (error) {\n        newErrors[key] = error;\n        isValid2 = false;\n      }\n    }\n    setErrors(newErrors);\n    return isValid2;\n  }, [validate, values]);\n  const isValid = Object.keys(errors).length === 0;\n  const handleChange = useCallback24(\n    (event) => {\n      const { name, value, type } = event.target;\n      const fieldName = name;\n      const fieldValue = type === \"checkbox\" ? event.target.checked : value;\n      setValues((prev) => ({ ...prev, [fieldName]: fieldValue }));\n      setTouched((prev) => ({ ...prev, [fieldName]: true }));\n      const error = validateField(fieldName, fieldValue);\n      setErrors((prev) => {\n        const newErrors = { ...prev };\n        if (error) {\n          newErrors[fieldName] = error;\n        } else {\n          delete newErrors[fieldName];\n        }\n        return newErrors;\n      });\n    },\n    [validateField]\n  );\n  const handleSubmit = useCallback24(\n    (event) => {\n      event.preventDefault();\n      const allTouched = {};\n      for (const key in values) {\n        allTouched[key] = true;\n      }\n      setTouched(allTouched);\n      const formIsValid = validateForm();\n      if (formIsValid && onSubmit) {\n        setIsSubmitting(true);\n        Promise.resolve(onSubmit(values)).finally(() => {\n          setIsSubmitting(false);\n        });\n      }\n    },\n    [values, validateForm, onSubmit]\n  );\n  const setFieldValue = useCallback24((name, value) => {\n    setValues((prev) => ({ ...prev, [name]: value }));\n  }, []);\n  const setFieldError = useCallback24((name, error) => {\n    setErrors((prev) => ({ ...prev, [name]: error }));\n  }, []);\n  const setFieldTouched = useCallback24(\n    (name, isTouched) => {\n      setTouched((prev) => ({ ...prev, [name]: isTouched }));\n    },\n    []\n  );\n  const reset = useCallback24(() => {\n    setValues(initialValues);\n    setErrors({});\n    setTouched({});\n    setIsSubmitting(false);\n  }, [initialValues]);\n  return {\n    values,\n    errors,\n    touched,\n    isSubmitting,\n    isValid,\n    handleChange,\n    handleSubmit,\n    setFieldValue,\n    setFieldError,\n    setFieldTouched,\n    reset\n  };\n}\n\n// src/hooks/useGeolocation.ts\nimport { useEffect as useEffect28, useState as useState22 } from \"react\";\nfunction getGeoLocation(options) {\n  return new Promise((resolve, reject) => {\n    if (navigator.geolocation) {\n      navigator.geolocation.getCurrentPosition(\n        (position) => {\n          const { coords } = position;\n          const { latitude, longitude } = coords;\n          resolve({\n            isError: false,\n            lat: latitude,\n            lng: longitude,\n            message: \"\"\n          });\n        },\n        (error) => {\n          resolve({\n            isError: true,\n            message: error && typeof error === \"object\" && \"message\" in error ? error.message : \"Geolocation error\"\n          });\n        },\n        options\n      );\n    } else {\n      resolve({\n        isError: true,\n        message: \"Geolocation is not supported for this Browser/OS.\"\n      });\n    }\n  });\n}\nvar defaultGeoLocationOptions = {\n  enableHighAccuracy: false,\n  maximumAge: 0,\n  timeout: Number.POSITIVE_INFINITY,\n  when: true\n};\nvar useGeolocation = (geoLocationOptions = defaultGeoLocationOptions) => {\n  const [geoObject, setGeoObject] = useState22(\n    null\n  );\n  const { when, enableHighAccuracy, timeout, maximumAge } = geoLocationOptions;\n  const getIsMounted = useGetIsMounted();\n  useEffect28(() => {\n    async function getGeoCode() {\n      try {\n        const value = await getGeoLocation({\n          enableHighAccuracy,\n          maximumAge,\n          timeout,\n          when\n        });\n        if (getIsMounted()) {\n          setGeoObject(value);\n        }\n      } catch (error) {\n        if (getIsMounted()) {\n          setGeoObject({\n            isError: true,\n            message: error instanceof Error ? error.message : String(error)\n          });\n        }\n      }\n    }\n    if (when) {\n      void getGeoCode();\n    }\n  }, [when, enableHighAccuracy, timeout, maximumAge, getIsMounted]);\n  return geoObject;\n};\n\n// src/hooks/useIdleDetectionApi.ts\nimport { useCallback as useCallback25, useEffect as useEffect29, useRef as useRef17, useState as useState23 } from \"react\";\nvar IdlePolyfill = class {\n  threshold;\n  isIdle = false;\n  _userState = \"active\";\n  _screenState = \"unlocked\";\n  listeners = [];\n  timeoutId = null;\n  started = false;\n  constructor(threshold) {\n    this.threshold = Math.max(threshold, 6e4);\n  }\n  handleUserActivity = () => {\n    if (this.isIdle) {\n      this.isIdle = false;\n      this._userState = \"active\";\n      this.notifyListeners();\n    }\n    this.resetIdleTimer();\n  };\n  handleVisibilityChange = () => {\n    this._screenState = document.hidden ? \"locked\" : \"unlocked\";\n    this.notifyListeners();\n  };\n  resetIdleTimer() {\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId);\n    }\n    this.timeoutId = window.setTimeout(() => {\n      this.isIdle = true;\n      this._userState = \"idle\";\n      this.notifyListeners();\n    }, this.threshold);\n  }\n  notifyListeners() {\n    this.listeners.forEach((listener) => listener());\n  }\n  get userState() {\n    return this._userState;\n  }\n  get screenState() {\n    return this._screenState;\n  }\n  get isIdleState() {\n    return this.isIdle;\n  }\n  addEventListener(event, listener) {\n    if (event === \"change\") {\n      this.listeners.push(listener);\n    }\n  }\n  removeEventListener(event, listener) {\n    if (event === \"change\") {\n      const index = this.listeners.indexOf(listener);\n      if (index > -1) {\n        this.listeners.splice(index, 1);\n      }\n    }\n  }\n  start() {\n    if (this.started) return;\n    this.started = true;\n    const events = [\"mousemove\", \"keydown\", \"click\", \"scroll\", \"touchstart\"];\n    events.forEach((event) => {\n      document.addEventListener(event, this.handleUserActivity, true);\n    });\n    document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n    this.resetIdleTimer();\n  }\n  stop() {\n    if (!this.started) return;\n    this.started = false;\n    const events = [\"mousemove\", \"keydown\", \"click\", \"scroll\", \"touchstart\"];\n    events.forEach((event) => {\n      document.removeEventListener(event, this.handleUserActivity, true);\n    });\n    document.removeEventListener(\"visibilitychange\", this.handleVisibilityChange);\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId);\n      this.timeoutId = null;\n    }\n    this.isIdle = false;\n    this._userState = \"active\";\n    this._screenState = \"unlocked\";\n  }\n};\nfunction useIdleDetectionApi(options = {}) {\n  const {\n    threshold = 6e4,\n    // Default 60 seconds\n    autoStart = false,\n    requestPermission = false,\n    onIdleChange,\n    onError\n  } = options;\n  const [isIdle, setIsIdle] = useState23(false);\n  const [userState, setUserState] = useState23(\"active\");\n  const [screenState, setScreenState] = useState23(\"unlocked\");\n  const [isPermissionGranted, setIsPermissionGranted] = useState23(false);\n  const detectorRef = useRef17(null);\n  const polyfillRef = useRef17(null);\n  const startedRef = useRef17(false);\n  const isSupported = typeof window !== \"undefined\" && \"IdleDetector\" in window;\n  const actualThreshold = Math.max(threshold, 6e4);\n  const handleChange = useCallback25(() => {\n    const detector = detectorRef.current;\n    const polyfill = polyfillRef.current;\n    let newIsIdle = false;\n    let newUserState = \"active\";\n    let newScreenState = \"unlocked\";\n    if (detector && detector.userState && detector.screenState) {\n      newIsIdle = detector.userState === \"idle\";\n      newUserState = detector.userState;\n      newScreenState = detector.screenState;\n    } else if (polyfill) {\n      newIsIdle = polyfill.isIdleState;\n      newUserState = polyfill.userState;\n      newScreenState = polyfill.screenState;\n    }\n    setIsIdle(newIsIdle);\n    setUserState(newUserState);\n    setScreenState(newScreenState);\n    onIdleChange?.({\n      isIdle: newIsIdle,\n      userState: newUserState,\n      screenState: newScreenState\n    });\n  }, [onIdleChange]);\n  const start = useCallback25(async () => {\n    if (startedRef.current) return;\n    startedRef.current = true;\n    try {\n      if (isSupported && window.IdleDetector) {\n        const detector = new window.IdleDetector();\n        detectorRef.current = detector;\n        if (requestPermission) {\n          const permission = await window.IdleDetector.requestPermission();\n          setIsPermissionGranted(permission === \"granted\");\n          if (permission === \"denied\") {\n            onError?.(new Error(\"Permission denied\"));\n            return;\n          }\n        } else {\n          setIsPermissionGranted(true);\n        }\n        detector.addEventListener(\"change\", handleChange);\n        await detector.start({ threshold: actualThreshold });\n      } else {\n        const polyfill = new IdlePolyfill(actualThreshold);\n        polyfillRef.current = polyfill;\n        polyfill.addEventListener(\"change\", handleChange);\n        polyfill.start();\n        setIsPermissionGranted(true);\n      }\n    } catch (error) {\n      onError?.(error instanceof Error ? error : new Error(\"Failed to start idle detection\"));\n    }\n  }, [isSupported, requestPermission, actualThreshold, handleChange, onError]);\n  const stop = useCallback25(() => {\n    if (!startedRef.current) return;\n    startedRef.current = false;\n    if (detectorRef.current) {\n      detectorRef.current.removeEventListener(\"change\", handleChange);\n      detectorRef.current = null;\n    }\n    if (polyfillRef.current) {\n      polyfillRef.current.removeEventListener(\"change\", handleChange);\n      polyfillRef.current.stop();\n      polyfillRef.current = null;\n    }\n    setIsIdle(false);\n    setUserState(\"active\");\n    setScreenState(\"unlocked\");\n  }, [handleChange]);\n  useEffect29(() => {\n    if (autoStart && !startedRef.current) {\n      start();\n    }\n  }, [autoStart, start]);\n  useEffect29(() => {\n    return () => {\n      stop();\n    };\n  }, [stop]);\n  return {\n    isIdle,\n    userState,\n    screenState,\n    isSupported,\n    isPermissionGranted,\n    start,\n    stop\n  };\n}\n\n// src/hooks/useInput.ts\nimport { useState as useState24, useEffect as useEffect30, useCallback as useCallback26 } from \"react\";\nvar defaultOptions = {};\nfunction useInput(initialValue = \"\", options = defaultOptions) {\n  const [value, setValue] = useState24(initialValue);\n  const onChange = useCallback26(\n    (event) => {\n      const newValue = event.target.value;\n      let shouldUpdate = true;\n      if (typeof options.validate === \"function\") {\n        shouldUpdate = options.validate(newValue, value);\n      }\n      if (shouldUpdate) {\n        setValue(newValue);\n      }\n    },\n    [options, value]\n  );\n  useEffect30(() => {\n    setValue(initialValue);\n  }, [initialValue]);\n  const handler = {\n    onChange,\n    value\n  };\n  return handler;\n}\n\n// src/hooks/useMeasure.ts\nimport { useCallback as useCallback27, useEffect as useEffect31, useRef as useRef18, useState as useState25 } from \"react\";\nvar defaultMeasurements = {\n  innerWidth: 0,\n  innerHeight: 0,\n  innerScrollWidth: 0,\n  innerScrollHeight: 0,\n  outerWidth: 0,\n  outerHeight: 0,\n  outerScrollWidth: 0,\n  outerScrollHeight: 0\n};\nfunction getMeasurements(element) {\n  return {\n    innerWidth: element.clientWidth,\n    innerHeight: element.clientHeight,\n    innerScrollWidth: element.scrollWidth,\n    innerScrollHeight: element.scrollHeight,\n    outerWidth: element.offsetWidth,\n    outerHeight: element.offsetHeight,\n    outerScrollWidth: element.scrollWidth,\n    outerScrollHeight: element.scrollHeight\n  };\n}\nfunction useMeasure(options = {}) {\n  const { debounce: debounce2 = 0, disabled = false, onMeasure } = options;\n  const [node, setNode] = useState25(null);\n  const [measurements, setMeasurements] = useState25(\n    defaultMeasurements\n  );\n  const onMeasureRef = useRef18(onMeasure);\n  const resizeObserverRef = useRef18(null);\n  useEffect31(() => {\n    onMeasureRef.current = onMeasure;\n  });\n  const measure = useCallback27(() => {\n    if (!node || disabled) {\n      return;\n    }\n    const newMeasurements = getMeasurements(node);\n    setMeasurements(newMeasurements);\n    if (onMeasureRef.current) {\n      onMeasureRef.current(newMeasurements);\n    }\n  }, [node, disabled]);\n  const [debouncedMeasure] = useDebounceFn(measure, debounce2, {\n    leading: false,\n    trailing: true\n  });\n  const measureFunction = debounce2 > 0 ? debouncedMeasure : measure;\n  const handleResizeObserver = useCallback27(\n    () => {\n      measureFunction();\n    },\n    [measureFunction]\n  );\n  useEffect31(() => {\n    if (!node || disabled) {\n      if (resizeObserverRef.current) {\n        resizeObserverRef.current.disconnect();\n        resizeObserverRef.current = null;\n      }\n      return noop;\n    }\n    if (typeof ResizeObserver === \"undefined\") {\n      console.warn(\n        \"useMeasure: ResizeObserver is not available in this environment\"\n      );\n      return noop;\n    }\n    const observer = new ResizeObserver(handleResizeObserver);\n    resizeObserverRef.current = observer;\n    observer.observe(node, { box: \"content-box\" });\n    measureFunction();\n    return () => {\n      observer.disconnect();\n      resizeObserverRef.current = null;\n    };\n  }, [node, disabled, handleResizeObserver, measureFunction]);\n  const ref = useCallback27(\n    (element) => {\n      setNode(element);\n    },\n    []\n  );\n  useEffect31(() => {\n    if (typeof window === \"undefined\") {\n      console.warn(\"useMeasure: window is undefined (SSR environment)\");\n    }\n  }, []);\n  return [ref, measurements];\n}\n\n// src/hooks/useIntersectionObserverRef.ts\nimport { useEffect as useEffect32, useCallback as useCallback28, useState as useState26, useRef as useRef19 } from \"react\";\nvar config3 = {\n  root: null,\n  rootMargin: \"0px 0px 0px 0px\",\n  threshold: [0, 1]\n};\nfunction useIntersectionObserverRef(callback, options = config3) {\n  const { root = null, rootMargin, threshold } = options;\n  const [node, setNode] = useState26(null);\n  const callbackRef = useRef19(callback);\n  useEffect32(() => {\n    callbackRef.current = callback;\n  });\n  const handleIntersectionObserver = useCallback28(\n    (...args) => {\n      return callbackRef.current?.(...args);\n    },\n    []\n  );\n  useEffect32(() => {\n    if (node) {\n      const observer = new IntersectionObserver(handleIntersectionObserver, {\n        root,\n        rootMargin,\n        threshold\n      });\n      observer.observe(node);\n      return () => {\n        observer.disconnect();\n      };\n    }\n    return noop;\n  }, [node, handleIntersectionObserver, root, rootMargin, threshold]);\n  const ref = useCallback28((nodeElement) => {\n    setNode(nodeElement);\n  }, []);\n  return [ref];\n}\n\n// src/hooks/useInViewRef.ts\nimport { useEffect as useEffect33, useCallback as useCallback29, useState as useState27 } from \"react\";\nvar config4 = {\n  root: null,\n  rootMargin: \"0px 0px 0px 0px\",\n  threshold: [0, 1]\n};\nfunction useInViewRef(callbackOrOptions, options) {\n  const callback = typeof callbackOrOptions === \"function\" ? callbackOrOptions : noop;\n  const opts = typeof callbackOrOptions === \"object\" ? callbackOrOptions : options || config4;\n  const { root = null, rootMargin, threshold } = opts;\n  const [node, setNode] = useState27(null);\n  const [inView, setInView] = useState27(false);\n  useEffect33(() => {\n    if (node) {\n      const observer = new IntersectionObserver((entries, observerRef) => {\n        for (const { isIntersecting } of entries) setInView(isIntersecting);\n        callback(entries, observerRef);\n      }, opts);\n      observer.observe(node);\n      return () => {\n        observer.disconnect();\n      };\n    }\n    return noop;\n  }, [node, callback, root, rootMargin, threshold, opts]);\n  const ref = useCallback29((nodeElement) => {\n    setNode(nodeElement);\n  }, []);\n  return [ref, inView];\n}\n\n// src/hooks/useIsDroppingFiles.ts\nimport { useState as useState28, useEffect as useEffect34, useCallback as useCallback30 } from \"react\";\nfunction useIsDroppingFiles(isTargetWindow = false) {\n  const [targetNode, setTargetNode] = useState28(null);\n  const ref = useCallback30((node) => {\n    setTargetNode(node);\n  }, []);\n  const [isDroppingFiles, setIsDroppingFiles] = useState28(false);\n  const handleDragEnter = useCallback30(\n    (e) => {\n      e.preventDefault();\n      if (e.dataTransfer?.types.includes(\"Files\")) {\n        if (!isDroppingFiles) {\n          setIsDroppingFiles(true);\n        }\n      } else {\n        setIsDroppingFiles(false);\n      }\n    },\n    [isDroppingFiles]\n  );\n  const handleDragOver = useCallback30(\n    (e) => {\n      e.preventDefault();\n      if (e.dataTransfer?.types.includes(\"Files\")) {\n        if (!isDroppingFiles) {\n          setIsDroppingFiles(true);\n        }\n      } else {\n        setIsDroppingFiles(false);\n      }\n    },\n    [isDroppingFiles]\n  );\n  const handleDragLeave = useCallback30((e) => {\n    e.preventDefault();\n    setIsDroppingFiles(false);\n  }, []);\n  const handleDrop = useCallback30((e) => {\n    e.preventDefault();\n    setIsDroppingFiles(false);\n  }, []);\n  const freshHandleDragEnter = useFreshCallback(handleDragEnter);\n  const freshHandleDragOver = useFreshCallback(handleDragOver);\n  const freshHandleDragLeave = useFreshCallback(handleDragLeave);\n  const freshHandleDrop = useFreshCallback(handleDrop);\n  useEffect34(() => {\n    const target = isTargetWindow ? window : targetNode;\n    if (target) {\n      target.addEventListener(\"dragenter\", freshHandleDragEnter);\n      target.addEventListener(\"dragover\", freshHandleDragOver);\n      target.addEventListener(\"dragleave\", freshHandleDragLeave);\n      target.addEventListener(\"drop\", freshHandleDrop);\n    }\n    return () => {\n      if (target) {\n        target.removeEventListener(\"dragenter\", freshHandleDragEnter);\n        target.removeEventListener(\"dragover\", freshHandleDragOver);\n        target.removeEventListener(\"dragleave\", freshHandleDragLeave);\n        target.removeEventListener(\"drop\", freshHandleDrop);\n      }\n    };\n  }, [\n    freshHandleDragEnter,\n    freshHandleDragLeave,\n    freshHandleDragOver,\n    freshHandleDrop,\n    isDroppingFiles,\n    isTargetWindow,\n    targetNode\n  ]);\n  if (isTargetWindow) {\n    return isDroppingFiles;\n  }\n  return [ref, isDroppingFiles];\n}\n\n// src/hooks/useKey.ts\nimport { useEffect as useEffect35, useCallback as useCallback31, useRef as useRef20, useMemo as useMemo6 } from \"react\";\n\n// src/utils/doesIdentifierMatchKeyboardEvent.ts\nvar doesIdentifierMatchKeyboardEvent = (error, identifier) => {\n  if (error.key === identifier || error.code === identifier || error.keyCode === identifier || error.which === identifier || error.charCode === identifier) {\n    return true;\n  }\n  return false;\n};\n\n// src/hooks/useKey.ts\nvar defaultOptions2 = {\n  eventTypes: [\"keydown\"],\n  when: true\n};\nfunction useKey(keys, callback, options) {\n  const keyList = useMemo6(() => {\n    if (Array.isArray(keys)) {\n      return keys;\n    } else {\n      return [keys];\n    }\n  }, [keys]);\n  const internalOptions = useMemo6(() => {\n    return { ...defaultOptions2, ...options };\n  }, [options]);\n  const { when, eventTypes } = internalOptions;\n  const callbackRef = useRef20(callback);\n  const { target } = internalOptions;\n  useEffect35(() => {\n    callbackRef.current = callback;\n  });\n  const handle = useCallback31(\n    (event) => {\n      if (keyList.some(\n        (identifier) => doesIdentifierMatchKeyboardEvent(event, identifier)\n      )) {\n        callbackRef.current(event);\n      }\n    },\n    [keyList]\n  );\n  useEffect35(() => {\n    if (when && typeof window !== \"undefined\") {\n      if (target) {\n        const targetNode = target.current;\n        if (targetNode) {\n          for (const eventType of eventTypes) {\n            targetNode.addEventListener(eventType, handle);\n          }\n          return () => {\n            for (const eventType of eventTypes) {\n              targetNode.removeEventListener(eventType, handle);\n            }\n          };\n        }\n      } else {\n        for (const eventType of eventTypes) {\n          window.addEventListener(eventType, handle);\n        }\n        return () => {\n          for (const eventType of eventTypes) {\n            window.removeEventListener(eventType, handle);\n          }\n        };\n      }\n    }\n    return noop;\n  }, [when, eventTypes, keyList, target, callback, handle]);\n}\n\n// src/hooks/useKeyBindings.ts\nvar useKeyBindings = (keyBindings, options) => {\n  for (const key in keyBindings) {\n    const handler = keyBindings[key];\n    if (handler) {\n      useKey(key, handler, options);\n    }\n  }\n};\n\n// src/hooks/useKeyRef.ts\nimport { useEffect as useEffect36, useState as useState29, useCallback as useCallback32, useRef as useRef21, useMemo as useMemo7 } from \"react\";\nvar defaultOptions3 = {\n  eventTypes: [\"keydown\"],\n  when: true\n};\nfunction useKeyRef(keys, callback, options) {\n  const [targetNode, setTargetNode] = useState29(null);\n  const ref = useCallback32((node) => {\n    setTargetNode(node);\n  }, []);\n  const keyList = useMemo7(() => {\n    if (Array.isArray(keys)) {\n      return keys;\n    } else {\n      return [keys];\n    }\n  }, [keys]);\n  const internalOptions = useMemo7(() => {\n    return { ...defaultOptions3, ...options };\n  }, [options]);\n  const { when, eventTypes } = internalOptions;\n  const callbackRef = useRef21(callback);\n  useEffect36(() => {\n    callbackRef.current = callback;\n  });\n  const handle = useCallback32(\n    (event) => {\n      if (keyList.some(\n        (identifier) => doesIdentifierMatchKeyboardEvent(event, identifier)\n      )) {\n        callbackRef.current(event);\n      }\n    },\n    [keyList]\n  );\n  useEffect36(() => {\n    if (when && targetNode) {\n      for (const eventType of eventTypes) {\n        targetNode.addEventListener(eventType, handle);\n      }\n      return () => {\n        for (const eventType of eventTypes) {\n          targetNode.removeEventListener(eventType, handle);\n        }\n      };\n    }\n    return noop;\n  }, [targetNode, when, eventTypes, keyList, handle]);\n  return ref;\n}\n\n// src/hooks/useKeys.ts\nimport { useEffect as useEffect37, useRef as useRef22, useCallback as useCallback33 } from \"react\";\nvar defaultOptions4 = {\n  continuous: false,\n  when: true\n};\nfunction useKeys(keysList, callback, options) {\n  const internalOptions = { ...defaultOptions4, ...options };\n  const { target, when, continuous, preventLostKeyup } = internalOptions;\n  const savedCallback = useRef22(callback);\n  const pressedKeyMappingRef = useRef22({});\n  const PressedKeyMapping = pressedKeyMappingRef.current;\n  useEffect37(() => {\n    savedCallback.current = callback;\n  });\n  const handleKeyDown = useCallback33(\n    (event) => {\n      let pressedKeyIdentifier = null;\n      let areAllKeysFromListPressed = false;\n      for (const identifier of keysList) {\n        if (doesIdentifierMatchKeyboardEvent(event, identifier)) {\n          PressedKeyMapping[identifier] = true;\n          pressedKeyIdentifier = identifier;\n        }\n      }\n      if (keysList.every((identifier) => Boolean(PressedKeyMapping[identifier]))) {\n        areAllKeysFromListPressed = true;\n      }\n      if (areAllKeysFromListPressed) {\n        savedCallback.current(event);\n        if (!continuous && pressedKeyIdentifier !== null) {\n          PressedKeyMapping[pressedKeyIdentifier] = false;\n        }\n      }\n    },\n    [keysList, PressedKeyMapping, continuous]\n  );\n  const handleKeyUp = useCallback33(\n    (event) => {\n      for (const identifier of keysList) {\n        if (doesIdentifierMatchKeyboardEvent(event, identifier)) {\n          PressedKeyMapping[identifier] = void 0;\n        }\n      }\n    },\n    [PressedKeyMapping, keysList]\n  );\n  useEffect37(() => {\n    if (when && typeof window !== \"undefined\") {\n      const targetNode = target?.current ? target.current : document;\n      targetNode.addEventListener(\"keydown\", handleKeyDown);\n      targetNode.addEventListener(\"keyup\", handleKeyUp);\n      return () => {\n        targetNode.removeEventListener(\"keydown\", handleKeyDown);\n        targetNode.removeEventListener(\"keyup\", handleKeyUp);\n      };\n    }\n    return noop;\n  }, [when, target, keysList, handleKeyDown, handleKeyUp]);\n  useEffect37(() => {\n    if (preventLostKeyup !== true) return noop;\n    if (typeof window !== \"undefined\") {\n      const originalAlert = window.alert;\n      window.alert = (message) => {\n        for (const identifier of keysList) {\n          PressedKeyMapping[identifier] = void 0;\n        }\n        return originalAlert(message);\n      };\n      const originalConfirm = window.confirm;\n      window.confirm = (message) => {\n        for (const identifier of keysList) {\n          PressedKeyMapping[identifier] = void 0;\n        }\n        return originalConfirm(message);\n      };\n      const originalPrompt = window.prompt;\n      window.prompt = (message, _default) => {\n        for (const identifier of keysList) {\n          PressedKeyMapping[identifier] = void 0;\n        }\n        return originalPrompt(message, _default);\n      };\n      return () => {\n        window.alert = originalAlert;\n        window.confirm = originalConfirm;\n        window.prompt = originalPrompt;\n      };\n    }\n    return noop;\n  }, [PressedKeyMapping, keysList, preventLostKeyup]);\n}\n\n// src/hooks/useLifecycleLogger.ts\nvar useLifecycleLogger = (componentName = \"Component\", ...otherArgs) => {\n  useDidMount(() => {\n    console.log(`${componentName} mounted`, ...otherArgs);\n    return () => console.log(`${componentName} unmounted`);\n  });\n  useDidUpdate(() => {\n    console.log(`${componentName} updated`, ...otherArgs);\n  });\n  useWillUnmount(() => {\n    console.log(`${componentName} unmounted`);\n  });\n};\n\n// src/hooks/useLockBodyScroll.ts\nimport { useEffect as useEffect38 } from \"react\";\nfunction useLockBodyScroll(isLocked) {\n  useEffect38(() => {\n    if (isLocked) {\n      const originalOverflow = window.getComputedStyle(document.body).overflow;\n      document.body.style.overflow = \"hidden\";\n      return () => {\n        document.body.style.overflow = originalOverflow;\n      };\n    } else {\n      return noop;\n    }\n  }, [isLocked]);\n}\n\n// src/hooks/useLocalstorageState.ts\nimport { useMemo as useMemo8, useState as useState30, useEffect as useEffect39, useCallback as useCallback34, useRef as useRef23 } from \"react\";\nfunction getValueFromLocalStorage(key) {\n  if (typeof localStorage === \"undefined\") {\n    return null;\n  }\n  const storedValue = localStorage.getItem(key) ?? \"null\";\n  try {\n    return JSON.parse(storedValue);\n  } catch (error) {\n    console.error(error);\n  }\n  return storedValue;\n}\nfunction saveValueToLocalStorage(key, value) {\n  if (typeof localStorage === \"undefined\") {\n    return null;\n  }\n  if (value === void 0) {\n    return localStorage.removeItem(key);\n  }\n  return localStorage.setItem(key, JSON.stringify(value));\n}\nfunction initialize(key, initialState) {\n  const valueLoadedFromLocalStorage = getValueFromLocalStorage(key);\n  if (valueLoadedFromLocalStorage === null) {\n    return typeof initialState === \"function\" ? initialState() : initialState;\n  } else {\n    return valueLoadedFromLocalStorage;\n  }\n}\nfunction useLocalstorageState(key, initialState) {\n  const [value, setValue] = useState30(() => initialize(key, initialState));\n  const isUpdateFromCrossDocumentListener = useRef23(false);\n  const isUpdateFromWithinDocumentListener = useRef23(false);\n  const customEventTypeName = useMemo8(() => {\n    return `rooks-${key}-localstorage-update`;\n  }, [key]);\n  useEffect39(() => {\n    if (!isUpdateFromCrossDocumentListener.current || !isUpdateFromWithinDocumentListener.current) {\n      saveValueToLocalStorage(key, value);\n    }\n  }, [key, value]);\n  const listenToCrossDocumentStorageEvents = useCallback34(\n    (event) => {\n      if (event.storageArea === localStorage && event.key === key) {\n        try {\n          isUpdateFromCrossDocumentListener.current = true;\n          const newValue = JSON.parse(event.newValue ?? \"null\");\n          if (value !== newValue) {\n            setValue(newValue);\n          }\n        } catch (error) {\n          console.log(error);\n        }\n      }\n    },\n    [key, value]\n  );\n  useEffect39(() => {\n    if (typeof window !== \"undefined\") {\n      window.addEventListener(\"storage\", listenToCrossDocumentStorageEvents);\n      return () => {\n        window.removeEventListener(\n          \"storage\",\n          listenToCrossDocumentStorageEvents\n        );\n      };\n    } else {\n      console.warn(\"useLocalstorageState: window is undefined.\");\n      return () => {\n      };\n    }\n  }, [listenToCrossDocumentStorageEvents]);\n  const listenToCustomEventWithinDocument = useCallback34(\n    (event) => {\n      try {\n        isUpdateFromWithinDocumentListener.current = true;\n        const { newValue } = event.detail;\n        if (value !== newValue) {\n          setValue(newValue);\n        }\n      } catch (error) {\n        console.log(error);\n      }\n    },\n    [value]\n  );\n  useEffect39(() => {\n    if (typeof document !== \"undefined\") {\n      document.addEventListener(\n        customEventTypeName,\n        listenToCustomEventWithinDocument\n      );\n      return () => {\n        document.removeEventListener(\n          customEventTypeName,\n          listenToCustomEventWithinDocument\n        );\n      };\n    } else {\n      console.warn(\"[useLocalstorageState] document is undefined.\");\n      return () => {\n      };\n    }\n  }, [customEventTypeName, listenToCustomEventWithinDocument]);\n  const broadcastValueWithinDocument = useCallback34(\n    (newValue) => {\n      if (typeof document !== \"undefined\") {\n        const event = new CustomEvent(\n          customEventTypeName,\n          { detail: { newValue } }\n        );\n        document.dispatchEvent(event);\n      } else {\n        console.warn(\"[useLocalstorageState] document is undefined.\");\n      }\n    },\n    [customEventTypeName]\n  );\n  const currentValue = useFreshRef(value, true);\n  const set = useCallback34(\n    (newValue) => {\n      const resolvedNewValue = typeof newValue === \"function\" ? newValue(currentValue.current) : newValue;\n      isUpdateFromCrossDocumentListener.current = false;\n      isUpdateFromWithinDocumentListener.current = false;\n      setValue(resolvedNewValue);\n      broadcastValueWithinDocument(resolvedNewValue);\n    },\n    [broadcastValueWithinDocument, currentValue]\n  );\n  const remove = useCallback34(() => {\n    localStorage.removeItem(key);\n  }, [key]);\n  return [value, set, remove];\n}\n\n// src/hooks/useNativeMapState.ts\nimport { useState as useState31, useCallback as useCallback35 } from \"react\";\nfunction useNativeMapState(initialMapState) {\n  const [map, setMap] = useState31(initialMapState || /* @__PURE__ */ new Map());\n  const set = useCallback35((key, value) => {\n    setMap((prevMap) => new Map(prevMap.set(key, value)));\n  }, []);\n  const setMultiple = useCallback35((entries) => {\n    setMap((prevMap) => {\n      const newMap = new Map(prevMap);\n      entries.forEach(([key, value]) => {\n        newMap.set(key, value);\n      });\n      return newMap;\n    });\n  }, []);\n  const remove = useCallback35((key) => {\n    setMap((prevMap) => {\n      const newMap = new Map(prevMap);\n      newMap.delete(key);\n      return newMap;\n    });\n  }, []);\n  const removeMultiple = useCallback35((keys) => {\n    setMap((prevMap) => {\n      const newMap = new Map(prevMap);\n      keys.forEach((key) => {\n        newMap.delete(key);\n      });\n      return newMap;\n    });\n  }, []);\n  const clear = useCallback35(() => {\n    setMap(/* @__PURE__ */ new Map());\n  }, []);\n  const has = useCallback35(\n    (key) => {\n      return map.has(key);\n    },\n    [map]\n  );\n  const hasSome = useCallback35(\n    (keys) => {\n      return keys.some((key) => map.has(key));\n    },\n    [map]\n  );\n  const hasEvery = useCallback35(\n    (keys) => {\n      return keys.every((key) => map.has(key));\n    },\n    [map]\n  );\n  const get = useCallback35(\n    (key) => {\n      return map.get(key);\n    },\n    [map]\n  );\n  const size = useCallback35(() => {\n    return map.size;\n  }, [map]);\n  const controls = {\n    set,\n    remove,\n    clear,\n    has,\n    get,\n    size,\n    setMultiple,\n    removeMultiple,\n    hasSome,\n    hasEvery\n  };\n  return [map, controls];\n}\n\n// src/hooks/useMediaMatch.ts\nimport { useCallback as useCallback36, useSyncExternalStore as useSyncExternalStore2 } from \"react\";\nfunction useMediaMatch(query, defaultServerRenderedValue = false) {\n  const subscribe3 = useCallback36(\n    (onStoreChange) => {\n      const mediaQueryList = window.matchMedia(query);\n      mediaQueryList.addEventListener(\"change\", onStoreChange);\n      return () => mediaQueryList.removeEventListener(\"change\", onStoreChange);\n    },\n    [query]\n  );\n  const getSnapshot2 = useCallback36(() => {\n    return window.matchMedia(query).matches;\n  }, [query]);\n  const getServerSnapshot = useCallback36(\n    () => defaultServerRenderedValue,\n    [defaultServerRenderedValue]\n  );\n  return useSyncExternalStore2(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useMediaRecorder.ts\nimport { useState as useState32, useCallback as useCallback37, useRef as useRef24, useEffect as useEffect40 } from \"react\";\nfunction useMediaRecorder(stream, options = {}) {\n  const [recordingState, setRecordingState] = useState32(\"idle\");\n  const [data, setData] = useState32(null);\n  const [dataUrl, setDataUrl] = useState32(null);\n  const [error, setError] = useState32(null);\n  const mediaRecorderRef = useRef24(null);\n  const chunksRef = useRef24([]);\n  const isSupported = typeof window !== \"undefined\" && \"MediaRecorder\" in window;\n  useEffect40(() => {\n    if (!isSupported || !stream) {\n      return;\n    }\n    try {\n      const mediaRecorder = new MediaRecorder(stream, options);\n      mediaRecorderRef.current = mediaRecorder;\n      mediaRecorder.ondataavailable = (event) => {\n        if (event.data.size > 0) {\n          chunksRef.current.push(event.data);\n        }\n      };\n      mediaRecorder.onstop = () => {\n        const blob = new Blob(chunksRef.current, {\n          type: options.mimeType || \"video/webm\"\n        });\n        setData(blob);\n        setDataUrl(URL.createObjectURL(blob));\n        setRecordingState(\"stopped\");\n        chunksRef.current = [];\n      };\n      mediaRecorder.onerror = (event) => {\n        const err = new Error(\n          `MediaRecorder error: ${event.error?.message || \"Unknown error\"}`\n        );\n        setError(err);\n        setRecordingState(\"idle\");\n      };\n      return () => {\n        if (mediaRecorder.state !== \"inactive\") {\n          mediaRecorder.stop();\n        }\n      };\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Failed to create MediaRecorder\");\n      setError(error2);\n    }\n  }, [stream, options, isSupported]);\n  const startRecording = useCallback37(() => {\n    if (!isSupported) {\n      const err = new Error(\"MediaRecorder is not supported\");\n      setError(err);\n      return;\n    }\n    if (!mediaRecorderRef.current) {\n      const err = new Error(\"MediaRecorder not initialized\");\n      setError(err);\n      return;\n    }\n    try {\n      chunksRef.current = [];\n      setData(null);\n      setDataUrl(null);\n      setError(null);\n      mediaRecorderRef.current.start();\n      setRecordingState(\"recording\");\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Failed to start recording\");\n      setError(error2);\n    }\n  }, [isSupported]);\n  const stopRecording = useCallback37(() => {\n    if (mediaRecorderRef.current && recordingState !== \"idle\") {\n      try {\n        mediaRecorderRef.current.stop();\n      } catch (err) {\n        const error2 = err instanceof Error ? err : new Error(\"Failed to stop recording\");\n        setError(error2);\n      }\n    }\n  }, [recordingState]);\n  const pauseRecording = useCallback37(() => {\n    if (mediaRecorderRef.current && recordingState === \"recording\") {\n      try {\n        mediaRecorderRef.current.pause();\n        setRecordingState(\"paused\");\n      } catch (err) {\n        const error2 = err instanceof Error ? err : new Error(\"Failed to pause recording\");\n        setError(error2);\n      }\n    }\n  }, [recordingState]);\n  const resumeRecording = useCallback37(() => {\n    if (mediaRecorderRef.current && recordingState === \"paused\") {\n      try {\n        mediaRecorderRef.current.resume();\n        setRecordingState(\"recording\");\n      } catch (err) {\n        const error2 = err instanceof Error ? err : new Error(\"Failed to resume recording\");\n        setError(error2);\n      }\n    }\n  }, [recordingState]);\n  useEffect40(() => {\n    return () => {\n      if (dataUrl) {\n        URL.revokeObjectURL(dataUrl);\n      }\n    };\n  }, [dataUrl]);\n  return {\n    startRecording,\n    stopRecording,\n    pauseRecording,\n    resumeRecording,\n    recordingState,\n    data,\n    dataUrl,\n    error,\n    isSupported\n  };\n}\n\n// src/hooks/useMergeRefs.ts\nimport { useMemo as useMemo9 } from \"react\";\nfunction setRef2(ref, value) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction useMergeRefs(...refs) {\n  return useMemo9(() => {\n    if (refs.every((ref) => ref === null)) {\n      return null;\n    }\n    return (refValue) => {\n      for (const ref of refs) {\n        setRef2(ref, refValue);\n      }\n    };\n  }, [refs]);\n}\n\n// src/hooks/useMouse.ts\nimport { useCallback as useCallback38, useRef as useRef25, useSyncExternalStore as useSyncExternalStore3 } from \"react\";\nvar initialMouseState = {\n  clientX: null,\n  clientY: null,\n  movementX: null,\n  movementY: null,\n  offsetX: null,\n  offsetY: null,\n  pageX: null,\n  pageY: null,\n  screenX: null,\n  screenY: null,\n  x: null,\n  y: null\n};\nfunction getMousePositionFromEvent(event) {\n  const {\n    screenX,\n    screenY,\n    movementX,\n    movementY,\n    pageX,\n    pageY,\n    clientX,\n    clientY,\n    offsetX,\n    offsetY\n  } = event;\n  return {\n    clientX,\n    clientY,\n    movementX,\n    movementY,\n    offsetX,\n    offsetY,\n    pageX,\n    pageY,\n    screenX,\n    screenY,\n    x: screenX,\n    y: screenY\n  };\n}\nfunction useMouse() {\n  const cacheRef = useRef25(initialMouseState);\n  const subscribe3 = useCallback38((onStoreChange) => {\n    const handleMouseMove = (event) => {\n      cacheRef.current = getMousePositionFromEvent(event);\n      onStoreChange();\n    };\n    document.addEventListener(\"mousemove\", handleMouseMove);\n    return () => {\n      document.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, []);\n  const getSnapshot2 = useCallback38(() => {\n    return cacheRef.current;\n  }, []);\n  const getServerSnapshot = useCallback38(() => {\n    return initialMouseState;\n  }, []);\n  return useSyncExternalStore3(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useMouseMoveDelta.ts\nimport { useCallback as useCallback39, useRef as useRef26, useSyncExternalStore as useSyncExternalStore4 } from \"react\";\nvar initialReturnValue = {\n  deltaX: 0,\n  deltaY: 0,\n  velocityX: 0,\n  velocityY: 0\n};\nfunction useMouseMoveDelta() {\n  const stateRef = useRef26({\n    deltaX: 0,\n    deltaY: 0,\n    clientX: null,\n    clientY: null,\n    velocityX: 0,\n    velocityY: 0,\n    timeStamp: Date.now()\n  });\n  const returnValueRef = useRef26(initialReturnValue);\n  const subscribe3 = useCallback39((onStoreChange) => {\n    const handleMouseMove = (event) => {\n      const currentTimestamp = event.timeStamp;\n      const lastState = stateRef.current;\n      if (lastState.clientX !== null && lastState.clientY !== null) {\n        const deltaX = event.clientX - lastState.clientX;\n        const deltaY = event.clientY - lastState.clientY;\n        const timeDelta = currentTimestamp - lastState.timeStamp;\n        const velocityX = timeDelta === 0 ? 0 : deltaX / timeDelta;\n        const velocityY = timeDelta === 0 ? 0 : deltaY / timeDelta;\n        stateRef.current = {\n          deltaX,\n          deltaY,\n          clientX: event.clientX,\n          clientY: event.clientY,\n          velocityX,\n          velocityY,\n          timeStamp: currentTimestamp\n        };\n        returnValueRef.current = { deltaX, deltaY, velocityX, velocityY };\n      } else {\n        stateRef.current = {\n          deltaX: 0,\n          deltaY: 0,\n          clientX: event.clientX,\n          clientY: event.clientY,\n          velocityX: 0,\n          velocityY: 0,\n          timeStamp: event.timeStamp\n        };\n        returnValueRef.current = {\n          deltaX: 0,\n          deltaY: 0,\n          velocityX: 0,\n          velocityY: 0\n        };\n      }\n      onStoreChange();\n    };\n    document.addEventListener(\"mousemove\", handleMouseMove, { passive: true });\n    return () => {\n      document.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, []);\n  const getSnapshot2 = useCallback39(() => {\n    return returnValueRef.current;\n  }, []);\n  const getServerSnapshot = useCallback39(() => {\n    return initialReturnValue;\n  }, []);\n  return useSyncExternalStore4(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useMouseWheelDelta.ts\nimport { useCallback as useCallback40, useRef as useRef27, useSyncExternalStore as useSyncExternalStore5 } from \"react\";\nvar initialReturnValue2 = {\n  delta: 0,\n  velocity: 0\n};\nfunction useMouseWheelDelta() {\n  const stateRef = useRef27(null);\n  const returnValueRef = useRef27(initialReturnValue2);\n  const subscribe3 = useCallback40((onStoreChange) => {\n    const handleWheel = (event) => {\n      const currentTimestamp = event.timeStamp;\n      const lastState = stateRef.current;\n      if (lastState !== null) {\n        const delta = event.deltaY;\n        const timeDelta = currentTimestamp - lastState.timeStamp;\n        const velocity = timeDelta === 0 ? 0 : delta / timeDelta;\n        stateRef.current = {\n          delta,\n          velocity,\n          timeStamp: currentTimestamp\n        };\n        returnValueRef.current = { delta, velocity };\n      } else {\n        stateRef.current = {\n          delta: event.deltaY,\n          velocity: 0,\n          timeStamp: event.timeStamp\n        };\n        returnValueRef.current = {\n          delta: event.deltaY,\n          velocity: 0\n        };\n      }\n      onStoreChange();\n    };\n    document.addEventListener(\"wheel\", handleWheel);\n    return () => {\n      document.removeEventListener(\"wheel\", handleWheel);\n    };\n  }, []);\n  const getSnapshot2 = useCallback40(() => {\n    return returnValueRef.current;\n  }, []);\n  const getServerSnapshot = useCallback40(() => {\n    return initialReturnValue2;\n  }, []);\n  return useSyncExternalStore5(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useMultiSelectableList.ts\nimport { useCallback as useCallback41, useState as useState33 } from \"react\";\nfunction warnIfBothValueAndIndexAreProvided(functionName, object) {\n  if (Object.values(object).every((value) => typeof value !== \"undefined\")) {\n    console.warn(\n      `${functionName}. Expected either ${Object.keys(object).join(\n        \" or \"\n      )} to be provided. However all were provided`\n    );\n  } else if (Object.values(object).every((value) => typeof value === \"undefined\")) {\n    console.warn(\n      `${functionName}. ${Object.keys(object).join(\" , \")} are all undefined.`\n    );\n  }\n}\nfunction useMultiSelectableList(list = [], initialSelectIndices = [0], allowUnselected = false) {\n  const [currentIndices, setCurrentIndices] = useState33(initialSelectIndices);\n  const currentValues = currentIndices.map((index) => list[index]).filter((value) => value !== void 0);\n  const selection = [currentIndices, currentValues];\n  const updateSelections = ({ indices, values }) => {\n    return () => {\n      warnIfBothValueAndIndexAreProvided(\"updateSelections\", {\n        indices,\n        values\n      });\n      if (typeof indices !== \"undefined\") {\n        if (!allowUnselected && indices.length === 0) {\n          console.warn(`updateSelections failed. indices is an empty list.`);\n          return;\n        }\n        setCurrentIndices(indices);\n      } else if (typeof values !== \"undefined\") {\n        const valueIndices = list.reduce((accumulator, current, index) => {\n          if (values.includes(current)) {\n            const array = [...accumulator, index];\n            return array;\n          }\n          return accumulator;\n        }, []);\n        if (valueIndices.length > 0) {\n          setCurrentIndices(valueIndices);\n        } else if (allowUnselected) {\n          setCurrentIndices(valueIndices);\n        } else {\n          console.warn(\n            `updateSelections failed. Do the values exist in the list?`\n          );\n        }\n      }\n    };\n  };\n  const toggleSelectionByIndex = useCallback41(\n    (index) => {\n      let newIndices;\n      if (!currentIndices.includes(index)) {\n        newIndices = [...currentIndices, index];\n      } else {\n        newIndices = [...currentIndices];\n        const indexOfIndex = currentIndices.indexOf(index);\n        if (indexOfIndex !== -1) {\n          newIndices.splice(indexOfIndex, 1);\n        }\n      }\n      if (newIndices.length > 0) {\n        setCurrentIndices(newIndices);\n      } else if (allowUnselected) {\n        setCurrentIndices(newIndices);\n      } else {\n        console.warn(\n          `toggleSelection failed. Do the values exist in the list?`\n        );\n      }\n    },\n    [allowUnselected, currentIndices]\n  );\n  const toggleSelection = useCallback41(\n    ({ index, value }) => {\n      return () => {\n        warnIfBothValueAndIndexAreProvided(\"toggleSelection\", {\n          index,\n          value\n        });\n        if (typeof index !== \"undefined\") {\n          toggleSelectionByIndex(index);\n        } else if (typeof value !== \"undefined\") {\n          const valueIndex = list.indexOf(value);\n          if (valueIndex > -1) {\n            toggleSelectionByIndex(valueIndex);\n          }\n        }\n      };\n    },\n    [list, toggleSelectionByIndex]\n  );\n  const matchSelection = useCallback41(\n    ({ index, value }) => {\n      warnIfBothValueAndIndexAreProvided(\"matchSelection\", { index, value });\n      if (typeof index !== \"undefined\") {\n        return currentIndices.includes(index);\n      } else if (typeof value !== \"undefined\") {\n        return currentValues.includes(value);\n      }\n      return false;\n    },\n    [currentIndices, currentValues]\n  );\n  const controls = {\n    matchSelection,\n    toggleSelection,\n    updateSelections\n  };\n  return [selection, controls];\n}\n\n// src/hooks/useNavigatorLanguage.ts\nimport { useSyncExternalStore as useSyncExternalStore6 } from \"react\";\nfunction getLanguageSnapshot() {\n  if (typeof navigator !== \"undefined\") {\n    return navigator.language;\n  } else {\n    return null;\n  }\n}\nfunction getLanguageSubscription(callback) {\n  if (typeof window !== \"undefined\") {\n    window.addEventListener(\"languagechange\", callback);\n    return () => {\n      window.removeEventListener(\"languagechange\", callback);\n    };\n  }\n  return () => {\n  };\n}\nfunction getLanguageServerSnapshot() {\n  return null;\n}\nfunction useNavigatorLanguage() {\n  return useSyncExternalStore6(getLanguageSubscription, getLanguageSnapshot, getLanguageServerSnapshot);\n}\n\n// src/hooks/useNetworkInformation.ts\nimport { useCallback as useCallback42, useRef as useRef28, useSyncExternalStore as useSyncExternalStore7 } from \"react\";\nfunction getConnection() {\n  if (typeof navigator === \"undefined\") {\n    return null;\n  }\n  const nav = navigator;\n  return nav.connection || nav.mozConnection || nav.webkitConnection || null;\n}\nfunction getNetworkInfo() {\n  const connection = getConnection();\n  if (!connection) {\n    return {\n      type: null,\n      effectiveType: null,\n      downlink: null,\n      downlinkMax: null,\n      rtt: null,\n      saveData: false\n    };\n  }\n  return {\n    type: connection.type || null,\n    effectiveType: connection.effectiveType || null,\n    downlink: connection.downlink ?? null,\n    downlinkMax: connection.downlinkMax ?? null,\n    rtt: connection.rtt ?? null,\n    saveData: connection.saveData ?? false\n  };\n}\nvar defaultNetworkInfo = {\n  type: null,\n  effectiveType: null,\n  downlink: null,\n  downlinkMax: null,\n  rtt: null,\n  saveData: false,\n  isSupported: false\n};\nfunction useNetworkInformation() {\n  const cacheRef = useRef28(defaultNetworkInfo);\n  const subscribe3 = useCallback42((onStoreChange) => {\n    const connection = getConnection();\n    if (!connection) {\n      return () => {\n      };\n    }\n    connection.addEventListener(\"change\", onStoreChange);\n    return () => {\n      connection.removeEventListener(\"change\", onStoreChange);\n    };\n  }, []);\n  const getSnapshot2 = useCallback42(() => {\n    const networkInfo = getNetworkInfo();\n    const isSupported = getConnection() !== null;\n    if (cacheRef.current.type !== networkInfo.type || cacheRef.current.effectiveType !== networkInfo.effectiveType || cacheRef.current.downlink !== networkInfo.downlink || cacheRef.current.downlinkMax !== networkInfo.downlinkMax || cacheRef.current.rtt !== networkInfo.rtt || cacheRef.current.saveData !== networkInfo.saveData || cacheRef.current.isSupported !== isSupported) {\n      cacheRef.current = {\n        ...networkInfo,\n        isSupported\n      };\n    }\n    return cacheRef.current;\n  }, []);\n  const getServerSnapshot = useCallback42(() => {\n    return defaultNetworkInfo;\n  }, []);\n  return useSyncExternalStore7(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useNotification.ts\nimport { useState as useState34, useCallback as useCallback43, useEffect as useEffect41 } from \"react\";\nfunction useNotification() {\n  const isSupported = typeof window !== \"undefined\" && \"Notification\" in window;\n  const [permission, setPermission] = useState34(\n    isSupported ? Notification.permission : \"default\"\n  );\n  useEffect41(() => {\n    if (isSupported) {\n      setPermission(Notification.permission);\n    }\n  }, [isSupported]);\n  const requestPermission = useCallback43(async () => {\n    if (!isSupported) {\n      console.warn(\"Notification API is not supported\");\n      return \"denied\";\n    }\n    try {\n      const result = await Notification.requestPermission();\n      const permissionState = result;\n      setPermission(permissionState);\n      return permissionState;\n    } catch (error) {\n      console.error(\"Error requesting notification permission:\", error);\n      return \"denied\";\n    }\n  }, [isSupported]);\n  const show = useCallback43(\n    async (title, options) => {\n      if (!isSupported) {\n        console.warn(\"Notification API is not supported\");\n        return null;\n      }\n      if (permission !== \"granted\") {\n        console.warn(\n          \"Notification permission not granted. Current permission:\",\n          permission\n        );\n        return null;\n      }\n      try {\n        const notification = new Notification(title, options);\n        return notification;\n      } catch (error) {\n        console.error(\"Error showing notification:\", error);\n        return null;\n      }\n    },\n    [isSupported, permission]\n  );\n  return {\n    show,\n    permission,\n    requestPermission,\n    isSupported\n  };\n}\n\n// src/hooks/useOnClickRef.ts\nimport { useState as useState35, useEffect as useEffect42, useCallback as useCallback44 } from \"react\";\nfunction useOnClickRef(onClick) {\n  const [node, setNode] = useState35(null);\n  const handleEvent = useCallback44(\n    (event) => {\n      event.preventDefault();\n      onClick();\n    },\n    [onClick]\n  );\n  const freshCallback = useFreshCallback(handleEvent);\n  useEffect42(() => {\n    if (node) {\n      node.addEventListener(\"click\", freshCallback);\n      node.addEventListener(\"touchend\", freshCallback);\n      return () => {\n        node.removeEventListener(\"click\", freshCallback);\n        node.removeEventListener(\"touchend\", freshCallback);\n      };\n    }\n    return noop;\n  }, [node, freshCallback]);\n  const ref = useCallback44((element) => {\n    if (element) {\n      setNode(element);\n    }\n  }, []);\n  return ref;\n}\n\n// src/hooks/useOnHoverRef.ts\nimport { useState as useState36, useEffect as useEffect43, useCallback as useCallback45 } from \"react\";\nfunction useOnHoverRef(onMouseEnter, onMouseLeave) {\n  const [node, setNode] = useState36(null);\n  const handleMouseEnter = useCallback45(\n    (e) => {\n      onMouseEnter?.(e);\n    },\n    [onMouseEnter]\n  );\n  const handleMouseLeave = useCallback45(\n    (e) => {\n      onMouseLeave?.(e);\n    },\n    [onMouseLeave]\n  );\n  const mouseEnterCallback = useFreshCallback(handleMouseEnter);\n  const mouseLeaveCallback = useFreshCallback(handleMouseLeave);\n  useEffect43(() => {\n    if (node) {\n      node.addEventListener(\"mouseenter\", mouseEnterCallback);\n      node.addEventListener(\"mouseleave\", mouseLeaveCallback);\n      return () => {\n        node.removeEventListener(\"mouseenter\", mouseEnterCallback);\n        node.removeEventListener(\"mouseleave\", mouseLeaveCallback);\n      };\n    } else {\n      return noop;\n    }\n  }, [mouseEnterCallback, mouseLeaveCallback, node]);\n  const ref = (el) => {\n    setNode(el);\n  };\n  return ref;\n}\n\n// src/hooks/useOnline.ts\nimport { useSyncExternalStore as useSyncExternalStore8 } from \"use-sync-external-store/shim\";\nfunction getSnapshot() {\n  if (typeof window === \"undefined\") {\n    return null;\n  }\n  return navigator.onLine;\n}\nfunction subscribe(onStoreChange) {\n  if (typeof window !== \"undefined\") {\n    window.addEventListener(\"online\", onStoreChange);\n    window.addEventListener(\"offline\", onStoreChange);\n    return () => {\n      window.removeEventListener(\"online\", onStoreChange);\n      window.removeEventListener(\"offline\", onStoreChange);\n    };\n  } else {\n    console.warn(\"useOnline: window is undefined.\");\n    return noop;\n  }\n}\nfunction useOnline() {\n  const isOnline = useSyncExternalStore8(subscribe, getSnapshot);\n  return isOnline;\n}\n\n// src/hooks/useOrientation.ts\nimport { useCallback as useCallback46, useSyncExternalStore as useSyncExternalStore9 } from \"react\";\nvar useOrientation = () => {\n  const subscribe3 = useCallback46((onStoreChange) => {\n    window.screen.orientation.addEventListener(\"change\", onStoreChange);\n    return () => {\n      window.screen.orientation.removeEventListener(\"change\", onStoreChange);\n    };\n  }, []);\n  const getSnapshot2 = useCallback46(() => {\n    return window.screen.orientation;\n  }, []);\n  const getServerSnapshot = useCallback46(() => {\n    return null;\n  }, []);\n  return useSyncExternalStore9(subscribe3, getSnapshot2, getServerSnapshot);\n};\n\n// src/hooks/usePageLeave.ts\nimport { useEffect as useEffect44, useRef as useRef29 } from \"react\";\nfunction usePageLeave(onPageLeave) {\n  const freshCallback = useFreshCallback(onPageLeave);\n  const isLeavingRef = useRef29(false);\n  useEffect44(() => {\n    if (typeof window === \"undefined\") {\n      return;\n    }\n    const handleBeforeUnload = (event) => {\n      isLeavingRef.current = true;\n      const result = freshCallback();\n      if (typeof result === \"string\") {\n        event.preventDefault();\n        event.returnValue = result;\n        return result;\n      }\n    };\n    const handleVisibilityChange = () => {\n      if (document.visibilityState === \"hidden\" && !isLeavingRef.current) {\n        freshCallback();\n      }\n    };\n    const handlePageHide = () => {\n      if (!isLeavingRef.current) {\n        freshCallback();\n      }\n    };\n    window.addEventListener(\"beforeunload\", handleBeforeUnload);\n    document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n    window.addEventListener(\"pagehide\", handlePageHide);\n    return () => {\n      window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n      document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n      window.removeEventListener(\"pagehide\", handlePageHide);\n      isLeavingRef.current = false;\n    };\n  }, [freshCallback]);\n}\n\n// src/hooks/usePictureInPictureApi.ts\nimport { useCallback as useCallback47, useEffect as useEffect45, useState as useState37 } from \"react\";\nfunction usePictureInPictureApi(videoRef) {\n  const [isPiPActive, setIsPiPActive] = useState37(false);\n  const [error, setError] = useState37(null);\n  const [pipWindow, setPipWindow] = useState37(null);\n  const isSupported = useCallback47(() => {\n    if (!videoRef.current) return false;\n    if (!document.pictureInPictureEnabled) return false;\n    if (!videoRef.current.requestPictureInPicture) return false;\n    if (videoRef.current.disablePictureInPicture) return false;\n    return true;\n  }, [videoRef]);\n  const checkPiPActive = useCallback47(() => {\n    return document.pictureInPictureElement === videoRef.current;\n  }, [videoRef]);\n  const updatePiPState = useCallback47(() => {\n    setIsPiPActive(checkPiPActive());\n  }, [checkPiPActive]);\n  const enterPiP = useCallback47(async () => {\n    if (!isSupported() || !videoRef.current) {\n      return;\n    }\n    try {\n      setError(null);\n      await videoRef.current.requestPictureInPicture();\n    } catch (err) {\n      setError(err instanceof Error ? err : new Error(String(err)));\n    }\n  }, [isSupported, videoRef]);\n  const exitPiP = useCallback47(async () => {\n    if (!document.pictureInPictureElement) {\n      return;\n    }\n    try {\n      setError(null);\n      await document.exitPictureInPicture();\n    } catch (err) {\n      setError(err instanceof Error ? err : new Error(String(err)));\n    }\n  }, []);\n  const toggle = useCallback47(async () => {\n    if (checkPiPActive()) {\n      await exitPiP();\n    } else {\n      await enterPiP();\n    }\n  }, [checkPiPActive, exitPiP, enterPiP]);\n  const handleEnterPiP = useCallback47((event) => {\n    const pipEvent = event;\n    setPipWindow(pipEvent.pictureInPictureWindow);\n    setIsPiPActive(true);\n  }, []);\n  const handleLeavePiP = useCallback47(() => {\n    setPipWindow(null);\n    setIsPiPActive(false);\n  }, []);\n  useEffect45(() => {\n    const video = videoRef.current;\n    if (!video) return;\n    video.addEventListener(\"enterpictureinpicture\", handleEnterPiP);\n    video.addEventListener(\"leavepictureinpicture\", handleLeavePiP);\n    updatePiPState();\n    return () => {\n      video.removeEventListener(\"enterpictureinpicture\", handleEnterPiP);\n      video.removeEventListener(\"leavepictureinpicture\", handleLeavePiP);\n    };\n  }, [videoRef.current, handleEnterPiP, handleLeavePiP, updatePiPState]);\n  return {\n    isPiPActive,\n    isSupported: isSupported(),\n    error,\n    pipWindow,\n    enterPiP,\n    exitPiP,\n    toggle\n  };\n}\n\n// src/hooks/usePreferredColorScheme.ts\nimport { useSyncExternalStore as useSyncExternalStore10 } from \"use-sync-external-store/shim\";\nfunction getColorScheme() {\n  if (typeof window === \"undefined\") {\n    return null;\n  }\n  if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n    return \"dark\";\n  }\n  if (window.matchMedia(\"(prefers-color-scheme: light)\").matches) {\n    return \"light\";\n  }\n  return \"no-preference\";\n}\nfunction subscribe2(onStoreChange) {\n  if (typeof window === \"undefined\") {\n    console.warn(\"usePreferredColorScheme: window is undefined.\");\n    return noop;\n  }\n  const darkModeQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n  const lightModeQuery = window.matchMedia(\"(prefers-color-scheme: light)\");\n  if (darkModeQuery.addEventListener) {\n    darkModeQuery.addEventListener(\"change\", onStoreChange);\n    lightModeQuery.addEventListener(\"change\", onStoreChange);\n    return () => {\n      darkModeQuery.removeEventListener(\"change\", onStoreChange);\n      lightModeQuery.removeEventListener(\"change\", onStoreChange);\n    };\n  } else {\n    darkModeQuery.addListener(onStoreChange);\n    lightModeQuery.addListener(onStoreChange);\n    return () => {\n      darkModeQuery.removeListener(onStoreChange);\n      lightModeQuery.removeListener(onStoreChange);\n    };\n  }\n}\nfunction usePreferredColorScheme() {\n  const colorScheme = useSyncExternalStore10(\n    subscribe2,\n    getColorScheme,\n    () => null\n    // Server-side snapshot\n  );\n  return {\n    colorScheme,\n    isDark: colorScheme === \"dark\",\n    isLight: colorScheme === \"light\"\n  };\n}\n\n// src/hooks/useOutsideClick.ts\nimport { useEffect as useEffect46, useRef as useRef30, useCallback as useCallback48 } from \"react\";\nfunction useOutsideClick(ref, handler, when = true) {\n  const savedHandler = useRef30(handler);\n  const memoizedCallback = useCallback48(\n    (event) => {\n      if (ref.current && !ref.current.contains(event.target)) {\n        savedHandler.current(event);\n      }\n    },\n    [ref]\n  );\n  useEffect46(() => {\n    savedHandler.current = handler;\n  });\n  useEffect46(() => {\n    if (when) {\n      document.addEventListener(\"click\", memoizedCallback, true);\n      document.addEventListener(\"touchstart\", memoizedCallback, true);\n      return () => {\n        document.removeEventListener(\"click\", memoizedCallback, true);\n        document.removeEventListener(\"touchstart\", memoizedCallback, true);\n      };\n    }\n    return noop;\n  }, [ref, handler, when, memoizedCallback]);\n}\n\n// src/hooks/useOutsideClickRef.ts\nimport { useEffect as useEffect47, useRef as useRef31, useCallback as useCallback49, useState as useState38 } from \"react\";\nfunction useOutsideClickRef(handler, when = true) {\n  const [node, setNode] = useState38(null);\n  const savedHandler = useRef31(handler);\n  const memoizedCallback = useCallback49(\n    (event) => {\n      if (node && !node.contains(event.target)) {\n        savedHandler.current(event);\n      }\n    },\n    [node]\n  );\n  useEffect47(() => {\n    savedHandler.current = handler;\n  });\n  const ref = useCallback49((nodeElement) => {\n    setNode(nodeElement);\n  }, []);\n  useEffect47(() => {\n    if (when) {\n      document.addEventListener(\"click\", memoizedCallback, true);\n      document.addEventListener(\"touchstart\", memoizedCallback, true);\n      return () => {\n        document.removeEventListener(\"click\", memoizedCallback, true);\n        document.removeEventListener(\"touchstart\", memoizedCallback, true);\n      };\n    }\n    return noop;\n  }, [when, memoizedCallback]);\n  return [ref];\n}\n\n// src/hooks/usePrefersReducedMotion.ts\nfunction usePrefersReducedMotion() {\n  return useMediaMatch(\"(prefers-reduced-motion: reduce)\");\n}\n\n// src/hooks/usePreviousDifferent.ts\nimport { useRef as useRef32, useEffect as useEffect48 } from \"react\";\nfunction usePreviousDifferent(currentValue) {\n  const previousRef = useRef32(null);\n  const previousRef2 = useRef32(null);\n  useEffect48(() => {\n    previousRef2.current = previousRef.current;\n    previousRef.current = currentValue;\n  }, [currentValue]);\n  return currentValue === previousRef.current ? previousRef2.current : previousRef.current;\n}\n\n// src/hooks/usePreviousImmediate.ts\nimport { useRef as useRef33, useEffect as useEffect49 } from \"react\";\nfunction usePreviousImmediate(currentValue) {\n  const previousRef = useRef33(null);\n  useEffect49(() => {\n    previousRef.current = currentValue;\n  });\n  return previousRef.current;\n}\n\n// src/hooks/usePromise.ts\nimport { useState as useState39, useEffect as useEffect50 } from \"react\";\nfunction usePromise(asyncFunction, deps = []) {\n  const [state, setState] = useState39({\n    data: null,\n    loading: true,\n    error: null\n  });\n  const freshAsyncCallback = useFreshCallback(asyncFunction);\n  useEffect50(() => {\n    let isMounted = true;\n    async function fetchData() {\n      try {\n        const data = await freshAsyncCallback();\n        if (isMounted) {\n          setState({\n            data,\n            loading: false,\n            error: null\n          });\n        }\n      } catch (error) {\n        if (isMounted) {\n          setState({\n            data: null,\n            loading: false,\n            error: error instanceof Error ? error : new Error(String(error))\n          });\n        }\n      }\n    }\n    fetchData();\n    return () => {\n      isMounted = false;\n    };\n  }, [freshAsyncCallback, ...deps]);\n  return state;\n}\n\n// src/hooks/useQueueState.ts\nimport { useCallback as useCallback50, useState as useState40 } from \"react\";\nfunction useQueueState(initialList) {\n  const [list, setList] = useState40([...initialList]);\n  const enqueue = useCallback50(\n    (item) => {\n      const newList = [...list, item];\n      setList(newList);\n      return newList.length;\n    },\n    [list]\n  );\n  const dequeue = useCallback50(() => {\n    if (list.length > 0) {\n      const firstItem = list[0];\n      setList([...list.slice(1)]);\n      return firstItem;\n    }\n    return void 0;\n  }, [list]);\n  const peek = useCallback50(() => {\n    if (list.length > 0) {\n      return list[0];\n    }\n    return void 0;\n  }, [list]);\n  const controls = {\n    dequeue,\n    enqueue,\n    length: list.length,\n    peek\n  };\n  return [list, controls];\n}\n\n// src/hooks/useResizeObserverRef.ts\nimport { useCallback as useCallback51, useEffect as useEffect51, useRef as useRef34, useState as useState41 } from \"react\";\nvar config5 = {\n  box: \"content-box\"\n};\nfunction useResizeObserverRef(callback, options = config5) {\n  const { box } = options;\n  const [node, setNode] = useState41(null);\n  const callbackRef = useRef34(callback);\n  useEffect51(() => {\n    callbackRef.current = callback;\n  });\n  const handleResizeObserver = useCallback51(\n    (...args) => {\n      callbackRef.current?.(...args);\n    },\n    []\n  );\n  useEffect51(() => {\n    if (node) {\n      const observer = new ResizeObserver(handleResizeObserver);\n      observer.observe(node, { box });\n      return () => {\n        observer.disconnect();\n      };\n    }\n    return noop;\n  }, [node, handleResizeObserver, box]);\n  const ref = useCallback51((node2) => {\n    setNode(node2);\n  }, []);\n  return [ref];\n}\n\n// src/hooks/useRenderCount.ts\nimport { useRef as useRef35 } from \"react\";\nfunction useRenderCount() {\n  return ++useRef35(0).current;\n}\n\n// src/hooks/useSafeSetState.ts\nimport { useState as useState42, useCallback as useCallback52 } from \"react\";\nfunction useSafeSetState(initialState) {\n  const [state, setState] = useState42(initialState);\n  const getIsMounted = useGetIsMounted();\n  const safeSetState = useCallback52(\n    (newState) => {\n      if (getIsMounted()) {\n        setState(newState);\n      }\n    },\n    [getIsMounted]\n  );\n  return [state, safeSetState];\n}\n\n// src/hooks/useScreenDetailsApi.ts\nimport { useCallback as useCallback53, useEffect as useEffect52, useMemo as useMemo10, useRef as useRef36, useState as useState43 } from \"react\";\nfunction useScreenDetailsApi(options = {}) {\n  const { requestOnMount = false, autoRefresh = true } = options;\n  const [screens, setScreens] = useState43([]);\n  const [currentScreen, setCurrentScreen] = useState43(null);\n  const [isLoading, setIsLoading] = useState43(false);\n  const [hasPermission, setHasPermission] = useState43(false);\n  const [error, setError] = useState43(null);\n  const screenDetailsRef = useRef36(null);\n  const permissionStatusRef = useRef36(null);\n  const isSupported = useMemo10(() => {\n    return typeof window !== \"undefined\" && typeof window.getScreenDetails === \"function\";\n  }, []);\n  const primaryScreen = useMemo10(() => {\n    return screens.find((screen) => screen.isPrimary) || null;\n  }, [screens]);\n  const externalScreens = useMemo10(() => {\n    return screens.filter((screen) => !screen.isPrimary);\n  }, [screens]);\n  const fetchScreenDetails = useCallback53(async () => {\n    if (!isSupported) return;\n    setIsLoading(true);\n    setError(null);\n    try {\n      const screenDetails = await window.getScreenDetails();\n      screenDetailsRef.current = screenDetails;\n      setScreens(screenDetails.screens);\n      setCurrentScreen(screenDetails.currentScreen);\n      setHasPermission(true);\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : String(err);\n      setError(errorMessage);\n      setHasPermission(false);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [isSupported]);\n  const requestPermission = useCallback53(async () => {\n    if (!isSupported) {\n      setError(\"Screen Details API is not supported\");\n      return;\n    }\n    setIsLoading(true);\n    setError(null);\n    try {\n      const permissionStatus = await navigator.permissions.query({\n        name: \"window-management\"\n      });\n      permissionStatusRef.current = permissionStatus;\n      if (permissionStatus.state === \"denied\") {\n        setError(\"Permission denied for window-management\");\n        setHasPermission(false);\n        setIsLoading(false);\n        return;\n      }\n      await fetchScreenDetails();\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : String(err);\n      setError(errorMessage);\n      setHasPermission(false);\n      setIsLoading(false);\n    }\n  }, [isSupported, fetchScreenDetails]);\n  const refresh = useCallback53(async () => {\n    if (!hasPermission) return;\n    try {\n      await fetchScreenDetails();\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : String(err);\n      setError(errorMessage);\n    }\n  }, [hasPermission, fetchScreenDetails]);\n  const handleScreensChange = useCallback53(() => {\n    if (autoRefresh) {\n      refresh();\n    }\n  }, [autoRefresh, refresh]);\n  const handleCurrentScreenChange = useCallback53(() => {\n    if (autoRefresh) {\n      refresh();\n    }\n  }, [autoRefresh, refresh]);\n  const handlePermissionChange = useCallback53(() => {\n    if (permissionStatusRef.current) {\n      const newState = permissionStatusRef.current.state;\n      if (newState === \"denied\") {\n        setHasPermission(false);\n        setScreens([]);\n        setCurrentScreen(null);\n        setError(\"Permission denied for window-management\");\n      } else if (newState === \"granted\") {\n        setHasPermission(true);\n        setError(null);\n        if (autoRefresh) {\n          refresh();\n        }\n      }\n    }\n  }, [autoRefresh, refresh]);\n  useEffect52(() => {\n    if (!screenDetailsRef.current) return;\n    const screenDetails = screenDetailsRef.current;\n    screenDetails.addEventListener(\"screenschange\", handleScreensChange);\n    screenDetails.addEventListener(\"currentscreenchange\", handleCurrentScreenChange);\n    return () => {\n      screenDetails.removeEventListener(\"screenschange\", handleScreensChange);\n      screenDetails.removeEventListener(\"currentscreenchange\", handleCurrentScreenChange);\n    };\n  }, [handleScreensChange, handleCurrentScreenChange]);\n  useEffect52(() => {\n    if (!permissionStatusRef.current) return;\n    const permissionStatus = permissionStatusRef.current;\n    permissionStatus.addEventListener(\"change\", handlePermissionChange);\n    return () => {\n      permissionStatus.removeEventListener(\"change\", handlePermissionChange);\n    };\n  }, [handlePermissionChange]);\n  useEffect52(() => {\n    if (requestOnMount && isSupported) {\n      requestPermission();\n    }\n  }, [requestOnMount, isSupported, requestPermission]);\n  return {\n    screens,\n    currentScreen,\n    primaryScreen,\n    externalScreens,\n    isSupported,\n    isLoading,\n    hasPermission,\n    error,\n    requestPermission,\n    refresh\n  };\n}\n\n// src/hooks/useSelect.ts\nimport { useCallback as useCallback54, useState as useState44 } from \"react\";\nfunction useSelect(list, initialIndex = 0) {\n  const [selectedIndex, setSelectedIndex] = useState44(initialIndex);\n  const setItem = useCallback54(\n    (item) => {\n      setSelectedIndex(list.indexOf(item));\n    },\n    [list]\n  );\n  return {\n    index: selectedIndex,\n    item: list[selectedIndex],\n    setIndex: setSelectedIndex,\n    setItem\n  };\n}\n\n// src/hooks/useSelectableList.ts\nimport { useCallback as useCallback55, useState as useState45 } from \"react\";\nfunction warnIfBothValueAndIndexAreProvided2(functionName, object) {\n  if (Object.values(object).every((value) => typeof value !== \"undefined\")) {\n    console.warn(\n      `${functionName}. Expected either ${Object.keys(object).join(\n        \" or \"\n      )} to be provided. However all were provided`\n    );\n  } else if (Object.values(object).every((value) => typeof value === \"undefined\")) {\n    console.warn(\n      `${functionName}. ${Object.keys(object).join(\" , \")} are all undefined.`\n    );\n  }\n}\nfunction useSelectableList(list = [], initialIndex = 0, allowUnselected = false) {\n  const [currentIndex, setCurrentIndex] = useState45(initialIndex);\n  const currentValue = list[currentIndex];\n  const selection = [currentIndex, currentValue];\n  const updateSelection = useCallback55(\n    ({ index, value }) => {\n      return () => {\n        warnIfBothValueAndIndexAreProvided2(\"updateSelection\", { index, value });\n        if (typeof index !== \"undefined\") {\n          setCurrentIndex(index);\n        } else if (typeof value !== \"undefined\") {\n          const valueIndex = list.indexOf(value);\n          if (valueIndex > -1) {\n            setCurrentIndex(valueIndex);\n          } else {\n            console.warn(\n              `updateSelection failed. Does the value ${value} exist in the list?`\n            );\n          }\n        }\n      };\n    },\n    [list]\n  );\n  const toggleSelection = useCallback55(\n    ({ index, value }) => {\n      return () => {\n        warnIfBothValueAndIndexAreProvided2(\"toggleSelection\", { index, value });\n        if (typeof index !== \"undefined\") {\n          if (currentIndex === index) {\n            if (allowUnselected) {\n              setCurrentIndex(-1);\n            } else {\n              console.warn(\"allowUnselected is false. Cannot unselect item\");\n            }\n          } else {\n            setCurrentIndex(index);\n          }\n        } else if (typeof value !== \"undefined\") {\n          const valueIndex = list.indexOf(value);\n          if (valueIndex > -1) {\n            if (currentIndex === valueIndex) {\n              if (allowUnselected) {\n                setCurrentIndex(-1);\n              } else {\n                console.warn(\"allowUnselected is false. Cannot unselect item\");\n              }\n            } else {\n              setCurrentIndex(valueIndex);\n            }\n          } else {\n            console.log(\"as\");\n            console.warn(\n              `toggleSelection failed. Does the value ${value} exist in the list?`\n            );\n          }\n        }\n      };\n    },\n    [allowUnselected, currentIndex, list]\n  );\n  const matchSelection = useCallback55(\n    ({ index, value }) => {\n      warnIfBothValueAndIndexAreProvided2(\"matchSelection\", { index, value });\n      if (typeof index !== \"undefined\") {\n        return index === currentIndex;\n      } else {\n        return value === currentValue;\n      }\n    },\n    [currentIndex, currentValue]\n  );\n  const controls = {\n    matchSelection,\n    toggleSelection,\n    updateSelection\n  };\n  return [selection, controls];\n}\n\n// src/hooks/useSessionstorageState.ts\nimport { useMemo as useMemo11, useState as useState46, useEffect as useEffect53, useCallback as useCallback56, useRef as useRef37 } from \"react\";\nfunction getValueFromSessionStorage(key) {\n  if (typeof sessionStorage === \"undefined\") {\n    return null;\n  }\n  const storedValue = sessionStorage.getItem(key) ?? \"null\";\n  try {\n    return JSON.parse(storedValue);\n  } catch (error) {\n    console.error(error);\n  }\n  return storedValue;\n}\nfunction saveValueToSessionStorage(key, value) {\n  if (typeof sessionStorage === \"undefined\") {\n    return null;\n  }\n  return sessionStorage.setItem(key, JSON.stringify(value));\n}\nfunction initialize2(key, initialState) {\n  const valueLoadedFromSessionStorage = getValueFromSessionStorage(key);\n  if (valueLoadedFromSessionStorage === null) {\n    return initialState;\n  } else {\n    return valueLoadedFromSessionStorage;\n  }\n}\nfunction useSessionstorageState(key, initialState) {\n  const [value, setValue] = useState46(() => initialize2(key, initialState));\n  const isUpdateFromCrossDocumentListener = useRef37(false);\n  const isUpdateFromWithinDocumentListener = useRef37(false);\n  const customEventTypeName = useMemo11(() => {\n    return `rooks-${key}-sessionstorage-update`;\n  }, [key]);\n  useEffect53(() => {\n    if (!isUpdateFromCrossDocumentListener.current) {\n      saveValueToSessionStorage(key, value);\n    }\n  }, [key, value]);\n  const listenToCrossDocumentStorageEvents = useCallback56(\n    (event) => {\n      if (event.storageArea === sessionStorage && event.key === key) {\n        try {\n          isUpdateFromCrossDocumentListener.current = true;\n          const newValue = JSON.parse(event.newValue ?? \"null\");\n          if (value !== newValue) {\n            setValue(newValue);\n          }\n        } catch (error) {\n          console.log(error);\n        }\n      }\n    },\n    [key, value]\n  );\n  useEffect53(() => {\n    if (typeof window !== \"undefined\") {\n      window.addEventListener(\"storage\", listenToCrossDocumentStorageEvents);\n      return () => {\n        window.removeEventListener(\n          \"storage\",\n          listenToCrossDocumentStorageEvents\n        );\n      };\n    } else {\n      console.warn(\"[useSessionstorageState] window is undefined.\");\n      return () => {\n      };\n    }\n  }, [listenToCrossDocumentStorageEvents]);\n  const listenToCustomEventWithinDocument = useCallback56(\n    (event) => {\n      try {\n        isUpdateFromWithinDocumentListener.current = true;\n        const { newValue } = event.detail;\n        if (value !== newValue) {\n          setValue(newValue);\n        }\n      } catch (error) {\n        console.log(error);\n      }\n    },\n    [value]\n  );\n  useEffect53(() => {\n    if (typeof document !== \"undefined\") {\n      document.addEventListener(\n        customEventTypeName,\n        listenToCustomEventWithinDocument\n      );\n      return () => {\n        document.removeEventListener(\n          customEventTypeName,\n          listenToCustomEventWithinDocument\n        );\n      };\n    } else {\n      console.warn(\"[useSessionstorageState] document is undefined.\");\n      return () => {\n      };\n    }\n  }, [customEventTypeName, listenToCustomEventWithinDocument]);\n  const broadcastValueWithinDocument = useCallback56(\n    (newValue) => {\n      if (typeof document !== \"undefined\") {\n        const event = new CustomEvent(\n          customEventTypeName,\n          { detail: { newValue } }\n        );\n        document.dispatchEvent(event);\n      } else {\n        console.warn(\"[useSessionstorageState] document is undefined.\");\n      }\n    },\n    [customEventTypeName]\n  );\n  const set = useCallback56(\n    (newValue) => {\n      const resolvedNewValue = typeof newValue === \"function\" ? newValue(value) : newValue;\n      isUpdateFromCrossDocumentListener.current = false;\n      isUpdateFromWithinDocumentListener.current = false;\n      setValue(resolvedNewValue);\n      broadcastValueWithinDocument(resolvedNewValue);\n    },\n    [broadcastValueWithinDocument, value]\n  );\n  const remove = useCallback56(() => {\n    sessionStorage.removeItem(key);\n  }, [key]);\n  return [value, set, remove];\n}\n\n// src/hooks/useShare.ts\nimport { useState as useState47, useCallback as useCallback57 } from \"react\";\nfunction useShare() {\n  const [error, setError] = useState47(null);\n  const [isSharing, setIsSharing] = useState47(false);\n  const isSupported = typeof window !== \"undefined\" && typeof navigator !== \"undefined\" && \"share\" in navigator;\n  const share = useCallback57(\n    async (data) => {\n      if (!isSupported) {\n        const err = new Error(\"Web Share API is not supported\");\n        setError(err);\n        throw err;\n      }\n      try {\n        setIsSharing(true);\n        setError(null);\n        await navigator.share(data);\n      } catch (err) {\n        if (err instanceof Error && err.name === \"AbortError\") {\n          setError(null);\n        } else {\n          const error2 = err instanceof Error ? err : new Error(\"Failed to share\");\n          setError(error2);\n          throw error2;\n        }\n      } finally {\n        setIsSharing(false);\n      }\n    },\n    [isSupported]\n  );\n  return {\n    share,\n    isSupported,\n    error,\n    isSharing\n  };\n}\n\n// src/hooks/useSetState.ts\nimport { useCallback as useCallback58, useMemo as useMemo12, useState as useState48 } from \"react\";\nfunction useSetState(initialSetValue) {\n  const [setValue, setSetValue] = useState48(new Set(initialSetValue));\n  const add = useCallback58(\n    (...args) => {\n      setSetValue(new Set(setValue.add(...args)));\n    },\n    [setValue, setSetValue]\n  );\n  const deleteValue = useCallback58(\n    (...args) => {\n      const newSetValue = new Set(setValue);\n      newSetValue.delete(...args);\n      setSetValue(newSetValue);\n    },\n    [setValue, setSetValue]\n  );\n  const clear = useCallback58(() => {\n    setSetValue(/* @__PURE__ */ new Set());\n  }, [setSetValue]);\n  const controls = useMemo12(() => {\n    return { add, delete: deleteValue, clear };\n  }, [add, deleteValue, clear]);\n  const returnValue = useMemo12(() => {\n    return [setValue, controls];\n  }, [setValue, controls]);\n  return returnValue;\n}\n\n// src/hooks/useSpring.ts\nimport { useState as useState49, useEffect as useEffect54, useRef as useRef38 } from \"react\";\nfunction useSpring(targetValue, config6 = {}) {\n  const {\n    stiffness = 170,\n    damping = 26,\n    mass = 1,\n    precision = 0.01\n  } = config6;\n  const [value, setValue] = useState49(targetValue);\n  const velocityRef = useRef38(0);\n  const valueRef = useRef38(targetValue);\n  const targetRef = useRef38(targetValue);\n  useEffect54(() => {\n    targetRef.current = targetValue;\n  }, [targetValue]);\n  useRaf(() => {\n    const distance = targetRef.current - valueRef.current;\n    const force = distance * stiffness;\n    const acceleration = force / mass;\n    const friction = -velocityRef.current * damping;\n    velocityRef.current += (acceleration + friction) * (1 / 60);\n    valueRef.current += velocityRef.current * (1 / 60);\n    setValue(valueRef.current);\n    if (Math.abs(distance) < precision && Math.abs(velocityRef.current) < precision) {\n      if (valueRef.current !== targetRef.current) {\n        valueRef.current = targetRef.current;\n        setValue(targetRef.current);\n      }\n      return false;\n    }\n    return true;\n  }, true);\n  return value;\n}\n\n// src/hooks/useStackState.ts\nimport { useCallback as useCallback59, useMemo as useMemo13, useState as useState50 } from \"react\";\nfunction useStackState(initialList) {\n  const [list, setList] = useState50([...initialList]);\n  const length = list.length;\n  const listInReverse = useMemo13(() => {\n    const reverseList = [...list];\n    reverseList.reverse();\n    return reverseList;\n  }, [list]);\n  const push = useCallback59(\n    (item) => {\n      const newList = [...list, item];\n      setList(newList);\n      return newList.length;\n    },\n    [list]\n  );\n  const pop = useCallback59(() => {\n    if (list.length > 0) {\n      const lastItem = list[list.length - 1];\n      setList([...list.slice(0, list.length - 1)]);\n      return lastItem;\n    }\n    return void 0;\n  }, [list]);\n  const peek = useCallback59(() => {\n    if (list.length > 0) {\n      return list[list.length - 1];\n    }\n    return void 0;\n  }, [list]);\n  const clear = () => setList([]);\n  const isEmpty = useCallback59(() => list.length === 0, [list]);\n  const controls = {\n    clear,\n    isEmpty,\n    length,\n    peek,\n    pop,\n    push\n  };\n  return [list, controls, listInReverse];\n}\n\n// src/hooks/useSpeech.ts\nimport { useRef as useRef39, useCallback as useCallback60, useState as useState51, useEffect as useEffect55 } from \"react\";\nfunction useSpeech(options) {\n  const {\n    text,\n    language = \"en-US\",\n    voiceURI,\n    onEnd = noop,\n    volume = 1,\n    pitch = 1,\n    rate = 1\n  } = options;\n  const freshOnEnd = useFreshCallback(onEnd);\n  const speechRef = useRef39(null);\n  const [isPlaying, setIsPlaying] = useState51(false);\n  useEffect55(() => {\n    if (speechRef.current && isPlaying) {\n      speechRef.current.text = text;\n      speechRef.current.lang = language;\n      speechRef.current.volume = volume;\n      speechRef.current.pitch = pitch;\n      speechRef.current.rate = rate;\n      if (voiceURI) {\n        const voices = window.speechSynthesis.getVoices();\n        const selectedVoice = voices.find(\n          (voice) => voice.voiceURI === voiceURI\n        );\n        if (selectedVoice) {\n          speechRef.current.voice = selectedVoice;\n        }\n      }\n    }\n  }, [text, isPlaying, language, voiceURI, volume, pitch, rate]);\n  const start = useCallback60(() => {\n    if (!(\"speechSynthesis\" in window)) {\n      console.error(\"Web Speech API is not supported in your browser.\");\n      return;\n    }\n    if (speechRef.current) {\n      window.speechSynthesis.cancel();\n    }\n    speechRef.current = new SpeechSynthesisUtterance(text);\n    speechRef.current.lang = language;\n    speechRef.current.volume = volume;\n    speechRef.current.pitch = pitch;\n    speechRef.current.rate = rate;\n    if (voiceURI) {\n      const voices = window.speechSynthesis.getVoices();\n      const selectedVoice = voices.find((voice) => voice.voiceURI === voiceURI);\n      if (selectedVoice) {\n        speechRef.current.voice = selectedVoice;\n      }\n    }\n    speechRef.current.onstart = () => setIsPlaying(true);\n    speechRef.current.onend = () => {\n      setIsPlaying(false);\n      freshOnEnd();\n    };\n    speechRef.current.onerror = () => setIsPlaying(false);\n    window.speechSynthesis.speak(speechRef.current);\n  }, [text, language, volume, pitch, rate, voiceURI, freshOnEnd]);\n  const pause = useCallback60(() => {\n    if (window.speechSynthesis && isPlaying) {\n      window.speechSynthesis.pause();\n      setIsPlaying(false);\n    }\n  }, [isPlaying]);\n  const resume = useCallback60(() => {\n    if (window.speechSynthesis && !isPlaying) {\n      window.speechSynthesis.resume();\n      setIsPlaying(true);\n    }\n  }, [isPlaying]);\n  const stop = useCallback60(() => {\n    if (window.speechSynthesis) {\n      window.speechSynthesis.cancel();\n      setIsPlaying(false);\n    }\n  }, []);\n  return {\n    start,\n    pause,\n    resume,\n    stop,\n    isPlaying\n  };\n}\n\n// src/utils/utils.ts\nvar isFunction = (value) => typeof value === \"function\";\nvar isNumber = (value) => typeof value === \"number\";\n\n// src/hooks/useTimeTravelState.ts\nimport { useCallback as useCallback61, useMemo as useMemo14, useRef as useRef40, useState as useState52 } from \"react\";\nvar getSplitIndex = (step, arr) => {\n  let index = step > 0 ? step - 1 : arr.length + step;\n  if (index >= arr.length - 1) {\n    index = arr.length - 1;\n  }\n  if (index < 0) {\n    index = 0;\n  }\n  return index;\n};\nvar split = (step, targetArr) => {\n  const index = getSplitIndex(step, targetArr);\n  return {\n    _current: targetArr[index],\n    _before: targetArr.slice(0, index),\n    _after: targetArr.slice(index + 1)\n  };\n};\nfunction useTimeTravelState(initialValue) {\n  const [history, setHistory] = useState52({\n    present: initialValue,\n    past: [],\n    future: []\n  });\n  const { present, past, future } = history;\n  const initialValueRef = useRef40(initialValue);\n  const reset = useCallback61(\n    (resetInitialValue) => {\n      const newInitialValue = resetInitialValue ?? initialValueRef.current;\n      initialValueRef.current = newInitialValue;\n      setHistory({\n        present: newInitialValue,\n        future: [],\n        past: []\n      });\n    },\n    [initialValueRef, setHistory]\n  );\n  const updateValue = useCallback61((val, options) => {\n    setHistory((currentHistory) => {\n      const { past: past2, present: present2 } = currentHistory;\n      const { overwriteLastEntry = false } = options || {};\n      let newValue = void 0;\n      if (isFunction(val)) {\n        newValue = val(present2);\n      } else {\n        newValue = val;\n      }\n      if (overwriteLastEntry) {\n        return {\n          present: newValue,\n          past: past2,\n          future: []\n        };\n      } else {\n        return {\n          present: newValue,\n          future: [],\n          past: [...past2, present2]\n        };\n      }\n    });\n  }, []);\n  const goForwardInternal = useCallback61((step = 1) => {\n    setHistory((currentHistory) => {\n      const { future: future2, past: past2, present: present2 } = currentHistory;\n      if (future2.length === 0) {\n        return currentHistory;\n      }\n      const { _before, _current, _after } = split(step, future2);\n      return {\n        past: [...past2, present2, ..._before],\n        present: _current,\n        future: _after\n      };\n    });\n  }, []);\n  const goBackwardInternal = useCallback61((step = -1) => {\n    setHistory((currentHistory) => {\n      const { future: future2, past: past2, present: present2 } = currentHistory;\n      if (past2.length === 0) {\n        return currentHistory;\n      }\n      const { _before, _current, _after } = split(step, past2);\n      return {\n        past: _before,\n        present: _current,\n        future: [..._after, present2, ...future2]\n      };\n    });\n  }, []);\n  const go = useCallback61(\n    (step) => {\n      const stepNum = isNumber(step) ? step : Number(step);\n      if (stepNum === 0) {\n        return;\n      }\n      if (stepNum > 0) {\n        return goForwardInternal(stepNum);\n      }\n      goBackwardInternal(stepNum);\n    },\n    [goBackwardInternal, goForwardInternal]\n  );\n  const back = useCallback61(() => {\n    go(-1);\n  }, [go]);\n  const forward = useCallback61(() => {\n    go(1);\n  }, [go]);\n  const canUndo = useMemo14(() => {\n    return past.length > 0;\n  }, [past.length]);\n  const canRedo = useMemo14(() => {\n    return future.length > 0;\n  }, [future.length]);\n  const controls = useMemo14(() => {\n    return {\n      backLength: past.length,\n      forwardLength: future.length,\n      go,\n      back,\n      forward,\n      reset,\n      undo: back,\n      redo: forward,\n      canUndo,\n      canRedo\n    };\n  }, [back, canRedo, canUndo, forward, future.length, go, past.length, reset]);\n  const returnValue = useMemo14(() => {\n    return [present, updateValue, controls];\n  }, [controls, present, updateValue]);\n  return returnValue;\n}\n\n// src/hooks/useFetch.ts\nimport { useState as useState53, useCallback as useCallback62, useRef as useRef41, useEffect as useEffect56 } from \"react\";\nfunction createFetchPromise(url, options = {}) {\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await fetch(url, {\n        ...options,\n        signal: new AbortController().signal\n        // Add signal for compatibility\n      });\n      if (!response.ok) {\n        const errorMessage = `HTTP ${response.status}: ${response.statusText}`;\n        const httpError = new Error(errorMessage);\n        httpError.status = response.status;\n        httpError.statusText = response.statusText;\n        throw httpError;\n      }\n      const result = await response.json();\n      resolve(result);\n    } catch (err) {\n      reject(err instanceof Error ? err : new Error(String(err)));\n    }\n  });\n}\nfunction useFetch(url, options = {}) {\n  const [data, setData] = useState53(null);\n  const [loading, setLoading] = useState53(false);\n  const [error, setError] = useState53(null);\n  const mountedRef = useRef41(true);\n  const fetchData = useCallback62(async () => {\n    if (!mountedRef.current) return;\n    setLoading(true);\n    setError(null);\n    options.onFetch?.();\n    try {\n      const result = await createFetchPromise(url, options);\n      if (mountedRef.current) {\n        setData(result);\n        options.onSuccess?.(result);\n      }\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(String(err));\n      if (mountedRef.current) {\n        setError(error2);\n        options.onError?.(error2);\n      }\n    } finally {\n      if (mountedRef.current) {\n        setLoading(false);\n      }\n    }\n  }, [url, options]);\n  useEffect56(() => {\n    return () => {\n      mountedRef.current = false;\n    };\n  }, []);\n  return {\n    data,\n    loading,\n    error,\n    startFetch: fetchData\n  };\n}\n\n// src/hooks/useThrottle.ts\nimport { useState as useState54, useEffect as useEffect57, useCallback as useCallback63, useRef as useRef42 } from \"react\";\nfunction useThrottle(callback, timeout = 300) {\n  const [ready, setReady] = useState54(true);\n  const timerRef = useRef42(void 0);\n  const throttledFunction = useCallback63(\n    (...args) => {\n      if (!ready) {\n        return;\n      }\n      setReady(false);\n      callback(...args);\n    },\n    [ready, callback]\n  );\n  useEffect57(() => {\n    if (!ready) {\n      timerRef.current = window.setTimeout(() => {\n        setReady(true);\n      }, timeout);\n      return () => window.clearTimeout(timerRef.current);\n    }\n    return noop;\n  }, [ready, timeout]);\n  return [throttledFunction, ready];\n}\n\n// src/hooks/useToggle.ts\nimport { useReducer } from \"react\";\nvar defaultToggleFunction = (value) => !value;\nfunction useToggle(initialValue = false, toggleFunction = defaultToggleFunction) {\n  return useReducer(toggleFunction, initialValue);\n}\n\n// src/hooks/useUndoState.ts\nimport { useCallback as useCallback64, useMemo as useMemo15, useState as useState55 } from \"react\";\nvar defaultOptions5 = { maxSize: 100 };\nvar useUndoState = (defaultValue, options) => {\n  const { maxSize } = useMemo15(() => {\n    return { ...defaultOptions5, ...options };\n  }, [options]);\n  const [value, setValue] = useState55([defaultValue]);\n  const push = useCallback64(\n    (argument) => {\n      return setValue((current) => {\n        const restValues = current.length >= maxSize ? current.slice(0, maxSize) : current;\n        if (typeof argument === \"function\") {\n          return [argument(current[0]), ...restValues];\n        } else {\n          return [argument, ...restValues];\n        }\n      });\n    },\n    [maxSize]\n  );\n  const undo = useCallback64(() => {\n    setValue((current) => {\n      if (current.length === 1) {\n        return current;\n      }\n      const [, ...values] = current;\n      return values;\n    });\n  }, []);\n  const returnValue = useMemo15(() => {\n    return [value[0], push, undo];\n  }, [push, undo, value]);\n  return returnValue;\n};\n\n// src/hooks/useTween.ts\nimport { useState as useState56, useEffect as useEffect58, useRef as useRef43 } from \"react\";\nvar Easing2 = {\n  linear: (t) => t,\n  easeInQuad: (t) => t * t,\n  easeOutQuad: (t) => t * (2 - t),\n  easeInOutQuad: (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,\n  easeInCubic: (t) => t * t * t,\n  easeOutCubic: (t) => --t * t * t + 1,\n  easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n};\nfunction useTween(duration = 200, easing = Easing2.linear) {\n  const [value, setValue] = useState56(0);\n  const startTimeRef = useRef43(null);\n  const raf2 = useRaf(() => {\n    if (startTimeRef.current === null) {\n      startTimeRef.current = performance.now();\n    }\n    const elapsed = performance.now() - startTimeRef.current;\n    const progress = Math.min(elapsed / duration, 1);\n    const easedProgress = easing(progress);\n    setValue(easedProgress);\n    if (progress < 1) {\n      return true;\n    }\n    return false;\n  }, true);\n  useEffect58(() => {\n    startTimeRef.current = null;\n  }, [duration, easing]);\n  return value;\n}\n\n// src/hooks/useUndoRedoState.ts\nimport {\n  useState as useState57,\n  useCallback as useCallback65,\n  useMemo as useMemo16\n} from \"react\";\nfunction isFunctionInitializer(functionToCheck) {\n  return typeof functionToCheck === \"function\";\n}\nfunction useUndoRedoState(initialState, options) {\n  const [state, _setState] = useState57(initialState);\n  const [past, setPast] = useState57([]);\n  const [future, setFuture] = useState57([]);\n  const maxDepth = options?.maxDepth ?? 100;\n  const undo = useCallback65(() => {\n    setPast((pastStates) => {\n      const newPast = [...pastStates];\n      const previousState = newPast.pop();\n      if (typeof previousState !== \"undefined\") {\n        setFuture((futureStates) => [state, ...futureStates]);\n        _setState(previousState);\n      }\n      return newPast;\n    });\n  }, [state]);\n  const redo = useCallback65(() => {\n    setFuture((futureStates) => {\n      const newFuture = [...futureStates];\n      const nextState = newFuture.shift();\n      if (typeof nextState !== \"undefined\") {\n        setPast((pastStates) => [...pastStates, state]);\n        _setState(nextState);\n      }\n      return newFuture;\n    });\n  }, [state]);\n  const canUndo = useCallback65(() => past.length > 0, [past]);\n  const canRedo = useCallback65(() => future.length > 0, [future]);\n  const isUndoPossible = useMemo16(() => past.length > 0, [past]);\n  const isRedoPossible = useMemo16(() => future.length > 0, [future]);\n  const setState = useCallback65(\n    (value) => {\n      _setState((prevState) => {\n        const nextState = isFunctionInitializer(value) ? value(prevState) : value;\n        setPast((pastStates) => {\n          const newPast = [...pastStates, prevState];\n          if (newPast.length > maxDepth) {\n            newPast.shift();\n          }\n          return newPast;\n        });\n        setFuture([]);\n        return nextState;\n      });\n    },\n    [maxDepth]\n  );\n  const clearUndoStack = useCallback65(() => {\n    setPast([]);\n  }, []);\n  const clearRedoStack = useCallback65(() => {\n    setFuture([]);\n  }, []);\n  const clearAll = useCallback65(() => {\n    setPast([]);\n    setFuture([]);\n  }, []);\n  const controls = useMemo16(() => {\n    return {\n      undo,\n      redo,\n      canUndo,\n      canRedo,\n      clearUndoStack,\n      clearRedoStack,\n      clearAll,\n      isUndoPossible,\n      isRedoPossible\n    };\n  }, [\n    undo,\n    redo,\n    canUndo,\n    canRedo,\n    clearUndoStack,\n    clearRedoStack,\n    clearAll,\n    isUndoPossible,\n    isRedoPossible\n  ]);\n  return [state, setState, controls];\n}\n\n// src/hooks/useVibrate.ts\nimport { useEffect as useEffect59 } from \"react\";\nfunction useVibrate({ isEnabled, pattern }) {\n  useEffect59(() => {\n    if (!(\"vibrate\" in navigator) || typeof navigator.vibrate !== \"function\") {\n      console.warn(\"Vibration API not supported by the current browser\");\n      return;\n    }\n    if (isEnabled) {\n      navigator.vibrate(pattern);\n    } else {\n      navigator.vibrate(0);\n    }\n    return () => {\n      navigator.vibrate(0);\n    };\n  }, [isEnabled, pattern]);\n}\n\n// src/hooks/useVideo.ts\nimport { useRef as useRef44, useState as useState58, useEffect as useEffect60 } from \"react\";\nvar useVideo = () => {\n  const videoRef = useRef44(null);\n  const [state, setState] = useState58({\n    currentTime: 0,\n    duration: 0,\n    isPaused: true,\n    isMuted: false,\n    volume: 1\n  });\n  const controls = {\n    play: () => {\n      if (videoRef.current) {\n        videoRef.current.play();\n        setState({ ...state, isPaused: false });\n      }\n    },\n    pause: () => {\n      if (videoRef.current) {\n        videoRef.current.pause();\n        setState({ ...state, isPaused: true });\n      }\n    },\n    toggleMute: () => {\n      if (videoRef.current) {\n        videoRef.current.muted = !videoRef.current.muted;\n        setState({ ...state, isMuted: videoRef.current.muted });\n      }\n    },\n    setVolume: (volume) => {\n      if (videoRef.current) {\n        videoRef.current.volume = volume;\n        setState({ ...state, volume });\n      }\n    },\n    setCurrentTime: (time) => {\n      if (videoRef.current) {\n        videoRef.current.currentTime = time;\n        setState({ ...state, currentTime: time });\n      }\n    },\n    fastForward: (seconds) => {\n      if (videoRef.current) {\n        videoRef.current.currentTime += seconds;\n        setState({ ...state, currentTime: videoRef.current.currentTime });\n      }\n    },\n    rewind: (seconds) => {\n      if (videoRef.current) {\n        videoRef.current.currentTime -= seconds;\n        setState({ ...state, currentTime: videoRef.current.currentTime });\n      }\n    },\n    toggleFullScreen: () => {\n      if (videoRef.current) {\n        if (document.fullscreenElement) {\n          document.exitFullscreen();\n        } else {\n          videoRef.current.requestFullscreen();\n        }\n      }\n    }\n  };\n  useEffect60(() => {\n    const video = videoRef.current;\n    const handleTimeUpdate = () => {\n      setState((prevState) => ({\n        ...prevState,\n        currentTime: video.currentTime\n      }));\n    };\n    const handleDurationChange = () => {\n      setState((prevState) => ({\n        ...prevState,\n        duration: video.duration\n      }));\n    };\n    const handlePause = () => {\n      setState((prevState) => ({\n        ...prevState,\n        isPaused: true\n      }));\n    };\n    const handlePlay = () => {\n      setState((prevState) => ({\n        ...prevState,\n        isPaused: false\n      }));\n    };\n    if (video) {\n      video.addEventListener(\"timeupdate\", handleTimeUpdate);\n      video.addEventListener(\"durationchange\", handleDurationChange);\n      video.addEventListener(\"pause\", handlePause);\n      video.addEventListener(\"play\", handlePlay);\n    }\n    return () => {\n      if (video) {\n        video.removeEventListener(\"timeupdate\", handleTimeUpdate);\n        video.removeEventListener(\"durationchange\", handleDurationChange);\n        video.removeEventListener(\"pause\", handlePause);\n        video.removeEventListener(\"play\", handlePlay);\n      }\n    };\n  }, [videoRef]);\n  return [videoRef, state, controls];\n};\n\n// src/hooks/useWebLocksApi.ts\nimport { useCallback as useCallback66, useEffect as useEffect61, useRef as useRef45, useState as useState59, useMemo as useMemo17 } from \"react\";\nfunction useWebLocksApi(resourceName, options = {}) {\n  if (typeof resourceName !== \"string\") {\n    throw new Error(\"Resource name must be a string\");\n  }\n  const { periodicCheck = false, checkInterval = 1e3 } = options;\n  const isSupported = useMemo17(() => {\n    return typeof navigator !== \"undefined\" && navigator.locks !== void 0 && typeof navigator.locks.request === \"function\";\n  }, []);\n  const [isLocked, setIsLocked] = useState59(false);\n  const [waitingCount, setWaitingCount] = useState59(0);\n  const [error, setError] = useState59(null);\n  const abortControllerRef = useRef45(null);\n  const periodicCheckTimeoutRef = useRef45(void 0);\n  const setErrorState = useCallback66((err) => {\n    setError(err);\n  }, []);\n  const clearError = useCallback66(() => {\n    setError(null);\n  }, []);\n  const query = useCallback66(async () => {\n    if (!isSupported) {\n      const err = new Error(\"Web Locks API is not supported\");\n      setErrorState(err);\n      throw err;\n    }\n    try {\n      const result = await navigator.locks.query();\n      const resourceLocks = result.held?.filter((lock) => lock.name === resourceName) || [];\n      const pendingLocks = result.pending?.filter((lock) => lock.name === resourceName) || [];\n      setIsLocked(resourceLocks.length > 0);\n      setWaitingCount(pendingLocks.length);\n      clearError();\n      return result;\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Query failed\");\n      setErrorState(error2);\n      throw error2;\n    }\n  }, [isSupported, resourceName, setErrorState, clearError]);\n  const acquire = useCallback66(async (callback, lockOptions) => {\n    if (!isSupported) {\n      const err = new Error(\"Web Locks API is not supported\");\n      setErrorState(err);\n      throw err;\n    }\n    try {\n      setIsLocked(true);\n      clearError();\n      let controller = null;\n      if (!lockOptions?.signal && !lockOptions?.ifAvailable) {\n        controller = new AbortController();\n        abortControllerRef.current = controller;\n      }\n      const finalOptions = { ...lockOptions };\n      if (!lockOptions?.ifAvailable && !lockOptions?.signal && controller) {\n        finalOptions.signal = controller.signal;\n      } else if (lockOptions?.signal) {\n        finalOptions.signal = lockOptions.signal;\n      }\n      const result = await navigator.locks.request(\n        resourceName,\n        finalOptions,\n        async () => {\n          try {\n            return await callback();\n          } catch (err) {\n            const error2 = err instanceof Error ? err : new Error(\"Callback failed\");\n            setErrorState(error2);\n            throw error2;\n          }\n        }\n      );\n      return result;\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Lock acquisition failed\");\n      setErrorState(error2);\n      throw error2;\n    } finally {\n      setIsLocked(false);\n      abortControllerRef.current = null;\n    }\n  }, [isSupported, resourceName, setErrorState, clearError]);\n  const release = useCallback66(() => {\n    if (abortControllerRef.current) {\n      abortControllerRef.current.abort();\n      abortControllerRef.current = null;\n    }\n  }, []);\n  useEffect61(() => {\n    if (!isSupported) return;\n    query().catch(() => {\n    });\n    if (periodicCheck) {\n      const setupPeriodicCheck = () => {\n        periodicCheckTimeoutRef.current = window.setTimeout(() => {\n          query().catch(() => {\n          }).finally(() => {\n            setupPeriodicCheck();\n          });\n        }, checkInterval);\n      };\n      setupPeriodicCheck();\n    }\n    return () => {\n      if (periodicCheckTimeoutRef.current) {\n        window.clearTimeout(periodicCheckTimeoutRef.current);\n        periodicCheckTimeoutRef.current = void 0;\n      }\n      if (abortControllerRef.current) {\n        abortControllerRef.current.abort();\n        abortControllerRef.current = null;\n      }\n    };\n  }, [isSupported, resourceName, periodicCheck, checkInterval, query]);\n  return {\n    isSupported,\n    isLocked,\n    waitingCount,\n    error,\n    resourceName,\n    acquire,\n    release,\n    query\n  };\n}\n\n// src/hooks/useWebWorker.ts\nimport { useState as useState60, useCallback as useCallback67, useEffect as useEffect62, useRef as useRef46 } from \"react\";\nfunction useWebWorker(workerUrl) {\n  const [status, setStatus] = useState60(\"idle\");\n  const [data, setData] = useState60(null);\n  const [error, setError] = useState60(null);\n  const workerRef = useRef46(null);\n  const isSupported = typeof window !== \"undefined\" && \"Worker\" in window;\n  useEffect62(() => {\n    if (!isSupported || !workerUrl) {\n      return;\n    }\n    try {\n      const worker = new Worker(workerUrl);\n      workerRef.current = worker;\n      worker.onmessage = (event) => {\n        setData(event.data);\n        setStatus(\"success\");\n        setError(null);\n      };\n      worker.onerror = (event) => {\n        const err = new Error(event.message || \"Worker error\");\n        setError(err);\n        setStatus(\"error\");\n      };\n      return () => {\n        worker.terminate();\n        workerRef.current = null;\n      };\n    } catch (err) {\n      const error2 = err instanceof Error ? err : new Error(\"Failed to create worker\");\n      setError(error2);\n      setStatus(\"error\");\n    }\n  }, [workerUrl, isSupported]);\n  const postMessage = useCallback67(\n    (message) => {\n      if (!isSupported) {\n        console.warn(\"Web Workers are not supported\");\n        return;\n      }\n      if (!workerRef.current) {\n        console.warn(\"Worker not initialized\");\n        return;\n      }\n      if (status === \"terminated\") {\n        console.warn(\"Cannot post message to terminated worker\");\n        return;\n      }\n      try {\n        setStatus(\"running\");\n        setError(null);\n        workerRef.current.postMessage(message);\n      } catch (err) {\n        const error2 = err instanceof Error ? err : new Error(\"Failed to post message\");\n        setError(error2);\n        setStatus(\"error\");\n      }\n    },\n    [isSupported, status]\n  );\n  const terminate = useCallback67(() => {\n    if (workerRef.current) {\n      workerRef.current.terminate();\n      workerRef.current = null;\n      setStatus(\"terminated\");\n    }\n  }, []);\n  return {\n    postMessage,\n    terminate,\n    status,\n    data,\n    error,\n    isSupported\n  };\n}\n\n// src/hooks/useWhyDidYouUpdate.ts\nimport { useEffect as useEffect63, useRef as useRef47 } from \"react\";\nfunction useWhyDidYouUpdate(componentName, currentProps, enableLogging = true) {\n  const previousProps = useRef47({});\n  useDidUpdate(() => {\n    if (previousProps.current && enableLogging) {\n      const combinedKeys = Object.keys({\n        ...previousProps.current,\n        ...currentProps\n      });\n      const changedProps = {};\n      combinedKeys.forEach((key) => {\n        if (!Object.is(previousProps.current[key], currentProps[key])) {\n          changedProps[key] = {\n            from: previousProps.current[key],\n            to: currentProps[key]\n          };\n        }\n      });\n      if (Object.keys(changedProps).length) {\n        console.log(\"[why-did-you-update]\", componentName, changedProps);\n      }\n    }\n  }, [currentProps, componentName, enableLogging]);\n  useEffect63(() => {\n    previousProps.current = currentProps;\n  });\n}\n\n// src/hooks/useWindowEventListener.ts\nfunction useWindowEventListener(eventName, callback, listenerOptions = {}, isLayoutEffect = false) {\n  useGlobalObjectEventListener(\n    typeof window !== \"undefined\" ? window : void 0,\n    eventName,\n    callback,\n    listenerOptions,\n    true,\n    isLayoutEffect\n  );\n}\n\n// src/hooks/useWindowScrollPosition.ts\nimport { useState as useState61 } from \"react\";\nfunction computeScrollPosition() {\n  if (typeof window === \"undefined\") {\n    return {\n      scrollX: 0,\n      scrollY: 0\n    };\n  } else {\n    return {\n      scrollX: window.scrollX || window.pageXOffset,\n      scrollY: window.scrollY || window.pageYOffset\n    };\n  }\n}\nfunction useWindowScrollPosition() {\n  const [scrollPosition, setScrollPosition] = useState61(\n    computeScrollPosition\n  );\n  useOnWindowScroll(\n    () => {\n      setScrollPosition(computeScrollPosition());\n    },\n    true,\n    true\n  );\n  useOnWindowResize(\n    () => {\n      setScrollPosition(computeScrollPosition());\n    },\n    true,\n    true\n  );\n  return scrollPosition;\n}\n\n// src/hooks/useWindowSize.ts\nimport { useCallback as useCallback68, useRef as useRef48, useSyncExternalStore as useSyncExternalStore11 } from \"react\";\nvar nullDimensions = {\n  innerHeight: null,\n  innerWidth: null,\n  outerHeight: null,\n  outerWidth: null\n};\nfunction getDimensions() {\n  return {\n    innerHeight: window.innerHeight,\n    innerWidth: window.innerWidth,\n    outerHeight: window.outerHeight,\n    outerWidth: window.outerWidth\n  };\n}\nfunction useWindowSize() {\n  const cacheRef = useRef48(nullDimensions);\n  const subscribe3 = useCallback68((onStoreChange) => {\n    window.addEventListener(\"resize\", onStoreChange);\n    return () => {\n      window.removeEventListener(\"resize\", onStoreChange);\n    };\n  }, []);\n  const getSnapshot2 = useCallback68(() => {\n    const newDimensions = getDimensions();\n    if (cacheRef.current.innerHeight !== newDimensions.innerHeight || cacheRef.current.innerWidth !== newDimensions.innerWidth || cacheRef.current.outerHeight !== newDimensions.outerHeight || cacheRef.current.outerWidth !== newDimensions.outerWidth) {\n      cacheRef.current = newDimensions;\n    }\n    return cacheRef.current;\n  }, []);\n  const getServerSnapshot = useCallback68(() => {\n    return nullDimensions;\n  }, []);\n  return useSyncExternalStore11(subscribe3, getSnapshot2, getServerSnapshot);\n}\n\n// src/hooks/useOnStartTyping.ts\nimport { useCallback as useCallback69 } from \"react\";\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement) return false;\n  if (activeElement === body) return false;\n  const tag = activeElement.tagName;\n  if (tag === \"INPUT\" || tag === \"TEXTAREA\") return true;\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isAllowedKey(event, options) {\n  if (event.metaKey || event.ctrlKey || event.altKey) return false;\n  const { key } = event;\n  if (options.includeAZ && /^[a-zA-Z]$/.test(key)) return true;\n  if (options.includeNumbers && /^[0-9]$/.test(key)) return true;\n  return false;\n}\nfunction useOnStartTyping(callback, options) {\n  const opts = {\n    includeAZ: true,\n    includeNumbers: false,\n    ...options\n  };\n  const freshCallback = useFreshTick(callback);\n  const handler = useCallback69((event) => {\n    if (!isFocusedElementEditable() && isAllowedKey(event, opts)) {\n      freshCallback(event);\n    }\n  }, [freshCallback, opts.includeAZ, opts.includeNumbers]);\n  useIsomorphicEffect(() => {\n    document.addEventListener(\"keydown\", handler);\n    return () => {\n      document.removeEventListener(\"keydown\", handler);\n    };\n  }, [handler]);\n}\nexport {\n  Easing,\n  useAnimation,\n  useArrayState,\n  useAsyncEffect,\n  useAudio,\n  useBoundingclientrect,\n  useBoundingclientrectRef,\n  useBroadcastChannel,\n  useCheckboxInputState,\n  useClipboard,\n  useCountdown,\n  useCounter,\n  useDebounce,\n  useDebounceFn,\n  useDebouncedAsyncEffect,\n  useDebouncedEffect,\n  useDebouncedValue,\n  useDeepCompareEffect,\n  useDidMount,\n  useDidUpdate,\n  useDimensionsRef,\n  useDocumentEventListener,\n  useDocumentTitle,\n  useDocumentVisibilityState,\n  useEasing,\n  useEffectOnceWhen,\n  useEventListenerRef,\n  useFetch,\n  useFileDropRef,\n  useFocus,\n  useFocusWithin,\n  useForkRef,\n  useFormState,\n  useFreshCallback,\n  useFreshRef,\n  useFreshTick,\n  useFullscreen,\n  useGeolocation,\n  useGetIsMounted,\n  useIdleDetectionApi,\n  useInViewRef,\n  useInput,\n  useIntersectionObserverRef,\n  useIntervalWhen,\n  useIsDroppingFiles,\n  useIsomorphicEffect,\n  useKey,\n  useKeyBindings,\n  useKeyRef,\n  useKeys,\n  useLifecycleLogger,\n  useLocalstorageState,\n  useLockBodyScroll,\n  useMapState,\n  useMeasure,\n  useMediaMatch,\n  useMediaRecorder,\n  useMergeRefs,\n  useMouse,\n  useMouseMoveDelta,\n  useMouseWheelDelta,\n  useMultiSelectableList,\n  useMutationObserver,\n  useMutationObserverRef,\n  useNativeMapState,\n  useNavigatorLanguage,\n  useNetworkInformation,\n  useNotification,\n  useMapState as useObjectState,\n  useOnClickRef,\n  useOnHoverRef,\n  useOnLongHover,\n  useOnLongHover as useOnLongHoverRef,\n  useOnLongPress,\n  useOnLongPress as useOnLongPressRef,\n  useOnStartTyping,\n  useOnWindowResize,\n  useOnWindowScroll,\n  useOnline,\n  useOrientation,\n  useOutsideClick,\n  useOutsideClickRef,\n  usePageLeave,\n  usePictureInPictureApi,\n  usePreferredColorScheme,\n  usePrefersReducedMotion,\n  usePreviousDifferent,\n  usePreviousImmediate,\n  usePromise,\n  useQueueState,\n  useRaf,\n  useRefElement,\n  useRenderCount,\n  useResizeObserverRef,\n  useSafeSetState,\n  useScreenDetailsApi,\n  useSelect,\n  useSelectableList,\n  useSessionstorageState,\n  useSetState,\n  useShare,\n  useSpeech,\n  useSpring,\n  useStackState,\n  useThrottle,\n  useTimeTravelState,\n  useTimeoutWhen,\n  useToggle,\n  useTween,\n  useUndoRedoState,\n  useUndoState,\n  useVibrate,\n  useVideo,\n  useWebLocksApi,\n  useWebWorker,\n  useWhyDidYouUpdate,\n  useWillUnmount,\n  useWindowEventListener,\n  useWindowScrollPosition,\n  useWindowSize\n};\n"]}