useMergedState.js 654 B

123456789101112131415161718192021222324
  1. import { ref as i, unref as o, watchEffect as s, watch as d, toRaw as g } from "vue";
  2. function m(l, u) {
  3. const {
  4. defaultValue: a,
  5. value: n = i()
  6. } = u || {};
  7. let t = typeof l == "function" ? l() : l;
  8. n.value !== void 0 && (t = o(n)), a !== void 0 && (t = typeof a == "function" ? a() : a);
  9. const r = i(t), f = i(t);
  10. s(() => {
  11. let e = n.value !== void 0 ? n.value : r.value;
  12. u.postState && (e = u.postState(e)), f.value = e;
  13. });
  14. function v(e) {
  15. const c = f.value;
  16. r.value = e, g(f.value) !== e && u.onChange && u.onChange(e, c);
  17. }
  18. return d(n, () => {
  19. r.value = n.value;
  20. }), [f, v];
  21. }
  22. export {
  23. m as u
  24. };