{"version":3,"sources":["../../../src/utils/create-effect/throttled.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { useSafeState } from '../../use-safe-state'\nimport { useThrottledFn } from '../../use-throttled-fn'\nimport { createUpdateEffect } from './update'\n\nimport type { DependencyList, EffectCallback } from 'react'\nimport type { ExtendedReactEffect } from '../basic'\nimport type { ThrottleOptions } from '../throttle'\n\nexport type UseThrottledEffect<T = unknown> = (\n  callback: EffectCallback,\n  deps?: DependencyList,\n  options?: ThrottleOptions,\n  ...args: T[]\n) => void\n\nexport function createThrottledEffect<T = unknown>(effect: ExtendedReactEffect<T>): UseThrottledEffect<T> {\n  const useUpdateEffect = createUpdateEffect(useEffect)\n\n  return (callback: EffectCallback, deps?: DependencyList, options?: ThrottleOptions, ...args: T[]): void => {\n    const [trigger, updateTrigger] = useSafeState({})\n    const throttledUpdateTrigger = useThrottledFn(() => updateTrigger({}), options)\n\n    effect(() => void throttledUpdateTrigger(), deps, ...args)\n\n    // biome-ignore lint/correctness/useExhaustiveDependencies: effect need to re-run when trigger changes\n    useUpdateEffect(callback, [trigger])\n  }\n}\n"],"names":["createThrottledEffect","effect","useUpdateEffect","createUpdateEffect","useEffect","callback","deps","options","args","useSafeState","trigger","updateTrigger","throttledUpdateTrigger","useThrottledFn"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;qBAhBU;4BACG;8BACE;sBACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAa5B,SAASA,sBAAmCC,MAA8B;IAC/E,IAAMC,kBAAkBC,IAAAA,0BAAkB,EAACC,gBAAS;IAEpD,OAAO,SAACC,UAA0BC,MAAuBC;yCAA8BC;YAAAA;;QACrF,IAAiCC,iCAAAA,IAAAA,0BAAY,EAAC,CAAC,QAAxCC,UAA0BD,kBAAjBE,gBAAiBF;QACjC,IAAMG,yBAAyBC,IAAAA,8BAAc,EAAC;mBAAMF,cAAc,CAAC;WAAIJ;QAEvEN,aAAAA,KAAAA,GAAAA;YAAO;uBAAM,KAAKW;;YAA0BN;SAAc,CAA1DL,OAAkD,qBAAGO;QAErD,sGAAsG;QACtGN,gBAAgBG,UAAU;YAACK;SAAQ;IACrC;AACF"}