@macrulez/vue-form-schema 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +461 -180
  3. package/dist/MaskEngine-BEXwX4BK.js +144 -0
  4. package/dist/MaskEngine-CPr-fSPy.cjs +1 -0
  5. package/dist/ValidationEngine-BC4U1ef1.js +135 -0
  6. package/dist/ValidationEngine-Diz-qTFs.cjs +1 -0
  7. package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
  8. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  9. package/dist/core/ConditionEvaluator.d.ts.map +1 -1
  10. package/dist/core/MaskEngine.d.ts.map +1 -1
  11. package/dist/core/ValidationEngine.d.ts +13 -0
  12. package/dist/core/ValidationEngine.d.ts.map +1 -1
  13. package/dist/core/formRegistry.d.ts +33 -0
  14. package/dist/core/formRegistry.d.ts.map +1 -0
  15. package/dist/core/inferTypes.d.ts.map +1 -1
  16. package/dist/core/schemaUtils.d.ts +38 -0
  17. package/dist/core/schemaUtils.d.ts.map +1 -1
  18. package/dist/core/serverErrors.d.ts +69 -0
  19. package/dist/core/serverErrors.d.ts.map +1 -0
  20. package/dist/core/types.d.ts +22 -2
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/useForm.d.ts +4 -1
  23. package/dist/core/useForm.d.ts.map +1 -1
  24. package/dist/core/useMultiStepForm.d.ts.map +1 -1
  25. package/dist/devtools/index.d.ts +26 -0
  26. package/dist/devtools/index.d.ts.map +1 -0
  27. package/dist/devtools.cjs +1 -0
  28. package/dist/devtools.d.ts +6 -0
  29. package/dist/devtools.js +93 -0
  30. package/dist/formRegistry-Bv1eaWQ-.js +31 -0
  31. package/dist/formRegistry-DaDmXyYY.cjs +1 -0
  32. package/dist/index.cjs +1 -1
  33. package/dist/index.d.ts +5 -3
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +392 -359
  36. package/dist/openapi.cjs +1 -0
  37. package/dist/openapi.d.ts +202 -0
  38. package/dist/openapi.js +118 -0
  39. package/dist/parsers/json.d.ts.map +1 -1
  40. package/dist/parsers/openapi.d.ts +139 -0
  41. package/dist/parsers/openapi.d.ts.map +1 -0
  42. package/dist/parsers/valibot.d.ts +13 -4
  43. package/dist/parsers/valibot.d.ts.map +1 -1
  44. package/dist/parsers/yup.d.ts +10 -4
  45. package/dist/parsers/yup.d.ts.map +1 -1
  46. package/dist/parsers/zod.d.ts +18 -4
  47. package/dist/parsers/zod.d.ts.map +1 -1
  48. package/dist/schemaUtils-Cc7CwGXB.cjs +1 -0
  49. package/dist/schemaUtils-Cvlsk24U.js +337 -0
  50. package/dist/style.css +1 -0
  51. package/dist/ui/index.d.ts +1 -0
  52. package/dist/ui/index.d.ts.map +1 -1
  53. package/dist/ui/naive/index.d.ts +11 -0
  54. package/dist/ui/naive/index.d.ts.map +1 -0
  55. package/dist/ui/primevue/index.d.ts +11 -0
  56. package/dist/ui/primevue/index.d.ts.map +1 -0
  57. package/dist/ui/shadcn/index.d.ts +11 -0
  58. package/dist/ui/shadcn/index.d.ts.map +1 -0
  59. package/dist/ui/tailwind/index.d.ts +11 -0
  60. package/dist/ui/tailwind/index.d.ts.map +1 -0
  61. package/dist/ui-naive.cjs +1 -0
  62. package/dist/ui-naive.d.ts +411 -0
  63. package/dist/ui-naive.js +667 -0
  64. package/dist/ui-primevue.cjs +1 -0
  65. package/dist/ui-primevue.d.ts +411 -0
  66. package/dist/ui-primevue.js +651 -0
  67. package/dist/ui-shadcn.cjs +1 -0
  68. package/dist/ui-shadcn.d.ts +411 -0
  69. package/dist/ui-shadcn.js +650 -0
  70. package/dist/ui-tailwind.cjs +1 -0
  71. package/dist/ui-tailwind.d.ts +411 -0
  72. package/dist/ui-tailwind.js +669 -0
  73. package/dist/ui.cjs +1 -1
  74. package/dist/ui.d.ts +61 -10
  75. package/dist/ui.js +434 -299
  76. package/dist/valibot.cjs +1 -1
  77. package/dist/valibot.d.ts +35 -4
  78. package/dist/valibot.js +47 -20
  79. package/dist/yup.cjs +1 -1
  80. package/dist/yup.d.ts +33 -5
  81. package/dist/yup.js +16 -15
  82. package/dist/zod.cjs +1 -1
  83. package/dist/zod.d.ts +41 -5
  84. package/dist/zod.js +58 -28
  85. package/package.json +99 -25
  86. package/dist/MaskEngine-BqJQYybS.js +0 -233
  87. package/dist/MaskEngine-BwAs2Zb0.cjs +0 -1
  88. package/dist/__tests__/ConditionEvaluator.test.d.ts +0 -2
  89. package/dist/__tests__/ConditionEvaluator.test.d.ts.map +0 -1
  90. package/dist/__tests__/MaskEngine.test.d.ts +0 -2
  91. package/dist/__tests__/MaskEngine.test.d.ts.map +0 -1
  92. package/dist/__tests__/ValidationEngine.test.d.ts +0 -2
  93. package/dist/__tests__/ValidationEngine.test.d.ts.map +0 -1
  94. package/dist/__tests__/parsers.test.d.ts +0 -2
  95. package/dist/__tests__/parsers.test.d.ts.map +0 -1
  96. package/dist/__tests__/phase3.test.d.ts +0 -2
  97. package/dist/__tests__/phase3.test.d.ts.map +0 -1
  98. package/dist/__tests__/phase4.test.d.ts +0 -2
  99. package/dist/__tests__/phase4.test.d.ts.map +0 -1
  100. package/dist/__tests__/useFieldArray.test.d.ts +0 -2
  101. package/dist/__tests__/useFieldArray.test.d.ts.map +0 -1
  102. package/dist/__tests__/useForm.test.d.ts +0 -2
  103. package/dist/__tests__/useForm.test.d.ts.map +0 -1
  104. package/dist/__tests__/useMultiStepForm.test.d.ts +0 -2
  105. package/dist/__tests__/useMultiStepForm.test.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -1,468 +1,501 @@
