{"version":3,"sources":["../src/debounce.ts"],"names":[],"mappings":";AAEO,SAAS,SACf,MACA,MACA,YAAqB,OACA;AACrB,MAAI;AACJ,WAAS,YAAY;AAEpB,UAAM,UAAU,MACf,OAAO;AACR,QAAI,SAAS;AACZ,mBAAa,OAAO;AAAA,IACrB;AACA,QAAI,aAAa,CAAC;AAAS,WAAK,MAAM,SAAS,IAAI;AACnD,cAAU,WAAW,WAAY;AAChC,gBAAU;AACV,UAAI,CAAC;AAAW,aAAK,MAAM,SAAS,IAAI;AAAA,IACzC,GAAG,IAAI;AAAA,EACR;AAEA,YAAU,SAAS,WAAY;AAC9B,QAAI,SAAS;AACZ,mBAAa,OAAO;AAAA,IACrB;AAAA,EACD;AACA,SAAO;AACR","sourcesContent":["type CancelableDebounce = (() => void) & { cancel: () => void };\n\nexport function debounce(\n\tfunc: Function,\n\twait: number,\n\timmediate: boolean = false\n): CancelableDebounce {\n\tlet timeout: NodeJS.Timeout | null;\n\tfunction debounced() {\n\t\t// @ts-ignore\n\t\tconst context = this,\n\t\t\targs = arguments;\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\tif (immediate && !timeout) func.apply(context, args);\n\t\ttimeout = setTimeout(function () {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) func.apply(context, args);\n\t\t}, wait);\n\t}\n\n\tdebounced.cancel = function () {\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t};\n\treturn debounced as CancelableDebounce;\n}\n"]}