{"version":3,"sources":["../../../src/lib/throttle.ts"],"names":[],"mappings":";;;;;;AAYO,SAAS,QAAA,CAA4C,MAAS,IAA6B,EAAA;AACjG,EAAA,IAAI,IAAO,GAAA,CAAA;AACX,EAAI,IAAA,SAAA;AAEJ,EAAA,OAAO,MAAO,CAAA,MAAA;AAAA,IACb,IAAI,IAAwB,KAAA;AAC3B,MAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,MAAI,IAAA,GAAA,GAAM,OAAO,IAAM,EAAA;AACtB,QAAO,IAAA,GAAA,GAAA;AACP,QAAQ,OAAA,SAAA,GAAY,IAAK,CAAA,GAAG,IAAI,CAAA;AAAA;AAGjC,MAAO,OAAA,SAAA;AAAA,KACR;AAAA,IACA;AAAA,MACC,KAAQ,GAAA;AACP,QAAO,IAAA,GAAA,CAAA;AAAA;AACR;AACD,GACD;AACD;AApBgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA","file":"throttle.cjs","sourcesContent":["export type ThrottleFn<T extends (...args: any[]) => any> = T & { flush: () => void };\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `flush` method to\n * reset the last time the throttled function was invoked.\n *\n * @param func The function to throttle.\n * @param wait The number of milliseconds to throttle invocations to.\n *\n * @returns Returns the new throttled function.\n */\nexport function throttle<T extends (...args: any[]) => any>(func: T, wait: number): ThrottleFn<T> {\n\tlet prev = 0;\n\tlet prevValue: ReturnType<T>;\n\n\treturn Object.assign(\n\t\t(...args: Parameters<T>) => {\n\t\t\tconst now = Date.now();\n\t\t\tif (now - prev > wait) {\n\t\t\t\tprev = now;\n\t\t\t\treturn (prevValue = func(...args));\n\t\t\t}\n\n\t\t\treturn prevValue;\n\t\t},\n\t\t{\n\t\t\tflush() {\n\t\t\t\tprev = 0;\n\t\t\t}\n\t\t}\n\t) as ThrottleFn<T>;\n}\n"]}