solid-hook-form 1.1.4 → 1.2.1

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.
@@ -0,0 +1 @@
1
+ export declare const FormContext: import('solid-js').Context<{}>;
@@ -0,0 +1,7 @@
1
+ import { ParentProps } from 'solid-js';
2
+ import { FormValues, UseFormReturn } from './types/form';
3
+ type FormProviderProps<T extends FormValues> = ParentProps & {
4
+ form: UseFormReturn<T>;
5
+ };
6
+ export declare const FormProvider: <T extends FormValues>(props: FormProviderProps<T>) => import("solid-js").JSX.Element;
7
+ export {};
package/dist/main.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export { useForm } from './use_form';
2
+ export { FormProvider } from './form_provider';
3
+ export { useFormContext } from './use_form_context';
package/dist/main.js CHANGED
@@ -1,135 +1,179 @@
1
- const Q = (t, e) => t === e, N = {
2
- equals: Q
1
+ const K = (t, e) => t === e, x = {
2
+ equals: K
3
3
  };
4
- let z = j;
5
- const m = 1, w = 2;
6
- var y = null;
7
- let A = null, B = null, a = null, l = null, h = null, E = 0;
4
+ let X = Q;
5
+ const v = 1, w = 2, Y = {};
6
+ var l = null;
7
+ let k = null, Z = null, o = null, a = null, g = null, E = 0;
8
8
  function O(t, e) {
9
- e = e ? Object.assign({}, N, e) : N;
10
- const s = {
9
+ e = e ? Object.assign({}, x, e) : x;
10
+ const r = {
11
11
  value: t,
12
12
  observers: null,
13
13
  observerSlots: null,
14
14
  comparator: e.equals || void 0
15
- }, r = (n) => (typeof n == "function" && (n = n(s.value)), U(s, n));
16
- return [J.bind(s), r];
15
+ }, s = (n) => (typeof n == "function" && (n = n(r.value)), G(r, n));
16
+ return [T.bind(r), s];
17
17
  }
18
- function H(t) {
19
- if (a === null) return t();
20
- const e = a;
21
- a = null;
18
+ function $(t, e, r) {
19
+ const s = M(t, e, !1, v);
20
+ A(s);
21
+ }
22
+ function D(t, e, r) {
23
+ r = r ? Object.assign({}, x, r) : x;
24
+ const s = M(t, e, !0, 0);
25
+ return s.observers = null, s.observerSlots = null, s.comparator = r.equals || void 0, A(s), T.bind(s);
26
+ }
27
+ function j(t) {
28
+ if (o === null) return t();
29
+ const e = o;
30
+ o = null;
22
31
  try {
23
32
  return t();
24
33
  } finally {
25
- a = e;
34
+ o = e;
26
35
  }
27
36
  }
28
- function J() {
37
+ function tt(t, e) {
38
+ const r = Symbol("context");
39
+ return {
40
+ id: r,
41
+ Provider: it(r),
42
+ defaultValue: t
43
+ };
44
+ }
45
+ function et(t) {
46
+ let e;
47
+ return l && l.context && (e = l.context[t.id]) !== void 0 ? e : t.defaultValue;
48
+ }
49
+ function rt(t) {
50
+ const e = D(t), r = D(() => F(e()));
51
+ return r.toArray = () => {
52
+ const s = r();
53
+ return Array.isArray(s) ? s : s != null ? [s] : [];
54
+ }, r;
55
+ }
56
+ function T() {
29
57
  if (this.sources && this.state)
30
- if (this.state === m) R(this);
58
+ if (this.state === v) A(this);
31
59
  else {
32
- const t = l;
33
- l = null, L(() => x(this)), l = t;
60
+ const t = a;
61
+ a = null, V(() => d(this)), a = t;
34
62
  }
35
- if (a) {
63
+ if (o) {
36
64
  const t = this.observers ? this.observers.length : 0;
37
- a.sources ? (a.sources.push(this), a.sourceSlots.push(t)) : (a.sources = [this], a.sourceSlots = [t]), this.observers ? (this.observers.push(a), this.observerSlots.push(a.sources.length - 1)) : (this.observers = [a], this.observerSlots = [a.sources.length - 1]);
65
+ o.sources ? (o.sources.push(this), o.sourceSlots.push(t)) : (o.sources = [this], o.sourceSlots = [t]), this.observers ? (this.observers.push(o), this.observerSlots.push(o.sources.length - 1)) : (this.observers = [o], this.observerSlots = [o.sources.length - 1]);
38
66
  }
39
67
  return this.value;
40
68
  }
41
- function U(t, e, s) {
42
- let r = t.value;
43
- return (!t.comparator || !t.comparator(r, e)) && (t.value = e, t.observers && t.observers.length && L(() => {
69
+ function G(t, e, r) {
70
+ let s = t.value;
71
+ return (!t.comparator || !t.comparator(s, e)) && (t.value = e, t.observers && t.observers.length && V(() => {
44
72
  for (let n = 0; n < t.observers.length; n += 1) {
45
- const u = t.observers[n], f = A && A.running;
46
- f && A.disposed.has(u), (f ? !u.tState : !u.state) && (u.pure ? l.push(u) : h.push(u), u.observers && G(u)), f || (u.state = m);
73
+ const i = t.observers[n], p = k && k.running;
74
+ p && k.disposed.has(i), (p ? !i.tState : !i.state) && (i.pure ? a.push(i) : g.push(i), i.observers && W(i)), p || (i.state = v);
47
75
  }
48
- if (l.length > 1e6)
49
- throw l = [], new Error();
76
+ if (a.length > 1e6)
77
+ throw a = [], new Error();
50
78
  })), e;
51
79
  }
52
- function R(t) {
80
+ function A(t) {
53
81
  if (!t.fn) return;
54
82
  S(t);
55
83
  const e = E;
56
- K(
84
+ st(
57
85
  t,
58
86
  t.value,
59
87
  e
60
88
  );
61
89
  }
62
- function K(t, e, s) {
63
- let r;
64
- const n = y, u = a;
65
- a = y = t;
90
+ function st(t, e, r) {
91
+ let s;
92
+ const n = l, i = o;
93
+ o = l = t;
66
94
  try {
67
- r = t.fn(e);
68
- } catch (f) {
69
- return t.pure && (t.state = m, t.owned && t.owned.forEach(S), t.owned = null), t.updatedAt = s + 1, _(f);
95
+ s = t.fn(e);
96
+ } catch (p) {
97
+ return t.pure && (t.state = v, t.owned && t.owned.forEach(S), t.owned = null), t.updatedAt = r + 1, z(p);
70
98
  } finally {
71
- a = u, y = n;
99
+ o = i, l = n;
72
100
  }
73
- (!t.updatedAt || t.updatedAt <= s) && (t.updatedAt != null && "observers" in t ? U(t, r) : t.value = r, t.updatedAt = s);
101
+ (!t.updatedAt || t.updatedAt <= r) && (t.updatedAt != null && "observers" in t ? G(t, s) : t.value = s, t.updatedAt = r);
74
102
  }
75
- function T(t) {
103
+ function M(t, e, r, s = v, n) {
104
+ const i = {
105
+ fn: t,
106
+ state: s,
107
+ updatedAt: null,
108
+ owned: null,
109
+ sources: null,
110
+ sourceSlots: null,
111
+ cleanups: null,
112
+ value: e,
113
+ owner: l,
114
+ context: l ? l.context : null,
115
+ pure: r
116
+ };
117
+ return l === null || l !== Y && (l.owned ? l.owned.push(i) : l.owned = [i]), i;
118
+ }
119
+ function _(t) {
76
120
  if (t.state === 0) return;
77
- if (t.state === w) return x(t);
78
- if (t.suspense && H(t.suspense.inFallback)) return t.suspense.effects.push(t);
121
+ if (t.state === w) return d(t);
122
+ if (t.suspense && j(t.suspense.inFallback)) return t.suspense.effects.push(t);
79
123
  const e = [t];
80
124
  for (; (t = t.owner) && (!t.updatedAt || t.updatedAt < E); )
81
125
  t.state && e.push(t);
82
- for (let s = e.length - 1; s >= 0; s--)
83
- if (t = e[s], t.state === m)
84
- R(t);
126
+ for (let r = e.length - 1; r >= 0; r--)
127
+ if (t = e[r], t.state === v)
128
+ A(t);
85
129
  else if (t.state === w) {
86
- const r = l;
87
- l = null, L(() => x(t, e[0])), l = r;
130
+ const s = a;
131
+ a = null, V(() => d(t, e[0])), a = s;
88
132
  }
89
133
  }
90
- function L(t, e) {
91
- if (l) return t();
92
- let s = !1;
93
- l = [], h ? s = !0 : h = [], E++;
134
+ function V(t, e) {
135
+ if (a) return t();
136
+ let r = !1;
137
+ a = [], g ? r = !0 : g = [], E++;
94
138
  try {
95
- const r = t();
96
- return W(s), r;
97
- } catch (r) {
98
- s || (h = null), l = null, _(r);
139
+ const s = t();
140
+ return nt(r), s;
141
+ } catch (s) {
142
+ r || (g = null), a = null, z(s);
99
143
  }
100
144
  }
101
- function W(t) {
102
- if (l && (j(l), l = null), t) return;
103
- const e = h;
104
- h = null, e.length && L(() => z(e));
145
+ function nt(t) {
146
+ if (a && (Q(a), a = null), t) return;
147
+ const e = g;
148
+ g = null, e.length && V(() => X(e));
105
149
  }
106
- function j(t) {
107
- for (let e = 0; e < t.length; e++) T(t[e]);
150
+ function Q(t) {
151
+ for (let e = 0; e < t.length; e++) _(t[e]);
108
152
  }
109
- function x(t, e) {
153
+ function d(t, e) {
110
154
  t.state = 0;
111
- for (let s = 0; s < t.sources.length; s += 1) {
112
- const r = t.sources[s];
113
- if (r.sources) {
114
- const n = r.state;
115
- n === m ? r !== e && (!r.updatedAt || r.updatedAt < E) && T(r) : n === w && x(r, e);
155
+ for (let r = 0; r < t.sources.length; r += 1) {
156
+ const s = t.sources[r];
157
+ if (s.sources) {
158
+ const n = s.state;
159
+ n === v ? s !== e && (!s.updatedAt || s.updatedAt < E) && _(s) : n === w && d(s, e);
116
160
  }
117
161
  }
118
162
  }
119
- function G(t) {
163
+ function W(t) {
120
164
  for (let e = 0; e < t.observers.length; e += 1) {
121
- const s = t.observers[e];
122
- s.state || (s.state = w, s.pure ? l.push(s) : h.push(s), s.observers && G(s));
165
+ const r = t.observers[e];
166
+ r.state || (r.state = w, r.pure ? a.push(r) : g.push(r), r.observers && W(r));
123
167
  }
124
168
  }
125
169
  function S(t) {
126
170
  let e;
127
171
  if (t.sources)
128
172
  for (; t.sources.length; ) {
129
- const s = t.sources.pop(), r = t.sourceSlots.pop(), n = s.observers;
173
+ const r = t.sources.pop(), s = t.sourceSlots.pop(), n = r.observers;
130
174
  if (n && n.length) {
131
- const u = n.pop(), f = s.observerSlots.pop();
132
- r < n.length && (u.sourceSlots[f] = r, n[r] = u, s.observerSlots[r] = f);
175
+ const i = n.pop(), p = r.observerSlots.pop();
176
+ s < n.length && (i.sourceSlots[p] = s, n[s] = i, r.observerSlots[s] = p);
133
177
  }
134
178
  }
135
179
  if (t.tOwned) {
@@ -146,64 +190,88 @@ function S(t) {
146
190
  }
147
191
  t.state = 0;
148
192
  }
149
- function X(t) {
193
+ function ut(t) {
150
194
  return t instanceof Error ? t : new Error(typeof t == "string" ? t : "Unknown error", {
151
195
  cause: t
152
196
  });
153
197
  }
154
- function _(t, e = y) {
155
- throw X(t);
198
+ function z(t, e = l) {
199
+ throw ut(t);
200
+ }
201
+ function F(t) {
202
+ if (typeof t == "function" && !t.length) return F(t());
203
+ if (Array.isArray(t)) {
204
+ const e = [];
205
+ for (let r = 0; r < t.length; r++) {
206
+ const s = F(t[r]);
207
+ Array.isArray(s) ? e.push.apply(e, s) : e.push(s);
208
+ }
209
+ return e;
210
+ }
211
+ return t;
212
+ }
213
+ function it(t, e) {
214
+ return function(s) {
215
+ let n;
216
+ return $(
217
+ () => n = j(() => (l.context = {
218
+ ...l.context,
219
+ [t]: s.value
220
+ }, rt(() => s.children))),
221
+ void 0
222
+ ), n;
223
+ };
156
224
  }
157
- const d = {
225
+ const P = {
158
226
  text(t) {
159
227
  return t.value;
160
228
  },
161
229
  checkbox(t) {
162
230
  return t.checked;
163
231
  }
164
- }, Y = (t) => (d[t.type] || d.text)(t), D = {
232
+ }, ot = (t) => (P[t.type] || P.text)(t), R = {
165
233
  text(t, e) {
166
234
  t.value = e;
167
235
  },
168
236
  checkbox(t, e) {
169
237
  t.checked = e;
170
238
  }
171
- }, F = (t, e) => (D[t.type] || D.text)(t, e), b = (t) => t instanceof RegExp || typeof t == "string" || typeof t == "number" ? t : t.value, v = (t) => typeof t == "string" ? t : typeof t.message == "string" ? t.message : "", Z = (t, e, s = {}) => {
172
- const r = t[e];
173
- if (s.required && !r)
174
- return { type: "required", message: v(s.required) };
175
- if (s.min && Number(r) < Number(b(s.min)))
176
- return { type: "min", message: v(s.min) };
177
- if (s.max && Number(r) > Number(b(s.max)))
178
- return { type: "max", message: v(s.max) };
179
- if (s.minLength && r.length < b(s.minLength))
180
- return { type: "minLength", message: v(s.minLength) };
181
- if (s.maxLength && r.length > b(s.maxLength))
182
- return { type: "maxLength", message: v(s.maxLength) };
183
- if (s.pattern && !b(s.pattern).test(r))
184
- return { type: "pattern", message: v(s.pattern) };
185
- if (s.validate) {
186
- const n = s.validate(r, t);
239
+ }, U = (t, e) => (R[t.type] || R.text)(t, e), y = (t) => t instanceof RegExp || typeof t == "string" || typeof t == "number" ? t : t.value, b = (t) => typeof t == "string" ? t : typeof t.message == "string" ? t.message : "", lt = (t, e, r = {}) => {
240
+ const s = t[e];
241
+ if (r.required && !s)
242
+ return { type: "required", message: b(r.required) };
243
+ if (r.min && Number(s) < Number(y(r.min)))
244
+ return { type: "min", message: b(r.min) };
245
+ if (r.max && Number(s) > Number(y(r.max)))
246
+ return { type: "max", message: b(r.max) };
247
+ if (r.minLength && s.length < y(r.minLength))
248
+ return { type: "minLength", message: b(r.minLength) };
249
+ if (r.maxLength && s.length > y(r.maxLength))
250
+ return { type: "maxLength", message: b(r.maxLength) };
251
+ if (r.pattern && !y(r.pattern).test(s))
252
+ return { type: "pattern", message: b(r.pattern) };
253
+ if (r.validate) {
254
+ const n = r.validate(s, t);
187
255
  if (n === !1)
188
256
  return { type: "validate" };
189
257
  if (typeof n == "string")
190
258
  return { type: "validate", message: n };
191
259
  }
192
- }, st = ({
260
+ }, pt = ({
193
261
  defaultValues: t,
194
262
  mode: e = "onInput"
195
263
  }) => {
196
- const s = {}, r = {}, [n, u] = O(t), [f, V] = O({}), [I, q] = O(!0), k = (i) => {
197
- const c = r[i], o = Z(n(), i, c);
198
- V(o ? (p) => ({ ...p, [i]: o }) : (p) => {
199
- const g = { ...p };
200
- return delete g[i], g;
201
- }), q(!Object.keys(f()).length);
202
- }, M = () => {
203
- Object.keys(n()).forEach((i) => {
204
- k(i);
264
+ const r = {}, s = {}, [n, i] = O(t), [p, C] = O({}), [N, q] = O(!0), L = (u) => {
265
+ const c = s[u], f = lt(n(), u, c);
266
+ C(f ? (h) => ({ ...h, [u]: f }) : (h) => {
267
+ const m = { ...h };
268
+ return delete m[u], m;
269
+ }), q(!Object.keys(p()).length);
270
+ }, H = () => {
271
+ Object.keys(n()).forEach((u) => {
272
+ L(u);
205
273
  });
206
- }, P = (i, c) => (c && (r[i] = {
274
+ }, J = (u, c = {}) => (s[u] = {
207
275
  required: c.required,
208
276
  min: c.min,
209
277
  max: c.max,
@@ -211,48 +279,54 @@ const d = {
211
279
  maxLength: c.maxLength,
212
280
  pattern: c.pattern,
213
281
  validate: c.validate
214
- }), {
215
- name: i,
282
+ }, {
283
+ name: u,
216
284
  // value: values()[name],
217
- onInput(o) {
285
+ onInput(f) {
218
286
  if (e === "onInput") {
219
- const p = o.target.value;
220
- u((g) => ({ ...g, [i]: p })), k(i);
287
+ const h = f.target.value;
288
+ i((m) => ({ ...m, [u]: h })), L(u);
221
289
  }
222
290
  },
223
- onChange(o) {
291
+ onChange(f) {
224
292
  if (e === "onChange" || e === "onInput") {
225
- const p = Y(o.target);
226
- u((g) => ({ ...g, [i]: p })), k(i);
293
+ const h = ot(f.target);
294
+ i((m) => ({ ...m, [u]: h })), L(u);
227
295
  }
228
296
  },
229
- ref: (o) => {
230
- s[i] || (s[i] = o, o && F(o, n()[i]));
297
+ ref(f) {
298
+ r[u] || (r[u] = f, f && U(f, n()[u]));
231
299
  }
232
- }), C = (i) => i ? n()[i] : n();
300
+ }), I = (u) => u ? n()[u] : n();
233
301
  return {
234
302
  values: n,
235
- errors: f,
236
- isValid: I,
237
- register: P,
238
- getValues: C,
239
- setValue: (i, c) => {
240
- u((p) => ({ ...p, [i]: c }));
241
- const o = s[i];
242
- o && F(o, c);
303
+ errors: p,
304
+ isValid: N,
305
+ register: J,
306
+ getValues: I,
307
+ setValue: (u, c) => {
308
+ i((h) => ({ ...h, [u]: c }));
309
+ const f = r[u];
310
+ f && U(f, c);
243
311
  },
244
- onSubmit: (i) => (c) => {
245
- c.preventDefault(), M(), I() && i(C());
312
+ onSubmit: (u) => (c) => {
313
+ c.preventDefault(), H(), N() && u(I());
246
314
  },
247
- reset: (i) => {
248
- u(() => ({
315
+ reset: (u = {}) => {
316
+ i(() => ({
249
317
  ...t,
250
- ...i
251
- })), V({}), q(!0);
318
+ ...u
319
+ })), C({}), q(!0);
252
320
  }
253
321
  };
322
+ }, B = tt({}), ht = (t) => /* @__PURE__ */ React.createElement(B.Provider, { value: t.form }, t.children), gt = () => {
323
+ const t = et(B);
324
+ if (!t)
325
+ throw new Error("useFormContext: cannot find a FormProvider");
326
+ return t;
254
327
  };
255
328
  export {
256
- st as useForm
329
+ ht as FormProvider,
330
+ pt as useForm,
331
+ gt as useFormContext
257
332
  };
258
- //# sourceMappingURL=main.js.map
package/dist/main.umd.cjs CHANGED
@@ -1,2 +1 @@
1
- (function(g,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(g=typeof globalThis<"u"?globalThis:g||self,x(g["solid-hook-form"]={}))})(this,function(g){"use strict";const I={equals:(t,e)=>t===e};let Q=T;const m=1,S=2;var w=null;let k=null,z=null,a=null,l=null,h=null,d=0;function A(t,e){e=e?Object.assign({},I,e):I;const s={value:t,observers:null,observerSlots:null,comparator:e.equals||void 0},r=n=>(typeof n=="function"&&(n=n(s.value)),C(s,n));return[H.bind(s),r]}function B(t){if(a===null)return t();const e=a;a=null;try{return t()}finally{a=e}}function H(){if(this.sources&&this.state)if(this.state===m)F(this);else{const t=l;l=null,E(()=>L(this)),l=t}if(a){const t=this.observers?this.observers.length:0;a.sources?(a.sources.push(this),a.sourceSlots.push(t)):(a.sources=[this],a.sourceSlots=[t]),this.observers?(this.observers.push(a),this.observerSlots.push(a.sources.length-1)):(this.observers=[a],this.observerSlots=[a.sources.length-1])}return this.value}function C(t,e,s){let r=t.value;return(!t.comparator||!t.comparator(r,e))&&(t.value=e,t.observers&&t.observers.length&&E(()=>{for(let n=0;n<t.observers.length;n+=1){const u=t.observers[n],f=k&&k.running;f&&k.disposed.has(u),(f?!u.tState:!u.state)&&(u.pure?l.push(u):h.push(u),u.observers&&j(u)),f||(u.state=m)}if(l.length>1e6)throw l=[],new Error})),e}function F(t){if(!t.fn)return;V(t);const e=d;J(t,t.value,e)}function J(t,e,s){let r;const n=w,u=a;a=w=t;try{r=t.fn(e)}catch(f){return t.pure&&(t.state=m,t.owned&&t.owned.forEach(V),t.owned=null),t.updatedAt=s+1,D(f)}finally{a=u,w=n}(!t.updatedAt||t.updatedAt<=s)&&(t.updatedAt!=null&&"observers"in t?C(t,r):t.value=r,t.updatedAt=s)}function N(t){if(t.state===0)return;if(t.state===S)return L(t);if(t.suspense&&B(t.suspense.inFallback))return t.suspense.effects.push(t);const e=[t];for(;(t=t.owner)&&(!t.updatedAt||t.updatedAt<d);)t.state&&e.push(t);for(let s=e.length-1;s>=0;s--)if(t=e[s],t.state===m)F(t);else if(t.state===S){const r=l;l=null,E(()=>L(t,e[0])),l=r}}function E(t,e){if(l)return t();let s=!1;l=[],h?s=!0:h=[],d++;try{const r=t();return K(s),r}catch(r){s||(h=null),l=null,D(r)}}function K(t){if(l&&(T(l),l=null),t)return;const e=h;h=null,e.length&&E(()=>Q(e))}function T(t){for(let e=0;e<t.length;e++)N(t[e])}function L(t,e){t.state=0;for(let s=0;s<t.sources.length;s+=1){const r=t.sources[s];if(r.sources){const n=r.state;n===m?r!==e&&(!r.updatedAt||r.updatedAt<d)&&N(r):n===S&&L(r,e)}}}function j(t){for(let e=0;e<t.observers.length;e+=1){const s=t.observers[e];s.state||(s.state=S,s.pure?l.push(s):h.push(s),s.observers&&j(s))}}function V(t){let e;if(t.sources)for(;t.sources.length;){const s=t.sources.pop(),r=t.sourceSlots.pop(),n=s.observers;if(n&&n.length){const u=n.pop(),f=s.observerSlots.pop();r<n.length&&(u.sourceSlots[f]=r,n[r]=u,s.observerSlots[r]=f)}}if(t.tOwned){for(e=t.tOwned.length-1;e>=0;e--)V(t.tOwned[e]);delete t.tOwned}if(t.owned){for(e=t.owned.length-1;e>=0;e--)V(t.owned[e]);t.owned=null}if(t.cleanups){for(e=t.cleanups.length-1;e>=0;e--)t.cleanups[e]();t.cleanups=null}t.state=0}function W(t){return t instanceof Error?t:new Error(typeof t=="string"?t:"Unknown error",{cause:t})}function D(t,e=w){throw W(t)}const U={text(t){return t.value},checkbox(t){return t.checked}},X=t=>(U[t.type]||U.text)(t),R={text(t,e){t.value=e},checkbox(t,e){t.checked=e}},G=(t,e)=>(R[t.type]||R.text)(t,e),y=t=>t instanceof RegExp||typeof t=="string"||typeof t=="number"?t:t.value,b=t=>typeof t=="string"?t:typeof t.message=="string"?t.message:"",Y=(t,e,s={})=>{const r=t[e];if(s.required&&!r)return{type:"required",message:b(s.required)};if(s.min&&Number(r)<Number(y(s.min)))return{type:"min",message:b(s.min)};if(s.max&&Number(r)>Number(y(s.max)))return{type:"max",message:b(s.max)};if(s.minLength&&r.length<y(s.minLength))return{type:"minLength",message:b(s.minLength)};if(s.maxLength&&r.length>y(s.maxLength))return{type:"maxLength",message:b(s.maxLength)};if(s.pattern&&!y(s.pattern).test(r))return{type:"pattern",message:b(s.pattern)};if(s.validate){const n=s.validate(r,t);if(n===!1)return{type:"validate"};if(typeof n=="string")return{type:"validate",message:n}}},Z=({defaultValues:t,mode:e="onInput"})=>{const s={},r={},[n,u]=A(t),[f,O]=A({}),[M,P]=A(!0),q=i=>{const o=r[i],c=Y(n(),i,o);O(c?p=>({...p,[i]:c}):p=>{const v={...p};return delete v[i],v}),P(!Object.keys(f()).length)},$=()=>{Object.keys(n()).forEach(i=>{q(i)})},tt=(i,o)=>(o&&(r[i]={required:o.required,min:o.min,max:o.max,minLength:o.minLength,maxLength:o.maxLength,pattern:o.pattern,validate:o.validate}),{name:i,onInput(c){if(e==="onInput"){const p=c.target.value;u(v=>({...v,[i]:p})),q(i)}},onChange(c){if(e==="onChange"||e==="onInput"){const p=X(c.target);u(v=>({...v,[i]:p})),q(i)}},ref:c=>{s[i]||(s[i]=c,c&&G(c,n()[i]))}}),_=i=>i?n()[i]:n();return{values:n,errors:f,isValid:M,register:tt,getValues:_,setValue:(i,o)=>{u(p=>({...p,[i]:o}));const c=s[i];c&&G(c,o)},onSubmit:i=>o=>{o.preventDefault(),$(),M()&&i(_())},reset:i=>{u(()=>({...t,...i})),O({}),P(!0)}}};g.useForm=Z,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
2
- //# sourceMappingURL=main.umd.cjs.map
1
+ (function(g,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(g=typeof globalThis<"u"?globalThis:g||self,x(g["solid-hook-form"]={}))})(this,function(g){"use strict";const w={equals:(t,e)=>t===e};let K=U;const v=1,S=2,X={};var o=null;let L=null,Y=null,l=null,c=null,m=null,E=0;function k(t,e){e=e?Object.assign({},w,e):w;const r={value:t,observers:null,observerSlots:null,comparator:e.equals||void 0},n=s=>(typeof s=="function"&&(s=s(r.value)),j(r,s));return[T.bind(r),n]}function Z(t,e,r){const n=D(t,e,!1,v);A(n)}function I(t,e,r){r=r?Object.assign({},w,r):w;const n=D(t,e,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,A(n),T.bind(n)}function P(t){if(l===null)return t();const e=l;l=null;try{return t()}finally{l=e}}function $(t,e){const r=Symbol("context");return{id:r,Provider:ut(r),defaultValue:t}}function tt(t){let e;return o&&o.context&&(e=o.context[t.id])!==void 0?e:t.defaultValue}function et(t){const e=I(t),r=I(()=>O(e()));return r.toArray=()=>{const n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}function T(){if(this.sources&&this.state)if(this.state===v)A(this);else{const t=c;c=null,C(()=>V(this)),c=t}if(l){const t=this.observers?this.observers.length:0;l.sources?(l.sources.push(this),l.sourceSlots.push(t)):(l.sources=[this],l.sourceSlots=[t]),this.observers?(this.observers.push(l),this.observerSlots.push(l.sources.length-1)):(this.observers=[l],this.observerSlots=[l.sources.length-1])}return this.value}function j(t,e,r){let n=t.value;return(!t.comparator||!t.comparator(n,e))&&(t.value=e,t.observers&&t.observers.length&&C(()=>{for(let s=0;s<t.observers.length;s+=1){const i=t.observers[s],p=L&&L.running;p&&L.disposed.has(i),(p?!i.tState:!i.state)&&(i.pure?c.push(i):m.push(i),i.observers&&M(i)),p||(i.state=v)}if(c.length>1e6)throw c=[],new Error})),e}function A(t){if(!t.fn)return;F(t);const e=E;rt(t,t.value,e)}function rt(t,e,r){let n;const s=o,i=l;l=o=t;try{n=t.fn(e)}catch(p){return t.pure&&(t.state=v,t.owned&&t.owned.forEach(F),t.owned=null),t.updatedAt=r+1,G(p)}finally{l=i,o=s}(!t.updatedAt||t.updatedAt<=r)&&(t.updatedAt!=null&&"observers"in t?j(t,n):t.value=n,t.updatedAt=r)}function D(t,e,r,n=v,s){const i={fn:t,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:e,owner:o,context:o?o.context:null,pure:r};return o===null||o!==X&&(o.owned?o.owned.push(i):o.owned=[i]),i}function R(t){if(t.state===0)return;if(t.state===S)return V(t);if(t.suspense&&P(t.suspense.inFallback))return t.suspense.effects.push(t);const e=[t];for(;(t=t.owner)&&(!t.updatedAt||t.updatedAt<E);)t.state&&e.push(t);for(let r=e.length-1;r>=0;r--)if(t=e[r],t.state===v)A(t);else if(t.state===S){const n=c;c=null,C(()=>V(t,e[0])),c=n}}function C(t,e){if(c)return t();let r=!1;c=[],m?r=!0:m=[],E++;try{const n=t();return nt(r),n}catch(n){r||(m=null),c=null,G(n)}}function nt(t){if(c&&(U(c),c=null),t)return;const e=m;m=null,e.length&&C(()=>K(e))}function U(t){for(let e=0;e<t.length;e++)R(t[e])}function V(t,e){t.state=0;for(let r=0;r<t.sources.length;r+=1){const n=t.sources[r];if(n.sources){const s=n.state;s===v?n!==e&&(!n.updatedAt||n.updatedAt<E)&&R(n):s===S&&V(n,e)}}}function M(t){for(let e=0;e<t.observers.length;e+=1){const r=t.observers[e];r.state||(r.state=S,r.pure?c.push(r):m.push(r),r.observers&&M(r))}}function F(t){let e;if(t.sources)for(;t.sources.length;){const r=t.sources.pop(),n=t.sourceSlots.pop(),s=r.observers;if(s&&s.length){const i=s.pop(),p=r.observerSlots.pop();n<s.length&&(i.sourceSlots[p]=n,s[n]=i,r.observerSlots[n]=p)}}if(t.tOwned){for(e=t.tOwned.length-1;e>=0;e--)F(t.tOwned[e]);delete t.tOwned}if(t.owned){for(e=t.owned.length-1;e>=0;e--)F(t.owned[e]);t.owned=null}if(t.cleanups){for(e=t.cleanups.length-1;e>=0;e--)t.cleanups[e]();t.cleanups=null}t.state=0}function st(t){return t instanceof Error?t:new Error(typeof t=="string"?t:"Unknown error",{cause:t})}function G(t,e=o){throw st(t)}function O(t){if(typeof t=="function"&&!t.length)return O(t());if(Array.isArray(t)){const e=[];for(let r=0;r<t.length;r++){const n=O(t[r]);Array.isArray(n)?e.push.apply(e,n):e.push(n)}return e}return t}function ut(t,e){return function(n){let s;return Z(()=>s=P(()=>(o.context={...o.context,[t]:n.value},et(()=>n.children))),void 0),s}}const _={text(t){return t.value},checkbox(t){return t.checked}},it=t=>(_[t.type]||_.text)(t),Q={text(t,e){t.value=e},checkbox(t,e){t.checked=e}},W=(t,e)=>(Q[t.type]||Q.text)(t,e),d=t=>t instanceof RegExp||typeof t=="string"||typeof t=="number"?t:t.value,b=t=>typeof t=="string"?t:typeof t.message=="string"?t.message:"",ot=(t,e,r={})=>{const n=t[e];if(r.required&&!n)return{type:"required",message:b(r.required)};if(r.min&&Number(n)<Number(d(r.min)))return{type:"min",message:b(r.min)};if(r.max&&Number(n)>Number(d(r.max)))return{type:"max",message:b(r.max)};if(r.minLength&&n.length<d(r.minLength))return{type:"minLength",message:b(r.minLength)};if(r.maxLength&&n.length>d(r.maxLength))return{type:"maxLength",message:b(r.maxLength)};if(r.pattern&&!d(r.pattern).test(n))return{type:"pattern",message:b(r.pattern)};if(r.validate){const s=r.validate(n,t);if(s===!1)return{type:"validate"};if(typeof s=="string")return{type:"validate",message:s}}},lt=({defaultValues:t,mode:e="onInput"})=>{const r={},n={},[s,i]=k(t),[p,q]=k({}),[B,H]=k(!0),N=u=>{const a=n[u],f=ot(s(),u,a);q(f?h=>({...h,[u]:f}):h=>{const y={...h};return delete y[u],y}),H(!Object.keys(p()).length)},ft=()=>{Object.keys(s()).forEach(u=>{N(u)})},pt=(u,a={})=>(n[u]={required:a.required,min:a.min,max:a.max,minLength:a.minLength,maxLength:a.maxLength,pattern:a.pattern,validate:a.validate},{name:u,onInput(f){if(e==="onInput"){const h=f.target.value;i(y=>({...y,[u]:h})),N(u)}},onChange(f){if(e==="onChange"||e==="onInput"){const h=it(f.target);i(y=>({...y,[u]:h})),N(u)}},ref(f){r[u]||(r[u]=f,f&&W(f,s()[u]))}}),J=u=>u?s()[u]:s();return{values:s,errors:p,isValid:B,register:pt,getValues:J,setValue:(u,a)=>{i(h=>({...h,[u]:a}));const f=r[u];f&&W(f,a)},onSubmit:u=>a=>{a.preventDefault(),ft(),B()&&u(J())},reset:(u={})=>{i(()=>({...t,...u})),q({}),H(!0)}}},z=$({}),ct=t=>React.createElement(z.Provider,{value:t.form},t.children),at=()=>{const t=tt(z);if(!t)throw new Error("useFormContext: cannot find a FormProvider");return t};g.FormProvider=ct,g.useForm=lt,g.useFormContext=at,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,6 @@
1
+ export type InputEvent = Event & {
2
+ target: HTMLInputElement;
3
+ };
1
4
  export type ChangeEvent = Event & {
2
5
  target: HTMLInputElement;
3
6
  };
@@ -1 +1,32 @@
1
+ import { Accessor } from 'solid-js';
2
+ import { FieldPath, FieldPathValue, Path } from './path';
3
+ import { Rules } from './validate';
4
+ import { FieldErrors } from './errors';
5
+ import { InputEvent, ChangeEvent } from './event';
1
6
  export type FormValues = Record<string, any>;
7
+ type RegisterReturn<F extends FormValues> = {
8
+ name: Path<F>;
9
+ ref(ref: HTMLInputElement | null): void;
10
+ onInput(event: InputEvent): void;
11
+ onChange(event: ChangeEvent): void;
12
+ };
13
+ export type Register<T extends FormValues> = (name: Path<T>, options?: Rules<T, Path<T>>) => RegisterReturn<T>;
14
+ export type GetValues<F extends FormValues> = {
15
+ (): F;
16
+ <N extends FieldPath<F>>(name: N): FieldPathValue<F, N>;
17
+ };
18
+ export type SetValue<F extends FormValues> = (name: Path<F>, value: FieldPathValue<F, Path<F>>) => void;
19
+ type SubmitCallback<F extends FormValues> = (values: F) => void;
20
+ export type OnSubmit<F extends FormValues> = (submit: SubmitCallback<F>) => (event: SubmitEvent) => void;
21
+ export type Reset<F extends FormValues> = (newDefaultValues?: Partial<F>) => void;
22
+ export type UseFormReturn<F extends FormValues = FormValues> = {
23
+ values: Accessor<F>;
24
+ errors: Accessor<FieldErrors<F>>;
25
+ isValid: Accessor<boolean>;
26
+ register: Register<F>;
27
+ getValues: GetValues<F>;
28
+ setValue: SetValue<F>;
29
+ onSubmit: OnSubmit<F>;
30
+ reset: Reset<F>;
31
+ };
32
+ export {};
@@ -18,4 +18,7 @@ type ArrayPathInternal<T, TraversedTypes = T> = T extends ReadonlyArray<infer V>
18
18
  export type ArrayPath<T> = T extends any ? ArrayPathInternal<T> : never;
19
19
  export type PathValue<T, P extends Path<T> | ArrayPath<T>> = T extends any ? P extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? PathValue<V, R & Path<V>> : never : never : P extends keyof T ? T[P] : P extends `${ArrayKey}` ? T extends ReadonlyArray<infer V> ? V : never : never : never;
20
20
  export type FieldPathValue<F extends FormValues, P extends FieldPath<F>> = PathValue<F, P>;
21
+ export type FieldPathValues<F extends FormValues, P extends FieldPath<F>[] | readonly FieldPath<F>[]> = {} & {
22
+ [K in keyof P]: FieldPathValue<F, P[K] & FieldPath<F>>;
23
+ };
21
24
  export {};
@@ -1,26 +1,7 @@
1
- import { FormValues } from './types/form';
2
- import { Path } from './types/path';
3
- import { FieldErrors } from './types/errors';
4
- import { ChangeEvent } from './types/event';
5
- import { Rules } from './types/validate';
1
+ import { FormValues, UseFormReturn } from './types/form';
6
2
  type UseFormArg<T extends FormValues> = {
7
3
  defaultValues: T;
8
4
  mode?: "onInput" | "onChange" | "onSubmit";
9
5
  };
10
- type SubmitCallback<T extends FormValues> = (values: T) => void;
11
- export declare const useForm: <T extends FormValues>({ defaultValues, mode, }: UseFormArg<T>) => {
12
- values: import('solid-js').Accessor<T>;
13
- errors: import('solid-js').Accessor<FieldErrors<T>>;
14
- isValid: import('solid-js').Accessor<boolean>;
15
- register: (name: Path<T>, options?: Rules<T, Path<T>>) => {
16
- name: Path<T>;
17
- onInput(event: InputEvent): void;
18
- onChange(event: ChangeEvent): void;
19
- ref: (ref: HTMLInputElement | null) => void;
20
- };
21
- getValues: (name?: Path<T>) => T | T[Path<T>];
22
- setValue: (name: Path<T>, value: any) => void;
23
- onSubmit: (submit: SubmitCallback<T>) => (event: SubmitEvent) => void;
24
- reset: (newDefaultValues?: Partial<T>) => void;
25
- };
6
+ export declare const useForm: <F extends FormValues>({ defaultValues, mode, }: UseFormArg<F>) => UseFormReturn<F>;
26
7
  export {};
@@ -0,0 +1,2 @@
1
+ import { FormValues, UseFormReturn } from './types/form';
2
+ export declare const useFormContext: <T extends FormValues>() => UseFormReturn<T>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-hook-form",
3
- "version": "1.1.4",
3
+ "version": "1.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/main.umd.cjs",
6
6
  "module": "./dist/main.js",
@@ -24,7 +24,7 @@
24
24
  "vite": "^6.0.11",
25
25
  "vite-plugin-dts": "^4.5.0",
26
26
  "vite-plugin-solid": "^2.11.6",
27
- "vitest": "^3.0.5"
27
+ "vitest": "^3.1.1"
28
28
  },
29
29
  "scripts": {
30
30
  "start": "vite --config vite.demo",
package/dist/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sources":["../node_modules/solid-js/dist/solid.js","../src/logic/get_value.ts","../src/logic/set_value.ts","../src/logic/validate.ts","../src/use_form.ts"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, castError(p.value), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined\n ? value\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() =>\n (Comp = comp())\n ? untrack(() => {\n if (IS_DEV);\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n : \"\"\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(\n () => (prevFunc() ? undefined : mp.when),\n undefined,\n undefined\n );\n const condition = mp.keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(\n () => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n mp.keyed\n ? conditionValue()\n : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n }\n )\n )\n : child;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */ createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","type GetValueStrategy = (element: HTMLInputElement) => any;\n\nconst getValueStrategies: Record<string, GetValueStrategy> = {\n text(element) {\n return element.value;\n },\n checkbox(element) {\n return element.checked;\n },\n};\n\nexport const executeGetValueStrategy: GetValueStrategy = (element) => {\n const strategy = getValueStrategies[element.type] || getValueStrategies.text;\n\n return strategy(element);\n};\n","type SetValueStrategy = (element: HTMLInputElement, value: any) => void;\n\nconst setValueStrategies: Record<string, SetValueStrategy> = {\n text(element, value) {\n element.value = value;\n },\n checkbox(element, value) {\n element.checked = value;\n },\n};\n\nexport const executeSetValueStrategy: SetValueStrategy = (element, value) => {\n const strategy = setValueStrategies[element.type] || setValueStrategies.text;\n\n return strategy(element, value);\n};\n","import { FieldError } from \"../types/errors\";\nimport { FormValues } from \"../types/form\";\nimport { Path } from \"../types/path\";\nimport { Rules, ValidationRule } from \"../types/validate\";\n\nconst getRuleValue = (rule: ValidationRule<any>) => {\n if (rule instanceof RegExp) {\n return rule;\n }\n\n if (typeof rule === \"string\" || typeof rule === \"number\") {\n return rule;\n }\n\n return rule.value;\n};\n\nconst getRuleMessage = (rule: ValidationRule<any>) => {\n if (typeof rule === \"string\") {\n return rule;\n }\n\n if (typeof rule.message === \"string\") {\n return rule.message;\n }\n\n return \"\";\n};\n\nexport const validate = <F extends FormValues>(\n values: F,\n name: Path<F>,\n rules: Rules<F, Path<F>> = {}\n): FieldError | undefined => {\n const value = values[name];\n\n if (rules.required && !value) {\n return { type: \"required\", message: getRuleMessage(rules.required) };\n }\n\n if (rules.min && Number(value) < Number(getRuleValue(rules.min))) {\n return { type: \"min\", message: getRuleMessage(rules.min) };\n }\n\n if (rules.max && Number(value) > Number(getRuleValue(rules.max))) {\n return { type: \"max\", message: getRuleMessage(rules.max) };\n }\n\n if (rules.minLength && value.length < getRuleValue(rules.minLength)) {\n return { type: \"minLength\", message: getRuleMessage(rules.minLength) };\n }\n\n if (rules.maxLength && value.length > getRuleValue(rules.maxLength)) {\n return { type: \"maxLength\", message: getRuleMessage(rules.maxLength) };\n }\n\n if (rules.pattern && !getRuleValue(rules.pattern).test(value)) {\n return { type: \"pattern\", message: getRuleMessage(rules.pattern) };\n }\n\n if (rules.validate) {\n const message = rules.validate(value, values);\n\n if (message === false) {\n return { type: \"validate\" };\n }\n\n if (typeof message === \"string\") {\n return { type: \"validate\", message };\n }\n }\n};\n","import { createSignal } from \"solid-js\";\nimport { FormValues } from \"./types/form\";\nimport { Path } from \"./types/path\";\nimport { FieldErrors } from \"./types/errors\";\nimport { ChangeEvent } from \"./types/event\";\nimport { executeGetValueStrategy } from \"./logic/get_value\";\nimport { executeSetValueStrategy } from \"./logic/set_value\";\nimport { Rules } from \"./types/validate\";\nimport { validate } from \"./logic/validate\";\n\ntype FormFields = Record<string, HTMLInputElement | null>;\n\ntype UseFormArg<T extends FormValues> = {\n defaultValues: T;\n mode?: \"onInput\" | \"onChange\" | \"onSubmit\";\n};\n\ntype SubmitCallback<T extends FormValues> = (values: T) => void;\n\nexport const useForm = <T extends FormValues>({\n defaultValues,\n mode = \"onInput\",\n}: UseFormArg<T>) => {\n const fields: FormFields = {};\n const rules: Record<string, Rules<T, Path<T>>> = {};\n\n const [values, setValues] = createSignal<T>(defaultValues);\n const [errors, setErrors] = createSignal<FieldErrors<T>>({});\n const [isValid, setIsValid] = createSignal<boolean>(true);\n\n const validateField = (name: Path<T>) => {\n // const field = fields[name];\n const rule = rules[name];\n\n // const value = field && executeGetValueStrategy(field);\n\n const error = validate(values(), name, rule);\n\n if (error) {\n setErrors((prev) => ({ ...prev, [name]: error }));\n } else {\n setErrors((prev) => {\n const errors = { ...prev };\n\n delete errors[name];\n return errors;\n });\n }\n\n setIsValid(!Object.keys(errors()).length);\n };\n\n const validateAllFields = () => {\n Object.keys(values()).forEach((key) => {\n validateField(key as Path<T>);\n });\n };\n\n const register = (name: Path<T>, options?: Rules<T, Path<T>>) => {\n if (options) {\n rules[name] = {\n required: options.required,\n min: options.min,\n max: options.max,\n minLength: options.minLength,\n maxLength: options.maxLength,\n pattern: options.pattern,\n validate: options.validate,\n };\n }\n\n return {\n name,\n // value: values()[name],\n onInput(event: InputEvent) {\n if (mode === \"onInput\") {\n const newValue = (event.target as HTMLInputElement).value;\n\n setValues((prev) => ({ ...prev, [name]: newValue }));\n validateField(name);\n }\n },\n onChange(event: ChangeEvent) {\n if (mode === \"onChange\" || mode === \"onInput\") {\n const value = executeGetValueStrategy(event.target);\n\n setValues((prev) => ({ ...prev, [name]: value }));\n validateField(name);\n }\n },\n ref: (ref: HTMLInputElement | null) => {\n const field = fields[name];\n\n if (field) {\n return;\n }\n\n fields[name] = ref;\n\n if (ref) {\n executeSetValueStrategy(ref, values()[name]);\n }\n },\n };\n };\n\n const getValues = (name?: Path<T>) => {\n if (name) {\n return values()[name];\n }\n\n return values();\n };\n\n const setValue = (name: Path<T>, value: any) => {\n setValues((prev) => ({ ...prev, [name]: value }));\n\n const field = fields[name];\n\n if (field) {\n executeSetValueStrategy(field, value);\n }\n };\n\n const onSubmit = (submit: SubmitCallback<T>) => {\n return (event: SubmitEvent) => {\n event.preventDefault();\n validateAllFields();\n\n if (isValid()) {\n submit(getValues());\n }\n };\n };\n\n const reset = (newDefaultValues?: Partial<T>) => {\n setValues(() => ({\n ...defaultValues,\n ...newDefaultValues,\n }));\n setErrors({});\n setIsValid(true);\n };\n\n return {\n values,\n errors,\n isValid,\n register,\n getValues,\n setValue,\n onSubmit,\n reset,\n };\n};\n"],"names":["equalFn","a","b","signalOptions","runEffects","runQueue","STALE","PENDING","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createSignal","value","options","setter","writeSignal","readSignal","untrack","fn","listener","updateComputation","updates","runUpdates","lookUpstream","sSlot","node","isComp","current","i","o","TransitionRunning","markDownstream","cleanNode","time","runComputation","nextValue","owner","err","handleError","runTop","ancestors","init","wait","res","completeUpdates","queue","ignore","source","state","index","obs","n","s","castError","getValueStrategies","element","executeGetValueStrategy","setValueStrategies","executeSetValueStrategy","getRuleValue","rule","getRuleMessage","validate","values","name","rules","message","useForm","defaultValues","mode","fields","setValues","errors","setErrors","isValid","setIsValid","validateField","error","prev","validateAllFields","key","register","event","newValue","ref","getValues","field","submit","newDefaultValues"],"mappings":"AAmJA,MAAMA,IAAU,CAACC,GAAGC,MAAMD,MAAMC,GAK1BC,IAAgB;AAAA,EACpB,QAAQH;AACV;AAEA,IAAII,IAAaC;AACjB,MAAMC,IAAQ,GACRC,IAAU;AAQhB,IAAIC,IAAQ;AACZ,IAAIC,IAAa,MAEbC,IAAuB,MACvBC,IAAW,MACXC,IAAU,MACVC,IAAU,MACVC,IAAY;AAwBhB,SAASC,EAAaC,GAAOC,GAAS;AACpC,EAAAA,IAAUA,IAAU,OAAO,OAAO,CAAA,GAAId,GAAec,CAAO,IAAId;AAChE,QAAM,IAAI;AAAA,IACR,OAAAa;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,IACf,YAAYC,EAAQ,UAAU;AAAA,EAC/B,GACKC,IAAS,CAAAF,OACT,OAAOA,KAAU,eAEdA,IAAQA,EAAM,EAAE,KAAK,IAErBG,EAAY,GAAGH,CAAK;AAE7B,SAAO,CAACI,EAAW,KAAK,CAAC,GAAGF,CAAM;AACpC;AAoRA,SAASG,EAAQC,GAAI;AACnB,MAA6BX,MAAa,KAAM,QAAOW,EAAI;AAC3D,QAAMC,IAAWZ;AACjB,EAAAA,IAAW;AACX,MAAI;AAEF,WAAOW,EAAI;AAAA,EACf,UAAY;AACR,IAAAX,IAAWY;AAAA,EACf;AACA;AA6JA,SAASH,IAAa;AAEpB,MAAI,KAAK,WAA8C,KAAK;AAC1D,QAAuC,KAAK,UAAWd,EAAO,CAAAkB,EAAkB,IAAI;AAAA,SAC/E;AACH,YAAMC,IAAUb;AAChB,MAAAA,IAAU,MACVc,EAAW,MAAMC,EAAa,IAAI,CAAQ,GAC1Cf,IAAUa;AAAA,IAChB;AAEE,MAAId,GAAU;AACZ,UAAMiB,IAAQ,KAAK,YAAY,KAAK,UAAU,SAAS;AACvD,IAAKjB,EAAS,WAIZA,EAAS,QAAQ,KAAK,IAAI,GAC1BA,EAAS,YAAY,KAAKiB,CAAK,MAJ/BjB,EAAS,UAAU,CAAC,IAAI,GACxBA,EAAS,cAAc,CAACiB,CAAK,IAK1B,KAAK,aAIR,KAAK,UAAU,KAAKjB,CAAQ,GAC5B,KAAK,cAAc,KAAKA,EAAS,QAAQ,SAAS,CAAC,MAJnD,KAAK,YAAY,CAACA,CAAQ,GAC1B,KAAK,gBAAgB,CAACA,EAAS,QAAQ,SAAS,CAAC;AAAA,EAKvD;AAEE,SAAO,KAAK;AACd;AACA,SAASQ,EAAYU,GAAMb,GAAOc,GAAQ;AACxC,MAAIC,IAC+EF,EAAK;AACxF,UAAI,CAACA,EAAK,cAAc,CAACA,EAAK,WAAWE,GAASf,CAAK,OAQ9Ca,EAAK,QAAQb,GAChBa,EAAK,aAAaA,EAAK,UAAU,UACnCH,EAAW,MAAM;AACf,aAASM,IAAI,GAAGA,IAAIH,EAAK,UAAU,QAAQG,KAAK,GAAG;AACjD,YAAMC,IAAIJ,EAAK,UAAUG,CAAC,GACpBE,IAAoBzB,KAAcA,EAAW;AACnD,MAAIyB,KAAqBzB,EAAW,SAAS,IAAIwB,CAAC,IAC9CC,IAAoB,CAACD,EAAE,SAAS,CAACA,EAAE,WACjCA,EAAE,OAAMrB,EAAQ,KAAKqB,CAAC,IACrBpB,EAAQ,KAAKoB,CAAC,GACfA,EAAE,aAAWE,EAAeF,CAAC,IAE9BC,MAAmBD,EAAE,QAAQ3B;AAAA,IAE5C;AACQ,QAAIM,EAAQ,SAAS;AACnB,YAAAA,IAAU,CAAE,GAEN,IAAI,MAAO;AAAA,EAE3B,CAAc,IAGLI;AACT;AACA,SAASQ,EAAkBK,GAAM;AAC/B,MAAI,CAACA,EAAK,GAAI;AACd,EAAAO,EAAUP,CAAI;AACd,QAAMQ,IAAOvB;AACb,EAAAwB;AAAA,IACET;AAAA,IACiFA,EAAK;AAAA,IACtFQ;AAAA,EACD;AAWH;AACA,SAASC,EAAeT,GAAMb,GAAOqB,GAAM;AACzC,MAAIE;AACJ,QAAMC,IAAQhC,GACZe,IAAWZ;AACb,EAAAA,IAAWH,IAAQqB;AACnB,MAAI;AACF,IAAAU,IAAYV,EAAK,GAAGb,CAAK;AAAA,EAC1B,SAAQyB,GAAK;AACZ,WAAIZ,EAAK,SAMLA,EAAK,QAAQvB,GACbuB,EAAK,SAASA,EAAK,MAAM,QAAQO,CAAS,GAC1CP,EAAK,QAAQ,OAGjBA,EAAK,YAAYQ,IAAO,GACjBK,EAAYD,CAAG;AAAA,EAC1B,UAAY;AACR,IAAA9B,IAAWY,GACXf,IAAQgC;AAAA,EACZ;AACE,GAAI,CAACX,EAAK,aAAaA,EAAK,aAAaQ,OACnCR,EAAK,aAAa,QAAQ,eAAeA,IAC3CV,EAAYU,GAAMU,CAAe,IAI5BV,EAAK,QAAQU,GACpBV,EAAK,YAAYQ;AAErB;AA4CA,SAASM,EAAOd,GAAM;AAEpB,MAAuCA,EAAK,UAAW,EAAG;AAC1D,MAAuCA,EAAK,UAAWtB,EAAS,QAAOoB,EAAaE,CAAI;AACxF,MAAIA,EAAK,YAAYR,EAAQQ,EAAK,SAAS,UAAU,EAAG,QAAOA,EAAK,SAAS,QAAQ,KAAKA,CAAI;AAC9F,QAAMe,IAAY,CAACf,CAAI;AACvB,UAAQA,IAAOA,EAAK,WAAW,CAACA,EAAK,aAAaA,EAAK,YAAYf;AAEjE,IAAsCe,EAAK,SAAOe,EAAU,KAAKf,CAAI;AAEvE,WAASG,IAAIY,EAAU,SAAS,GAAGZ,KAAK,GAAGA;AASzC,QARAH,IAAOe,EAAUZ,CAAC,GAQqBH,EAAK,UAAWvB;AACrD,MAAAkB,EAAkBK,CAAI;AAAA,aACsBA,EAAK,UAAWtB,GAAS;AACrE,YAAMkB,IAAUb;AAChB,MAAAA,IAAU,MACVc,EAAW,MAAMC,EAAaE,GAAMe,EAAU,CAAC,CAAC,CAAQ,GACxDhC,IAAUa;AAAA,IAChB;AAEA;AACA,SAASC,EAAWJ,GAAIuB,GAAM;AAC5B,MAAIjC,EAAS,QAAOU,EAAI;AACxB,MAAIwB,IAAO;AACA,EAAAlC,IAAU,CAAE,GACnBC,IAASiC,IAAO,KACfjC,IAAU,CAAE,GACjBC;AACA,MAAI;AACF,UAAMiC,IAAMzB,EAAI;AAChB,WAAA0B,EAAgBF,CAAI,GACbC;AAAA,EACR,SAAQN,GAAK;AACZ,IAAKK,MAAMjC,IAAU,OACrBD,IAAU,MACV8B,EAAYD,CAAG;AAAA,EACnB;AACA;AACA,SAASO,EAAgBF,GAAM;AAM7B,MALIlC,MAEGP,EAASO,CAAO,GACrBA,IAAU,OAERkC,EAAM;AAmCV,QAAM,IAAIjC;AACV,EAAAA,IAAU,MACN,EAAE,UAAQa,EAAW,MAAMtB,EAAW,CAAC,CAAQ;AAErD;AACA,SAASC,EAAS4C,GAAO;AACvB,WAASjB,IAAI,GAAGA,IAAIiB,EAAM,QAAQjB,IAAK,CAAAW,EAAOM,EAAMjB,CAAC,CAAC;AACxD;AAyCA,SAASL,EAAaE,GAAMqB,GAAQ;AAG7B,EAAArB,EAAK,QAAQ;AAClB,WAASG,IAAI,GAAGA,IAAIH,EAAK,QAAQ,QAAQG,KAAK,GAAG;AAC/C,UAAMmB,IAAStB,EAAK,QAAQG,CAAC;AAC7B,QAAImB,EAAO,SAAS;AAClB,YAAMC,IAA4CD,EAAO;AACzD,MAAIC,MAAU9C,IACR6C,MAAWD,MAAW,CAACC,EAAO,aAAaA,EAAO,YAAYrC,MAChE6B,EAAOQ,CAAM,IACNC,MAAU7C,KAASoB,EAAawB,GAAQD,CAAM;AAAA,IAC/D;AAAA,EACA;AACA;AACA,SAASf,EAAeN,GAAM;AAE5B,WAASG,IAAI,GAAGA,IAAIH,EAAK,UAAU,QAAQG,KAAK,GAAG;AACjD,UAAMC,IAAIJ,EAAK,UAAUG,CAAC;AAC1B,IAAqCC,EAAE,UAEhCA,EAAE,QAAQ1B,GACX0B,EAAE,OAAMrB,EAAQ,KAAKqB,CAAC,IACrBpB,EAAQ,KAAKoB,CAAC,GACnBA,EAAE,aAAaE,EAAeF,CAAC;AAAA,EAErC;AACA;AACA,SAASG,EAAUP,GAAM;AACvB,MAAIG;AACJ,MAAIH,EAAK;AACP,WAAOA,EAAK,QAAQ,UAAQ;AAC1B,YAAMsB,IAAStB,EAAK,QAAQ,IAAK,GAC/BwB,IAAQxB,EAAK,YAAY,IAAK,GAC9ByB,IAAMH,EAAO;AACf,UAAIG,KAAOA,EAAI,QAAQ;AACrB,cAAMC,IAAID,EAAI,IAAK,GACjBE,IAAIL,EAAO,cAAc,IAAK;AAChC,QAAIE,IAAQC,EAAI,WACdC,EAAE,YAAYC,CAAC,IAAIH,GACnBC,EAAID,CAAK,IAAIE,GACbJ,EAAO,cAAcE,CAAK,IAAIG;AAAA,MAExC;AAAA,IACA;AAEE,MAAI3B,EAAK,QAAQ;AACf,SAAKG,IAAIH,EAAK,OAAO,SAAS,GAAGG,KAAK,GAAGA,IAAK,CAAAI,EAAUP,EAAK,OAAOG,CAAC,CAAC;AACtE,WAAOH,EAAK;AAAA,EAChB;AAGS,MAAIA,EAAK,OAAO;AACrB,SAAKG,IAAIH,EAAK,MAAM,SAAS,GAAGG,KAAK,GAAGA,IAAK,CAAAI,EAAUP,EAAK,MAAMG,CAAC,CAAC;AACpE,IAAAH,EAAK,QAAQ;AAAA,EACjB;AACE,MAAIA,EAAK,UAAU;AACjB,SAAKG,IAAIH,EAAK,SAAS,SAAS,GAAGG,KAAK,GAAGA,IAAK,CAAAH,EAAK,SAASG,CAAC,EAAG;AAClE,IAAAH,EAAK,WAAW;AAAA,EACpB;AAEO,EAAAA,EAAK,QAAQ;AACpB;AAUA,SAAS4B,EAAUhB,GAAK;AACtB,SAAIA,aAAe,QAAcA,IAC1B,IAAI,MAAM,OAAOA,KAAQ,WAAWA,IAAM,iBAAiB;AAAA,IAChE,OAAOA;AAAA,EACX,CAAG;AACH;AAQA,SAASC,EAAYD,GAAKD,IAAQhC,GAAO;AAG7B,QADIiD,EAAUhB,CAAG;AAU7B;AC3hCA,MAAMiB,IAAuD;AAAA,EAC3D,KAAKC,GAAS;AACZ,WAAOA,EAAQ;AAAA,EACjB;AAAA,EACA,SAASA,GAAS;AAChB,WAAOA,EAAQ;AAAA,EAAA;AAEnB,GAEaC,IAA4C,CAACD,OACvCD,EAAmBC,EAAQ,IAAI,KAAKD,EAAmB,MAExDC,CAAO,GCZnBE,IAAuD;AAAA,EAC3D,KAAKF,GAAS3C,GAAO;AACnB,IAAA2C,EAAQ,QAAQ3C;AAAA,EAClB;AAAA,EACA,SAAS2C,GAAS3C,GAAO;AACvB,IAAA2C,EAAQ,UAAU3C;AAAA,EAAA;AAEtB,GAEa8C,IAA4C,CAACH,GAAS3C,OAChD6C,EAAmBF,EAAQ,IAAI,KAAKE,EAAmB,MAExDF,GAAS3C,CAAK,GCT1B+C,IAAe,CAACC,MAChBA,aAAgB,UAIhB,OAAOA,KAAS,YAAY,OAAOA,KAAS,WACvCA,IAGFA,EAAK,OAGRC,IAAiB,CAACD,MAClB,OAAOA,KAAS,WACXA,IAGL,OAAOA,EAAK,WAAY,WACnBA,EAAK,UAGP,IAGIE,IAAW,CACtBC,GACAC,GACAC,IAA2B,CAAA,MACA;AACrB,QAAArD,IAAQmD,EAAOC,CAAI;AAErB,MAAAC,EAAM,YAAY,CAACrD;AACrB,WAAO,EAAE,MAAM,YAAY,SAASiD,EAAeI,EAAM,QAAQ,EAAE;AAGjE,MAAAA,EAAM,OAAO,OAAOrD,CAAK,IAAI,OAAO+C,EAAaM,EAAM,GAAG,CAAC;AAC7D,WAAO,EAAE,MAAM,OAAO,SAASJ,EAAeI,EAAM,GAAG,EAAE;AAGvD,MAAAA,EAAM,OAAO,OAAOrD,CAAK,IAAI,OAAO+C,EAAaM,EAAM,GAAG,CAAC;AAC7D,WAAO,EAAE,MAAM,OAAO,SAASJ,EAAeI,EAAM,GAAG,EAAE;AAG3D,MAAIA,EAAM,aAAarD,EAAM,SAAS+C,EAAaM,EAAM,SAAS;AAChE,WAAO,EAAE,MAAM,aAAa,SAASJ,EAAeI,EAAM,SAAS,EAAE;AAGvE,MAAIA,EAAM,aAAarD,EAAM,SAAS+C,EAAaM,EAAM,SAAS;AAChE,WAAO,EAAE,MAAM,aAAa,SAASJ,EAAeI,EAAM,SAAS,EAAE;AAGnE,MAAAA,EAAM,WAAW,CAACN,EAAaM,EAAM,OAAO,EAAE,KAAKrD,CAAK;AAC1D,WAAO,EAAE,MAAM,WAAW,SAASiD,EAAeI,EAAM,OAAO,EAAE;AAGnE,MAAIA,EAAM,UAAU;AAClB,UAAMC,IAAUD,EAAM,SAASrD,GAAOmD,CAAM;AAE5C,QAAIG,MAAY;AACP,aAAA,EAAE,MAAM,WAAW;AAGxB,QAAA,OAAOA,KAAY;AACd,aAAA,EAAE,MAAM,YAAY,SAAAA,EAAQ;AAAA,EACrC;AAEJ,GCpDaC,KAAU,CAAuB;AAAA,EAC5C,eAAAC;AAAA,EACA,MAAAC,IAAO;AACT,MAAqB;AACnB,QAAMC,IAAqB,CAAC,GACtBL,IAA2C,CAAC,GAE5C,CAACF,GAAQQ,CAAS,IAAI5D,EAAgByD,CAAa,GACnD,CAACI,GAAQC,CAAS,IAAI9D,EAA6B,CAAA,CAAE,GACrD,CAAC+D,GAASC,CAAU,IAAIhE,EAAsB,EAAI,GAElDiE,IAAgB,CAACZ,MAAkB;AAEjC,UAAAJ,IAAOK,EAAMD,CAAI,GAIjBa,IAAQf,EAASC,EAAO,GAAGC,GAAMJ,CAAI;AAE3C,IACYa,EADRI,IACQ,CAACC,OAAU,EAAE,GAAGA,GAAM,CAACd,CAAI,GAAGa,EAAA,KAE9B,CAACC,MAAS;AACZN,YAAAA,IAAS,EAAE,GAAGM,EAAK;AAEzB,oBAAON,EAAOR,CAAI,GACXQ;AAAAA,IAAA,CANuC,GAUlDG,EAAW,CAAC,OAAO,KAAKH,EAAQ,CAAA,EAAE,MAAM;AAAA,EAC1C,GAEMO,IAAoB,MAAM;AAC9B,WAAO,KAAKhB,EAAO,CAAC,EAAE,QAAQ,CAACiB,MAAQ;AACrC,MAAAJ,EAAcI,CAAc;AAAA,IAAA,CAC7B;AAAA,EACH,GAEMC,IAAW,CAACjB,GAAenD,OAC3BA,MACFoD,EAAMD,CAAI,IAAI;AAAA,IACZ,UAAUnD,EAAQ;AAAA,IAClB,KAAKA,EAAQ;AAAA,IACb,KAAKA,EAAQ;AAAA,IACb,WAAWA,EAAQ;AAAA,IACnB,WAAWA,EAAQ;AAAA,IACnB,SAASA,EAAQ;AAAA,IACjB,UAAUA,EAAQ;AAAA,EACpB,IAGK;AAAA,IACL,MAAAmD;AAAA;AAAA,IAEA,QAAQkB,GAAmB;AACzB,UAAIb,MAAS,WAAW;AAChB,cAAAc,IAAYD,EAAM,OAA4B;AAE1C,QAAAX,EAAA,CAACO,OAAU,EAAE,GAAGA,GAAM,CAACd,CAAI,GAAGmB,EAAA,EAAW,GACnDP,EAAcZ,CAAI;AAAA,MAAA;AAAA,IAEtB;AAAA,IACA,SAASkB,GAAoB;AACvB,UAAAb,MAAS,cAAcA,MAAS,WAAW;AACvC,cAAAzD,IAAQ4C,EAAwB0B,EAAM,MAAM;AAExC,QAAAX,EAAA,CAACO,OAAU,EAAE,GAAGA,GAAM,CAACd,CAAI,GAAGpD,EAAA,EAAQ,GAChDgE,EAAcZ,CAAI;AAAA,MAAA;AAAA,IAEtB;AAAA,IACA,KAAK,CAACoB,MAAiC;AAGrC,MAFcd,EAAON,CAAI,MAMzBM,EAAON,CAAI,IAAIoB,GAEXA,KACF1B,EAAwB0B,GAAKrB,EAAS,EAAAC,CAAI,CAAC;AAAA,IAC7C;AAAA,EAEJ,IAGIqB,IAAY,CAACrB,MACbA,IACKD,IAASC,CAAI,IAGfD,EAAO;AAiCT,SAAA;AAAA,IACL,QAAAA;AAAA,IACA,QAAAS;AAAA,IACA,SAAAE;AAAA,IACA,UAAAO;AAAA,IACA,WAAAI;AAAA,IACA,UApCe,CAACrB,GAAepD,MAAe;AACpC,MAAA2D,EAAA,CAACO,OAAU,EAAE,GAAGA,GAAM,CAACd,CAAI,GAAGpD,EAAA,EAAQ;AAE1C,YAAA0E,IAAQhB,EAAON,CAAI;AAEzB,MAAIsB,KACF5B,EAAwB4B,GAAO1E,CAAK;AAAA,IAExC;AAAA,IA6BE,UA3Be,CAAC2E,MACT,CAACL,MAAuB;AAC7B,MAAAA,EAAM,eAAe,GACHH,EAAA,GAEdL,OACFa,EAAOF,GAAW;AAAA,IAEtB;AAAA,IAoBA,OAjBY,CAACG,MAAkC;AAC/C,MAAAjB,EAAU,OAAO;AAAA,QACf,GAAGH;AAAA,QACH,GAAGoB;AAAA,MAAA,EACH,GACFf,EAAU,CAAA,CAAE,GACZE,EAAW,EAAI;AAAA,IACjB;AAAA,EAWA;AACF;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.umd.cjs","sources":["../node_modules/solid-js/dist/solid.js","../src/logic/get_value.ts","../src/logic/set_value.ts","../src/logic/validate.ts","../src/use_form.ts"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, castError(p.value), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined\n ? value\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() =>\n (Comp = comp())\n ? untrack(() => {\n if (IS_DEV);\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n : \"\"\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(\n () => (prevFunc() ? undefined : mp.when),\n undefined,\n undefined\n );\n const condition = mp.keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(\n () => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n mp.keyed\n ? conditionValue()\n : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n }\n )\n )\n : child;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */ createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","type GetValueStrategy = (element: HTMLInputElement) => any;\n\nconst getValueStrategies: Record<string, GetValueStrategy> = {\n text(element) {\n return element.value;\n },\n checkbox(element) {\n return element.checked;\n },\n};\n\nexport const executeGetValueStrategy: GetValueStrategy = (element) => {\n const strategy = getValueStrategies[element.type] || getValueStrategies.text;\n\n return strategy(element);\n};\n","type SetValueStrategy = (element: HTMLInputElement, value: any) => void;\n\nconst setValueStrategies: Record<string, SetValueStrategy> = {\n text(element, value) {\n element.value = value;\n },\n checkbox(element, value) {\n element.checked = value;\n },\n};\n\nexport const executeSetValueStrategy: SetValueStrategy = (element, value) => {\n const strategy = setValueStrategies[element.type] || setValueStrategies.text;\n\n return strategy(element, value);\n};\n","import { FieldError } from \"../types/errors\";\nimport { FormValues } from \"../types/form\";\nimport { Path } from \"../types/path\";\nimport { Rules, ValidationRule } from \"../types/validate\";\n\nconst getRuleValue = (rule: ValidationRule<any>) => {\n if (rule instanceof RegExp) {\n return rule;\n }\n\n if (typeof rule === \"string\" || typeof rule === \"number\") {\n return rule;\n }\n\n return rule.value;\n};\n\nconst getRuleMessage = (rule: ValidationRule<any>) => {\n if (typeof rule === \"string\") {\n return rule;\n }\n\n if (typeof rule.message === \"string\") {\n return rule.message;\n }\n\n return \"\";\n};\n\nexport const validate = <F extends FormValues>(\n values: F,\n name: Path<F>,\n rules: Rules<F, Path<F>> = {}\n): FieldError | undefined => {\n const value = values[name];\n\n if (rules.required && !value) {\n return { type: \"required\", message: getRuleMessage(rules.required) };\n }\n\n if (rules.min && Number(value) < Number(getRuleValue(rules.min))) {\n return { type: \"min\", message: getRuleMessage(rules.min) };\n }\n\n if (rules.max && Number(value) > Number(getRuleValue(rules.max))) {\n return { type: \"max\", message: getRuleMessage(rules.max) };\n }\n\n if (rules.minLength && value.length < getRuleValue(rules.minLength)) {\n return { type: \"minLength\", message: getRuleMessage(rules.minLength) };\n }\n\n if (rules.maxLength && value.length > getRuleValue(rules.maxLength)) {\n return { type: \"maxLength\", message: getRuleMessage(rules.maxLength) };\n }\n\n if (rules.pattern && !getRuleValue(rules.pattern).test(value)) {\n return { type: \"pattern\", message: getRuleMessage(rules.pattern) };\n }\n\n if (rules.validate) {\n const message = rules.validate(value, values);\n\n if (message === false) {\n return { type: \"validate\" };\n }\n\n if (typeof message === \"string\") {\n return { type: \"validate\", message };\n }\n }\n};\n","import { createSignal } from \"solid-js\";\nimport { FormValues } from \"./types/form\";\nimport { Path } from \"./types/path\";\nimport { FieldErrors } from \"./types/errors\";\nimport { ChangeEvent } from \"./types/event\";\nimport { executeGetValueStrategy } from \"./logic/get_value\";\nimport { executeSetValueStrategy } from \"./logic/set_value\";\nimport { Rules } from \"./types/validate\";\nimport { validate } from \"./logic/validate\";\n\ntype FormFields = Record<string, HTMLInputElement | null>;\n\ntype UseFormArg<T extends FormValues> = {\n defaultValues: T;\n mode?: \"onInput\" | \"onChange\" | \"onSubmit\";\n};\n\ntype SubmitCallback<T extends FormValues> = (values: T) => void;\n\nexport const useForm = <T extends FormValues>({\n defaultValues,\n mode = \"onInput\",\n}: UseFormArg<T>) => {\n const fields: FormFields = {};\n const rules: Record<string, Rules<T, Path<T>>> = {};\n\n const [values, setValues] = createSignal<T>(defaultValues);\n const [errors, setErrors] = createSignal<FieldErrors<T>>({});\n const [isValid, setIsValid] = createSignal<boolean>(true);\n\n const validateField = (name: Path<T>) => {\n // const field = fields[name];\n const rule = rules[name];\n\n // const value = field && executeGetValueStrategy(field);\n\n const error = validate(values(), name, rule);\n\n if (error) {\n setErrors((prev) => ({ ...prev, [name]: error }));\n } else {\n setErrors((prev) => {\n const errors = { ...prev };\n\n delete errors[name];\n return errors;\n });\n }\n\n setIsValid(!Object.keys(errors()).length);\n };\n\n const validateAllFields = () => {\n Object.keys(values()).forEach((key) => {\n validateField(key as Path<T>);\n });\n };\n\n const register = (name: Path<T>, options?: Rules<T, Path<T>>) => {\n if (options) {\n rules[name] = {\n required: options.required,\n min: options.min,\n max: options.max,\n minLength: options.minLength,\n maxLength: options.maxLength,\n pattern: options.pattern,\n validate: options.validate,\n };\n }\n\n return {\n name,\n // value: values()[name],\n onInput(event: InputEvent) {\n if (mode === \"onInput\") {\n const newValue = (event.target as HTMLInputElement).value;\n\n setValues((prev) => ({ ...prev, [name]: newValue }));\n validateField(name);\n }\n },\n onChange(event: ChangeEvent) {\n if (mode === \"onChange\" || mode === \"onInput\") {\n const value = executeGetValueStrategy(event.target);\n\n setValues((prev) => ({ ...prev, [name]: value }));\n validateField(name);\n }\n },\n ref: (ref: HTMLInputElement | null) => {\n const field = fields[name];\n\n if (field) {\n return;\n }\n\n fields[name] = ref;\n\n if (ref) {\n executeSetValueStrategy(ref, values()[name]);\n }\n },\n };\n };\n\n const getValues = (name?: Path<T>) => {\n if (name) {\n return values()[name];\n }\n\n return values();\n };\n\n const setValue = (name: Path<T>, value: any) => {\n setValues((prev) => ({ ...prev, [name]: value }));\n\n const field = fields[name];\n\n if (field) {\n executeSetValueStrategy(field, value);\n }\n };\n\n const onSubmit = (submit: SubmitCallback<T>) => {\n return (event: SubmitEvent) => {\n event.preventDefault();\n validateAllFields();\n\n if (isValid()) {\n submit(getValues());\n }\n };\n };\n\n const reset = (newDefaultValues?: Partial<T>) => {\n setValues(() => ({\n ...defaultValues,\n ...newDefaultValues,\n }));\n setErrors({});\n setIsValid(true);\n };\n\n return {\n values,\n errors,\n isValid,\n register,\n getValues,\n setValue,\n onSubmit,\n reset,\n };\n};\n"],"names":["signalOptions","a","b","runEffects","runQueue","STALE","PENDING","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createSignal","value","options","setter","writeSignal","readSignal","untrack","fn","listener","updateComputation","updates","runUpdates","lookUpstream","sSlot","node","isComp","current","i","o","TransitionRunning","markDownstream","cleanNode","time","runComputation","nextValue","owner","err","handleError","runTop","ancestors","init","wait","res","completeUpdates","queue","ignore","source","state","index","obs","n","s","castError","getValueStrategies","element","executeGetValueStrategy","setValueStrategies","executeSetValueStrategy","getRuleValue","rule","getRuleMessage","validate","values","name","rules","message","useForm","defaultValues","mode","fields","setValues","errors","setErrors","isValid","setIsValid","validateField","error","prev","validateAllFields","key","register","event","newValue","ref","getValues","field","submit","newDefaultValues"],"mappings":"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","x_google_ignoreList":[0]}