{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-merged-state/index.ts"],"sourcesContent":["import type { Ref, UnwrapRef } from 'vue';\nimport { ref, toRaw, unref, watch, watchEffect } from 'vue';\n\nexport function useMergedState<T, R = Ref<T>>(\n  defaultStateValue: T | (() => T),\n  option?: {\n    defaultValue?: T | (() => T);\n    value?: Ref<T> | Ref<UnwrapRef<T>>;\n    onChange?: (val: T, prevValue: T) => void;\n    postState?: (val: T) => T;\n  },\n): [R, (val: T) => void] {\n  const { defaultValue, value = ref() } = option || {};\n  let initValue: T\n    = typeof defaultStateValue === 'function' ? (defaultStateValue as any)() : defaultStateValue;\n  if (value.value !== undefined)\n    initValue = unref(value as any) as T;\n\n  if (defaultValue !== undefined)\n    initValue = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue;\n\n  const innerValue = ref(initValue) as Ref<T>;\n  const mergedValue = ref(initValue) as Ref<T>;\n  watchEffect(() => {\n    let val = value.value !== undefined ? value.value : innerValue.value;\n    if (option?.postState)\n      val = option.postState(val as T);\n\n    mergedValue.value = val as T;\n  });\n\n  function triggerChange(newValue: T) {\n    const preVal = mergedValue.value;\n    innerValue.value = newValue;\n    if (toRaw(mergedValue.value) !== newValue && option?.onChange)\n      option.onChange(newValue, preVal);\n  }\n\n  // Effect of reset value to `undefined`\n  watch(value, () => {\n    innerValue.value = value.value as T;\n  });\n\n  return [mergedValue as unknown as R, triggerChange];\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,cAAA,CACd,mBACA,MAMuB,EAAA;AACvB,EAAA,MAAM,EAAE,YAAc,EAAA,KAAA,GAAQ,KAAM,EAAA,GAAI,UAAU,EAAC,CAAA;AACnD,EAAA,IAAI,SACA,GAAA,OAAO,iBAAsB,KAAA,UAAA,GAAc,mBAA8B,GAAA,iBAAA,CAAA;AAC7E,EAAA,IAAI,MAAM,KAAU,KAAA,KAAA,CAAA;AAClB,IAAA,SAAA,GAAY,MAAM,KAAY,CAAA,CAAA;AAEhC,EAAA,IAAI,YAAiB,KAAA,KAAA,CAAA;AACnB,IAAA,SAAA,GAAY,OAAO,YAAA,KAAiB,UAAc,GAAA,YAAA,EAAyB,GAAA,YAAA,CAAA;AAE7E,EAAM,MAAA,UAAA,GAAa,IAAI,SAAS,CAAA,CAAA;AAChC,EAAM,MAAA,WAAA,GAAc,IAAI,SAAS,CAAA,CAAA;AACjC,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,IAAI,MAAM,KAAM,CAAA,KAAA,KAAU,KAAY,CAAA,GAAA,KAAA,CAAM,QAAQ,UAAW,CAAA,KAAA,CAAA;AAC/D,IAAA,IAAI,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,SAAA;AACV,MAAM,GAAA,GAAA,MAAA,CAAO,UAAU,GAAQ,CAAA,CAAA;AAEjC,IAAA,WAAA,CAAY,KAAQ,GAAA,GAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAED,EAAA,SAAS,cAAc,QAAa,EAAA;AAClC,IAAA,MAAM,SAAS,WAAY,CAAA,KAAA,CAAA;AAC3B,IAAA,UAAA,CAAW,KAAQ,GAAA,QAAA,CAAA;AACnB,IAAA,IAAI,KAAM,CAAA,WAAA,CAAY,KAAK,CAAA,KAAM,aAAY,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,QAAA,CAAA;AACnD,MAAO,MAAA,CAAA,QAAA,CAAS,UAAU,MAAM,CAAA,CAAA;AAAA,GACpC;AAGA,EAAA,KAAA,CAAM,OAAO,MAAM;AACjB,IAAA,UAAA,CAAW,QAAQ,KAAM,CAAA,KAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,aAA6B,aAAa,CAAA,CAAA;AACpD;;;;"}