vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 1.68 kB
Source Map (JSON)
{"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;"}