1
- import { g as S, k as R, u as q, e as $, p as ee, m as te, f as ne, d as se, h as ae, j as I, V as oe } from "./MaskEngine-BqJQYybS.js";
2
- import { a as xe, b as Le, c as je, i as Je, r as Pe, s as Be, l as De, n as He } from "./MaskEngine-BqJQYybS.js";
3
- import { computed as v, watchEffect as re, ref as b, onMounted as ie, watch as j, onUnmounted as le } from "vue";
4
- function ge(n) {
5
- const s = v(() => n.touched && n.error.length > 0), t = v(() => s.value ? n.error[0] : null), e = v(() => n.touched ? n.error : []), r = v(() => n.field.required ?? !1), d = v(
6
- () => typeof n.field.disabled == "boolean" ? n.field.disabled : !1
1
+ import { a as Be, b as Ue, c as He, p as Ge, r as Qe, u as We, d as Xe } from "./MaskEngine-BEXwX4BK.js";
2
+ import { computed as d, getCurrentInstance as fe, ref as j, onMounted as de, watch as I, onUnmounted as ve } from "vue";
3
+ import { u as Q, e as W, p as me, m as ye, d as pe, c as ge, h as he, r as X, g as V, V as be, i as N } from "./ValidationEngine-BC4U1ef1.js";
4
+ import { f as Ze, a as et, b as tt, s as nt } from "./ValidationEngine-BC4U1ef1.js";
5
+ import { C as Fe } from "./schemaUtils-Cvlsk24U.js";
6
+ import { d as st, e as ot, a as at, m as it, o as lt, p as ut } from "./schemaUtils-Cvlsk24U.js";
7
+ import { u as Ee, r as Oe, e as A } from "./formRegistry-Bv1eaWQ-.js";
8
+ function ze(e) {
9
+ const r = d(() => e.touched && e.error.length > 0), t = d(() => r.value ? e.error[0] : null), n = d(() => e.touched ? e.error : []), o = d(() => e.field.required ?? !1), c = d(
10
+ () => typeof e.field.disabled == "boolean" ? e.field.disabled : !1
7
11
  );
8
- return { hasError: s, errorMessage: t, allErrors: e, isRequired: r, isDisabled: d };
12
+ return { hasError: r, errorMessage: t, allErrors: n, isRequired: o, isDisabled: c };
9
13
  }
10
- const ue = /^[\w\s\d.'"[\]()!<>=&|?:+\-*/%]+$/;
11
- function ce(n, s) {
12
- if (!ue.test(n))
13
- return console.warn(`[vue-form-schema] Blocked unsafe expression: "${n}"`), !0;
14
- try {
15
- return !!new Function("values", `"use strict"; return (${n})`)(s);
16
- } catch {
17
- return !0;
18
- }
19
- }
20
- class T {
21
- constructor() {
22
- this.stopHandle = null;
23
- }
24
- /**
25
- * Start reactively watching values and writing evaluated fields into
26
- * `resolvedFields`. Also handles clearOnHide side effect.
27
- */
28
- start(s, t, e, r) {
29
- this.stopHandle = re(() => {
30
- const d = t.value, u = e.value, c = this.evaluateFields(s, d);
31
- r && this.clearHiddenValues(s, c, d, t, u), e.value = c;
32
- });
33
- }
34
- stop() {
35
- var s;
36
- (s = this.stopHandle) == null || s.call(this), this.stopHandle = null;
37
- }
38
- /** Recursively evaluate visible/disabled/options for each field */
39
- evaluateFields(s, t) {
40
- return s.map((e) => {
41
- const r = this.resolveBoolean(e.visible, t, !0), d = this.resolveBoolean(e.disabled, t, !1);
42
- let u;
43
- if (typeof e.options == "function") {
44
- const m = e.options(t);
45
- u = m instanceof Promise ? void 0 : m;
46
- } else
47
- u = e.options;
48
- return {
49
- ...e,
50
- visible: r,
51
- disabled: d,
52
- options: u,
53
- fields: e.fields ? this.evaluateFields(e.fields, t) : void 0
54
- };
55
- });
56
- }
57
- resolveBoolean(s, t, e) {
58
- return s === void 0 ? e : typeof s == "boolean" ? s : typeof s == "function" ? s(t) : typeof s == "string" ? ce(s, t) : e;
59
- }
60
- clearHiddenValues(s, t, e, r, d) {
61
- for (let u = 0; u < s.length; u++) {
62
- const c = s[u], m = t[u], w = this.wasVisible(d, c.name), p = m.visible;
63
- if (w && !p) {
64
- const h = S(e, c.name), F = c.defaultValue ?? null;
65
- h !== F && (r.value = R(r.value, c.name, F));
66
- }
67
- c.fields && m.fields && this.clearHiddenValues(c.fields, m.fields, e, r, d);
68
- }
69
- }
70
- wasVisible(s, t) {
71
- const e = s.find((r) => r.name === t);
72
- return e ? e.visible !== !1 : !0;
73
- }
74
- }
75
- function be(n, s) {
76
- return new T().evaluateFields(n, s);
77
- }
78
- function fe(n, s, t) {
79
- switch (n) {
14
+ function Se(e, r, t) {
15
+ switch (e) {
80
16
  case "required":
81
- return t ? (e, r) => I(e) ? t : null : I;
17
+ return t ? (n, o) => X(n) ? t : null : X;
82
18
  case "minLength":
83
- return ae(Number(s), t);
19
+ return he(Number(r), t);
84
20
  case "maxLength":
85
- return se(Number(s), t);
21
+ return ge(Number(r), t);
86
22
  case "min":
87
- return ne(Number(s), t);
23
+ return pe(Number(r), t);
88
24
  case "max":
89
- return te(Number(s), t);
25
+ return ye(Number(r), t);
90
26
  case "pattern":
91
- return ee(new RegExp(String(s)), t);
27
+ return me(new RegExp(String(r)), t);
92
28
  case "email":
93
- return t ? (e, r) => $(e) ? t : null : $;
29
+ return t ? (n, o) => W(n) ? t : null : W;
94
30
  case "url":
95
- return t ? (e, r) => q(e) ? t : null : q;
31
+ return t ? (n, o) => Q(n) ? t : null : Q;
96
32
  default:
97
- return console.warn(`[vue-form-schema] Unknown validator rule: "${n}"`), null;
33
+ return console.warn(`[vue-form-schema] Unknown validator rule: "${e}"`), null;
98
34
  }
99
35
  }
100
- function C(n) {
101
- const s = [];
102
- for (const t of n.validators ?? []) {
103
- const e = fe(t.rule, t.value, t.message);
104
- e && s.push(e);
36
+ function Y(e) {
37
+ const r = [];
38
+ for (const t of e.validators ?? []) {
39
+ const n = Se(t.rule, t.value, t.message);
40
+ n && r.push(n);
105
41
  }
106
42
  return {
107
- type: n.type,
108
- name: n.name,
109
- label: n.label,
110
- placeholder: n.placeholder,
111
- defaultValue: n.default,
112
- required: n.required,
113
- disabled: n.disabled,
114
- visible: n.visible,
115
- mask: n.mask,
116
- options: n.options,
117
- validators: s.length ? s : void 0,
118
- fields: n.fields ? n.fields.map(C) : void 0
43
+ type: e.type,
44
+ name: e.name,
45
+ label: e.label,
46
+ placeholder: e.placeholder,
47
+ defaultValue: e.default,
48
+ required: e.required,
49
+ disabled: e.disabled,
50
+ visible: e.visible,
51
+ mask: e.mask,
52
+ options: e.options,
53
+ validators: r.length ? r : void 0,
54
+ fields: e.fields ? e.fields.map(Y) : void 0
119
55
  };
120
56
  }
121
- function ve(n) {
122
- return n.map(C);
57
+ function Ae(e) {
58
+ return e.map(Y);
123
59
  }
124
- function de(n) {
125
- if (!Array.isArray(n) || n.length === 0) return !1;
126
- for (const s of n) {
127
- const t = s.validators;
128
- if (Array.isArray(t) && t.some((e) => typeof e == "function"))
60
+ function je(e) {
61
+ if (!Array.isArray(e) || e.length === 0) return !1;
62
+ for (const r of e) {
63
+ const t = r.validators;
64
+ if (Array.isArray(t) && t.some((n) => typeof n == "function"))
129
65
  return !1;
130
66
  }
131
- return n.some((s) => {
132
- const t = s;
67
+ return e.some((r) => {
68
+ const t = r;
133
69
  if ("default" in t) return !0;
134
- const e = t.validators;
135
- return Array.isArray(e) && e.length > 0 && typeof e[0] == "object" && e[0] !== null && "rule" in e[0];
70
+ const n = t.validators;
71
+ return Array.isArray(n) && n.length > 0 && typeof n[0] == "object" && n[0] !== null && "rule" in n[0];
136
72
  });
137
73
  }
138
- function me(n) {
139
- return de(n) ? ve(n) : n;
74
+ function Ve(e) {
75
+ return je(e) ? Ae(e) : e;
140
76
  }
141
- function N(n, s = {}) {
142
- const t = {};
143
- for (const e of n)
144
- if (e.type === "group" && e.fields) {
145
- const r = N(e.fields, s);
146
- Object.assign(t, r);
147
- } else if (e.type === "array") {
148
- const r = S(s, e.name);
149
- t[e.name] = r ?? e.defaultValue ?? [];
150
- } else {
151
- const r = S(s, e.name);
152
- t[e.name] = r !== void 0 ? r : e.defaultValue ?? null;
77
+ function R(e, r = {}) {
78
+ let t = {};
79
+ for (const n of e)
80
+ if (n.type === "group" && n.fields) {
81
+ const o = R(n.fields, r);
82
+ for (const [c, f] of Object.entries(o))
83
+ t = N(t, c, f);
84
+ } else if (n.type === "array") {
85
+ const o = V(r, n.name), c = typeof n.defaultValue == "function" ? void 0 : n.defaultValue;
86
+ t = N(t, n.name, o ?? c ?? []);
87
+ } else if (typeof n.defaultValue != "function") {
88
+ const o = V(r, n.name);
89
+ t = N(
90
+ t,
91
+ n.name,
92
+ o !== void 0 ? o : n.defaultValue ?? null
93
+ );
153
94
  }
154
- for (const [e, r] of Object.entries(s))
155
- e in t || (t[e] = r);
95
+ for (const n of e)
96
+ if (n.type !== "group" && typeof n.defaultValue == "function") {
97
+ const o = V(r, n.name);
98
+ t = N(
99
+ t,
100
+ n.name,
101
+ o === void 0 ? n.defaultValue(t) : o
102
+ );
103
+ }
104
+ for (const [n, o] of Object.entries(r))
105
+ n in t || (t = N(t, n, o));
156
106
  return t;
157
107
  }
158
- function pe(n) {
159
- var M;
108
+ function ke(e) {
109
+ var H, G;
160
110
  const {
161
- schema: s,
111
+ schema: r,
162
112
  initialValues: t = {},
163
- validateOn: e = "blur",
164
- validateMode: r = "first",
165
- clearOnHide: d = !1,
166
- onSubmit: u,
167
- persist: c = !1,
113
+ validateOn: n = "blur",
114
+ validateMode: o = "first",
115
+ clearOnHide: c = !1,
116
+ onSubmit: f,
117
+ persist: v = !1,
168
118
  persistKey: m,
169
- debug: w = !1
170
- } = n, p = me(s), h = new oe(300, r), F = new T(), V = m ?? `vfs:${p.map((a) => a.name).join(",")}`;
171
- function E() {
172
- return typeof window > "u" || !c ? null : c === "local" ? window.localStorage : window.sessionStorage;
119
+ debug: b = !1
120
+ } = e, h = (H = fe()) == null ? void 0 : H.type, k = (h == null ? void 0 : h.__name) ?? (h == null ? void 0 : h.name), E = Ve(r), O = new be(300, o), J = new Fe();
121
+ let a = 0;
122
+ const S = m ?? `vfs:${E.map((s) => s.name).join(",")}`;
123
+ function L() {
124
+ return typeof window > "u" || !v ? null : v === "local" ? window.localStorage : window.sessionStorage;
173
125
  }
174
- const o = b(
175
- N(p, t)
176
- ), f = b({}), g = b({}), A = b(!1), y = b(p), O = b({}), k = b({}), P = /* @__PURE__ */ new Set();
177
- let x = !1;
178
- F.start(p, o, y, d ?? !1);
179
- async function B(a) {
180
- if (typeof a.options != "function") return;
181
- const i = a.options(o.value);
126
+ const l = j(
127
+ R(E, t)
128
+ ), y = j({}), x = j({}), M = j(!1), F = j(E), w = j({}), P = j({}), K = /* @__PURE__ */ new Set();
129
+ let z = !1;
130
+ J.start(
131
+ E,
132
+ l,
133
+ F,
134
+ c ?? !1
135
+ );
136
+ async function T(s) {
137
+ if (typeof s.options != "function") return;
138
+ const i = s.options(l.value);
182
139
  if (i instanceof Promise) {
183
- O.value = { ...O.value, [a.name]: !0 };
140
+ w.value = { ...w.value, [s.name]: !0 };
184
141
  try {
185
- const l = await i;
186
- k.value = { ...k.value, [a.name]: l };
187
- } catch (l) {
188
- console.warn(`[vue-form-schema] Failed to load options for "${a.name}"`, l);
142
+ const u = await i;
143
+ P.value = { ...P.value, [s.name]: u };
144
+ } catch (u) {
145
+ console.warn(`[vue-form-schema] Failed to load options for "${s.name}"`, u);
189
146
  } finally {
190
- O.value = { ...O.value, [a.name]: !1 };
147
+ w.value = { ...w.value, [s.name]: !1 };
191
148
  }
192
149
  }
193
150
  }
194
- const D = p.filter((a) => typeof a.options == "function");
195
- ie(async () => {
196
- const a = E();
197
- if (a)
151
+ const _ = E.filter((s) => typeof s.options == "function");
152
+ de(async () => {
153
+ const s = L();
154
+ if (s)
198
155
  try {
199
- const i = a.getItem(V);
156
+ const i = s.getItem(S);
200
157
  if (i) {
201
- const l = JSON.parse(i);
202
- o.value = {
203
- ...o.value,
204
- ...l
158
+ const u = JSON.parse(i);
159
+ l.value = {
160
+ ...l.value,
161
+ ...u
205
162
  };
206
163
  }
207
164
  } catch {
208
165
  }
209
- await Promise.all(D.map((i) => B(i)));
210
- }), c && j(
211
- o,
212
- (a) => {
166
+ await Promise.all(_.map((i) => T(i)));
167
+ }), v && I(
168
+ l,
169
+ (s) => {
213
170
  var i;
214
- if (!x)
171
+ if (!z)
215
172
  try {
216
- (i = E()) == null || i.setItem(V, JSON.stringify(a));
173
+ (i = L()) == null || i.setItem(S, JSON.stringify(s));
217
174
  } catch {
218
175
  }
219
176
  },
220
177
  { deep: !0 }
221
178
  );
222
- for (const a of D)
223
- (M = a.optionsDeps) != null && M.length && j(
224
- () => a.optionsDeps.map((i) => S(o.value, i)),
225
- () => B(a)
179
+ for (const s of _)
180
+ (G = s.optionsDeps) != null && G.length && I(
181
+ () => s.optionsDeps.map(
182
+ (i) => V(l.value, i)
183
+ ),
184
+ () => T(s)
226
185
  );
227
- w && j(
228
- o,
229
- (a) => {
230
- console.group("[vue-form-schema] values changed"), console.log("values:", JSON.parse(JSON.stringify(a))), console.log("errors:", f.value), console.log("touched:", g.value), console.groupEnd();
186
+ b && I(
187
+ l,
188
+ (s) => {
189
+ console.group("[vue-form-schema] values changed"), console.log("values:", JSON.parse(JSON.stringify(s))), console.log("errors:", y.value), console.log("touched:", x.value), console.groupEnd();
231
190
  },
232
191
  { deep: !0 }
233
192
  );
234
- const W = v(
235
- () => y.value.map((a) => ({
236
- ...a,
237
- options: k.value[a.name] ?? a.options,
238
- optionsLoading: O.value[a.name] ?? !1
193
+ const te = d(
194
+ () => F.value.map((s) => ({
195
+ ...s,
196
+ options: P.value[s.name] ?? s.options,
197
+ optionsLoading: w.value[s.name] ?? !1
239
198
  }))
240
- ), X = v(() => {
241
- const a = N(p, t);
242
- return JSON.stringify(o.value) !== JSON.stringify(a);
243
- }), _ = v(() => {
244
- const a = h.validateAll(y.value, o.value);
245
- return Object.values(a).every((i) => i.length === 0);
199
+ ), ne = R(E, t), re = d(
200
+ () => !C(l.value, ne)
201
+ ), se = d(() => {
202
+ const s = O.validateAll(F.value, l.value), i = Object.values(s).every((p) => p.length === 0), u = Object.values(y.value).every((p) => p.length === 0);
203
+ return i && u;
246
204
  });
247
- function H(a) {
248
- if (a) {
249
- const i = h.validateField(
250
- a,
251
- S(o.value, a.name),
252
- o.value
205
+ function B(s) {
206
+ if (s) {
207
+ const i = O.validateField(
208
+ s,
209
+ V(l.value, s.name),
210
+ l.value
253
211
  );
254
- f.value = { ...f.value, [a.name]: i }, h.validateAsync(
255
- a,
256
- S(o.value, a.name),
257
- o.value,
258
- (l, L) => {
259
- f.value = {
260
- ...f.value,
261
- [l]: [...f.value[l] ?? [], ...L]
262
- };
212
+ y.value = { ...y.value, [s.name]: i }, O.validateAsync(
213
+ s,
214
+ V(l.value, s.name),
215
+ l.value,
216
+ (u, p) => {
217
+ y.value = {
218
+ ...y.value,
219
+ [u]: [...y.value[u] ?? [], ...p]
220
+ }, A(a, "asyncValidate", { path: u, errors: p });
263
221
  }
264
222
  );
265
223
  } else
266
- f.value = h.validateAll(
267
- y.value,
268
- o.value
224
+ y.value = O.validateAll(
225
+ F.value,
226
+ l.value
269
227
  );
270
228
  }
271
- function z(a, i) {
272
- const l = J(y.value, a), L = l != null && l.transform ? l.transform(i, o.value) : i;
273
- o.value = R(
274
- o.value,
275
- a,
276
- L
277
- ), (e === "input" || e === "eager" && P.has(a)) && l && H(l);
229
+ function oe(s, i) {
230
+ const u = $(F.value, s), p = u != null && u.transform ? u.transform(i, l.value) : i;
231
+ l.value = N(
232
+ l.value,
233
+ s,
234
+ p
235
+ ), A(a, "setField", { path: s, value: p }), (n === "input" || n === "eager" && K.has(s)) && u && B(u);
278
236
  }
279
- function G(a) {
280
- return S(o.value, a);
237
+ function ae(s) {
238
+ return V(l.value, s);
281
239
  }
282
- function Q(a) {
283
- if (g.value = { ...g.value, [a]: !0 }, P.add(a), e === "blur" || e === "eager") {
284
- const i = J(y.value, a);
285
- i && H(i);
240
+ function ie(s) {
241
+ if (x.value = { ...x.value, [s]: !0 }, K.add(s), A(a, "touch", { path: s }), n === "blur" || n === "eager") {
242
+ const i = $(F.value, s);
243
+ i && B(i);
286
244
  }
287
245
  }
288
- async function Y() {
289
- const a = {};
290
- for (const l of y.value) K(l, a);
291
- if (g.value = a, f.value = h.validateAll(
292
- y.value,
293
- o.value
294
- ), !Object.values(f.value).some((l) => l.length > 0)) {
295
- A.value = !0;
296
- try {
297
- const l = U(y.value, o.value);
298
- await (u == null ? void 0 : u(l));
299
- } finally {
300
- A.value = !1;
301
- }
246
+ async function le() {
247
+ A(a, "submit");
248
+ const s = {};
249
+ for (const g of F.value) Z(g, s);
250
+ x.value = s;
251
+ const i = O.validateAll(
252
+ F.value,
253
+ l.value
254
+ ), u = await O.validateAllAsync(
255
+ F.value,
256
+ l.value
257
+ ), p = { ...i };
258
+ for (const [g, ce] of Object.entries(u))
259
+ p[g] = [...p[g] ?? [], ...ce];
260
+ if (y.value = p, Object.values(y.value).some((g) => g.length > 0)) {
261
+ A(a, "submitError", { reason: "validation", errors: y.value });
262
+ return;
263
+ }
264
+ M.value = !0;
265
+ try {
266
+ const g = ee(F.value, l.value);
267
+ await (f == null ? void 0 : f(g)), A(a, "submitSuccess");
268
+ } catch (g) {
269
+ throw A(a, "submitError", {
270
+ reason: "exception",
271
+ error: g instanceof Error ? g.message : String(g)
272
+ }), g;
273
+ } finally {
274
+ M.value = !1;
302
275
  }
303
276
  }
304
- function Z(a) {
305
- var l;
306
- const i = a ?? t;
307
- o.value = N(
308
- p,
277
+ function ue(s) {
278
+ var u;
279
+ const i = s ?? t;
280
+ l.value = R(
281
+ E,
309
282
  i ?? {}
310
- ), f.value = {}, g.value = {}, A.value = !1, x = !0, (l = E()) == null || l.removeItem(V), Promise.resolve().then(() => {
311
- x = !1;
312
- });
283
+ ), y.value = {}, x.value = {}, M.value = !1, z = !0, (u = L()) == null || u.removeItem(S), Promise.resolve().then(() => {
284
+ z = !1;
285
+ }), A(a, "reset");
313
286
  }
314
- return le(() => {
315
- F.stop(), h.destroy();
316
- }), {
317
- fields: W,
318
- values: o,
319
- errors: f,
320
- touched: g,
321
- optionsLoading: O,
322
- isDirty: X,
323
- isValid: _,
324
- isSubmitting: A,
325
- submit: Y,
326
- reset: Z,
327
- setField: z,
328
- getField: G,
287
+ ve(() => {
288
+ J.stop(), O.destroy(), Ee(a);
289
+ });
290
+ const U = {
291
+ fields: te,
292
+ values: l,
293
+ errors: y,
294
+ touched: x,
295
+ optionsLoading: w,
296
+ isDirty: re,
297
+ isValid: se,
298
+ isSubmitting: M,
299
+ submit: le,
300
+ reset: ue,
301
+ setField: oe,
302
+ getField: ae,
329
303
  // expose touch for FormRenderer
330
304
  // @ts-expect-error - internal
331
- touchField: Q
305
+ touchField: ie
332
306
  };
307
+ return a = Oe(U, k ?? "Form"), U;
333
308
  }
334
- function J(n, s) {
335
- for (const t of n) {
336
- if (t.name === s) return t;
309
+ function $(e, r) {
310
+ for (const t of e) {
311
+ if (t.name === r) return t;
337
312
  if (t.fields) {
338
- const e = J(t.fields, s);
339
- if (e) return e;
313
+ const n = $(t.fields, r);
314
+ if (n) return n;
340
315
  }
341
316
  }
342
317
  }
343
- function K(n, s = {}) {
344
- return s[n.name] = !0, n.fields && n.fields.forEach((t) => K(t, s)), s;
318
+ function Z(e, r = {}) {
319
+ return r[e.name] = !0, e.fields && e.fields.forEach((t) => Z(t, r)), r;
345
320
  }
346
- function U(n, s) {
347
- const t = { ...s };
348
- for (const e of n) {
349
- if (e.parse) {
350
- const r = S(t, e.name);
351
- t[e.name] = e.parse(r);
321
+ function C(e, r) {
322
+ if (e === r) return !0;
323
+ if (e instanceof File || r instanceof File) return e === r;
324
+ if (Array.isArray(e) && Array.isArray(r))
325
+ return e.length === r.length && e.every((t, n) => C(t, r[n]));
326
+ if (e && r && typeof e == "object" && typeof r == "object") {
327
+ const t = Object.keys(e), n = Object.keys(r);
328
+ return t.length === n.length && t.every(
329
+ (o) => C(e[o], r[o])
330
+ );
331
+ }
332
+ return !1;
333
+ }
334
+ function ee(e, r) {
335
+ const t = { ...r };
336
+ for (const n of e) {
337
+ if (n.parse) {
338
+ const o = V(t, n.name);
339
+ t[n.name] = n.parse(o);
352
340
  }
353
- if (e.fields) {
354
- const r = U(e.fields, t);
355
- Object.assign(t, r);
341
+ if (n.fields) {
342
+ const o = ee(n.fields, t);
343
+ Object.assign(t, o);
356
344
  }
357
345
  }
358
346
  return t;
359
347
  }
360
- function Se(n, s) {
361
- const t = n.map((o) => pe(o)), e = b(0), r = t.length, d = v(() => e.value === 0), u = v(() => e.value === r - 1), c = v(() => t[e.value]), m = v(
348
+ function Ie(e, r) {
349
+ const t = e.map((a) => ke(a)), n = j(0), o = t.length, c = d(() => n.value === 0), f = d(() => n.value === o - 1), v = d(() => t[n.value]), m = d(
362
350
  () => t.reduce(
363
- (o, f) => ({ ...o, ...f.values.value }),
351
+ (a, S) => ({ ...a, ...S.values.value }),
364
352
  {}
365
353
  )
366
- ), w = v(() => t.every((o) => o.isValid.value)), p = v(() => t.some((o) => o.isSubmitting.value));
367
- async function h() {
368
- return await t[e.value].submit(), Object.values(t[e.value].errors.value).some(
369
- (f) => f.length > 0
370
- ) ? !1 : (u.value || e.value++, !0);
354
+ ), b = d(() => t.every((a) => a.isValid.value)), h = d(() => t.some((a) => a.isSubmitting.value));
355
+ async function k() {
356
+ return await t[n.value].submit(), Object.values(t[n.value].errors.value).some((S) => S.length > 0) ? !1 : (f.value || n.value++, !0);
371
357
  }
372
- function F() {
373
- d.value || e.value--;
358
+ function E() {
359
+ c.value || n.value--;
374
360
  }
375
- function V(o) {
376
- o >= 0 && o < r && (e.value = o);
361
+ function O(a) {
362
+ a >= 0 && a < o && (n.value = a);
377
363
  }
378
- async function E() {
379
- for (const o of t)
380
- if (await o.submit(), Object.values(o.errors.value).some((g) => g.length > 0)) return;
381
- await (s == null ? void 0 : s(m.value));
364
+ async function J() {
365
+ for (const a of t)
366
+ if (await a.submit(), Object.values(a.errors.value).some((L) => L.length > 0)) return;
367
+ await (r == null ? void 0 : r(m.value));
382
368
  }
383
369
  return {
384
- currentStep: e,
385
- totalSteps: r,
386
- isFirstStep: d,
387
- isLastStep: u,
388
- form: c,
370
+ currentStep: n,
371
+ totalSteps: o,
372
+ isFirstStep: c,
373
+ isLastStep: f,
374
+ form: v,
389
375
  steps: t,
390
376
  values: m,
391
- isValid: w,
392
- isSubmitting: p,
393
- next: h,
394
- back: F,
395
- goTo: V,
396
- submit: E
377
+ isValid: b,
378
+ isSubmitting: h,
379
+ next: k,
380
+ back: E,
381
+ goTo: O,
382
+ submit: J
397
383
  };
398
384
  }
399
- function Fe(n) {
400
- return { snapshot: v(() => ({
401
- values: JSON.parse(JSON.stringify(n.values.value)),
402
- errors: n.errors.value,
403
- touched: n.touched.value,
404
- isDirty: n.isDirty.value,
405
- isValid: n.isValid.value,
406
- isSubmitting: n.isSubmitting.value,
407
- optionsLoading: n.optionsLoading.value,
408
- fields: n.fields.value.map((t) => ({
385
+ function $e(e) {
386
+ return { snapshot: d(() => ({
387
+ values: JSON.parse(JSON.stringify(e.values.value)),
388
+ errors: e.errors.value,
389
+ touched: e.touched.value,
390
+ isDirty: e.isDirty.value,
391
+ isValid: e.isValid.value,
392
+ isSubmitting: e.isSubmitting.value,
393
+ optionsLoading: e.optionsLoading.value,
394
+ fields: e.fields.value.map((t) => ({
409
395
  name: t.name,
410
396
  visible: t.visible,
411
397
  disabled: t.disabled
412
398
  }))
413
399
  })) };
414
400
  }
415
- function Oe(...n) {
416
- const s = /* @__PURE__ */ new Map();
417
- for (const t of n)
418
- for (const e of t)
419
- s.set(e.name, e);
420
- return Array.from(s.values());
401
+ function D(e) {
402
+ return e !== null && typeof e == "object" && !Array.isArray(e) ? e : void 0;
421
403
  }
422
- function we(n, s) {
423
- const t = new Set(s);
424
- return n.filter((e) => !t.has(e.name));
404
+ function q(e) {
405
+ return Array.isArray(e) ? e.filter((r) => typeof r == "string") : typeof e == "string" ? [e] : [];
425
406
  }
426
- function Ve(n, s) {
427
- const t = new Set(s);
428
- return n.filter((e) => t.has(e.name));
407
+ function xe(e) {
408
+ const r = D(e), t = D(r == null ? void 0 : r.errors) ?? {}, n = {};
409
+ for (const [o, c] of Object.entries(t))
410
+ n[o] = q(c);
411
+ return { fieldErrors: n, formErrors: [] };
429
412
  }
430
- function Ee(n, s, t) {
431
- return n.map((e) => e.name === s ? { ...e, ...t } : e);
413
+ function we(e) {
414
+ const r = {}, t = [];
415
+ function n(c, f) {
416
+ for (const [v, m] of Object.entries(c)) {
417
+ if (v === "non_field_errors" || v === "detail") {
418
+ t.push(...q(m));
419
+ continue;
420
+ }
421
+ const b = f ? `${f}.${v}` : v, h = D(m);
422
+ if (h)
423
+ n(h, b);
424
+ else {
425
+ const k = q(m);
426
+ k.length && (r[b] = k);
427
+ }
428
+ }
429
+ }
430
+ const o = D(e);
431
+ return o && n(o, ""), { fieldErrors: r, formErrors: t };
432
+ }
433
+ function Ne(e) {
434
+ const r = D(e) ?? {}, t = {};
435
+ for (const [n, o] of Object.entries(r)) {
436
+ const c = q(o);
437
+ c.length && (t[n] = c);
438
+ }
439
+ return { fieldErrors: t, formErrors: [] };
440
+ }
441
+ const Le = {
442
+ laravel: xe,
443
+ drf: we,
444
+ flat: Ne
445
+ };
446
+ function De(e, r = "flat") {
447
+ return typeof r == "function" ? r(e) : Le[r](e);
448
+ }
449
+ function Ce(e, r, t = {}) {
450
+ const { format: n = "flat", touch: o = !0, merge: c = !0 } = t, f = De(r, n), v = c ? { ...e.errors.value } : {};
451
+ for (const [m, b] of Object.entries(f.fieldErrors))
452
+ v[m] = b;
453
+ if (e.errors.value = v, o) {
454
+ const m = { ...e.touched.value };
455
+ for (const b of Object.keys(f.fieldErrors)) m[b] = !0;
456
+ e.touched.value = m;
457
+ }
458
+ return f;
432
459
  }
433
- function Ae(n) {
434
- return n;
460
+ function Ke(e) {
461
+ return e;
435
462
  }
436
463
  export {
437
- T as ConditionEvaluator,
438
- oe as ValidationEngine,
439
- xe as applyMask,
440
- Le as bindMask,
441
- je as createFormRegistry,
442
- Ae as defineSchema,
443
- $ as email,
444
- be as evaluateFieldConditions,
445
- Ee as extendField,
446
- S as getByPath,
447
- te as max,
448
- se as maxLength,
449
- Oe as mergeSchemas,
450
- ne as min,
451
- ae as minLength,
452
- we as omitFields,
453
- ve as parseJSON,
454
- ee as pattern,
455
- Ve as pickFields,
456
- Je as provideRegistry,
457
- Pe as removeMask,
458
- I as required,
459
- Be as sameAs,
460
- R as setByPath,
461
- q as url,
462
- De as useFieldArray,
463
- pe as useForm,
464
- Fe as useFormDebug,
465
- ge as useFormField,
466
- Se as useMultiStepForm,
467
- He as useRegistry
464
+ Fe as ConditionEvaluator,
465
+ be as ValidationEngine,
466
+ Be as applyMask,
467
+ Ce as applyServerErrors,
468
+ Ue as bindMask,
469
+ He as createFormRegistry,
470
+ Ke as defineSchema,
471
+ st as discriminatedFields,
472
+ W as email,
473
+ ot as evaluateFieldConditions,
474
+ at as extendField,
475
+ Ze as fileCount,
476
+ et as fileSize,
477
+ tt as fileType,
478
+ V as getByPath,
479
+ ye as max,
480
+ ge as maxLength,
481
+ it as mergeSchemas,
482
+ pe as min,
483
+ he as minLength,
484
+ De as normalizeServerErrors,
485
+ lt as omitFields,
486
+ Ae as parseJSON,
487
+ me as pattern,
488
+ ut as pickFields,
489
+ Ge as provideRegistry,
490
+ Qe as removeMask,
491
+ X as required,
492
+ nt as sameAs,
493
+ N as setByPath,
494
+ Q as url,
495
+ We as useFieldArray,
496
+ ke as useForm,
497
+ $e as useFormDebug,
498
+ ze as useFormField,
499
+ Ie as useMultiStepForm,
500
+ Xe as useRegistry
468
501
  };