{"version":3,"file":"useRaf.cjs","sources":["../../../../../../../packages/components/tabs/src/hooks/useRaf.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport { raf } from '@antdv/utils';\n\nimport { onBeforeUnmount, shallowRef } from 'vue';\n\nexport function useRaf<Callback extends Function>(callback: Callback) {\n  const rafRef = shallowRef<number>();\n  const removedRef = shallowRef(false);\n\n  function trigger(...args: any[]) {\n    if (!removedRef.value) {\n      raf.cancel(rafRef.value);\n      rafRef.value = raf(() => {\n        callback(...args);\n      });\n    }\n  }\n\n  onBeforeUnmount(() => {\n    removedRef.value = true;\n    raf.cancel(rafRef.value);\n  });\n\n  return trigger;\n}\n\ntype Callback<T> = (ori: T) => T;\n\nexport function useRafState<T>(\n  defaultState: T | (() => T),\n): [Ref<T>, (updater: Callback<T>) => void] {\n  const batchRef = shallowRef<Array<Callback<T>>>([]);\n  const state: Ref<T> = shallowRef(\n    typeof defaultState === 'function' ? (defaultState as any)() : defaultState,\n  );\n\n  const flushUpdate = useRaf(() => {\n    let value = state.value;\n    batchRef.value.forEach((callback) => {\n      value = callback(value);\n    });\n    batchRef.value = [];\n\n    state.value = value;\n  });\n\n  function updater(callback: Callback<T>) {\n    batchRef.value.push(callback);\n    flushUpdate();\n  }\n\n  return [state, updater];\n}\n"],"names":["shallowRef","raf","onBeforeUnmount"],"mappings":";;;;;;AAKO,SAAS,OAAkC,QAAoB,EAAA;AACpE,EAAA,MAAM,SAASA,cAAmB,EAAA,CAAA;AAClC,EAAM,MAAA,UAAA,GAAaA,eAAW,KAAK,CAAA,CAAA;AAEnC,EAAA,SAAS,WAAW,IAAa,EAAA;AAC/B,IAAI,IAAA,CAAC,WAAW,KAAO,EAAA;AACrB,MAAIC,OAAA,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AACvB,MAAO,MAAA,CAAA,KAAA,GAAQA,QAAI,MAAM;AACvB,QAAA,QAAA,CAAS,GAAG,IAAI,CAAA,CAAA;AAAA,OACjB,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAEA,EAAAC,mBAAA,CAAgB,MAAM;AACpB,IAAA,UAAA,CAAW,KAAQ,GAAA,IAAA,CAAA;AACnB,IAAID,OAAA,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAAA,GACxB,CAAA,CAAA;AAED,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAIO,SAAS,YACd,YAC0C,EAAA;AAC1C,EAAM,MAAA,QAAA,GAAWD,cAA+B,CAAA,EAAE,CAAA,CAAA;AAClD,EAAA,MAAM,KAAgB,GAAAA,cAAA;AAAA,IACpB,OAAO,YAAA,KAAiB,UAAc,GAAA,YAAA,EAAyB,GAAA,YAAA;AAAA,GACjE,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,OAAO,MAAM;AAC/B,IAAA,IAAI,QAAQ,KAAM,CAAA,KAAA,CAAA;AAClB,IAAS,QAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,QAAa,KAAA;AACnC,MAAA,KAAA,GAAQ,SAAS,KAAK,CAAA,CAAA;AAAA,KACvB,CAAA,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAC,CAAA;AAElB,IAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAA;AAAA,GACf,CAAA,CAAA;AAED,EAAA,SAAS,QAAQ,QAAuB,EAAA;AACtC,IAAS,QAAA,CAAA,KAAA,CAAM,KAAK,QAAQ,CAAA,CAAA;AAC5B,IAAY,WAAA,EAAA,CAAA;AAAA,GACd;AAEA,EAAO,OAAA,CAAC,OAAO,OAAO,CAAA,CAAA;AACxB;;;;;"}