{"version":3,"sources":["../../src/use-debounced-fn/index.ts"],"sourcesContent":["import { useCreation } from '../use-creation'\nimport { useLatest } from '../use-latest'\nimport { debounce as createDebouncedFn } from '../utils/debounce'\n\nimport type { AnyFunc } from '../utils/basic'\nimport type { DebounceOptions, DebouncedFn } from '../utils/debounce'\n\nexport interface UseDebouncedFnOptions extends DebounceOptions {}\n\n/**\n * A React Hook that create a debounced function.\n */\nexport function useDebouncedFn<T extends AnyFunc, P extends Parameters<T>>(\n  fn: T,\n  options: UseDebouncedFnOptions = {},\n): DebouncedFn<T> {\n  const latest = useLatest({ fn })\n\n  return useCreation(() => {\n    const fnWrapper = ((...args: P) => latest.current.fn(...args)) as T\n    return createDebouncedFn(fnWrapper, options)\n  }, [options])\n}\n"],"names":["useDebouncedFn","fn","options","latest","useLatest","useCreation","fnWrapper","args","current","createDebouncedFn"],"mappings":";;;;+BAYgBA;;;eAAAA;;;2BAZY;yBACF;wBACoB;;;;;;;;;;;;;;;;;;;;;;;;;;AAUvC,SAASA,eACdC,EAAK;QACLC,UAAAA,iEAAiC,CAAC;IAElC,IAAMC,SAASC,IAAAA,oBAAS,EAAC;QAAEH,IAAAA;IAAG;IAE9B,OAAOI,IAAAA,wBAAW,EAAC;YACkBF;QAAnC,IAAMG,YAAa;6CAAIC;gBAAAA;;mBAAYJ,CAAAA,kBAAAA,OAAOK,OAAO,EAACP,EAAE,OAAjBE,iBAAkB,qBAAGI;;QACxD,OAAOE,IAAAA,kBAAiB,EAACH,WAAWJ;IACtC,GAAG;QAACA;KAAQ;AACd"}