{"version":3,"sources":["../src/hooks/useThrottle.ts"],"names":["useThrottle","value","interval","throttledValue","setThrottledValue","useState","lastUpdated","useRef","useEffect","now","timeSinceLastUpdate","timeoutId"],"mappings":"8CAQO,SAASA,CAAeC,CAAAA,CAAAA,CAAUC,EAAqB,CAC5D,GAAM,CAACC,CAAAA,CAAgBC,CAAiB,CAAIC,CAAAA,QAAAA,CAAYJ,CAAK,CAAA,CACvDK,EAAcC,MAAe,CAAA,IAAA,CAAK,GAAI,EAAC,EAE7C,OAAAC,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAM,CAAA,IAAA,CAAK,KACXC,CAAAA,CAAAA,CAAsBD,EAAMH,CAAY,CAAA,OAAA,CAE9C,GAAII,CAAAA,EAAuBR,EACzBE,CAAkBH,CAAAA,CAAK,CACvBK,CAAAA,CAAAA,CAAY,QAAUG,CACjB,CAAA,KAAA,CACL,IAAME,CAAAA,CAAY,WAAW,IAAM,CACjCP,CAAkBH,CAAAA,CAAK,EACvBK,CAAY,CAAA,OAAA,CAAU,IAAK,CAAA,GAAA,GAC7B,CAAGJ,CAAAA,CAAAA,CAAWQ,CAAmB,CAAA,CAEjC,OAAO,IAAM,YAAA,CAAaC,CAAS,CACrC,CACF,CAAG,CAAA,CAACV,EAAOC,CAAQ,CAAC,EAEbC,CACT","file":"useThrottle.mjs","sourcesContent":["import { useState, useEffect, useRef } from \"react\";\n\n/**\n * Hook that throttles a value\n * @param value - The value to throttle\n * @param interval - The minimum time interval between updates in milliseconds\n * @returns The throttled value\n */\nexport function useThrottle<T>(value: T, interval: number): T {\n  const [throttledValue, setThrottledValue] = useState<T>(value);\n  const lastUpdated = useRef<number>(Date.now());\n\n  useEffect(() => {\n    const now = Date.now();\n    const timeSinceLastUpdate = now - lastUpdated.current;\n\n    if (timeSinceLastUpdate >= interval) {\n      setThrottledValue(value);\n      lastUpdated.current = now;\n    } else {\n      const timeoutId = setTimeout(() => {\n        setThrottledValue(value);\n        lastUpdated.current = Date.now();\n      }, interval - timeSinceLastUpdate);\n\n      return () => clearTimeout(timeoutId);\n    }\n  }, [value, interval]);\n\n  return throttledValue;\n} "]}