{"version":3,"sources":["../../../src/utils/create-effect/debounced.ts"],"sourcesContent":["import { useEffect } from 'react'\nimport { useDebouncedFn } from '../../use-debounced-fn'\nimport { useSafeState } from '../../use-safe-state'\nimport { createUpdateEffect } from './update'\n\nimport type { DependencyList, EffectCallback } from 'react'\nimport type { ExtendedReactEffect } from '../basic'\nimport type { DebounceOptions } from '../debounce'\n\nexport type UseDebouncedEffect<T> = (\n  callback: EffectCallback,\n  deps?: DependencyList,\n  options?: DebounceOptions,\n  ...args: T[]\n) => void\n\nexport function createDebouncedEffect<T = unknown>(effect: ExtendedReactEffect<T>): UseDebouncedEffect<T> {\n  const useUpdateEffect = createUpdateEffect(useEffect)\n\n  return (callback: EffectCallback, deps?: DependencyList, options?: DebounceOptions, ...args: T[]): void => {\n    const [trigger, updateTrigger] = useSafeState({})\n    const debouncedFn = useDebouncedFn(() => updateTrigger({}), options)\n\n    effect(() => void debouncedFn(), 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":["createDebouncedEffect","effect","useUpdateEffect","createUpdateEffect","useEffect","callback","deps","options","args","useSafeState","trigger","updateTrigger","debouncedFn","useDebouncedFn"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;qBAhBU;8BACK;4BACF;sBACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,cAAcC,IAAAA,8BAAc,EAAC;mBAAMF,cAAc,CAAC;WAAIJ;QAE5DN,aAAAA,KAAAA,GAAAA;YAAO;uBAAM,KAAKW;;YAAeN;SAAc,CAA/CL,OAAuC,qBAAGO;QAE1C,sGAAsG;QACtGN,gBAAgBG,UAAU;YAACK;SAAQ;IACrC;AACF"}