{"version":3,"file":"throttleByAnimationFrame.cjs","sources":["../../../../packages/utils/throttleByAnimationFrame.ts"],"sourcesContent":["import { raf } from './vue/raf';\n\ntype throttledFn = (...args: any[]) => void;\n\ninterface throttledCancelFn { cancel: () => void }\n\nexport function throttleByAnimationFrame<T extends any[]>(fn: (...args: T) => void) {\n  let requestId: number | null;\n\n  const later = (args: T) => () => {\n    requestId = null;\n    fn(...args);\n  };\n\n  const throttled: throttledFn & throttledCancelFn = (...args: T) => {\n    if (requestId == null)\n      requestId = raf(later(args));\n  };\n\n  throttled.cancel = () => {\n    raf.cancel(requestId!);\n    requestId = null;\n  };\n\n  return throttled;\n}\n"],"names":["raf"],"mappings":";;;;AAMO,SAAS,yBAA0C,EAA0B,EAAA;AAClF,EAAI,IAAA,SAAA,CAAA;AAEJ,EAAM,MAAA,KAAA,GAAQ,CAAC,IAAA,KAAY,MAAM;AAC/B,IAAY,SAAA,GAAA,IAAA,CAAA;AACZ,IAAA,EAAA,CAAG,GAAG,IAAI,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,SAAA,GAA6C,IAAI,IAAY,KAAA;AACjE,IAAA,IAAI,SAAa,IAAA,IAAA;AACf,MAAY,SAAA,GAAAA,OAAA,CAAI,KAAM,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAA,SAAA,CAAU,SAAS,MAAM;AACvB,IAAAA,OAAA,CAAI,OAAO,SAAU,CAAA,CAAA;AACrB,IAAY,SAAA,GAAA,IAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}