{"version":3,"file":"useDebounce.mjs","sources":["../../../../src/composables/useDebounce.ts"],"sourcesContent":["import { isRef, Ref, unref, watch } from 'vue'\nimport { debounce } from '../utils/debounce'\n\nexport const useDebounce = <T>(onUpdate: () => any, timeout: Ref<number> | number) => {\n  const createDebounced = () => {\n    return debounce(() => {\n      onUpdate()\n    }, unref(timeout))\n  }\n\n  let debounced = createDebounced()\n\n  if (isRef(timeout)) {\n    watch(timeout, () => { debounced = createDebounced() })\n  }\n\n  return {\n    // todo check if we need to create proxy here\n    debounced,\n  }\n}\n\n/** Used for debounced callbacks. Can be used to show cb near debounce call in code structure. */\nexport const useDebounceFn = (timeout: Ref<number> | number) => {\n  let callback: (() => void) | null = null\n  const createDebounced = () => {\n    return debounce(() => {\n      callback?.()\n      callback = null\n    }, unref(timeout))\n  }\n\n  let debounced = createDebounced()\n\n  if (isRef(timeout)) {\n    watch(timeout, () => { debounced = createDebounced() })\n  }\n\n  return {\n    // todo check if we need to create proxy here\n    debounced: (cb: (() => void)) => { callback = cb; debounced() },\n    cancel: () => debounced.cancel(),\n  }\n}\n"],"names":[],"mappings":";;AAuBa,MAAA,gBAAgB,CAAC,YAAkC;AAC9D,MAAI,WAAgC;AACpC,QAAM,kBAAkB,MAAM;AAC5B,WAAO,SAAS,MAAM;AACT;AACA,iBAAA;AAAA,IAAA,GACV,MAAM,OAAO,CAAC;AAAA,EAAA;AAGnB,MAAI,YAAY;AAEZ,MAAA,MAAM,OAAO,GAAG;AAClB,UAAM,SAAS,MAAM;AAAE,kBAAY,gBAAgB;AAAA,IAAA,CAAG;AAAA,EACxD;AAEO,SAAA;AAAA;AAAA,IAEL,WAAW,CAAC,OAAqB;AAAa,iBAAA;AAAc;IAAE;AAAA,IAC9D,QAAQ,MAAM,UAAU,OAAO;AAAA,EAAA;AAEnC;"}