{"version":3,"file":"useDebounce-CeqYk8AA.cjs","sources":["../../src/composables/useDebounce.ts"],"sourcesContent":["/**\n * Debounce a function call to limit the rate at which it will be invoked.\n * @param func function to debounce\n * @param wait debounce time to wait\n * @param immediate call immediate once\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":";;AAOO,SAAS,YACZ,MACA,MACA,WACoB;AACpB,MAAI;AACJ,SAAO,IAAI,SAAY;AACnB,UAAM,QAAQ,MAAY;AACtB,gBAAU;AACV,UAAI,CAAC,UAAW,MAAK,MAAM,MAAM,IAAI;AAAA,IACzC;AACA,UAAM,UAAU,aAAa,CAAC;AAC9B,QAAI,sBAAsB,OAAO;AACjC,cAAU,WAAW,OAAO,IAAI;AAChC,QAAI,QAAS,MAAK,MAAM,MAAM,IAAI;AAAA,EACtC;AACJ;;"}