remix-validated-form 4.6.5 → 4.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/README.md +10 -9
  2. package/dist/index.cjs.js +1930 -0
  3. package/dist/index.cjs.js.map +1 -0
  4. package/dist/index.d.ts +337 -0
  5. package/dist/{remix-validated-form.es.js → index.esm.js} +603 -905
  6. package/dist/index.esm.js.map +1 -0
  7. package/package.json +14 -10
  8. package/src/ValidatedForm.tsx +17 -5
  9. package/src/hooks.ts +1 -1
  10. package/src/server.ts +1 -1
  11. package/tsup.config.ts +3 -0
  12. package/dist/remix-validated-form.cjs.js +0 -27
  13. package/dist/remix-validated-form.cjs.js.map +0 -1
  14. package/dist/remix-validated-form.es.js.map +0 -1
  15. package/dist/remix-validated-form.umd.js +0 -27
  16. package/dist/remix-validated-form.umd.js.map +0 -1
  17. package/dist/types/ValidatedForm.d.ts +0 -50
  18. package/dist/types/hooks.d.ts +0 -67
  19. package/dist/types/index.d.ts +0 -7
  20. package/dist/types/internal/MultiValueMap.d.ts +0 -11
  21. package/dist/types/internal/constants.d.ts +0 -3
  22. package/dist/types/internal/flatten.d.ts +0 -1
  23. package/dist/types/internal/formContext.d.ts +0 -12
  24. package/dist/types/internal/getInputProps.d.ts +0 -29
  25. package/dist/types/internal/hooks.d.ts +0 -35
  26. package/dist/types/internal/hydratable.d.ts +0 -14
  27. package/dist/types/internal/logic/getCheckboxChecked.d.ts +0 -1
  28. package/dist/types/internal/logic/getRadioChecked.d.ts +0 -1
  29. package/dist/types/internal/logic/requestSubmit.d.ts +0 -5
  30. package/dist/types/internal/state/arrayUtil.d.ts +0 -12
  31. package/dist/types/internal/state/controlledFields.d.ts +0 -7
  32. package/dist/types/internal/state/createFormStore.d.ts +0 -79
  33. package/dist/types/internal/state/fieldArray.d.ts +0 -28
  34. package/dist/types/internal/state/storeHooks.d.ts +0 -3
  35. package/dist/types/internal/state/types.d.ts +0 -1
  36. package/dist/types/internal/submissionCallbacks.d.ts +0 -1
  37. package/dist/types/internal/util.d.ts +0 -5
  38. package/dist/types/server.d.ts +0 -21
  39. package/dist/types/unreleased/formStateHooks.d.ts +0 -64
  40. package/dist/types/userFacingFormContext.d.ts +0 -85
  41. package/dist/types/validation/createValidator.d.ts +0 -7
  42. package/dist/types/validation/types.d.ts +0 -58
  43. package/vite.config.ts +0 -7
