- Fix Auth type: add currentWorkspace, workspaces, FlashData - Fix User.id type: number → string (UUID) - Fix trans() number params: wrap with String() - Fix debounce NodeJS.Timeout → ReturnType<typeof setTimeout> - Fix DatePicker name prop: required → optional - Fix DatePicker emit typing - Fix storeStep1 → storeRole import in onboarding/Role - Fix duplicate id in AcceptInvite interface - Fix formatDate → formatDateTime in ApiKeys - Add @unovis/vue and @unovis/ts type declarations - Install @unovis/vue @unovis/ts dev dependencies - Add type casts for Inertia/Reka UI component props
24 lines
543 B
TypeScript
24 lines
543 B
TypeScript
export default function debounce(
|
|
callback: (...args: any[]) => void,
|
|
wait = 1000,
|
|
) {
|
|
let timeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
|
|
const debouncedFn = (...args: any[]) => {
|
|
if (timeoutId) {
|
|
clearTimeout(timeoutId);
|
|
}
|
|
timeoutId = setTimeout(() => {
|
|
callback(...args);
|
|
}, wait);
|
|
};
|
|
|
|
debouncedFn.cancel = () => {
|
|
if (timeoutId) {
|
|
clearTimeout(timeoutId);
|
|
timeoutId = null;
|
|
}
|
|
};
|
|
|
|
return debouncedFn;
|
|
}
|