{"version":3,"file":"useFrame.cjs","sources":["../../../../../../../packages/vue-components/vc-table/src/hooks/useFrame.ts"],"sourcesContent":["import type { Ref, UnwrapRef } from 'vue';\nimport { raf } from '@antdv/utils';\nimport { onBeforeUnmount, ref, shallowRef } from 'vue';\n\nexport type Updater<State> = (prev: State) => State;\n\nexport function useLayoutState<State>(\n  defaultState: State,\n): [Ref<State>, (updater: Updater<State>) => void] {\n  const stateRef = shallowRef<State>(defaultState);\n  let rafId: number;\n  const updateBatchRef = shallowRef<Array<Updater<State>>>([]);\n  function setFrameState(updater: Updater<State>) {\n    updateBatchRef.value.push(updater);\n    raf.cancel(rafId);\n    rafId = raf(() => {\n      const prevBatch = updateBatchRef.value;\n      // const prevState = stateRef.value;\n      updateBatchRef.value = [];\n      prevBatch.forEach((batchUpdater) => {\n        stateRef.value = batchUpdater(stateRef.value as State);\n      });\n    });\n  }\n  onBeforeUnmount(() => {\n    raf.cancel(rafId);\n  });\n\n  return [stateRef as Ref<State>, setFrameState];\n}\n\n/** Lock frame, when frame pass reset the lock. */\nexport function useTimeoutLock<State>(\n  defaultState?: State,\n): [(state: UnwrapRef<State>) => void, () => UnwrapRef<State> | null] {\n  const frameRef = ref<State | null>(defaultState || null);\n  const timeoutRef = ref<any>();\n\n  function cleanUp() {\n    clearTimeout(timeoutRef.value);\n  }\n\n  function setState(newState: UnwrapRef<State>) {\n    frameRef.value = newState;\n    cleanUp();\n\n    timeoutRef.value = setTimeout(() => {\n      frameRef.value = null;\n      timeoutRef.value = undefined;\n    }, 100);\n  }\n\n  function getState() {\n    return frameRef.value;\n  }\n\n  onBeforeUnmount(() => {\n    cleanUp();\n  });\n\n  return [setState, getState];\n}\n"],"names":["shallowRef","raf","onBeforeUnmount","ref"],"mappings":";;;;;;AAMO,SAAS,eACd,YACiD,EAAA;AACjD,EAAM,MAAA,QAAA,GAAWA,eAAkB,YAAY,CAAA,CAAA;AAC/C,EAAI,IAAA,KAAA,CAAA;AACJ,EAAM,MAAA,cAAA,GAAiBA,cAAkC,CAAA,EAAE,CAAA,CAAA;AAC3D,EAAA,SAAS,cAAc,OAAyB,EAAA;AAC9C,IAAe,cAAA,CAAA,KAAA,CAAM,KAAK,OAAO,CAAA,CAAA;AACjC,IAAAC,OAAA,CAAI,OAAO,KAAK,CAAA,CAAA;AAChB,IAAA,KAAA,GAAQA,QAAI,MAAM;AAChB,MAAA,MAAM,YAAY,cAAe,CAAA,KAAA,CAAA;AAEjC,MAAA,cAAA,CAAe,QAAQ,EAAC,CAAA;AACxB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,YAAiB,KAAA;AAClC,QAAS,QAAA,CAAA,KAAA,GAAQ,YAAa,CAAA,QAAA,CAAS,KAAc,CAAA,CAAA;AAAA,OACtD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACH;AACA,EAAAC,mBAAA,CAAgB,MAAM;AACpB,IAAAD,OAAA,CAAI,OAAO,KAAK,CAAA,CAAA;AAAA,GACjB,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,UAAwB,aAAa,CAAA,CAAA;AAC/C,CAAA;AAGO,SAAS,eACd,YACoE,EAAA;AACpE,EAAM,MAAA,QAAA,GAAWE,OAAkB,CAAA,YAAA,IAAgB,IAAI,CAAA,CAAA;AACvD,EAAA,MAAM,aAAaA,OAAS,EAAA,CAAA;AAE5B,EAAA,SAAS,OAAU,GAAA;AACjB,IAAA,YAAA,CAAa,WAAW,KAAK,CAAA,CAAA;AAAA,GAC/B;AAEA,EAAA,SAAS,SAAS,QAA4B,EAAA;AAC5C,IAAA,QAAA,CAAS,KAAQ,GAAA,QAAA,CAAA;AACjB,IAAQ,OAAA,EAAA,CAAA;AAER,IAAW,UAAA,CAAA,KAAA,GAAQ,WAAW,MAAM;AAClC,MAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AACjB,MAAA,UAAA,CAAW,KAAQ,GAAA,KAAA,CAAA,CAAA;AAAA,OAClB,GAAG,CAAA,CAAA;AAAA,GACR;AAEA,EAAA,SAAS,QAAW,GAAA;AAClB,IAAA,OAAO,QAAS,CAAA,KAAA,CAAA;AAAA,GAClB;AAEA,EAAAD,mBAAA,CAAgB,MAAM;AACpB,IAAQ,OAAA,EAAA,CAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,UAAU,QAAQ,CAAA,CAAA;AAC5B;;;;;"}