{"version":3,"file":"useFrameSetState.cjs","sources":["../../../../../../../packages/vue-components/vc-image/src/hooks/useFrameSetState.ts"],"sourcesContent":["import { raf } from '@antdv/utils';\nimport { onMounted, reactive, ref } from 'vue';\n\ntype SetActionType<T> = Partial<T> | ((state: T) => Partial<T>);\nexport default function useFrameSetState<T extends object>(\n  initial: T,\n): [Record<string, any>, (newState: SetActionType<T>) => void] {\n  const frame = ref<number>(null);\n  const state = reactive({ ...initial });\n  const queue = ref<Array<SetActionType<T>>>([]);\n\n  const setFrameState = (newState: SetActionType<T>) => {\n    if (frame.value === null) {\n      queue.value = [];\n      frame.value = raf(() => {\n        let memoState: any;\n        queue.value.forEach((queueState: object) => {\n          memoState = { ...memoState, ...queueState };\n        });\n        Object.assign(state, memoState);\n        frame.value = null;\n      });\n    }\n\n    queue.value.push(newState as any);\n  };\n  onMounted(() => {\n    frame.value && raf.cancel(frame.value);\n  });\n  return [state, setFrameState];\n}\n"],"names":["ref","reactive","raf","onMounted"],"mappings":";;;;;;;;AAIA,SAAwB,iBACtB,OAC6D,EAAA;AAC7D,EAAM,MAAA,KAAA,GAAQA,QAAY,IAAI,CAAA,CAAA;AAC9B,EAAA,MAAM,KAAQ,GAAAC,YAAA,CAAS,EAAE,GAAG,SAAS,CAAA,CAAA;AACrC,EAAM,MAAA,KAAA,GAAQD,OAA6B,CAAA,EAAE,CAAA,CAAA;AAE7C,EAAM,MAAA,aAAA,GAAgB,CAAC,QAA+B,KAAA;AACpD,IAAI,IAAA,KAAA,CAAM,UAAU,IAAM,EAAA;AACxB,MAAA,KAAA,CAAM,QAAQ,EAAC,CAAA;AACf,MAAM,KAAA,CAAA,KAAA,GAAQE,QAAI,MAAM;AACtB,QAAI,IAAA,SAAA,CAAA;AACJ,QAAM,KAAA,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,UAAuB,KAAA;AAC1C,UAAA,SAAA,GAAY,EAAE,GAAG,SAAW,EAAA,GAAG,UAAW,EAAA,CAAA;AAAA,SAC3C,CAAA,CAAA;AACD,QAAO,MAAA,CAAA,MAAA,CAAO,OAAO,SAAS,CAAA,CAAA;AAC9B,QAAA,KAAA,CAAM,KAAQ,GAAA,IAAA,CAAA;AAAA,OACf,CAAA,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,KAAA,CAAM,KAAK,QAAe,CAAA,CAAA;AAAA,GAClC,CAAA;AACA,EAAAC,aAAA,CAAU,MAAM;AACd,IAAA,KAAA,CAAM,KAAS,IAAAD,OAAA,CAAI,MAAO,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,GACtC,CAAA,CAAA;AACD,EAAO,OAAA,CAAC,OAAO,aAAa,CAAA,CAAA;AAC9B;;;;"}