{
  "version": 3,
  "sources": ["../../src/utils/throttle.ts"],
  "sourcesContent": ["export function throttle<T extends any[]>(\n\tfn: (...args: T) => unknown,\n\ttime: number,\n): ((...args: T) => unknown) & { cancel: () => void } {\n\tlet previous = 0\n\tlet timeout: number | undefined\n\n\tconst later = (...args: T) => {\n\t\tprevious = Date.now()\n\t\ttimeout = undefined\n\t\tfn(...args)\n\t}\n\n\tfunction throttledFn(this: unknown, ...args: T) {\n\t\tconst now = Date.now()\n\t\tconst remaining = time - (now - previous)\n\t\tif (remaining <= 0 || remaining > time) {\n\t\t\tif (timeout) {\n\t\t\t\twindow.clearTimeout(timeout)\n\t\t\t\ttimeout = undefined\n\t\t\t}\n\t\t\tprevious = now\n\t\t\tfn.apply(this, args)\n\t\t} else if (!timeout) {\n\t\t\ttimeout = window.setTimeout(later, remaining, ...args)\n\t\t}\n\t}\n\n\tthrottledFn.cancel = () => {\n\t\tif (timeout) {\n\t\t\twindow.clearTimeout(timeout)\n\t\t\ttimeout = undefined\n\t\t}\n\t}\n\n\treturn throttledFn\n}\n"],
  "mappings": ";AAAO,SAAS,SACf,IACA,MACqD;AACrD,MAAI,WAAW;AACf,MAAI;AAEJ,QAAM,QAAQ,IAAI,SAAY;AAC7B,eAAW,KAAK,IAAI;AACpB,cAAU;AACV,OAAG,GAAG,IAAI;AAAA,EACX;AAEA,WAAS,eAA8B,MAAS;AAC/C,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,YAAY,QAAQ,MAAM;AAChC,QAAI,aAAa,KAAK,YAAY,MAAM;AACvC,UAAI,SAAS;AACZ,eAAO,aAAa,OAAO;AAC3B,kBAAU;AAAA,MACX;AACA,iBAAW;AACX,SAAG,MAAM,MAAM,IAAI;AAAA,IACpB,WAAW,CAAC,SAAS;AACpB,gBAAU,OAAO,WAAW,OAAO,WAAW,GAAG,IAAI;AAAA,IACtD;AAAA,EACD;AAEA,cAAY,SAAS,MAAM;AAC1B,QAAI,SAAS;AACZ,aAAO,aAAa,OAAO;AAC3B,gBAAU;AAAA,IACX;AAAA,EACD;AAEA,SAAO;AACR;",
  "names": []
}
