@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
1 lines • 1.1 kB
Source Map (JSON)
{"version":3,"file":"useDebounce-CVLytXgm.mjs","sources":["../../src/composables/useDebounce.ts"],"sourcesContent":["/**\n * Debounce a function\n * @param func function to debounce\n * @param wait debounce time to wait\n * @param immediate call immediate\n * @returns function to call\n */\nexport function useDebounce<A extends Array<unknown>>(\n func: (...args: A) => void,\n wait: number,\n immediate?: boolean,\n): (...args: A) => void {\n let timeout: ReturnType<typeof setTimeout> | undefined;\n return (...args: A) => {\n const later = (): void => {\n timeout = undefined;\n if (!immediate) func.apply(this, args);\n };\n const callNow = immediate && !timeout;\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(this, args);\n };\n}\n"],"names":[],"mappings":";AAOgB,SAAA,YACZ,MACA,MACA,WACoB;AAChB,MAAA;AACJ,SAAO,IAAI,SAAY;AACnB,UAAM,QAAQ,MAAY;AACZ,gBAAA;AACW,WAAA,MAAM,MAAM,IAAI;AAAA,IACzC;AAEI,QAAA,sBAAsB,OAAO;AACvB,cAAA,WAAW,OAAO,IAAI;AAAA,EAEpC;AACJ;"}