@@ -1,177 +1,11 @@
1
- import React, { createContext, useDebugValue, useContext, useCallback, useEffect, useMemo, useRef, useLayoutEffect, useState } from "react";
2
- import { useActionData, useMatches, useTransition, Form, useSubmit } from "@remix-run/react";
3
- var __spreadArray = globalThis && globalThis.__spreadArray || function(to, from2, pack) {
4
- if (pack || arguments.length === 2)
5
- for (var i2 = 0, l2 = from2.length, ar; i2 < l2; i2++) {
6
- if (ar || !(i2 in from2)) {
7
- if (!ar)
8
- ar = Array.prototype.slice.call(from2, 0, i2);
9
- ar[i2] = from2[i2];
10
- }
11
- }
12
- return to.concat(ar || Array.prototype.slice.call(from2));
13
- };
14
- function purry(fn2, args, lazy) {
15
- var diff = fn2.length - args.length;
16
- var arrayArgs = Array.from(args);
17
- if (diff === 0) {
18
- return fn2.apply(void 0, arrayArgs);
19
- }
20
- if (diff === 1) {
21
- var ret = function(data) {
22
- return fn2.apply(void 0, __spreadArray([data], arrayArgs, false));
23
- };
24
- if (lazy || fn2.lazy) {
25
- ret.lazy = lazy || fn2.lazy;
26
- ret.lazyArgs = args;
27
- }
28
- return ret;
29
- }
30
- throw new Error("Wrong number of arguments");
31
- }
32
- function _reduceLazy(array, lazy, indexed) {
33
- return array.reduce(function(acc, item, index) {
34
- var result = indexed ? lazy(item, index, array) : lazy(item);
35
- if (result.hasMany === true) {
36
- acc.push.apply(acc, result.next);
37
- } else if (result.hasNext === true) {
38
- acc.push(result.next);
39
- }
40
- return acc;
41
- }, []);
42
- }
43
- var isArray = Array.isArray;
44
- var keyList = Object.keys;
45
- var hasProp = Object.prototype.hasOwnProperty;
46
- function equals() {
47
- return purry(_equals, arguments);
48
- }
49
- function _equals(a2, b2) {
50
- if (a2 === b2) {
51
- return true;
52
- }
53
- if (a2 && b2 && typeof a2 === "object" && typeof b2 === "object") {
54
- var arrA = isArray(a2);
55
- var arrB = isArray(b2);
56
- var i2 = void 0;
57
- var length = void 0;
58
- var key = void 0;
59
- if (arrA && arrB) {
60
- length = a2.length;
61
- if (length !== b2.length) {
62
- return false;
63
- }
64
- for (i2 = length; i2-- !== 0; ) {
65
- if (!equals(a2[i2], b2[i2])) {
66
- return false;
67
- }
68
- }
69
- return true;
70
- }
71
- if (arrA !== arrB) {
72
- return false;
73
- }
74
- var dateA = a2 instanceof Date;
75
- var dateB = b2 instanceof Date;
76
- if (dateA !== dateB) {
77
- return false;
78
- }
79
- if (dateA && dateB) {
80
- return a2.getTime() === b2.getTime();
81
- }
82
- var regexpA = a2 instanceof RegExp;
83
- var regexpB = b2 instanceof RegExp;
84
- if (regexpA !== regexpB) {
85
- return false;
86
- }
87
- if (regexpA && regexpB) {
88
- return a2.toString() === b2.toString();
89
- }
90
- var keys = keyList(a2);
91
- length = keys.length;
92
- if (length !== keyList(b2).length) {
93
- return false;
94
- }
95
- for (i2 = length; i2-- !== 0; ) {
96
- if (!hasProp.call(b2, keys[i2])) {
97
- return false;
98
- }
99
- }
100
- for (i2 = length; i2-- !== 0; ) {
101
- key = keys[i2];
102
- if (!equals(a2[key], b2[key])) {
103
- return false;
104
- }
105
- }
106
- return true;
107
- }
108
- return a2 !== a2 && b2 !== b2;
109
- }
110
- function omit() {
111
- return purry(_omit, arguments);
112
- }
113
- function _omit(object, names) {
114
- var set = new Set(names);
115
- return Object.entries(object).reduce(function(acc, _a) {
116
- var name = _a[0], value = _a[1];
117
- if (!set.has(name)) {
118
- acc[name] = value;
119
- }
120
- return acc;
121
- }, {});
122
- }
123
- function omitBy() {
124
- return purry(_omitBy, arguments);
125
- }
126
- function _omitBy(object, fn2) {
127
- return Object.keys(object).reduce(function(acc, key) {
128
- if (!fn2(object[key], key)) {
129
- acc[key] = object[key];
130
- }
131
- return acc;
132
- }, {});
133
- }
134
- function pathOr() {
135
- return purry(_pathOr, arguments);
136
- }
137
- function _pathOr(object, path, defaultValue) {
138
- var current = object;
139
- for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {
140
- var prop = path_1[_i];
141
- if (current == null || current[prop] == null) {
142
- return defaultValue;
143
- }
144
- current = current[prop];
145
- }
146
- return current;
147
- }
148
- function uniq() {
149
- return purry(_uniq, arguments, uniq.lazy);
150
- }
151
- function _uniq(array) {
152
- return _reduceLazy(array, uniq.lazy());
153
- }
154
- (function(uniq2) {
155
- function lazy() {
156
- var set = /* @__PURE__ */ new Set();
157
- return function(value) {
158
- if (set.has(value)) {
159
- return {
160
- done: false,
161
- hasNext: false
162
- };
163
- }
164
- set.add(value);
165
- return {
166
- done: false,
167
- hasNext: true,
168
- next: value
169
- };
170
- };
171
- }
172
- uniq2.lazy = lazy;
173
- })(uniq || (uniq = {}));
174
- const getCheckboxChecked = (checkboxValue = "on", newValue) => {
1
+ // src/hooks.ts
2
+ import { useEffect as useEffect2, useMemo } from "react";
3
+
4
+ // src/internal/getInputProps.ts
5
+ import * as R from "remeda";
6
+
7
+ // src/internal/logic/getCheckboxChecked.ts
8
+ var getCheckboxChecked = (checkboxValue = "on", newValue) => {
175
9
  if (Array.isArray(newValue))
176
10
  return newValue.some((val) => val === true || val === checkboxValue);
177
11
  if (typeof newValue === "boolean")
@@ -180,17 +14,31 @@ const getCheckboxChecked = (checkboxValue = "on", newValue) => {
180
14
  return newValue === checkboxValue;
181
15
  return void 0;
182
16
  };
183
- const getRadioChecked = (radioValue = "on", newValue) => {
17
+
18
+ // src/internal/logic/getRadioChecked.ts
19
+ var getRadioChecked = (radioValue = "on", newValue) => {
184
20
  if (typeof newValue === "string")
185
21
  return newValue === radioValue;
186
22
  return void 0;
187
23
  };
188
- const defaultValidationBehavior = {
24
+ if (void 0) {
25
+ const { it, expect } = void 0;
26
+ it("getRadioChecked", () => {
27
+ expect(getRadioChecked("on", "on")).toBe(true);
28
+ expect(getRadioChecked("on", void 0)).toBe(void 0);
29
+ expect(getRadioChecked("trueValue", void 0)).toBe(void 0);
30
+ expect(getRadioChecked("trueValue", "bob")).toBe(false);
31
+ expect(getRadioChecked("trueValue", "trueValue")).toBe(true);
32
+ });
33
+ }
34
+
35
+ // src/internal/getInputProps.ts
36
+ var defaultValidationBehavior = {
189
37
  initial: "onBlur",
190
38
  whenTouched: "onChange",
191
39
  whenSubmitted: "onChange"
192
40
  };
193
- const createGetInputProps = ({
41
+ var createGetInputProps = ({
194
42
  clearError,
195
43
  validate,
196
44
  defaultValue,
@@ -232,19 +80,27 @@ const createGetInputProps = ({
232
80
  } else if (props.value === void 0) {
233
81
  inputProps.defaultValue = defaultValue;
234
82
  }
235
- return omitBy(inputProps, (value) => value === void 0);
83
+ return R.omitBy(inputProps, (value) => value === void 0);
236
84
  };
237
85
  };
238
- const stringToPathArray = (path) => {
86
+
87
+ // src/internal/hooks.ts
88
+ import { useActionData, useMatches, useTransition } from "@remix-run/react";
89
+ import { useCallback, useContext } from "react";
90
+
91
+ // ../set-get/src/stringToPathArray.ts
92
+ var stringToPathArray = (path) => {
239
93
  if (path.length === 0)
240
94
  return [];
241
95
  const match = path.match(/^\[(.+?)\](.*)$/) || path.match(/^\.?([^\.\[\]]+)(.*)$/);
242
96
  if (match) {
243
- const [_2, key, rest] = match;
97
+ const [_, key, rest] = match;
244
98
  return [/^\d+$/.test(key) ? Number(key) : key, ...stringToPathArray(rest)];
245
99
  }
246
100
  return [path];
247
101
  };
102
+
103
+ // ../set-get/src/setPath.ts
248
104
  function setPath(object, path, defaultValue) {
249
105
  return _setPathNormalized(object, stringToPathArray(path), defaultValue);
250
106
  }
@@ -253,10 +109,10 @@ function _setPathNormalized(object, path, value) {
253
109
  const leadingSegments = path.slice(0, -1);
254
110
  const lastSegment = path[path.length - 1];
255
111
  let obj = object;
256
- for (let i2 = 0; i2 < leadingSegments.length; i2++) {
257
- const segment = leadingSegments[i2];
112
+ for (let i = 0; i < leadingSegments.length; i++) {
113
+ const segment = leadingSegments[i];
258
114
  if (obj[segment] === void 0) {
259
- const nextSegment = (_a = leadingSegments[i2 + 1]) != null ? _a : lastSegment;
115
+ const nextSegment = (_a = leadingSegments[i + 1]) != null ? _a : lastSegment;
260
116
  obj[segment] = typeof nextSegment === "number" ? [] : {};
261
117
  }
262
118
  obj = obj[segment];
@@ -264,546 +120,48 @@ function _setPathNormalized(object, path, value) {
264
120
  obj[lastSegment] = value;
265
121
  return object;
266
122
  }
267
- const getPath = (object, path) => pathOr(object, stringToPathArray(path), void 0);
268
- var isProduction = true;
269
- var prefix = "Invariant failed";
270
- function invariant(condition, message) {
271
- if (condition) {
272
- return;
273
- }
274
- if (isProduction) {
275
- throw new Error(prefix);
276
- }
277
- var provided = typeof message === "function" ? message() : message;
278
- var value = provided ? "".concat(prefix, ": ").concat(provided) : prefix;
279
- throw new Error(value);
280
- }
281
- const FORM_ID_FIELD = "__rvfInternalFormId";
282
- const FORM_DEFAULTS_FIELD = "__rvfInternalFormDefaults";
283
- const formDefaultValuesKey = (formId) => `${FORM_DEFAULTS_FIELD}_${formId}`;
284
- const InternalFormContext = createContext(null);
285
- const serverData = (data) => ({
123
+
124
+ // ../set-get/src/getPath.ts
125
+ import get from "lodash.get";
126
+ var getPath = (object, path) => {
127
+ return get(object, path);
128
+ };
129
+
130
+ // src/internal/hooks.ts
131
+ import invariant3 from "tiny-invariant";
132
+
133
+ // src/internal/constants.ts
134
+ var FORM_ID_FIELD = "__rvfInternalFormId";
135
+ var FORM_DEFAULTS_FIELD = "__rvfInternalFormDefaults";
136
+ var formDefaultValuesKey = (formId) => `${FORM_DEFAULTS_FIELD}_${formId}`;
137
+
138
+ // src/internal/formContext.ts
139
+ import { createContext } from "react";
140
+ var InternalFormContext = createContext(null);
141
+
142
+ // src/internal/hydratable.ts
143
+ var serverData = (data) => ({
286
144
  hydrateTo: () => data,
287
- map: (fn2) => serverData(fn2(data))
145
+ map: (fn) => serverData(fn(data))
288
146
  });
289
- const hydratedData = () => ({
147
+ var hydratedData = () => ({
290
148
  hydrateTo: (hydratedData2) => hydratedData2,
291
149
  map: () => hydratedData()
292
150
  });
293
- const from = (data, hydrated) => hydrated ? hydratedData() : serverData(data);
294
- const hydratable = {
151
+ var from = (data, hydrated) => hydrated ? hydratedData() : serverData(data);
152
+ var hydratable = {
295
153
  serverData,
296
154
  hydratedData,
297
155
  from
298
156
  };
299
- const createStoreImpl = (createState) => {
300
- let state;
301
- const listeners = /* @__PURE__ */ new Set();
302
- const setState = (partial, replace2) => {
303
- const nextState = typeof partial === "function" ? partial(state) : partial;
304
- if (!Object.is(nextState, state)) {
305
- const previousState = state;
306
- state = (replace2 != null ? replace2 : typeof nextState !== "object") ? nextState : Object.assign({}, state, nextState);
307
- listeners.forEach((listener) => listener(state, previousState));
308
- }
309
- };
310
- const getState = () => state;
311
- const subscribe = (listener) => {
312
- listeners.add(listener);
313
- return () => listeners.delete(listener);
314
- };
315
- const destroy = () => listeners.clear();
316
- const api = { setState, getState, subscribe, destroy };
317
- state = createState(setState, getState, api);
318
- return api;
319
- };
320
- const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
321
- var withSelector = { exports: {} };
322
- var withSelector_production_min = {};
323
- var shim = { exports: {} };
324
- var useSyncExternalStoreShim_production_min = {};
325
- /**
326
- * @license React
327
- * use-sync-external-store-shim.production.min.js
328
- *
329
- * Copyright (c) Facebook, Inc. and its affiliates.
330
- *
331
- * This source code is licensed under the MIT license found in the
332
- * LICENSE file in the root directory of this source tree.
333
- */
334
- var e = React;
335
- function h$2(a2, b2) {
336
- return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
337
- }
338
- var k$1 = "function" === typeof Object.is ? Object.is : h$2, l$1 = e.useState, m = e.useEffect, n$2 = e.useLayoutEffect, p$2 = e.useDebugValue;
339
- function q$2(a2, b2) {
340
- var d2 = b2(), f2 = l$1({ inst: { value: d2, getSnapshot: b2 } }), c2 = f2[0].inst, g2 = f2[1];
341
- n$2(function() {
342
- c2.value = d2;
343
- c2.getSnapshot = b2;
344
- r$2(c2) && g2({ inst: c2 });
345
- }, [a2, d2, b2]);
346
- m(function() {
347
- r$2(c2) && g2({ inst: c2 });
348
- return a2(function() {
349
- r$2(c2) && g2({ inst: c2 });
350
- });
351
- }, [a2]);
352
- p$2(d2);
353
- return d2;
354
- }
355
- function r$2(a2) {
356
- var b2 = a2.getSnapshot;
357
- a2 = a2.value;
358
- try {
359
- var d2 = b2();
360
- return !k$1(a2, d2);
361
- } catch (f2) {
362
- return true;
363
- }
364
- }
365
- function t$2(a2, b2) {
366
- return b2();
367
- }
368
- var u$2 = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? t$2 : q$2;
369
- useSyncExternalStoreShim_production_min.useSyncExternalStore = void 0 !== e.useSyncExternalStore ? e.useSyncExternalStore : u$2;
370
- {
371
- shim.exports = useSyncExternalStoreShim_production_min;
372
- }
373
- /**
374
- * @license React
375
- * use-sync-external-store-shim/with-selector.production.min.js
376
- *
377
- * Copyright (c) Facebook, Inc. and its affiliates.
378
- *
379
- * This source code is licensed under the MIT license found in the
380
- * LICENSE file in the root directory of this source tree.
381
- */
382
- var h$1 = React, n$1 = shim.exports;
383
- function p$1(a2, b2) {
384
- return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
385
- }
386
- var q$1 = "function" === typeof Object.is ? Object.is : p$1, r$1 = n$1.useSyncExternalStore, t$1 = h$1.useRef, u$1 = h$1.useEffect, v$1 = h$1.useMemo, w$1 = h$1.useDebugValue;
387
- withSelector_production_min.useSyncExternalStoreWithSelector = function(a2, b2, e2, l2, g2) {
388
- var c2 = t$1(null);
389
- if (null === c2.current) {
390
- var f2 = { hasValue: false, value: null };
391
- c2.current = f2;
392
- } else
393
- f2 = c2.current;
394
- c2 = v$1(function() {
395
- function a3(a4) {
396
- if (!c3) {
397
- c3 = true;
398
- d3 = a4;
399
- a4 = l2(a4);
400
- if (void 0 !== g2 && f2.hasValue) {
401
- var b3 = f2.value;
402
- if (g2(b3, a4))
403
- return k2 = b3;
404
- }
405
- return k2 = a4;
406
- }
407
- b3 = k2;
408
- if (q$1(d3, a4))
409
- return b3;
410
- var e3 = l2(a4);
411
- if (void 0 !== g2 && g2(b3, e3))
412
- return b3;
413
- d3 = a4;
414
- return k2 = e3;
415
- }
416
- var c3 = false, d3, k2, m2 = void 0 === e2 ? null : e2;
417
- return [function() {
418
- return a3(b2());
419
- }, null === m2 ? void 0 : function() {
420
- return a3(m2());
421
- }];
422
- }, [b2, e2, l2, g2]);
423
- var d2 = r$1(a2, c2[0], c2[1]);
424
- u$1(function() {
425
- f2.hasValue = true;
426
- f2.value = d2;
427
- }, [d2]);
428
- w$1(d2);
429
- return d2;
430
- };
431
- {
432
- withSelector.exports = withSelector_production_min;
433
- }
434
- var useSyncExternalStoreExports = withSelector.exports;
435
- const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;
436
- function useStore(api, selector = api.getState, equalityFn) {
437
- const slice = useSyncExternalStoreWithSelector(
438
- api.subscribe,
439
- api.getState,
440
- api.getServerState || api.getState,
441
- selector,
442
- equalityFn
443
- );
444
- useDebugValue(slice);
445
- return slice;
446
- }
447
- const createImpl = (createState) => {
448
- const api = typeof createState === "function" ? createStore(createState) : createState;
449
- const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);
450
- Object.assign(useBoundStore, api);
451
- return useBoundStore;
452
- };
453
- const create = (createState) => createState ? createImpl(createState) : createImpl;
454
- function n(n2) {
455
- for (var r2 = arguments.length, t2 = Array(r2 > 1 ? r2 - 1 : 0), e2 = 1; e2 < r2; e2++)
456
- t2[e2 - 1] = arguments[e2];
457
- throw Error("[Immer] minified error nr: " + n2 + (t2.length ? " " + t2.map(function(n3) {
458
- return "'" + n3 + "'";
459
- }).join(",") : "") + ". Find the full error at: https://bit.ly/3cXEKWf");
460
- }
461
- function r(n2) {
462
- return !!n2 && !!n2[Q];
463
- }
464
- function t(n2) {
465
- var r2;
466
- return !!n2 && (function(n3) {
467
- if (!n3 || "object" != typeof n3)
468
- return false;
469
- var r3 = Object.getPrototypeOf(n3);
470
- if (null === r3)
471
- return true;
472
- var t2 = Object.hasOwnProperty.call(r3, "constructor") && r3.constructor;
473
- return t2 === Object || "function" == typeof t2 && Function.toString.call(t2) === Z;
474
- }(n2) || Array.isArray(n2) || !!n2[L] || !!(null === (r2 = n2.constructor) || void 0 === r2 ? void 0 : r2[L]) || s(n2) || v(n2));
475
- }
476
- function i(n2, r2, t2) {
477
- void 0 === t2 && (t2 = false), 0 === o(n2) ? (t2 ? Object.keys : nn)(n2).forEach(function(e2) {
478
- t2 && "symbol" == typeof e2 || r2(e2, n2[e2], n2);
479
- }) : n2.forEach(function(t3, e2) {
480
- return r2(e2, t3, n2);
481
- });
482
- }
483
- function o(n2) {
484
- var r2 = n2[Q];
485
- return r2 ? r2.i > 3 ? r2.i - 4 : r2.i : Array.isArray(n2) ? 1 : s(n2) ? 2 : v(n2) ? 3 : 0;
486
- }
487
- function u(n2, r2) {
488
- return 2 === o(n2) ? n2.has(r2) : Object.prototype.hasOwnProperty.call(n2, r2);
489
- }
490
- function a(n2, r2) {
491
- return 2 === o(n2) ? n2.get(r2) : n2[r2];
492
- }
493
- function f(n2, r2, t2) {
494
- var e2 = o(n2);
495
- 2 === e2 ? n2.set(r2, t2) : 3 === e2 ? (n2.delete(r2), n2.add(t2)) : n2[r2] = t2;
496
- }
497
- function c(n2, r2) {
498
- return n2 === r2 ? 0 !== n2 || 1 / n2 == 1 / r2 : n2 != n2 && r2 != r2;
499
- }
500
- function s(n2) {
501
- return X && n2 instanceof Map;
502
- }
503
- function v(n2) {
504
- return q && n2 instanceof Set;
505
- }
506
- function p(n2) {
507
- return n2.o || n2.t;
508
- }
509
- function l(n2) {
510
- if (Array.isArray(n2))
511
- return Array.prototype.slice.call(n2);
512
- var r2 = rn(n2);
513
- delete r2[Q];
514
- for (var t2 = nn(r2), e2 = 0; e2 < t2.length; e2++) {
515
- var i2 = t2[e2], o2 = r2[i2];
516
- false === o2.writable && (o2.writable = true, o2.configurable = true), (o2.get || o2.set) && (r2[i2] = { configurable: true, writable: true, enumerable: o2.enumerable, value: n2[i2] });
517
- }
518
- return Object.create(Object.getPrototypeOf(n2), r2);
519
- }
520
- function d(n2, e2) {
521
- return void 0 === e2 && (e2 = false), y(n2) || r(n2) || !t(n2) ? n2 : (o(n2) > 1 && (n2.set = n2.add = n2.clear = n2.delete = h), Object.freeze(n2), e2 && i(n2, function(n3, r2) {
522
- return d(r2, true);
523
- }, true), n2);
524
- }
525
- function h() {
526
- n(2);
527
- }
528
- function y(n2) {
529
- return null == n2 || "object" != typeof n2 || Object.isFrozen(n2);
530
- }
531
- function b(r2) {
532
- var t2 = tn[r2];
533
- return t2 || n(18, r2), t2;
534
- }
535
- function _() {
536
- return U;
537
- }
538
- function j(n2, r2) {
539
- r2 && (b("Patches"), n2.u = [], n2.s = [], n2.v = r2);
540
- }
541
- function O(n2) {
542
- g(n2), n2.p.forEach(S), n2.p = null;
543
- }
544
- function g(n2) {
545
- n2 === U && (U = n2.l);
546
- }
547
- function w(n2) {
548
- return U = { p: [], l: U, h: n2, m: true, _: 0 };
549
- }
550
- function S(n2) {
551
- var r2 = n2[Q];
552
- 0 === r2.i || 1 === r2.i ? r2.j() : r2.O = true;
553
- }
554
- function P(r2, e2) {
555
- e2._ = e2.p.length;
556
- var i2 = e2.p[0], o2 = void 0 !== r2 && r2 !== i2;
557
- return e2.h.g || b("ES5").S(e2, r2, o2), o2 ? (i2[Q].P && (O(e2), n(4)), t(r2) && (r2 = M(e2, r2), e2.l || x(e2, r2)), e2.u && b("Patches").M(i2[Q].t, r2, e2.u, e2.s)) : r2 = M(e2, i2, []), O(e2), e2.u && e2.v(e2.u, e2.s), r2 !== H ? r2 : void 0;
558
- }
559
- function M(n2, r2, t2) {
560
- if (y(r2))
561
- return r2;
562
- var e2 = r2[Q];
563
- if (!e2)
564
- return i(r2, function(i2, o3) {
565
- return A(n2, e2, r2, i2, o3, t2);
566
- }, true), r2;
567
- if (e2.A !== n2)
568
- return r2;
569
- if (!e2.P)
570
- return x(n2, e2.t, true), e2.t;
571
- if (!e2.I) {
572
- e2.I = true, e2.A._--;
573
- var o2 = 4 === e2.i || 5 === e2.i ? e2.o = l(e2.k) : e2.o;
574
- i(3 === e2.i ? new Set(o2) : o2, function(r3, i2) {
575
- return A(n2, e2, o2, r3, i2, t2);
576
- }), x(n2, o2, false), t2 && n2.u && b("Patches").R(e2, t2, n2.u, n2.s);
577
- }
578
- return e2.o;
579
- }
580
- function A(e2, i2, o2, a2, c2, s2) {
581
- if (r(c2)) {
582
- var v2 = M(e2, c2, s2 && i2 && 3 !== i2.i && !u(i2.D, a2) ? s2.concat(a2) : void 0);
583
- if (f(o2, a2, v2), !r(v2))
584
- return;
585
- e2.m = false;
586
- }
587
- if (t(c2) && !y(c2)) {
588
- if (!e2.h.F && e2._ < 1)
589
- return;
590
- M(e2, c2), i2 && i2.A.l || x(e2, c2);
591
- }
592
- }
593
- function x(n2, r2, t2) {
594
- void 0 === t2 && (t2 = false), n2.h.F && n2.m && d(r2, t2);
595
- }
596
- function z(n2, r2) {
597
- var t2 = n2[Q];
598
- return (t2 ? p(t2) : n2)[r2];
599
- }
600
- function I(n2, r2) {
601
- if (r2 in n2)
602
- for (var t2 = Object.getPrototypeOf(n2); t2; ) {
603
- var e2 = Object.getOwnPropertyDescriptor(t2, r2);
604
- if (e2)
605
- return e2;
606
- t2 = Object.getPrototypeOf(t2);
607
- }
608
- }
609
- function k(n2) {
610
- n2.P || (n2.P = true, n2.l && k(n2.l));
611
- }
612
- function E(n2) {
613
- n2.o || (n2.o = l(n2.t));
614
- }
615
- function R(n2, r2, t2) {
616
- var e2 = s(r2) ? b("MapSet").N(r2, t2) : v(r2) ? b("MapSet").T(r2, t2) : n2.g ? function(n3, r3) {
617
- var t3 = Array.isArray(n3), e3 = { i: t3 ? 1 : 0, A: r3 ? r3.A : _(), P: false, I: false, D: {}, l: r3, t: n3, k: null, o: null, j: null, C: false }, i2 = e3, o2 = en;
618
- t3 && (i2 = [e3], o2 = on);
619
- var u2 = Proxy.revocable(i2, o2), a2 = u2.revoke, f2 = u2.proxy;
620
- return e3.k = f2, e3.j = a2, f2;
621
- }(r2, t2) : b("ES5").J(r2, t2);
622
- return (t2 ? t2.A : _()).p.push(e2), e2;
623
- }
624
- function D(e2) {
625
- return r(e2) || n(22, e2), function n2(r2) {
626
- if (!t(r2))
627
- return r2;
628
- var e3, u2 = r2[Q], c2 = o(r2);
629
- if (u2) {
630
- if (!u2.P && (u2.i < 4 || !b("ES5").K(u2)))
631
- return u2.t;
632
- u2.I = true, e3 = F(r2, c2), u2.I = false;
633
- } else
634
- e3 = F(r2, c2);
635
- return i(e3, function(r3, t2) {
636
- u2 && a(u2.t, r3) === t2 || f(e3, r3, n2(t2));
637
- }), 3 === c2 ? new Set(e3) : e3;
638
- }(e2);
639
- }
640
- function F(n2, r2) {
641
- switch (r2) {
642
- case 2:
643
- return new Map(n2);
644
- case 3:
645
- return Array.from(n2);
646
- }
647
- return l(n2);
648
- }
649
- var G, U, W = "undefined" != typeof Symbol && "symbol" == typeof Symbol("x"), X = "undefined" != typeof Map, q = "undefined" != typeof Set, B = "undefined" != typeof Proxy && void 0 !== Proxy.revocable && "undefined" != typeof Reflect, H = W ? Symbol.for("immer-nothing") : ((G = {})["immer-nothing"] = true, G), L = W ? Symbol.for("immer-draftable") : "__$immer_draftable", Q = W ? Symbol.for("immer-state") : "__$immer_state", Z = "" + Object.prototype.constructor, nn = "undefined" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function(n2) {
650
- return Object.getOwnPropertyNames(n2).concat(Object.getOwnPropertySymbols(n2));
651
- } : Object.getOwnPropertyNames, rn = Object.getOwnPropertyDescriptors || function(n2) {
652
- var r2 = {};
653
- return nn(n2).forEach(function(t2) {
654
- r2[t2] = Object.getOwnPropertyDescriptor(n2, t2);
655
- }), r2;
656
- }, tn = {}, en = { get: function(n2, r2) {
657
- if (r2 === Q)
658
- return n2;
659
- var e2 = p(n2);
660
- if (!u(e2, r2))
661
- return function(n3, r3, t2) {
662
- var e3, i3 = I(r3, t2);
663
- return i3 ? "value" in i3 ? i3.value : null === (e3 = i3.get) || void 0 === e3 ? void 0 : e3.call(n3.k) : void 0;
664
- }(n2, e2, r2);
665
- var i2 = e2[r2];
666
- return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r2) ? (E(n2), n2.o[r2] = R(n2.A.h, i2, n2)) : i2;
667
- }, has: function(n2, r2) {
668
- return r2 in p(n2);
669
- }, ownKeys: function(n2) {
670
- return Reflect.ownKeys(p(n2));
671
- }, set: function(n2, r2, t2) {
672
- var e2 = I(p(n2), r2);
673
- if (null == e2 ? void 0 : e2.set)
674
- return e2.set.call(n2.k, t2), true;
675
- if (!n2.P) {
676
- var i2 = z(p(n2), r2), o2 = null == i2 ? void 0 : i2[Q];
677
- if (o2 && o2.t === t2)
678
- return n2.o[r2] = t2, n2.D[r2] = false, true;
679
- if (c(t2, i2) && (void 0 !== t2 || u(n2.t, r2)))
680
- return true;
681
- E(n2), k(n2);
682
- }
683
- return n2.o[r2] === t2 && "number" != typeof t2 && (void 0 !== t2 || r2 in n2.o) || (n2.o[r2] = t2, n2.D[r2] = true, true);
684
- }, deleteProperty: function(n2, r2) {
685
- return void 0 !== z(n2.t, r2) || r2 in n2.t ? (n2.D[r2] = false, E(n2), k(n2)) : delete n2.D[r2], n2.o && delete n2.o[r2], true;
686
- }, getOwnPropertyDescriptor: function(n2, r2) {
687
- var t2 = p(n2), e2 = Reflect.getOwnPropertyDescriptor(t2, r2);
688
- return e2 ? { writable: true, configurable: 1 !== n2.i || "length" !== r2, enumerable: e2.enumerable, value: t2[r2] } : e2;
689
- }, defineProperty: function() {
690
- n(11);
691
- }, getPrototypeOf: function(n2) {
692
- return Object.getPrototypeOf(n2.t);
693
- }, setPrototypeOf: function() {
694
- n(12);
695
- } }, on = {};
696
- i(en, function(n2, r2) {
697
- on[n2] = function() {
698
- return arguments[0] = arguments[0][0], r2.apply(this, arguments);
699
- };
700
- }), on.deleteProperty = function(r2, t2) {
701
- return on.set.call(this, r2, t2, void 0);
702
- }, on.set = function(r2, t2, e2) {
703
- return en.set.call(this, r2[0], t2, e2, r2[0]);
704
- };
705
- var un = function() {
706
- function e2(r2) {
707
- var e3 = this;
708
- this.g = B, this.F = true, this.produce = function(r3, i3, o2) {
709
- if ("function" == typeof r3 && "function" != typeof i3) {
710
- var u2 = i3;
711
- i3 = r3;
712
- var a2 = e3;
713
- return function(n2) {
714
- var r4 = this;
715
- void 0 === n2 && (n2 = u2);
716
- for (var t2 = arguments.length, e4 = Array(t2 > 1 ? t2 - 1 : 0), o3 = 1; o3 < t2; o3++)
717
- e4[o3 - 1] = arguments[o3];
718
- return a2.produce(n2, function(n3) {
719
- var t3;
720
- return (t3 = i3).call.apply(t3, [r4, n3].concat(e4));
721
- });
722
- };
723
- }
724
- var f2;
725
- if ("function" != typeof i3 && n(6), void 0 !== o2 && "function" != typeof o2 && n(7), t(r3)) {
726
- var c2 = w(e3), s2 = R(e3, r3, void 0), v2 = true;
727
- try {
728
- f2 = i3(s2), v2 = false;
729
- } finally {
730
- v2 ? O(c2) : g(c2);
731
- }
732
- return "undefined" != typeof Promise && f2 instanceof Promise ? f2.then(function(n2) {
733
- return j(c2, o2), P(n2, c2);
734
- }, function(n2) {
735
- throw O(c2), n2;
736
- }) : (j(c2, o2), P(f2, c2));
737
- }
738
- if (!r3 || "object" != typeof r3) {
739
- if (void 0 === (f2 = i3(r3)) && (f2 = r3), f2 === H && (f2 = void 0), e3.F && d(f2, true), o2) {
740
- var p2 = [], l2 = [];
741
- b("Patches").M(r3, f2, p2, l2), o2(p2, l2);
742
- }
743
- return f2;
744
- }
745
- n(21, r3);
746
- }, this.produceWithPatches = function(n2, r3) {
747
- if ("function" == typeof n2)
748
- return function(r4) {
749
- for (var t3 = arguments.length, i4 = Array(t3 > 1 ? t3 - 1 : 0), o3 = 1; o3 < t3; o3++)
750
- i4[o3 - 1] = arguments[o3];
751
- return e3.produceWithPatches(r4, function(r5) {
752
- return n2.apply(void 0, [r5].concat(i4));
753
- });
754
- };
755
- var t2, i3, o2 = e3.produce(n2, r3, function(n3, r4) {
756
- t2 = n3, i3 = r4;
757
- });
758
- return "undefined" != typeof Promise && o2 instanceof Promise ? o2.then(function(n3) {
759
- return [n3, t2, i3];
760
- }) : [o2, t2, i3];
761
- }, "boolean" == typeof (null == r2 ? void 0 : r2.useProxies) && this.setUseProxies(r2.useProxies), "boolean" == typeof (null == r2 ? void 0 : r2.autoFreeze) && this.setAutoFreeze(r2.autoFreeze);
762
- }
763
- var i2 = e2.prototype;
764
- return i2.createDraft = function(e3) {
765
- t(e3) || n(8), r(e3) && (e3 = D(e3));
766
- var i3 = w(this), o2 = R(this, e3, void 0);
767
- return o2[Q].C = true, g(i3), o2;
768
- }, i2.finishDraft = function(r2, t2) {
769
- var e3 = r2 && r2[Q];
770
- var i3 = e3.A;
771
- return j(i3, t2), P(void 0, i3);
772
- }, i2.setAutoFreeze = function(n2) {
773
- this.F = n2;
774
- }, i2.setUseProxies = function(r2) {
775
- r2 && !B && n(20), this.g = r2;
776
- }, i2.applyPatches = function(n2, t2) {
777
- var e3;
778
- for (e3 = t2.length - 1; e3 >= 0; e3--) {
779
- var i3 = t2[e3];
780
- if (0 === i3.path.length && "replace" === i3.op) {
781
- n2 = i3.value;
782
- break;
783
- }
784
- }
785
- e3 > -1 && (t2 = t2.slice(e3 + 1));
786
- var o2 = b("Patches").$;
787
- return r(n2) ? o2(n2, t2) : this.produce(n2, function(n3) {
788
- return o2(n3, t2);
789
- });
790
- }, e2;
791
- }(), an = new un(), fn = an.produce;
792
- an.produceWithPatches.bind(an);
793
- an.setAutoFreeze.bind(an);
794
- an.setUseProxies.bind(an);
795
- an.applyPatches.bind(an);
796
- an.createDraft.bind(an);
797
- an.finishDraft.bind(an);
798
- const immerImpl = (initializer) => (set, get, store) => {
799
- store.setState = (updater, replace2, ...a2) => {
800
- const nextState = typeof updater === "function" ? fn(updater) : updater;
801
- return set(nextState, replace2, ...a2);
802
- };
803
- return initializer(store.setState, get, store);
804
- };
805
- const immer = immerImpl;
806
- const requestSubmit = (element, submitter) => {
157
+
158
+ // src/internal/state/createFormStore.ts
159
+ import invariant2 from "tiny-invariant";
160
+ import create from "zustand";
161
+ import { immer } from "zustand/middleware/immer";
162
+
163
+ // src/internal/logic/requestSubmit.ts
164
+ var requestSubmit = (element, submitter) => {
807
165
  if (typeof Object.getPrototypeOf(element).requestSubmit === "function" && true) {
808
166
  element.requestSubmit(submitter);
809
167
  return;
@@ -842,7 +200,38 @@ function raise(errorConstructor, message, name) {
842
200
  name
843
201
  );
844
202
  }
845
- const getArray = (values, field) => {
203
+ if (void 0) {
204
+ const { it, expect } = void 0;
205
+ it("should validate the submitter", () => {
206
+ const form = document.createElement("form");
207
+ document.body.appendChild(form);
208
+ const submitter = document.createElement("input");
209
+ expect(() => validateSubmitter(null, null)).toThrow();
210
+ expect(() => validateSubmitter(form, null)).toThrow();
211
+ expect(() => validateSubmitter(form, submitter)).toThrow();
212
+ expect(
213
+ () => validateSubmitter(form, document.createElement("div"))
214
+ ).toThrow();
215
+ submitter.type = "submit";
216
+ expect(() => validateSubmitter(form, submitter)).toThrow();
217
+ form.appendChild(submitter);
218
+ expect(() => validateSubmitter(form, submitter)).not.toThrow();
219
+ form.removeChild(submitter);
220
+ expect(() => validateSubmitter(form, submitter)).toThrow();
221
+ document.body.appendChild(submitter);
222
+ form.id = "test-form";
223
+ submitter.setAttribute("form", "test-form");
224
+ expect(() => validateSubmitter(form, submitter)).not.toThrow();
225
+ const button = document.createElement("button");
226
+ button.type = "submit";
227
+ form.appendChild(button);
228
+ expect(() => validateSubmitter(form, button)).not.toThrow();
229
+ });
230
+ }
231
+
232
+ // src/internal/state/arrayUtil.ts
233
+ import invariant from "tiny-invariant";
234
+ var getArray = (values, field) => {
846
235
  const value = getPath(values, field);
847
236
  if (value === void 0 || value === null) {
848
237
  const newValue = [];
@@ -855,7 +244,7 @@ const getArray = (values, field) => {
855
244
  );
856
245
  return value;
857
246
  };
858
- const swap = (array, indexA, indexB) => {
247
+ var swap = (array, indexA, indexB) => {
859
248
  const itemA = array[indexA];
860
249
  const itemB = array[indexB];
861
250
  const hasItemA = indexA in array;
@@ -879,20 +268,20 @@ function sparseSplice(array, start, deleteCount, item) {
879
268
  return array.splice(start, deleteCount, item);
880
269
  return array.splice(start, deleteCount);
881
270
  }
882
- const move = (array, from2, to) => {
271
+ var move = (array, from2, to) => {
883
272
  const [item] = sparseSplice(array, from2, 1);
884
273
  sparseSplice(array, to, 0, item);
885
274
  };
886
- const insert = (array, index, value) => {
275
+ var insert = (array, index, value) => {
887
276
  sparseSplice(array, index, 0, value);
888
277
  };
889
- const remove = (array, index) => {
278
+ var remove = (array, index) => {
890
279
  sparseSplice(array, index, 1);
891
280
  };
892
- const replace = (array, index, value) => {
281
+ var replace = (array, index, value) => {
893
282
  sparseSplice(array, index, 1, value);
894
283
  };
895
- const mutateAsArray = (field, obj, mutate) => {
284
+ var mutateAsArray = (field, obj, mutate) => {
896
285
  const beforeKeys = /* @__PURE__ */ new Set();
897
286
  const arr = [];
898
287
  for (const [key, value] of Object.entries(obj)) {
@@ -913,7 +302,7 @@ const mutateAsArray = (field, obj, mutate) => {
913
302
  }
914
303
  }
915
304
  };
916
- const getDeepArrayPaths = (obj, basePath = "") => {
305
+ var getDeepArrayPaths = (obj, basePath = "") => {
917
306
  if (Array.isArray(obj)) {
918
307
  return obj.flatMap(
919
308
  (item, index) => getDeepArrayPaths(item, `${basePath}[${index}]`)
@@ -926,9 +315,259 @@ const getDeepArrayPaths = (obj, basePath = "") => {
926
315
  }
927
316
  return [basePath];
928
317
  };
929
- const noOp = () => {
318
+ if (void 0) {
319
+ const { describe, expect, it } = void 0;
320
+ const countArrayItems = (arr) => {
321
+ let count = 0;
322
+ arr.forEach(() => count++);
323
+ return count;
324
+ };
325
+ describe("getArray", () => {
326
+ it("shoud get a deeply nested array that can be mutated to update the nested value", () => {
327
+ const values = {
328
+ d: [
329
+ { foo: "bar", baz: [true, false] },
330
+ { e: true, f: "hi" }
331
+ ]
332
+ };
333
+ const result = getArray(values, "d[0].baz");
334
+ const finalValues = {
335
+ d: [
336
+ { foo: "bar", baz: [true, false, true] },
337
+ { e: true, f: "hi" }
338
+ ]
339
+ };
340
+ expect(result).toEqual([true, false]);
341
+ result.push(true);
342
+ expect(values).toEqual(finalValues);
343
+ });
344
+ it("should return an empty array that can be mutated if result is null or undefined", () => {
345
+ const values = {};
346
+ const result = getArray(values, "a.foo[0].bar");
347
+ const finalValues = {
348
+ a: { foo: [{ bar: ["Bob ross"] }] }
349
+ };
350
+ expect(result).toEqual([]);
351
+ result.push("Bob ross");
352
+ expect(values).toEqual(finalValues);
353
+ });
354
+ it("should throw if the value is defined and not an array", () => {
355
+ const values = { foo: "foo" };
356
+ expect(() => getArray(values, "foo")).toThrow();
357
+ });
358
+ });
359
+ describe("swap", () => {
360
+ it("should swap two items", () => {
361
+ const array = [1, 2, 3];
362
+ swap(array, 0, 1);
363
+ expect(array).toEqual([2, 1, 3]);
364
+ });
365
+ it("should work for sparse arrays", () => {
366
+ const arr = [];
367
+ arr[0] = true;
368
+ swap(arr, 0, 2);
369
+ expect(countArrayItems(arr)).toEqual(1);
370
+ expect(0 in arr).toBe(false);
371
+ expect(2 in arr).toBe(true);
372
+ expect(arr[2]).toEqual(true);
373
+ });
374
+ });
375
+ describe("move", () => {
376
+ it("should move an item to a new index", () => {
377
+ const array = [1, 2, 3];
378
+ move(array, 0, 1);
379
+ expect(array).toEqual([2, 1, 3]);
380
+ });
381
+ it("should work with sparse arrays", () => {
382
+ const array = [1];
383
+ move(array, 0, 2);
384
+ expect(countArrayItems(array)).toEqual(1);
385
+ expect(array).toEqual([void 0, void 0, 1]);
386
+ });
387
+ });
388
+ describe("insert", () => {
389
+ it("should insert an item at a new index", () => {
390
+ const array = [1, 2, 3];
391
+ insert(array, 1, 4);
392
+ expect(array).toEqual([1, 4, 2, 3]);
393
+ });
394
+ it("should be able to insert falsey values", () => {
395
+ const array = [1, 2, 3];
396
+ insert(array, 1, null);
397
+ expect(array).toEqual([1, null, 2, 3]);
398
+ });
399
+ it("should handle sparse arrays", () => {
400
+ const array = [];
401
+ array[2] = true;
402
+ insert(array, 0, true);
403
+ expect(countArrayItems(array)).toEqual(2);
404
+ expect(array).toEqual([true, void 0, void 0, true]);
405
+ });
406
+ });
407
+ describe("remove", () => {
408
+ it("should remove an item at a given index", () => {
409
+ const array = [1, 2, 3];
410
+ remove(array, 1);
411
+ expect(array).toEqual([1, 3]);
412
+ });
413
+ it("should handle sparse arrays", () => {
414
+ const array = [];
415
+ array[2] = true;
416
+ remove(array, 0);
417
+ expect(countArrayItems(array)).toEqual(1);
418
+ expect(array).toEqual([void 0, true]);
419
+ });
420
+ });
421
+ describe("replace", () => {
422
+ it("should replace an item at a given index", () => {
423
+ const array = [1, 2, 3];
424
+ replace(array, 1, 4);
425
+ expect(array).toEqual([1, 4, 3]);
426
+ });
427
+ it("should handle sparse arrays", () => {
428
+ const array = [];
429
+ array[2] = true;
430
+ replace(array, 0, true);
431
+ expect(countArrayItems(array)).toEqual(2);
432
+ expect(array).toEqual([true, void 0, true]);
433
+ });
434
+ });
435
+ describe("mutateAsArray", () => {
436
+ it("should handle swap", () => {
437
+ const values = {
438
+ myField: "something",
439
+ "myField[0]": "foo",
440
+ "myField[2]": "bar",
441
+ otherField: "baz",
442
+ "otherField[0]": "something else"
443
+ };
444
+ mutateAsArray("myField", values, (arr) => {
445
+ swap(arr, 0, 2);
446
+ });
447
+ expect(values).toEqual({
448
+ myField: "something",
449
+ "myField[0]": "bar",
450
+ "myField[2]": "foo",
451
+ otherField: "baz",
452
+ "otherField[0]": "something else"
453
+ });
454
+ });
455
+ it("should swap sparse arrays", () => {
456
+ const values = {
457
+ myField: "something",
458
+ "myField[0]": "foo",
459
+ otherField: "baz",
460
+ "otherField[0]": "something else"
461
+ };
462
+ mutateAsArray("myField", values, (arr) => {
463
+ swap(arr, 0, 2);
464
+ });
465
+ expect(values).toEqual({
466
+ myField: "something",
467
+ "myField[2]": "foo",
468
+ otherField: "baz",
469
+ "otherField[0]": "something else"
470
+ });
471
+ });
472
+ it("should handle arrays with nested values", () => {
473
+ const values = {
474
+ myField: "something",
475
+ "myField[0].title": "foo",
476
+ "myField[0].note": "bar",
477
+ "myField[2].title": "other",
478
+ "myField[2].note": "other",
479
+ otherField: "baz",
480
+ "otherField[0]": "something else"
481
+ };
482
+ mutateAsArray("myField", values, (arr) => {
483
+ swap(arr, 0, 2);
484
+ });
485
+ expect(values).toEqual({
486
+ myField: "something",
487
+ "myField[0].title": "other",
488
+ "myField[0].note": "other",
489
+ "myField[2].title": "foo",
490
+ "myField[2].note": "bar",
491
+ otherField: "baz",
492
+ "otherField[0]": "something else"
493
+ });
494
+ });
495
+ it("should handle move", () => {
496
+ const values = {
497
+ myField: "something",
498
+ "myField[0]": "foo",
499
+ "myField[1]": "bar",
500
+ "myField[2]": "baz",
501
+ "otherField[0]": "something else"
502
+ };
503
+ mutateAsArray("myField", values, (arr) => {
504
+ move(arr, 0, 2);
505
+ });
506
+ expect(values).toEqual({
507
+ myField: "something",
508
+ "myField[0]": "bar",
509
+ "myField[1]": "baz",
510
+ "myField[2]": "foo",
511
+ "otherField[0]": "something else"
512
+ });
513
+ });
514
+ it("should not create keys for `undefined`", () => {
515
+ const values = {
516
+ "myField[0]": "foo"
517
+ };
518
+ mutateAsArray("myField", values, (arr) => {
519
+ arr.unshift(void 0);
520
+ });
521
+ expect(Object.keys(values)).toHaveLength(1);
522
+ expect(values).toEqual({
523
+ "myField[1]": "foo"
524
+ });
525
+ });
526
+ it("should handle remove", () => {
527
+ const values = {
528
+ myField: "something",
529
+ "myField[0]": "foo",
530
+ "myField[1]": "bar",
531
+ "myField[2]": "baz",
532
+ "otherField[0]": "something else"
533
+ };
534
+ mutateAsArray("myField", values, (arr) => {
535
+ remove(arr, 1);
536
+ });
537
+ expect(values).toEqual({
538
+ myField: "something",
539
+ "myField[0]": "foo",
540
+ "myField[1]": "baz",
541
+ "otherField[0]": "something else"
542
+ });
543
+ expect("myField[2]" in values).toBe(false);
544
+ });
545
+ });
546
+ describe("getDeepArrayPaths", () => {
547
+ it("should return all paths recursively", () => {
548
+ const obj = [
549
+ true,
550
+ true,
551
+ [true, true],
552
+ { foo: true, bar: { baz: true, test: [true] } }
553
+ ];
554
+ expect(getDeepArrayPaths(obj, "myField")).toEqual([
555
+ "myField[0]",
556
+ "myField[1]",
557
+ "myField[2][0]",
558
+ "myField[2][1]",
559
+ "myField[3].foo",
560
+ "myField[3].bar.baz",
561
+ "myField[3].bar.test[0]"
562
+ ]);
563
+ });
564
+ });
565
+ }
566
+
567
+ // src/internal/state/createFormStore.ts
568
+ var noOp = () => {
930
569
  };
931
- const defaultFormState = {
570
+ var defaultFormState = {
932
571
  isHydrated: false,
933
572
  isSubmitting: false,
934
573
  hasBeenSubmitted: false,
@@ -980,7 +619,7 @@ const defaultFormState = {
980
619
  }
981
620
  }
982
621
  };
983
- const createFormState = (set, get) => ({
622
+ var createFormState = (set, get2) => ({
984
623
  isHydrated: false,
985
624
  isSubmitting: false,
986
625
  hasBeenSubmitted: false,
@@ -988,7 +627,7 @@ const createFormState = (set, get) => ({
988
627
  fieldErrors: {},
989
628
  formElement: null,
990
629
  currentDefaultValues: {},
991
- isValid: () => Object.keys(get().fieldErrors).length === 0,
630
+ isValid: () => Object.keys(get2().fieldErrors).length === 0,
992
631
  startSubmit: () => set((state) => {
993
632
  state.isSubmitting = true;
994
633
  state.hasBeenSubmitted = true;
@@ -1026,7 +665,7 @@ const createFormState = (set, get) => ({
1026
665
  state.isHydrated = true;
1027
666
  }),
1028
667
  setFormElement: (formElement) => {
1029
- if (get().formElement === formElement)
668
+ if (get2().formElement === formElement)
1030
669
  return;
1031
670
  set((state) => {
1032
671
  state.formElement = formElement;
@@ -1034,49 +673,49 @@ const createFormState = (set, get) => ({
1034
673
  },
1035
674
  validateField: async (field) => {
1036
675
  var _a, _b, _c;
1037
- const formElement = get().formElement;
1038
- invariant(
676
+ const formElement = get2().formElement;
677
+ invariant2(
1039
678
  formElement,
1040
679
  "Cannot find reference to form. This is probably a bug in remix-validated-form."
1041
680
  );
1042
- const validator = (_a = get().formProps) == null ? void 0 : _a.validator;
1043
- invariant(
681
+ const validator = (_a = get2().formProps) == null ? void 0 : _a.validator;
682
+ invariant2(
1044
683
  validator,
1045
684
  "Cannot validator. This is probably a bug in remix-validated-form."
1046
685
  );
1047
- await ((_c = (_b = get().controlledFields).awaitValueUpdate) == null ? void 0 : _c.call(_b, field));
686
+ await ((_c = (_b = get2().controlledFields).awaitValueUpdate) == null ? void 0 : _c.call(_b, field));
1048
687
  const { error } = await validator.validateField(
1049
688
  new FormData(formElement),
1050
689
  field
1051
690
  );
1052
691
  if (error) {
1053
- get().setFieldError(field, error);
692
+ get2().setFieldError(field, error);
1054
693
  return error;
1055
694
  } else {
1056
- get().clearFieldError(field);
695
+ get2().clearFieldError(field);
1057
696
  return null;
1058
697
  }
1059
698
  },
1060
699
  validate: async () => {
1061
700
  var _a;
1062
- const formElement = get().formElement;
1063
- invariant(
701
+ const formElement = get2().formElement;
702
+ invariant2(
1064
703
  formElement,
1065
704
  "Cannot find reference to form. This is probably a bug in remix-validated-form."
1066
705
  );
1067
- const validator = (_a = get().formProps) == null ? void 0 : _a.validator;
1068
- invariant(
706
+ const validator = (_a = get2().formProps) == null ? void 0 : _a.validator;
707
+ invariant2(
1069
708
  validator,
1070
709
  "Cannot validator. This is probably a bug in remix-validated-form."
1071
710
  );
1072
711
  const result = await validator.validate(new FormData(formElement));
1073
712
  if (result.error)
1074
- get().setFieldErrors(result.error.fieldErrors);
713
+ get2().setFieldErrors(result.error.fieldErrors);
1075
714
  return result;
1076
715
  },
1077
716
  submit: () => {
1078
- const formElement = get().formElement;
1079
- invariant(
717
+ const formElement = get2().formElement;
718
+ invariant2(
1080
719
  formElement,
1081
720
  "Cannot find reference to form. This is probably a bug in remix-validated-form."
1082
721
  );
@@ -1084,11 +723,11 @@ const createFormState = (set, get) => ({
1084
723
  },
1085
724
  getValues: () => {
1086
725
  var _a;
1087
- return new FormData((_a = get().formElement) != null ? _a : void 0);
726
+ return new FormData((_a = get2().formElement) != null ? _a : void 0);
1088
727
  },
1089
728
  resetFormElement: () => {
1090
729
  var _a;
1091
- return (_a = get().formElement) == null ? void 0 : _a.reset();
730
+ return (_a = get2().formElement) == null ? void 0 : _a.reset();
1092
731
  },
1093
732
  controlledFields: {
1094
733
  values: {},
@@ -1103,7 +742,7 @@ const createFormState = (set, get) => ({
1103
742
  });
1104
743
  },
1105
744
  unregister: (fieldName) => {
1106
- if (get() === null || get() === void 0)
745
+ if (get2() === null || get2() === void 0)
1107
746
  return;
1108
747
  set((state) => {
1109
748
  var _a, _b, _c;
@@ -1130,12 +769,12 @@ const createFormState = (set, get) => ({
1130
769
  delete state.controlledFields.refCounts[fieldName];
1131
770
  });
1132
771
  },
1133
- getValue: (fieldName) => getPath(get().controlledFields.values, fieldName),
772
+ getValue: (fieldName) => getPath(get2().controlledFields.values, fieldName),
1134
773
  setValue: (fieldName, value) => {
1135
774
  set((state) => {
1136
775
  setPath(state.controlledFields.values, fieldName, value);
1137
776
  });
1138
- get().controlledFields.kickoffValueUpdate(fieldName);
777
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1139
778
  },
1140
779
  kickoffValueUpdate: (fieldName) => {
1141
780
  const clear = () => set((state) => {
@@ -1150,7 +789,7 @@ const createFormState = (set, get) => ({
1150
789
  });
1151
790
  },
1152
791
  awaitValueUpdate: async (fieldName) => {
1153
- await get().controlledFields.valueUpdatePromises[fieldName];
792
+ await get2().controlledFields.valueUpdatePromises[fieldName];
1154
793
  },
1155
794
  array: {
1156
795
  push: (fieldName, item) => {
@@ -1158,7 +797,7 @@ const createFormState = (set, get) => ({
1158
797
  getArray(state.controlledFields.values, fieldName).push(item);
1159
798
  getArray(state.currentDefaultValues, fieldName).push(item);
1160
799
  });
1161
- get().controlledFields.kickoffValueUpdate(fieldName);
800
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1162
801
  },
1163
802
  swap: (fieldName, indexA, indexB) => {
1164
803
  set((state) => {
@@ -1183,7 +822,7 @@ const createFormState = (set, get) => ({
1183
822
  (array) => swap(array, indexA, indexB)
1184
823
  );
1185
824
  });
1186
- get().controlledFields.kickoffValueUpdate(fieldName);
825
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1187
826
  },
1188
827
  move: (fieldName, from2, to) => {
1189
828
  set((state) => {
@@ -1208,7 +847,7 @@ const createFormState = (set, get) => ({
1208
847
  (array) => move(array, from2, to)
1209
848
  );
1210
849
  });
1211
- get().controlledFields.kickoffValueUpdate(fieldName);
850
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1212
851
  },
1213
852
  insert: (fieldName, index, item) => {
1214
853
  set((state) => {
@@ -1233,7 +872,7 @@ const createFormState = (set, get) => ({
1233
872
  (array) => insert(array, index, void 0)
1234
873
  );
1235
874
  });
1236
- get().controlledFields.kickoffValueUpdate(fieldName);
875
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1237
876
  },
1238
877
  remove: (fieldName, index) => {
1239
878
  set((state) => {
@@ -1256,7 +895,7 @@ const createFormState = (set, get) => ({
1256
895
  (array) => remove(array, index)
1257
896
  );
1258
897
  });
1259
- get().controlledFields.kickoffValueUpdate(fieldName);
898
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1260
899
  },
1261
900
  pop: (fieldName) => {
1262
901
  set((state) => {
@@ -1273,7 +912,7 @@ const createFormState = (set, get) => ({
1273
912
  (array) => array.pop()
1274
913
  );
1275
914
  });
1276
- get().controlledFields.kickoffValueUpdate(fieldName);
915
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1277
916
  },
1278
917
  unshift: (fieldName, value) => {
1279
918
  set((state) => {
@@ -1314,17 +953,17 @@ const createFormState = (set, get) => ({
1314
953
  (array) => replace(array, index, item)
1315
954
  );
1316
955
  });
1317
- get().controlledFields.kickoffValueUpdate(fieldName);
956
+ get2().controlledFields.kickoffValueUpdate(fieldName);
1318
957
  }
1319
958
  }
1320
959
  }
1321
960
  });
1322
- const useRootFormStore = create()(
1323
- immer((set, get) => ({
961
+ var useRootFormStore = create()(
962
+ immer((set, get2) => ({
1324
963
  forms: {},
1325
964
  form: (formId) => {
1326
965
  var _a;
1327
- return (_a = get().forms[formId]) != null ? _a : defaultFormState;
966
+ return (_a = get2().forms[formId]) != null ? _a : defaultFormState;
1328
967
  },
1329
968
  cleanupForm: (formId) => {
1330
969
  set((state) => {
@@ -1332,21 +971,25 @@ const useRootFormStore = create()(
1332
971
  });
1333
972
  },
1334
973
  registerForm: (formId) => {
1335
- if (get().forms[formId])
974
+ if (get2().forms[formId])
1336
975
  return;
1337
976
  set((state) => {
1338
977
  state.forms[formId] = createFormState(
1339
978
  (setter) => set((state2) => setter(state2.forms[formId])),
1340
- () => get().forms[formId]
979
+ () => get2().forms[formId]
1341
980
  );
1342
981
  });
1343
982
  }
1344
983
  }))
1345
984
  );
1346
- const useFormStore = (formId, selector) => {
985
+
986
+ // src/internal/state/storeHooks.ts
987
+ var useFormStore = (formId, selector) => {
1347
988
  return useRootFormStore((state) => selector(state.form(formId)));
1348
989
  };
1349
- const useInternalFormContext = (formId, hookName) => {
990
+
991
+ // src/internal/hooks.ts
992
+ var useInternalFormContext = (formId, hookName) => {
1350
993
  const formContext = useContext(InternalFormContext);
1351
994
  if (formId)
1352
995
  return { formId };
@@ -1376,12 +1019,12 @@ function useErrorResponseForForm({
1376
1019
  return actionData;
1377
1020
  return null;
1378
1021
  }
1379
- const useFieldErrorsForForm = (context) => {
1022
+ var useFieldErrorsForForm = (context) => {
1380
1023
  const response = useErrorResponseForForm(context);
1381
1024
  const hydrated = useFormStore(context.formId, (state) => state.isHydrated);
1382
1025
  return hydratable.from(response == null ? void 0 : response.fieldErrors, hydrated);
1383
1026
  };
1384
- const useDefaultValuesFromLoader = ({
1027
+ var useDefaultValuesFromLoader = ({
1385
1028
  formId
1386
1029
  }) => {
1387
1030
  const matches = useMatches();
@@ -1392,7 +1035,7 @@ const useDefaultValuesFromLoader = ({
1392
1035
  }
1393
1036
  return null;
1394
1037
  };
1395
- const useDefaultValuesForForm = (context) => {
1038
+ var useDefaultValuesForForm = (context) => {
1396
1039
  const { formId, defaultValuesProp } = context;
1397
1040
  const hydrated = useFormStore(formId, (state) => state.isHydrated);
1398
1041
  const errorResponse = useErrorResponseForForm(context);
@@ -1400,7 +1043,7 @@ const useDefaultValuesForForm = (context) => {
1400
1043
  if (hydrated)
1401
1044
  return hydratable.hydratedData();
1402
1045
  if (errorResponse == null ? void 0 : errorResponse.repopulateFields) {
1403
- invariant(
1046
+ invariant3(
1404
1047
  typeof errorResponse.repopulateFields === "object",
1405
1048
  "repopulateFields returned something other than an object"
1406
1049
  );
@@ -1410,14 +1053,14 @@ const useDefaultValuesForForm = (context) => {
1410
1053
  return hydratable.serverData(defaultValuesProp);
1411
1054
  return hydratable.serverData(defaultValuesFromLoader);
1412
1055
  };
1413
- const useHasActiveFormSubmit = ({
1056
+ var useHasActiveFormSubmit = ({
1414
1057
  fetcher
1415
1058
  }) => {
1416
1059
  const transition = useTransition();
1417
1060
  const hasActiveSubmission = fetcher ? fetcher.state === "submitting" : !!transition.submission;
1418
1061
  return hasActiveSubmission;
1419
1062
  };
1420
- const useFieldTouched = (field, { formId }) => {
1063
+ var useFieldTouched = (field, { formId }) => {
1421
1064
  const touched = useFormStore(formId, (state) => state.touchedFields[field]);
1422
1065
  const setFieldTouched = useFormStore(formId, (state) => state.setTouched);
1423
1066
  const setTouched = useCallback(
@@ -1426,7 +1069,7 @@ const useFieldTouched = (field, { formId }) => {
1426
1069
  );
1427
1070
  return [touched, setTouched];
1428
1071
  };
1429
- const useFieldError = (name, context) => {
1072
+ var useFieldError = (name, context) => {
1430
1073
  const fieldErrors = useFieldErrorsForForm(context);
1431
1074
  const state = useFormStore(
1432
1075
  context.formId,
@@ -1434,54 +1077,57 @@ const useFieldError = (name, context) => {
1434
1077
  );
1435
1078
  return fieldErrors.map((fieldErrors2) => fieldErrors2 == null ? void 0 : fieldErrors2[name]).hydrateTo(state);
1436
1079
  };
1437
- const useClearError = (context) => {
1080
+ var useClearError = (context) => {
1438
1081
  const { formId } = context;
1439
1082
  return useFormStore(formId, (state) => state.clearFieldError);
1440
1083
  };
1441
- const useCurrentDefaultValueForField = (formId, field) => useFormStore(formId, (state) => getPath(state.currentDefaultValues, field));
1442
- const useFieldDefaultValue = (name, context) => {
1084
+ var useCurrentDefaultValueForField = (formId, field) => useFormStore(formId, (state) => getPath(state.currentDefaultValues, field));
1085
+ var useFieldDefaultValue = (name, context) => {
1443
1086
  const defaultValues = useDefaultValuesForForm(context);
1444
1087
  const state = useCurrentDefaultValueForField(context.formId, name);
1445
1088
  return defaultValues.map((val) => getPath(val, name)).hydrateTo(state);
1446
1089
  };
1447
- const useInternalIsSubmitting = (formId) => useFormStore(formId, (state) => state.isSubmitting);
1448
- const useInternalIsValid = (formId) => useFormStore(formId, (state) => state.isValid());
1449
- const useInternalHasBeenSubmitted = (formId) => useFormStore(formId, (state) => state.hasBeenSubmitted);
1450
- const useValidateField = (formId) => useFormStore(formId, (state) => state.validateField);
1451
- const useValidate = (formId) => useFormStore(formId, (state) => state.validate);
1452
- const noOpReceiver = () => () => {
1090
+ var useInternalIsSubmitting = (formId) => useFormStore(formId, (state) => state.isSubmitting);
1091
+ var useInternalIsValid = (formId) => useFormStore(formId, (state) => state.isValid());
1092
+ var useInternalHasBeenSubmitted = (formId) => useFormStore(formId, (state) => state.hasBeenSubmitted);
1093
+ var useValidateField = (formId) => useFormStore(formId, (state) => state.validateField);
1094
+ var useValidate = (formId) => useFormStore(formId, (state) => state.validate);
1095
+ var noOpReceiver = () => () => {
1453
1096
  };
1454
- const useRegisterReceiveFocus = (formId) => useFormStore(
1097
+ var useRegisterReceiveFocus = (formId) => useFormStore(
1455
1098
  formId,
1456
1099
  (state) => {
1457
1100
  var _a, _b;
1458
1101
  return (_b = (_a = state.formProps) == null ? void 0 : _a.registerReceiveFocus) != null ? _b : noOpReceiver;
1459
1102
  }
1460
1103
  );
1461
- const defaultDefaultValues = {};
1462
- const useSyncedDefaultValues = (formId) => useFormStore(
1104
+ var defaultDefaultValues = {};
1105
+ var useSyncedDefaultValues = (formId) => useFormStore(
1463
1106
  formId,
1464
1107
  (state) => {
1465
1108
  var _a, _b;
1466
1109
  return (_b = (_a = state.formProps) == null ? void 0 : _a.defaultValues) != null ? _b : defaultDefaultValues;
1467
1110
  }
1468
1111
  );
1469
- const useSetTouched = ({ formId }) => useFormStore(formId, (state) => state.setTouched);
1470
- const useTouchedFields = (formId) => useFormStore(formId, (state) => state.touchedFields);
1471
- const useFieldErrors = (formId) => useFormStore(formId, (state) => state.fieldErrors);
1472
- const useSetFieldErrors = (formId) => useFormStore(formId, (state) => state.setFieldErrors);
1473
- const useResetFormElement = (formId) => useFormStore(formId, (state) => state.resetFormElement);
1474
- const useSubmitForm = (formId) => useFormStore(formId, (state) => state.submit);
1475
- const useFormActionProp = (formId) => useFormStore(formId, (state) => {
1112
+ var useSetTouched = ({ formId }) => useFormStore(formId, (state) => state.setTouched);
1113
+ var useTouchedFields = (formId) => useFormStore(formId, (state) => state.touchedFields);
1114
+ var useFieldErrors = (formId) => useFormStore(formId, (state) => state.fieldErrors);
1115
+ var useSetFieldErrors = (formId) => useFormStore(formId, (state) => state.setFieldErrors);
1116
+ var useResetFormElement = (formId) => useFormStore(formId, (state) => state.resetFormElement);
1117
+ var useSubmitForm = (formId) => useFormStore(formId, (state) => state.submit);
1118
+ var useFormActionProp = (formId) => useFormStore(formId, (state) => {
1476
1119
  var _a;
1477
1120
  return (_a = state.formProps) == null ? void 0 : _a.action;
1478
1121
  });
1479
- const useFormSubactionProp = (formId) => useFormStore(formId, (state) => {
1122
+ var useFormSubactionProp = (formId) => useFormStore(formId, (state) => {
1480
1123
  var _a;
1481
1124
  return (_a = state.formProps) == null ? void 0 : _a.subaction;
1482
1125
  });
1483
- const useFormValues = (formId) => useFormStore(formId, (state) => state.getValues);
1484
- const useControlledFieldValue = (context, field) => {
1126
+ var useFormValues = (formId) => useFormStore(formId, (state) => state.getValues);
1127
+
1128
+ // src/internal/state/controlledFields.ts
1129
+ import { useCallback as useCallback2, useEffect } from "react";
1130
+ var useControlledFieldValue = (context, field) => {
1485
1131
  const value = useFormStore(
1486
1132
  context.formId,
1487
1133
  (state) => state.controlledFields.getValue(field)
@@ -1493,7 +1139,7 @@ const useControlledFieldValue = (context, field) => {
1493
1139
  const defaultValue = useFieldDefaultValue(field, context);
1494
1140
  return isFormHydrated ? value : defaultValue;
1495
1141
  };
1496
- const useRegisterControlledField = (context, field) => {
1142
+ var useRegisterControlledField = (context, field) => {
1497
1143
  const resolveUpdate = useFormStore(
1498
1144
  context.formId,
1499
1145
  (state) => state.controlledFields.valueUpdateResolvers[field]
@@ -1514,38 +1160,40 @@ const useRegisterControlledField = (context, field) => {
1514
1160
  return () => unregister(field);
1515
1161
  }, [context.formId, field, register, unregister]);
1516
1162
  };
1517
- const useControllableValue = (context, field) => {
1163
+ var useControllableValue = (context, field) => {
1518
1164
  useRegisterControlledField(context, field);
1519
1165
  const setControlledFieldValue = useFormStore(
1520
1166
  context.formId,
1521
1167
  (state) => state.controlledFields.setValue
1522
1168
  );
1523
- const setValue = useCallback(
1169
+ const setValue = useCallback2(
1524
1170
  (value2) => setControlledFieldValue(field, value2),
1525
1171
  [field, setControlledFieldValue]
1526
1172
  );
1527
1173
  const value = useControlledFieldValue(context, field);
1528
1174
  return [value, setValue];
1529
1175
  };
1530
- const useUpdateControllableValue = (formId) => {
1176
+ var useUpdateControllableValue = (formId) => {
1531
1177
  const setValue = useFormStore(
1532
1178
  formId,
1533
1179
  (state) => state.controlledFields.setValue
1534
1180
  );
1535
- return useCallback(
1181
+ return useCallback2(
1536
1182
  (field, value) => setValue(field, value),
1537
1183
  [setValue]
1538
1184
  );
1539
1185
  };
1540
- const useIsSubmitting = (formId) => {
1186
+
1187
+ // src/hooks.ts
1188
+ var useIsSubmitting = (formId) => {
1541
1189
  const formContext = useInternalFormContext(formId, "useIsSubmitting");
1542
1190
  return useInternalIsSubmitting(formContext.formId);
1543
1191
  };
1544
- const useIsValid = (formId) => {
1192
+ var useIsValid = (formId) => {
1545
1193
  const formContext = useInternalFormContext(formId, "useIsValid");
1546
1194
  return useInternalIsValid(formContext.formId);
1547
1195
  };
1548
- const useField = (name, options) => {
1196
+ var useField = (name, options) => {
1549
1197
  const { formId: providedFormId, handleReceiveFocus } = options != null ? options : {};
1550
1198
  const formContext = useInternalFormContext(providedFormId, "useField");
1551
1199
  const defaultValue = useFieldDefaultValue(name, formContext);
@@ -1555,7 +1203,7 @@ const useField = (name, options) => {
1555
1203
  const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);
1556
1204
  const validateField = useValidateField(formContext.formId);
1557
1205
  const registerReceiveFocus = useRegisterReceiveFocus(formContext.formId);
1558
- useEffect(() => {
1206
+ useEffect2(() => {
1559
1207
  if (handleReceiveFocus)
1560
1208
  return registerReceiveFocus(name, handleReceiveFocus);
1561
1209
  }, [handleReceiveFocus, name, registerReceiveFocus]);
@@ -1593,38 +1241,18 @@ const useField = (name, options) => {
1593
1241
  ]);
1594
1242
  return field;
1595
1243
  };
1596
- const useControlField = (name, formId) => {
1244
+ var useControlField = (name, formId) => {
1597
1245
  const context = useInternalFormContext(formId, "useControlField");
1598
1246
  const [value, setValue] = useControllableValue(context, name);
1599
1247
  return [value, setValue];
1600
1248
  };
1601
- const useUpdateControlledField = (formId) => {
1249
+ var useUpdateControlledField = (formId) => {
1602
1250
  const context = useInternalFormContext(formId, "useControlField");
1603
1251
  return useUpdateControllableValue(context.formId);
1604
1252
  };
1605
- /**
1606
- * @remix-run/server-runtime v1.7.6
1607
- *
1608
- * Copyright (c) Remix Software Inc.
1609
- *
1610
- * This source code is licensed under the MIT license found in the
1611
- * LICENSE.md file in the root directory of this source tree.
1612
- *
1613
- * @license MIT
1614
- */
1615
- const json = (data, init = {}) => {
1616
- let responseInit = typeof init === "number" ? {
1617
- status: init
1618
- } : init;
1619
- let headers = new Headers(responseInit.headers);
1620
- if (!headers.has("Content-Type")) {
1621
- headers.set("Content-Type", "application/json; charset=utf-8");
1622
- }
1623
- return new Response(JSON.stringify(data), {
1624
- ...responseInit,
1625
- headers
1626
- });
1627
- };
1253
+
1254
+ // src/server.ts
1255
+ import { json } from "@remix-run/server-runtime";
1628
1256
  function validationError(error, repopulateFields, init) {
1629
1257
  return json(
1630
1258
  {
@@ -1636,10 +1264,27 @@ function validationError(error, repopulateFields, init) {
1636
1264
  { status: 422, ...init }
1637
1265
  );
1638
1266
  }
1639
- const setFormDefaults = (formId, defaultValues) => ({
1267
+ var setFormDefaults = (formId, defaultValues) => ({
1640
1268
  [formDefaultValuesKey(formId)]: defaultValues
1641
1269
  });
1642
- class MultiValueMap {
1270
+
1271
+ // src/ValidatedForm.tsx
1272
+ import {
1273
+ Form as RemixForm,
1274
+ useSubmit
1275
+ } from "@remix-run/react";
1276
+ import {
1277
+ useCallback as useCallback4,
1278
+ useEffect as useEffect5,
1279
+ useMemo as useMemo2,
1280
+ useRef as useRef4,
1281
+ useState
1282
+ } from "react";
1283
+ import * as R3 from "remeda";
1284
+
1285
+ // src/internal/MultiValueMap.ts
1286
+ import { useCallback as useCallback3, useRef } from "react";
1287
+ var MultiValueMap = class {
1643
1288
  constructor() {
1644
1289
  this.dict = /* @__PURE__ */ new Map();
1645
1290
  this.add = (key, value) => {
@@ -1670,19 +1315,22 @@ class MultiValueMap {
1670
1315
  this.values = () => this.dict.values();
1671
1316
  this.has = (key) => this.dict.has(key);
1672
1317
  }
1673
- }
1674
- const useMultiValueMap = () => {
1318
+ };
1319
+ var useMultiValueMap = () => {
1675
1320
  const ref = useRef(null);
1676
- return useCallback(() => {
1321
+ return useCallback3(() => {
1677
1322
  if (ref.current)
1678
1323
  return ref.current;
1679
1324
  ref.current = new MultiValueMap();
1680
1325
  return ref.current;
1681
1326
  }, []);
1682
1327
  };
1328
+
1329
+ // src/internal/submissionCallbacks.ts
1330
+ import { useEffect as useEffect3, useRef as useRef2 } from "react";
1683
1331
  function useSubmitComplete(isSubmitting, callback) {
1684
- const isPending = useRef(false);
1685
- useEffect(() => {
1332
+ const isPending = useRef2(false);
1333
+ useEffect3(() => {
1686
1334
  if (isSubmitting) {
1687
1335
  isPending.current = true;
1688
1336
  }
@@ -1692,7 +1340,11 @@ function useSubmitComplete(isSubmitting, callback) {
1692
1340
  }
1693
1341
  });
1694
1342
  }
1695
- const mergeRefs = (refs) => {
1343
+
1344
+ // src/internal/util.ts
1345
+ import { useEffect as useEffect4, useLayoutEffect, useRef as useRef3 } from "react";
1346
+ import * as R2 from "remeda";
1347
+ var mergeRefs = (refs) => {
1696
1348
  return (value) => {
1697
1349
  refs.filter(Boolean).forEach((ref) => {
1698
1350
  if (typeof ref === "function") {
@@ -1703,22 +1355,25 @@ const mergeRefs = (refs) => {
1703
1355
  });
1704
1356
  };
1705
1357
  };
1706
- const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
1707
- const useDeepEqualsMemo = (item) => {
1708
- const ref = useRef(item);
1709
- const areEqual = ref.current === item || equals(ref.current, item);
1710
- useEffect(() => {
1358
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect4;
1359
+ var useDeepEqualsMemo = (item) => {
1360
+ const ref = useRef3(item);
1361
+ const areEqual = ref.current === item || R2.equals(ref.current, item);
1362
+ useEffect4(() => {
1711
1363
  if (!areEqual) {
1712
1364
  ref.current = item;
1713
1365
  }
1714
1366
  });
1715
1367
  return areEqual ? ref.current : item;
1716
1368
  };
1717
- const getDataFromForm = (el) => new FormData(el);
1369
+
1370
+ // src/ValidatedForm.tsx
1371
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1372
+ var getDataFromForm = (el) => new FormData(el);
1718
1373
  function nonNull(value) {
1719
1374
  return value !== null;
1720
1375
  }
1721
- const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) => {
1376
+ var focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) => {
1722
1377
  var _a;
1723
1378
  const namesInOrder = [...formElement.elements].map((el) => {
1724
1379
  const input = el instanceof RadioNodeList ? el[0] : el;
@@ -1726,7 +1381,7 @@ const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) =
1726
1381
  return input.name;
1727
1382
  return null;
1728
1383
  }).filter(nonNull).filter((name) => name in fieldErrors);
1729
- const uniqueNamesInOrder = uniq(namesInOrder);
1384
+ const uniqueNamesInOrder = R3.uniq(namesInOrder);
1730
1385
  for (const fieldName of uniqueNamesInOrder) {
1731
1386
  if (customFocusHandlers.has(fieldName)) {
1732
1387
  customFocusHandlers.getAll(fieldName).forEach((handler) => {
@@ -1755,11 +1410,11 @@ const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) =
1755
1410
  }
1756
1411
  }
1757
1412
  };
1758
- const useFormId = (providedId) => {
1413
+ var useFormId = (providedId) => {
1759
1414
  const [symbolId] = useState(() => Symbol("remix-validated-form-id"));
1760
1415
  return providedId != null ? providedId : symbolId;
1761
1416
  };
1762
- const FormResetter = ({
1417
+ var FormResetter = ({
1763
1418
  resetAfterSubmit,
1764
1419
  formRef
1765
1420
  }) => {
@@ -1809,7 +1464,7 @@ function ValidatedForm({
1809
1464
  var _a;
1810
1465
  const formId = useFormId(id);
1811
1466
  const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);
1812
- const contextValue = useMemo(
1467
+ const contextValue = useMemo2(
1813
1468
  () => ({
1814
1469
  formId,
1815
1470
  action,
@@ -1822,8 +1477,8 @@ function ValidatedForm({
1822
1477
  const backendError = useErrorResponseForForm(contextValue);
1823
1478
  const backendDefaultValues = useDefaultValuesFromLoader(contextValue);
1824
1479
  const hasActiveSubmission = useHasActiveFormSubmit(contextValue);
1825
- const formRef = useRef(null);
1826
- const Form$1 = (_a = fetcher == null ? void 0 : fetcher.Form) != null ? _a : Form;
1480
+ const formRef = useRef4(null);
1481
+ const Form = (_a = fetcher == null ? void 0 : fetcher.Form) != null ? _a : RemixForm;
1827
1482
  const submit = useSubmit();
1828
1483
  const setFieldErrors = useSetFieldErrors(formId);
1829
1484
  const setFieldError = useFormStore(formId, (state) => state.setFieldError);
@@ -1838,7 +1493,7 @@ function ValidatedForm({
1838
1493
  const cleanupForm = useRootFormStore((state) => state.cleanupForm);
1839
1494
  const registerForm = useRootFormStore((state) => state.registerForm);
1840
1495
  const customFocusHandlers = useMultiValueMap();
1841
- const registerReceiveFocus = useCallback(
1496
+ const registerReceiveFocus = useCallback4(
1842
1497
  (fieldName, handler) => {
1843
1498
  customFocusHandlers().add(fieldName, handler);
1844
1499
  return () => {
@@ -1872,17 +1527,30 @@ function ValidatedForm({
1872
1527
  useIsomorphicLayoutEffect(() => {
1873
1528
  setFormElementInState(formRef.current);
1874
1529
  }, [setFormElementInState]);
1875
- useEffect(() => {
1530
+ useEffect5(() => {
1876
1531
  var _a2;
1877
1532
  setFieldErrors((_a2 = backendError == null ? void 0 : backendError.fieldErrors) != null ? _a2 : {});
1878
- }, [backendError == null ? void 0 : backendError.fieldErrors, setFieldErrors, setFieldError]);
1533
+ if (!disableFocusOnError && (backendError == null ? void 0 : backendError.fieldErrors)) {
1534
+ focusFirstInvalidInput(
1535
+ backendError.fieldErrors,
1536
+ customFocusHandlers(),
1537
+ formRef.current
1538
+ );
1539
+ }
1540
+ }, [
1541
+ backendError == null ? void 0 : backendError.fieldErrors,
1542
+ customFocusHandlers,
1543
+ disableFocusOnError,
1544
+ setFieldErrors,
1545
+ setFieldError
1546
+ ]);
1879
1547
  useSubmitComplete(hasActiveSubmission, () => {
1880
1548
  endSubmit();
1881
1549
  });
1882
- const handleSubmit = async (e2, target, nativeEvent) => {
1550
+ const handleSubmit = async (e, target, nativeEvent) => {
1883
1551
  startSubmit();
1884
1552
  const submitter = nativeEvent.submitter;
1885
- const formDataToValidate = getDataFromForm(e2.currentTarget);
1553
+ const formDataToValidate = getDataFromForm(e.currentTarget);
1886
1554
  if (submitter == null ? void 0 : submitter.name) {
1887
1555
  formDataToValidate.append(submitter.name, submitter.value);
1888
1556
  }
@@ -1899,14 +1567,14 @@ function ValidatedForm({
1899
1567
  }
1900
1568
  } else {
1901
1569
  setFieldErrors({});
1902
- const eventProxy = formEventProxy(e2);
1570
+ const eventProxy = formEventProxy(e);
1903
1571
  await (onSubmit == null ? void 0 : onSubmit(result.data, eventProxy));
1904
1572
  if (eventProxy.defaultPrevented) {
1905
1573
  endSubmit();
1906
1574
  return;
1907
1575
  }
1908
1576
  if (fetcher)
1909
- fetcher.submit(submitter || e2.currentTarget);
1577
+ fetcher.submit(submitter || e.currentTarget);
1910
1578
  else
1911
1579
  submit(submitter || target, {
1912
1580
  replace: replace2,
@@ -1914,43 +1582,44 @@ function ValidatedForm({
1914
1582
  });
1915
1583
  }
1916
1584
  };
1917
- return /* @__PURE__ */ React.createElement(Form$1, {
1918
- ref: mergeRefs([formRef, formRefProp]),
1919
- ...rest,
1920
- id,
1921
- action,
1922
- method,
1923
- replace: replace2,
1924
- onSubmit: (e2) => {
1925
- e2.preventDefault();
1926
- handleSubmit(
1927
- e2,
1928
- e2.currentTarget,
1929
- e2.nativeEvent
1930
- );
1931
- },
1932
- onReset: (event) => {
1933
- onReset == null ? void 0 : onReset(event);
1934
- if (event.defaultPrevented)
1935
- return;
1936
- reset();
1585
+ return /* @__PURE__ */ jsx(
1586
+ Form,
1587
+ {
1588
+ ref: mergeRefs([formRef, formRefProp]),
1589
+ ...rest,
1590
+ id,
1591
+ action,
1592
+ method,
1593
+ replace: replace2,
1594
+ onSubmit: (e) => {
1595
+ e.preventDefault();
1596
+ handleSubmit(
1597
+ e,
1598
+ e.currentTarget,
1599
+ e.nativeEvent
1600
+ );
1601
+ },
1602
+ onReset: (event) => {
1603
+ onReset == null ? void 0 : onReset(event);
1604
+ if (event.defaultPrevented)
1605
+ return;
1606
+ reset();
1607
+ },
1608
+ children: /* @__PURE__ */ jsx(InternalFormContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxs(Fragment, { children: [
1609
+ /* @__PURE__ */ jsx(FormResetter, { formRef, resetAfterSubmit }),
1610
+ subaction && /* @__PURE__ */ jsx("input", { type: "hidden", value: subaction, name: "subaction" }),
1611
+ id && /* @__PURE__ */ jsx("input", { type: "hidden", value: id, name: FORM_ID_FIELD }),
1612
+ children
1613
+ ] }) })
1937
1614
  }
1938
- }, /* @__PURE__ */ React.createElement(InternalFormContext.Provider, {
1939
- value: contextValue
1940
- }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(FormResetter, {
1941
- formRef,
1942
- resetAfterSubmit
1943
- }), subaction && /* @__PURE__ */ React.createElement("input", {
1944
- type: "hidden",
1945
- value: subaction,
1946
- name: "subaction"
1947
- }), id && /* @__PURE__ */ React.createElement("input", {
1948
- type: "hidden",
1949
- value: id,
1950
- name: FORM_ID_FIELD
1951
- }), children)));
1615
+ );
1952
1616
  }
1953
- const objectFromPathEntries = (entries) => {
1617
+
1618
+ // src/validation/createValidator.ts
1619
+ import * as R4 from "remeda";
1620
+
1621
+ // src/internal/flatten.ts
1622
+ var objectFromPathEntries = (entries) => {
1954
1623
  const map = new MultiValueMap();
1955
1624
  entries.forEach(([key, value]) => map.add(key, value));
1956
1625
  return [...map.entries()].reduce(
@@ -1958,12 +1627,14 @@ const objectFromPathEntries = (entries) => {
1958
1627
  {}
1959
1628
  );
1960
1629
  };
1961
- const preprocessFormData = (data) => {
1630
+
1631
+ // src/validation/createValidator.ts
1632
+ var preprocessFormData = (data) => {
1962
1633
  if ("entries" in data && typeof data.entries === "function")
1963
1634
  return objectFromPathEntries([...data.entries()]);
1964
1635
  return objectFromPathEntries(Object.entries(data));
1965
1636
  };
1966
- const omitInternalFields = (data) => omit(data, [FORM_ID_FIELD]);
1637
+ var omitInternalFields = (data) => R4.omit(data, [FORM_ID_FIELD]);
1967
1638
  function createValidator(validator) {
1968
1639
  return {
1969
1640
  validate: async (value) => {
@@ -1991,7 +1662,13 @@ function createValidator(validator) {
1991
1662
  validateField: (data, field) => validator.validateField(preprocessFormData(data), field)
1992
1663
  };
1993
1664
  }
1994
- const useFormState = (formId) => {
1665
+
1666
+ // src/userFacingFormContext.ts
1667
+ import { useCallback as useCallback5, useMemo as useMemo4 } from "react";
1668
+
1669
+ // src/unreleased/formStateHooks.ts
1670
+ import { useMemo as useMemo3 } from "react";
1671
+ var useFormState = (formId) => {
1995
1672
  const formContext = useInternalFormContext(formId, "useFormState");
1996
1673
  const isSubmitting = useInternalIsSubmitting(formContext.formId);
1997
1674
  const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);
@@ -2005,7 +1682,7 @@ const useFormState = (formId) => {
2005
1682
  const fieldErrorsFromState = useFieldErrors(formContext.formId);
2006
1683
  const fieldErrorsToUse = useFieldErrorsForForm(formContext);
2007
1684
  const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);
2008
- return useMemo(
1685
+ return useMemo3(
2009
1686
  () => ({
2010
1687
  action,
2011
1688
  subaction,
@@ -2028,7 +1705,7 @@ const useFormState = (formId) => {
2028
1705
  ]
2029
1706
  );
2030
1707
  };
2031
- const useFormHelpers = (formId) => {
1708
+ var useFormHelpers = (formId) => {
2032
1709
  const formContext = useInternalFormContext(formId, "useFormHelpers");
2033
1710
  const setTouched = useSetTouched(formContext);
2034
1711
  const validateField = useValidateField(formContext.formId);
@@ -2038,7 +1715,7 @@ const useFormHelpers = (formId) => {
2038
1715
  const reset = useResetFormElement(formContext.formId);
2039
1716
  const submit = useSubmitForm(formContext.formId);
2040
1717
  const getValues = useFormValues(formContext.formId);
2041
- return useMemo(
1718
+ return useMemo3(
2042
1719
  () => ({
2043
1720
  setTouched,
2044
1721
  validateField,
@@ -2061,7 +1738,9 @@ const useFormHelpers = (formId) => {
2061
1738
  ]
2062
1739
  );
2063
1740
  };
2064
- const useFormContext = (formId) => {
1741
+
1742
+ // src/userFacingFormContext.ts
1743
+ var useFormContext = (formId) => {
2065
1744
  const context = useInternalFormContext(formId, "useFormContext");
2066
1745
  const state = useFormState(formId);
2067
1746
  const {
@@ -2075,7 +1754,7 @@ const useFormContext = (formId) => {
2075
1754
  getValues
2076
1755
  } = useFormHelpers(formId);
2077
1756
  const registerReceiveFocus = useRegisterReceiveFocus(context.formId);
2078
- const clearError = useCallback(
1757
+ const clearError = useCallback5(
2079
1758
  (...names) => {
2080
1759
  names.forEach((name) => {
2081
1760
  internalClearError(name);
@@ -2083,7 +1762,7 @@ const useFormContext = (formId) => {
2083
1762
  },
2084
1763
  [internalClearError]
2085
1764
  );
2086
- return useMemo(
1765
+ return useMemo4(
2087
1766
  () => ({
2088
1767
  ...state,
2089
1768
  setFieldTouched: setTouched,
@@ -2110,7 +1789,13 @@ const useFormContext = (formId) => {
2110
1789
  ]
2111
1790
  );
2112
1791
  };
2113
- const useInternalFieldArray = (context, field, validationBehavior) => {
1792
+
1793
+ // src/internal/state/fieldArray.tsx
1794
+ import { useMemo as useMemo5 } from "react";
1795
+ import { useCallback as useCallback6 } from "react";
1796
+ import invariant4 from "tiny-invariant";
1797
+ import { Fragment as Fragment2, jsx as jsx2 } from "react/jsx-runtime";
1798
+ var useInternalFieldArray = (context, field, validationBehavior) => {
2114
1799
  const value = useFieldDefaultValue(field, context);
2115
1800
  useRegisterControlledField(context, field);
2116
1801
  const hasBeenSubmitted = useInternalHasBeenSubmitted(context.formId);
@@ -2122,12 +1807,12 @@ const useInternalFieldArray = (context, field, validationBehavior) => {
2122
1807
  ...validationBehavior
2123
1808
  };
2124
1809
  const behavior = hasBeenSubmitted ? resolvedValidationBehavior.whenSubmitted : resolvedValidationBehavior.initial;
2125
- const maybeValidate = useCallback(() => {
1810
+ const maybeValidate = useCallback6(() => {
2126
1811
  if (behavior === "onChange") {
2127
1812
  validateField(field);
2128
1813
  }
2129
1814
  }, [behavior, field, validateField]);
2130
- invariant(
1815
+ invariant4(
2131
1816
  value === void 0 || value === null || Array.isArray(value),
2132
1817
  `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`
2133
1818
  );
@@ -2135,7 +1820,7 @@ const useInternalFieldArray = (context, field, validationBehavior) => {
2135
1820
  context.formId,
2136
1821
  (state) => state.controlledFields.array
2137
1822
  );
2138
- const helpers = useMemo(
1823
+ const helpers = useMemo5(
2139
1824
  () => ({
2140
1825
  push: (item) => {
2141
1826
  arr.push(field, item);
@@ -2172,14 +1857,14 @@ const useInternalFieldArray = (context, field, validationBehavior) => {
2172
1857
  }),
2173
1858
  [arr, field, maybeValidate]
2174
1859
  );
2175
- const arrayValue = useMemo(() => value != null ? value : [], [value]);
1860
+ const arrayValue = useMemo5(() => value != null ? value : [], [value]);
2176
1861
  return [arrayValue, helpers, error];
2177
1862
  };
2178
1863
  function useFieldArray(name, { formId, validationBehavior } = {}) {
2179
1864
  const context = useInternalFormContext(formId, "FieldArray");
2180
1865
  return useInternalFieldArray(context, name, validationBehavior);
2181
1866
  }
2182
- const FieldArray = ({
1867
+ var FieldArray = ({
2183
1868
  name,
2184
1869
  children,
2185
1870
  formId,
@@ -2191,7 +1876,20 @@ const FieldArray = ({
2191
1876
  name,
2192
1877
  validationBehavior
2193
1878
  );
2194
- return /* @__PURE__ */ React.createElement(React.Fragment, null, children(value, helpers, error));
1879
+ return /* @__PURE__ */ jsx2(Fragment2, { children: children(value, helpers, error) });
1880
+ };
1881
+ export {
1882
+ FieldArray,
1883
+ ValidatedForm,
1884
+ createValidator,
1885
+ setFormDefaults,
1886
+ useControlField,
1887
+ useField,
1888
+ useFieldArray,
1889
+ useFormContext,
1890
+ useIsSubmitting,
1891
+ useIsValid,
1892
+ useUpdateControlledField,
1893
+ validationError
2195
1894
  };
2196
- export { FieldArray, ValidatedForm, createValidator, setFormDefaults, useControlField, useField, useFieldArray, useFormContext, useIsSubmitting, useIsValid, useUpdateControlledField, validationError };
2197
- //# sourceMappingURL=remix-validated-form.es.js.map
1895
+ //# sourceMappingURL=index.esm.js.map