remix-validated-form 4.5.2 → 4.5.5
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.
- package/.turbo/turbo-build.log +8 -9
- package/browser/internal/logic/requestSubmit.d.ts +5 -0
- package/browser/internal/logic/requestSubmit.js +41 -0
- package/browser/internal/state/createFormStore.js +3 -6
- package/browser/server.d.ts +2 -2
- package/browser/server.js +1 -1
- package/dist/remix-validated-form.cjs.js +12 -3
- package/dist/remix-validated-form.cjs.js.map +1 -1
- package/dist/remix-validated-form.es.js +469 -347
- package/dist/remix-validated-form.es.js.map +1 -1
- package/dist/remix-validated-form.umd.js +12 -3
- package/dist/remix-validated-form.umd.js.map +1 -1
- package/dist/types/internal/logic/requestSubmit.d.ts +5 -0
- package/dist/types/server.d.ts +2 -2
- package/package.json +2 -3
- package/src/internal/logic/requestSubmit.test.tsx +24 -0
- package/src/internal/logic/requestSubmit.ts +103 -0
- package/src/internal/state/createFormStore.ts +3 -10
- package/src/server.ts +1 -1
- package/vite.config.ts +1 -1
@@ -1,37 +1,5 @@
|
|
1
|
-
var __defProp = Object.defineProperty;
|
2
|
-
var __defProps = Object.defineProperties;
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
8
|
-
var __spreadValues = (a2, b2) => {
|
9
|
-
for (var prop in b2 || (b2 = {}))
|
10
|
-
if (__hasOwnProp.call(b2, prop))
|
11
|
-
__defNormalProp(a2, prop, b2[prop]);
|
12
|
-
if (__getOwnPropSymbols)
|
13
|
-
for (var prop of __getOwnPropSymbols(b2)) {
|
14
|
-
if (__propIsEnum.call(b2, prop))
|
15
|
-
__defNormalProp(a2, prop, b2[prop]);
|
16
|
-
}
|
17
|
-
return a2;
|
18
|
-
};
|
19
|
-
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
|
20
|
-
var __objRest = (source, exclude) => {
|
21
|
-
var target = {};
|
22
|
-
for (var prop in source)
|
23
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
24
|
-
target[prop] = source[prop];
|
25
|
-
if (source != null && __getOwnPropSymbols)
|
26
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
27
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
28
|
-
target[prop] = source[prop];
|
29
|
-
}
|
30
|
-
return target;
|
31
|
-
};
|
32
1
|
import React, { createContext, useDebugValue, useContext, useCallback, useEffect, useMemo, useRef, useLayoutEffect, useState } from "react";
|
33
2
|
import { useActionData, useMatches, useTransition, Form, useSubmit } from "@remix-run/react";
|
34
|
-
import { json } from "@remix-run/server-runtime";
|
35
3
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
36
4
|
function listCacheClear$1() {
|
37
5
|
this.__data__ = [];
|
@@ -226,7 +194,9 @@ var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
|
226
194
|
var funcProto = Function.prototype, objectProto$b = Object.prototype;
|
227
195
|
var funcToString = funcProto.toString;
|
228
196
|
var hasOwnProperty$9 = objectProto$b.hasOwnProperty;
|
229
|
-
var reIsNative = RegExp(
|
197
|
+
var reIsNative = RegExp(
|
198
|
+
"^" + funcToString.call(hasOwnProperty$9).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
|
199
|
+
);
|
230
200
|
function baseIsNative$1(value) {
|
231
201
|
if (!isObject$3(value) || isMasked(value)) {
|
232
202
|
return false;
|
@@ -498,7 +468,7 @@ function setToArray$3(set2) {
|
|
498
468
|
return result;
|
499
469
|
}
|
500
470
|
var _setToArray = setToArray$3;
|
501
|
-
var Symbol$2 = _Symbol,
|
471
|
+
var Symbol$2 = _Symbol, Uint8Array = _Uint8Array, eq$1 = eq_1, equalArrays$1 = _equalArrays, mapToArray = _mapToArray, setToArray$2 = _setToArray;
|
502
472
|
var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;
|
503
473
|
var boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", mapTag$2 = "[object Map]", numberTag$1 = "[object Number]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]";
|
504
474
|
var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]";
|
@@ -512,7 +482,7 @@ function equalByTag$1(object, other, tag, bitmask, customizer, equalFunc, stack)
|
|
512
482
|
object = object.buffer;
|
513
483
|
other = other.buffer;
|
514
484
|
case arrayBufferTag$1:
|
515
|
-
if (object.byteLength != other.byteLength || !equalFunc(new
|
485
|
+
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
|
516
486
|
return false;
|
517
487
|
}
|
518
488
|
return true;
|
@@ -633,8 +603,8 @@ var stubFalse_1 = stubFalse;
|
|
633
603
|
var freeExports = exports && !exports.nodeType && exports;
|
634
604
|
var freeModule = freeExports && true && module && !module.nodeType && module;
|
635
605
|
var moduleExports = freeModule && freeModule.exports === freeExports;
|
636
|
-
var
|
637
|
-
var nativeIsBuffer =
|
606
|
+
var Buffer = moduleExports ? root2.Buffer : void 0;
|
607
|
+
var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0;
|
638
608
|
var isBuffer2 = nativeIsBuffer || stubFalse2;
|
639
609
|
module.exports = isBuffer2;
|
640
610
|
})(isBuffer$2, isBuffer$2.exports);
|
@@ -1346,10 +1316,14 @@ const createGetInputProps = ({
|
|
1346
1316
|
validationBehavior,
|
1347
1317
|
name
|
1348
1318
|
}) => {
|
1349
|
-
const validationBehaviors =
|
1319
|
+
const validationBehaviors = {
|
1320
|
+
...defaultValidationBehavior,
|
1321
|
+
...validationBehavior
|
1322
|
+
};
|
1350
1323
|
return (props = {}) => {
|
1351
1324
|
const behavior = hasBeenSubmitted ? validationBehaviors.whenSubmitted : touched ? validationBehaviors.whenTouched : validationBehaviors.initial;
|
1352
|
-
const inputProps =
|
1325
|
+
const inputProps = {
|
1326
|
+
...props,
|
1353
1327
|
onChange: (...args) => {
|
1354
1328
|
var _a;
|
1355
1329
|
if (behavior === "onChange")
|
@@ -1366,7 +1340,7 @@ const createGetInputProps = ({
|
|
1366
1340
|
return (_a = props == null ? void 0 : props.onBlur) == null ? void 0 : _a.call(props, ...args);
|
1367
1341
|
},
|
1368
1342
|
name
|
1369
|
-
}
|
1343
|
+
};
|
1370
1344
|
if (props.type === "checkbox") {
|
1371
1345
|
inputProps.defaultChecked = getCheckboxChecked(props.value, defaultValue);
|
1372
1346
|
} else if (props.type === "radio") {
|
@@ -1445,9 +1419,9 @@ var useSyncExternalStoreShim_production_min = {};
|
|
1445
1419
|
*/
|
1446
1420
|
var e = React;
|
1447
1421
|
function h$2(a2, b2) {
|
1448
|
-
return a2 === b2 && (
|
1422
|
+
return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
|
1449
1423
|
}
|
1450
|
-
var k$1 = typeof Object.is
|
1424
|
+
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;
|
1451
1425
|
function q$2(a2, b2) {
|
1452
1426
|
var d2 = b2(), f2 = l$1({ inst: { value: d2, getSnapshot: b2 } }), c2 = f2[0].inst, g2 = f2[1];
|
1453
1427
|
n$2(function() {
|
@@ -1477,8 +1451,8 @@ function r$2(a2) {
|
|
1477
1451
|
function t$2(a2, b2) {
|
1478
1452
|
return b2();
|
1479
1453
|
}
|
1480
|
-
var u$2 = typeof window
|
1481
|
-
useSyncExternalStoreShim_production_min.useSyncExternalStore = e.useSyncExternalStore
|
1454
|
+
var u$2 = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? t$2 : q$2;
|
1455
|
+
useSyncExternalStoreShim_production_min.useSyncExternalStore = void 0 !== e.useSyncExternalStore ? e.useSyncExternalStore : u$2;
|
1482
1456
|
{
|
1483
1457
|
shim.exports = useSyncExternalStoreShim_production_min;
|
1484
1458
|
}
|
@@ -1493,12 +1467,12 @@ useSyncExternalStoreShim_production_min.useSyncExternalStore = e.useSyncExternal
|
|
1493
1467
|
*/
|
1494
1468
|
var h$1 = React, n$1 = shim.exports;
|
1495
1469
|
function p$1(a2, b2) {
|
1496
|
-
return a2 === b2 && (
|
1470
|
+
return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;
|
1497
1471
|
}
|
1498
|
-
var q$1 = typeof Object.is
|
1472
|
+
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;
|
1499
1473
|
withSelector_production_min.useSyncExternalStoreWithSelector = function(a2, b2, e2, l2, g2) {
|
1500
1474
|
var c2 = t$1(null);
|
1501
|
-
if (c2.current
|
1475
|
+
if (null === c2.current) {
|
1502
1476
|
var f2 = { hasValue: false, value: null };
|
1503
1477
|
c2.current = f2;
|
1504
1478
|
} else
|
@@ -1509,7 +1483,7 @@ withSelector_production_min.useSyncExternalStoreWithSelector = function(a2, b2,
|
|
1509
1483
|
c3 = true;
|
1510
1484
|
d3 = a4;
|
1511
1485
|
a4 = l2(a4);
|
1512
|
-
if (
|
1486
|
+
if (void 0 !== g2 && f2.hasValue) {
|
1513
1487
|
var b3 = f2.value;
|
1514
1488
|
if (g2(b3, a4))
|
1515
1489
|
return k2 = b3;
|
@@ -1520,15 +1494,15 @@ withSelector_production_min.useSyncExternalStoreWithSelector = function(a2, b2,
|
|
1520
1494
|
if (q$1(d3, a4))
|
1521
1495
|
return b3;
|
1522
1496
|
var e3 = l2(a4);
|
1523
|
-
if (
|
1497
|
+
if (void 0 !== g2 && g2(b3, e3))
|
1524
1498
|
return b3;
|
1525
1499
|
d3 = a4;
|
1526
1500
|
return k2 = e3;
|
1527
1501
|
}
|
1528
|
-
var c3 = false, d3, k2, m2 =
|
1502
|
+
var c3 = false, d3, k2, m2 = void 0 === e2 ? null : e2;
|
1529
1503
|
return [function() {
|
1530
1504
|
return a3(b2());
|
1531
|
-
},
|
1505
|
+
}, null === m2 ? void 0 : function() {
|
1532
1506
|
return a3(m2());
|
1533
1507
|
}];
|
1534
1508
|
}, [b2, e2, l2, g2]);
|
@@ -1568,18 +1542,18 @@ function r(n2) {
|
|
1568
1542
|
}
|
1569
1543
|
function t(n2) {
|
1570
1544
|
return !!n2 && (function(n3) {
|
1571
|
-
if (!n3 || typeof n3
|
1545
|
+
if (!n3 || "object" != typeof n3)
|
1572
1546
|
return false;
|
1573
1547
|
var r2 = Object.getPrototypeOf(n3);
|
1574
|
-
if (
|
1548
|
+
if (null === r2)
|
1575
1549
|
return true;
|
1576
1550
|
var t2 = Object.hasOwnProperty.call(r2, "constructor") && r2.constructor;
|
1577
|
-
return t2 === Object || typeof t2
|
1551
|
+
return t2 === Object || "function" == typeof t2 && Function.toString.call(t2) === Z;
|
1578
1552
|
}(n2) || Array.isArray(n2) || !!n2[L] || !!n2.constructor[L] || s(n2) || v(n2));
|
1579
1553
|
}
|
1580
1554
|
function i(n2, r2, t2) {
|
1581
|
-
|
1582
|
-
t2 && typeof e2
|
1555
|
+
void 0 === t2 && (t2 = false), 0 === o(n2) ? (t2 ? Object.keys : nn)(n2).forEach(function(e2) {
|
1556
|
+
t2 && "symbol" == typeof e2 || r2(e2, n2[e2], n2);
|
1583
1557
|
}) : n2.forEach(function(t3, e2) {
|
1584
1558
|
return r2(e2, t3, n2);
|
1585
1559
|
});
|
@@ -1589,17 +1563,17 @@ function o(n2) {
|
|
1589
1563
|
return r2 ? r2.i > 3 ? r2.i - 4 : r2.i : Array.isArray(n2) ? 1 : s(n2) ? 2 : v(n2) ? 3 : 0;
|
1590
1564
|
}
|
1591
1565
|
function u(n2, r2) {
|
1592
|
-
return o(n2)
|
1566
|
+
return 2 === o(n2) ? n2.has(r2) : Object.prototype.hasOwnProperty.call(n2, r2);
|
1593
1567
|
}
|
1594
1568
|
function a(n2, r2) {
|
1595
|
-
return o(n2)
|
1569
|
+
return 2 === o(n2) ? n2.get(r2) : n2[r2];
|
1596
1570
|
}
|
1597
1571
|
function f(n2, r2, t2) {
|
1598
1572
|
var e2 = o(n2);
|
1599
|
-
|
1573
|
+
2 === e2 ? n2.set(r2, t2) : 3 === e2 ? (n2.delete(r2), n2.add(t2)) : n2[r2] = t2;
|
1600
1574
|
}
|
1601
1575
|
function c(n2, r2) {
|
1602
|
-
return n2 === r2 ?
|
1576
|
+
return n2 === r2 ? 0 !== n2 || 1 / n2 == 1 / r2 : n2 != n2 && r2 != r2;
|
1603
1577
|
}
|
1604
1578
|
function s(n2) {
|
1605
1579
|
return X && n2 instanceof Map;
|
@@ -1617,12 +1591,12 @@ function l(n2) {
|
|
1617
1591
|
delete r2[Q];
|
1618
1592
|
for (var t2 = nn(r2), e2 = 0; e2 < t2.length; e2++) {
|
1619
1593
|
var i2 = t2[e2], o2 = r2[i2];
|
1620
|
-
o2.writable
|
1594
|
+
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] });
|
1621
1595
|
}
|
1622
1596
|
return Object.create(Object.getPrototypeOf(n2), r2);
|
1623
1597
|
}
|
1624
1598
|
function d(n2, e2) {
|
1625
|
-
return
|
1599
|
+
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) {
|
1626
1600
|
return d(r2, true);
|
1627
1601
|
}, true), n2);
|
1628
1602
|
}
|
@@ -1630,7 +1604,7 @@ function h() {
|
|
1630
1604
|
n(2);
|
1631
1605
|
}
|
1632
1606
|
function y(n2) {
|
1633
|
-
return
|
1607
|
+
return null == n2 || "object" != typeof n2 || Object.isFrozen(n2);
|
1634
1608
|
}
|
1635
1609
|
function b(r2) {
|
1636
1610
|
var t2 = tn[r2];
|
@@ -1653,11 +1627,11 @@ function w(n2) {
|
|
1653
1627
|
}
|
1654
1628
|
function S(n2) {
|
1655
1629
|
var r2 = n2[Q];
|
1656
|
-
r2.i
|
1630
|
+
0 === r2.i || 1 === r2.i ? r2.j() : r2.O = true;
|
1657
1631
|
}
|
1658
1632
|
function P(r2, e2) {
|
1659
1633
|
e2._ = e2.p.length;
|
1660
|
-
var i2 = e2.p[0], o2 =
|
1634
|
+
var i2 = e2.p[0], o2 = void 0 !== r2 && r2 !== i2;
|
1661
1635
|
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;
|
1662
1636
|
}
|
1663
1637
|
function M(n2, r2, t2) {
|
@@ -1674,8 +1648,8 @@ function M(n2, r2, t2) {
|
|
1674
1648
|
return x(n2, e2.t, true), e2.t;
|
1675
1649
|
if (!e2.I) {
|
1676
1650
|
e2.I = true, e2.A._--;
|
1677
|
-
var o2 = e2.i
|
1678
|
-
i(e2.i
|
1651
|
+
var o2 = 4 === e2.i || 5 === e2.i ? e2.o = l(e2.k) : e2.o;
|
1652
|
+
i(3 === e2.i ? new Set(o2) : o2, function(r3, i2) {
|
1679
1653
|
return A(n2, e2, o2, r3, i2, t2);
|
1680
1654
|
}), x(n2, o2, false), t2 && n2.u && b("Patches").R(e2, t2, n2.u, n2.s);
|
1681
1655
|
}
|
@@ -1683,7 +1657,7 @@ function M(n2, r2, t2) {
|
|
1683
1657
|
}
|
1684
1658
|
function A(e2, i2, o2, a2, c2, s2) {
|
1685
1659
|
if (r(c2)) {
|
1686
|
-
var v2 = M(e2, c2, s2 && i2 && i2.i
|
1660
|
+
var v2 = M(e2, c2, s2 && i2 && 3 !== i2.i && !u(i2.D, a2) ? s2.concat(a2) : void 0);
|
1687
1661
|
if (f(o2, a2, v2), !r(v2))
|
1688
1662
|
return;
|
1689
1663
|
e2.m = false;
|
@@ -1695,7 +1669,7 @@ function A(e2, i2, o2, a2, c2, s2) {
|
|
1695
1669
|
}
|
1696
1670
|
}
|
1697
1671
|
function x(n2, r2, t2) {
|
1698
|
-
|
1672
|
+
void 0 === t2 && (t2 = false), n2.h.F && n2.m && d(r2, t2);
|
1699
1673
|
}
|
1700
1674
|
function z(n2, r2) {
|
1701
1675
|
var t2 = n2[Q];
|
@@ -1738,7 +1712,7 @@ function D(e2) {
|
|
1738
1712
|
e3 = F(r2, c2);
|
1739
1713
|
return i(e3, function(r3, t2) {
|
1740
1714
|
u2 && a(u2.t, r3) === t2 || f(e3, r3, n2(t2));
|
1741
|
-
}),
|
1715
|
+
}), 3 === c2 ? new Set(e3) : e3;
|
1742
1716
|
}(e2);
|
1743
1717
|
}
|
1744
1718
|
function F(n2, r2) {
|
@@ -1750,7 +1724,7 @@ function F(n2, r2) {
|
|
1750
1724
|
}
|
1751
1725
|
return l(n2);
|
1752
1726
|
}
|
1753
|
-
var G, U, W = typeof Symbol
|
1727
|
+
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) {
|
1754
1728
|
return Object.getOwnPropertyNames(n2).concat(Object.getOwnPropertySymbols(n2));
|
1755
1729
|
} : Object.getOwnPropertyNames, rn = Object.getOwnPropertyDescriptors || function(n2) {
|
1756
1730
|
var r2 = {};
|
@@ -1764,7 +1738,7 @@ var G, U, W = typeof Symbol != "undefined" && typeof Symbol("x") == "symbol", X
|
|
1764
1738
|
if (!u(e2, r2))
|
1765
1739
|
return function(n3, r3, t2) {
|
1766
1740
|
var e3, i3 = I(r3, t2);
|
1767
|
-
return i3 ? "value" in i3 ? i3.value : (e3 = i3.get)
|
1741
|
+
return i3 ? "value" in i3 ? i3.value : null === (e3 = i3.get) || void 0 === e3 ? void 0 : e3.call(n3.k) : void 0;
|
1768
1742
|
}(n2, e2, r2);
|
1769
1743
|
var i2 = e2[r2];
|
1770
1744
|
return n2.I || !t(i2) ? i2 : i2 === z(n2.t, r2) ? (E(n2), n2.o[r2] = R(n2.A.h, i2, n2)) : i2;
|
@@ -1774,22 +1748,22 @@ var G, U, W = typeof Symbol != "undefined" && typeof Symbol("x") == "symbol", X
|
|
1774
1748
|
return Reflect.ownKeys(p(n2));
|
1775
1749
|
}, set: function(n2, r2, t2) {
|
1776
1750
|
var e2 = I(p(n2), r2);
|
1777
|
-
if (
|
1751
|
+
if (null == e2 ? void 0 : e2.set)
|
1778
1752
|
return e2.set.call(n2.k, t2), true;
|
1779
1753
|
if (!n2.P) {
|
1780
|
-
var i2 = z(p(n2), r2), o2 =
|
1754
|
+
var i2 = z(p(n2), r2), o2 = null == i2 ? void 0 : i2[Q];
|
1781
1755
|
if (o2 && o2.t === t2)
|
1782
1756
|
return n2.o[r2] = t2, n2.D[r2] = false, true;
|
1783
|
-
if (c(t2, i2) && (
|
1757
|
+
if (c(t2, i2) && (void 0 !== t2 || u(n2.t, r2)))
|
1784
1758
|
return true;
|
1785
1759
|
E(n2), k(n2);
|
1786
1760
|
}
|
1787
|
-
return n2.o[r2] === t2 &&
|
1761
|
+
return n2.o[r2] === t2 && "number" != typeof t2 && (void 0 !== t2 || r2 in n2.o) || (n2.o[r2] = t2, n2.D[r2] = true, true);
|
1788
1762
|
}, deleteProperty: function(n2, r2) {
|
1789
|
-
return z(n2.t, r2)
|
1763
|
+
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;
|
1790
1764
|
}, getOwnPropertyDescriptor: function(n2, r2) {
|
1791
1765
|
var t2 = p(n2), e2 = Reflect.getOwnPropertyDescriptor(t2, r2);
|
1792
|
-
return e2 ? { writable: true, configurable: n2.i
|
1766
|
+
return e2 ? { writable: true, configurable: 1 !== n2.i || "length" !== r2, enumerable: e2.enumerable, value: t2[r2] } : e2;
|
1793
1767
|
}, defineProperty: function() {
|
1794
1768
|
n(11);
|
1795
1769
|
}, getPrototypeOf: function(n2) {
|
@@ -1810,13 +1784,13 @@ var un = function() {
|
|
1810
1784
|
function e2(r2) {
|
1811
1785
|
var e3 = this;
|
1812
1786
|
this.g = B, this.F = true, this.produce = function(r3, i3, o2) {
|
1813
|
-
if (typeof r3
|
1787
|
+
if ("function" == typeof r3 && "function" != typeof i3) {
|
1814
1788
|
var u2 = i3;
|
1815
1789
|
i3 = r3;
|
1816
1790
|
var a2 = e3;
|
1817
1791
|
return function(n2) {
|
1818
1792
|
var r4 = this;
|
1819
|
-
|
1793
|
+
void 0 === n2 && (n2 = u2);
|
1820
1794
|
for (var t2 = arguments.length, e4 = Array(t2 > 1 ? t2 - 1 : 0), o3 = 1; o3 < t2; o3++)
|
1821
1795
|
e4[o3 - 1] = arguments[o3];
|
1822
1796
|
return a2.produce(n2, function(n3) {
|
@@ -1826,21 +1800,21 @@ var un = function() {
|
|
1826
1800
|
};
|
1827
1801
|
}
|
1828
1802
|
var f2;
|
1829
|
-
if (typeof i3
|
1803
|
+
if ("function" != typeof i3 && n(6), void 0 !== o2 && "function" != typeof o2 && n(7), t(r3)) {
|
1830
1804
|
var c2 = w(e3), s2 = R(e3, r3, void 0), v2 = true;
|
1831
1805
|
try {
|
1832
1806
|
f2 = i3(s2), v2 = false;
|
1833
1807
|
} finally {
|
1834
1808
|
v2 ? O(c2) : g(c2);
|
1835
1809
|
}
|
1836
|
-
return typeof Promise
|
1810
|
+
return "undefined" != typeof Promise && f2 instanceof Promise ? f2.then(function(n2) {
|
1837
1811
|
return j(c2, o2), P(n2, c2);
|
1838
1812
|
}, function(n2) {
|
1839
1813
|
throw O(c2), n2;
|
1840
1814
|
}) : (j(c2, o2), P(f2, c2));
|
1841
1815
|
}
|
1842
|
-
if (!r3 || typeof r3
|
1843
|
-
if ((f2 = i3(r3))
|
1816
|
+
if (!r3 || "object" != typeof r3) {
|
1817
|
+
if (void 0 === (f2 = i3(r3)) && (f2 = r3), f2 === H && (f2 = void 0), e3.F && d(f2, true), o2) {
|
1844
1818
|
var p2 = [], l2 = [];
|
1845
1819
|
b("Patches").M(r3, f2, p2, l2), o2(p2, l2);
|
1846
1820
|
}
|
@@ -1848,7 +1822,7 @@ var un = function() {
|
|
1848
1822
|
}
|
1849
1823
|
n(21, r3);
|
1850
1824
|
}, this.produceWithPatches = function(n2, r3) {
|
1851
|
-
if (typeof n2
|
1825
|
+
if ("function" == typeof n2)
|
1852
1826
|
return function(r4) {
|
1853
1827
|
for (var t3 = arguments.length, i4 = Array(t3 > 1 ? t3 - 1 : 0), o3 = 1; o3 < t3; o3++)
|
1854
1828
|
i4[o3 - 1] = arguments[o3];
|
@@ -1859,10 +1833,10 @@ var un = function() {
|
|
1859
1833
|
var t2, i3, o2 = e3.produce(n2, r3, function(n3, r4) {
|
1860
1834
|
t2 = n3, i3 = r4;
|
1861
1835
|
});
|
1862
|
-
return typeof Promise
|
1836
|
+
return "undefined" != typeof Promise && o2 instanceof Promise ? o2.then(function(n3) {
|
1863
1837
|
return [n3, t2, i3];
|
1864
1838
|
}) : [o2, t2, i3];
|
1865
|
-
}, typeof (
|
1839
|
+
}, "boolean" == typeof (null == r2 ? void 0 : r2.useProxies) && this.setUseProxies(r2.useProxies), "boolean" == typeof (null == r2 ? void 0 : r2.autoFreeze) && this.setAutoFreeze(r2.autoFreeze);
|
1866
1840
|
}
|
1867
1841
|
var i2 = e2.prototype;
|
1868
1842
|
return i2.createDraft = function(e3) {
|
@@ -1881,7 +1855,7 @@ var un = function() {
|
|
1881
1855
|
var e3;
|
1882
1856
|
for (e3 = t2.length - 1; e3 >= 0; e3--) {
|
1883
1857
|
var i3 = t2[e3];
|
1884
|
-
if (i3.path.length
|
1858
|
+
if (0 === i3.path.length && "replace" === i3.op) {
|
1885
1859
|
n2 = i3.value;
|
1886
1860
|
break;
|
1887
1861
|
}
|
@@ -1907,73 +1881,114 @@ const immerImpl = (initializer) => (set2, get2, store) => {
|
|
1907
1881
|
return initializer(store.setState, get2, store);
|
1908
1882
|
};
|
1909
1883
|
const immer = immerImpl;
|
1910
|
-
const
|
1911
|
-
|
1912
|
-
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1919
|
-
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
1934
|
-
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
|
1959
|
-
|
1960
|
-
|
1961
|
-
|
1962
|
-
|
1963
|
-
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1884
|
+
const requestSubmit = (element, submitter) => {
|
1885
|
+
if (typeof Object.getPrototypeOf(element).requestSubmit === "function" && true) {
|
1886
|
+
element.requestSubmit(submitter);
|
1887
|
+
return;
|
1888
|
+
}
|
1889
|
+
if (submitter) {
|
1890
|
+
validateSubmitter(element, submitter);
|
1891
|
+
submitter.click();
|
1892
|
+
return;
|
1893
|
+
}
|
1894
|
+
const dummySubmitter = document.createElement("input");
|
1895
|
+
dummySubmitter.type = "submit";
|
1896
|
+
dummySubmitter.hidden = true;
|
1897
|
+
element.appendChild(dummySubmitter);
|
1898
|
+
dummySubmitter.click();
|
1899
|
+
element.removeChild(dummySubmitter);
|
1900
|
+
};
|
1901
|
+
function validateSubmitter(element, submitter) {
|
1902
|
+
const isHtmlElement = submitter instanceof HTMLElement;
|
1903
|
+
if (!isHtmlElement) {
|
1904
|
+
raise(TypeError, "parameter 1 is not of type 'HTMLElement'");
|
1905
|
+
}
|
1906
|
+
const hasSubmitType = "type" in submitter && submitter.type === "submit";
|
1907
|
+
if (!hasSubmitType)
|
1908
|
+
raise(TypeError, "The specified element is not a submit button");
|
1909
|
+
const isForCorrectForm = "form" in submitter && submitter.form === element;
|
1910
|
+
if (!isForCorrectForm)
|
1911
|
+
raise(
|
1912
|
+
DOMException,
|
1913
|
+
"The specified element is not owned by this form element",
|
1914
|
+
"NotFoundError"
|
1915
|
+
);
|
1916
|
+
}
|
1917
|
+
function raise(errorConstructor, message, name) {
|
1918
|
+
throw new errorConstructor(
|
1919
|
+
"Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".",
|
1920
|
+
name
|
1921
|
+
);
|
1922
|
+
}
|
1923
|
+
const useControlledFieldStore = create$1()(
|
1924
|
+
immer((set2, get2) => ({
|
1925
|
+
forms: {},
|
1926
|
+
register: (formId, field) => set2((state) => {
|
1927
|
+
if (!state.forms[formId]) {
|
1928
|
+
state.forms[formId] = {};
|
1929
|
+
}
|
1930
|
+
if (state.forms[formId][field]) {
|
1931
|
+
state.forms[formId][field].refCount++;
|
1932
|
+
} else {
|
1933
|
+
state.forms[formId][field] = {
|
1934
|
+
refCount: 1,
|
1935
|
+
value: void 0,
|
1936
|
+
hydrated: false,
|
1937
|
+
valueUpdatePromise: void 0,
|
1938
|
+
resolveValueUpdate: void 0
|
1939
|
+
};
|
1940
|
+
}
|
1941
|
+
}),
|
1942
|
+
unregister: (formId, field) => set2((state) => {
|
1943
|
+
var _a;
|
1944
|
+
const formState = (_a = state.forms) == null ? void 0 : _a[formId];
|
1945
|
+
const fieldState = formState == null ? void 0 : formState[field];
|
1946
|
+
if (!fieldState)
|
1972
1947
|
return;
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
})
|
1948
|
+
fieldState.refCount--;
|
1949
|
+
if (fieldState.refCount === 0)
|
1950
|
+
delete formState[field];
|
1951
|
+
}),
|
1952
|
+
getField: (formId, field) => {
|
1953
|
+
var _a, _b;
|
1954
|
+
return (_b = (_a = get2().forms) == null ? void 0 : _a[formId]) == null ? void 0 : _b[field];
|
1955
|
+
},
|
1956
|
+
setValue: (formId, field, value) => set2((state) => {
|
1957
|
+
var _a, _b;
|
1958
|
+
const fieldState = (_b = (_a = state.forms) == null ? void 0 : _a[formId]) == null ? void 0 : _b[field];
|
1959
|
+
if (!fieldState)
|
1960
|
+
return;
|
1961
|
+
fieldState.value = value;
|
1962
|
+
const promise = new Promise((resolve) => {
|
1963
|
+
fieldState.resolveValueUpdate = resolve;
|
1964
|
+
});
|
1965
|
+
fieldState.valueUpdatePromise = promise;
|
1966
|
+
}),
|
1967
|
+
hydrateWithDefault: (formId, field, defaultValue) => set2((state) => {
|
1968
|
+
var _a;
|
1969
|
+
const fieldState = (_a = state.forms[formId]) == null ? void 0 : _a[field];
|
1970
|
+
if (!fieldState)
|
1971
|
+
return;
|
1972
|
+
fieldState.value = defaultValue;
|
1973
|
+
fieldState.defaultValue = defaultValue;
|
1974
|
+
fieldState.hydrated = true;
|
1975
|
+
}),
|
1976
|
+
awaitValueUpdate: async (formId, field) => {
|
1977
|
+
var _a;
|
1978
|
+
await ((_a = get2().getField(formId, field)) == null ? void 0 : _a.valueUpdatePromise);
|
1979
|
+
},
|
1980
|
+
reset: (formId) => set2((state) => {
|
1981
|
+
const formState = state.forms[formId];
|
1982
|
+
if (!formState)
|
1983
|
+
return;
|
1984
|
+
Object.values(formState).forEach((field) => {
|
1985
|
+
if (!field)
|
1986
|
+
return;
|
1987
|
+
field.value = field.defaultValue;
|
1988
|
+
});
|
1989
|
+
})
|
1990
|
+
}))
|
1991
|
+
);
|
1977
1992
|
const noOp = () => {
|
1978
1993
|
};
|
1979
1994
|
const defaultFormState = {
|
@@ -2053,11 +2068,20 @@ const createFormState = (formId, set2, get2) => ({
|
|
2053
2068
|
validateField: async (field) => {
|
2054
2069
|
var _a, _b, _c;
|
2055
2070
|
const formElement = get2().formElement;
|
2056
|
-
invariant(
|
2071
|
+
invariant(
|
2072
|
+
formElement,
|
2073
|
+
"Cannot find reference to form. This is probably a bug in remix-validated-form."
|
2074
|
+
);
|
2057
2075
|
const validator = (_a = get2().formProps) == null ? void 0 : _a.validator;
|
2058
|
-
invariant(
|
2076
|
+
invariant(
|
2077
|
+
validator,
|
2078
|
+
"Cannot validator. This is probably a bug in remix-validated-form."
|
2079
|
+
);
|
2059
2080
|
await ((_c = (_b = useControlledFieldStore.getState()).awaitValueUpdate) == null ? void 0 : _c.call(_b, formId, field));
|
2060
|
-
const { error } = await validator.validateField(
|
2081
|
+
const { error } = await validator.validateField(
|
2082
|
+
new FormData(formElement),
|
2083
|
+
field
|
2084
|
+
);
|
2061
2085
|
if (error) {
|
2062
2086
|
get2().setFieldError(field, error);
|
2063
2087
|
return error;
|
@@ -2069,9 +2093,15 @@ const createFormState = (formId, set2, get2) => ({
|
|
2069
2093
|
validate: async () => {
|
2070
2094
|
var _a;
|
2071
2095
|
const formElement = get2().formElement;
|
2072
|
-
invariant(
|
2096
|
+
invariant(
|
2097
|
+
formElement,
|
2098
|
+
"Cannot find reference to form. This is probably a bug in remix-validated-form."
|
2099
|
+
);
|
2073
2100
|
const validator = (_a = get2().formProps) == null ? void 0 : _a.validator;
|
2074
|
-
invariant(
|
2101
|
+
invariant(
|
2102
|
+
validator,
|
2103
|
+
"Cannot validator. This is probably a bug in remix-validated-form."
|
2104
|
+
);
|
2075
2105
|
const result = await validator.validate(new FormData(formElement));
|
2076
2106
|
if (result.error)
|
2077
2107
|
get2().setFieldErrors(result.error.fieldErrors);
|
@@ -2079,38 +2109,46 @@ const createFormState = (formId, set2, get2) => ({
|
|
2079
2109
|
},
|
2080
2110
|
submit: () => {
|
2081
2111
|
const formElement = get2().formElement;
|
2082
|
-
invariant(
|
2083
|
-
|
2112
|
+
invariant(
|
2113
|
+
formElement,
|
2114
|
+
"Cannot find reference to form. This is probably a bug in remix-validated-form."
|
2115
|
+
);
|
2116
|
+
requestSubmit(formElement);
|
2084
2117
|
},
|
2085
2118
|
getValues: () => {
|
2086
|
-
|
2087
|
-
|
2088
|
-
return new FormData(formElement);
|
2119
|
+
var _a;
|
2120
|
+
return new FormData((_a = get2().formElement) != null ? _a : void 0);
|
2089
2121
|
},
|
2090
2122
|
resetFormElement: () => {
|
2091
2123
|
var _a;
|
2092
2124
|
return (_a = get2().formElement) == null ? void 0 : _a.reset();
|
2093
2125
|
}
|
2094
2126
|
});
|
2095
|
-
const useRootFormStore = create$1()(
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
2099
|
-
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2127
|
+
const useRootFormStore = create$1()(
|
2128
|
+
immer((set2, get2) => ({
|
2129
|
+
forms: {},
|
2130
|
+
form: (formId) => {
|
2131
|
+
var _a;
|
2132
|
+
return (_a = get2().forms[formId]) != null ? _a : defaultFormState;
|
2133
|
+
},
|
2134
|
+
cleanupForm: (formId) => {
|
2135
|
+
set2((state) => {
|
2136
|
+
delete state.forms[formId];
|
2137
|
+
});
|
2138
|
+
},
|
2139
|
+
registerForm: (formId) => {
|
2140
|
+
if (get2().forms[formId])
|
2141
|
+
return;
|
2142
|
+
set2((state) => {
|
2143
|
+
state.forms[formId] = createFormState(
|
2144
|
+
formId,
|
2145
|
+
(setter) => set2((state2) => setter(state2.forms[formId])),
|
2146
|
+
() => get2().forms[formId]
|
2147
|
+
);
|
2148
|
+
});
|
2149
|
+
}
|
2150
|
+
}))
|
2151
|
+
);
|
2114
2152
|
const useFormStore = (formId, selector) => {
|
2115
2153
|
return useRootFormStore((state) => selector(state.form(formId)));
|
2116
2154
|
};
|
@@ -2120,7 +2158,9 @@ const useInternalFormContext = (formId, hookName) => {
|
|
2120
2158
|
return { formId };
|
2121
2159
|
if (formContext)
|
2122
2160
|
return formContext;
|
2123
|
-
throw new Error(
|
2161
|
+
throw new Error(
|
2162
|
+
`Unable to determine form for ${hookName}. Please use it inside a ValidatedForm or pass a 'formId'.`
|
2163
|
+
);
|
2124
2164
|
};
|
2125
2165
|
function useErrorResponseForForm({
|
2126
2166
|
fetcher,
|
@@ -2166,7 +2206,10 @@ const useDefaultValuesForForm = (context) => {
|
|
2166
2206
|
if (hydrated)
|
2167
2207
|
return hydratable.hydratedData();
|
2168
2208
|
if (errorResponse == null ? void 0 : errorResponse.repopulateFields) {
|
2169
|
-
invariant(
|
2209
|
+
invariant(
|
2210
|
+
typeof errorResponse.repopulateFields === "object",
|
2211
|
+
"repopulateFields returned something other than an object"
|
2212
|
+
);
|
2170
2213
|
return hydratable.serverData(errorResponse.repopulateFields);
|
2171
2214
|
}
|
2172
2215
|
if (defaultValuesProp)
|
@@ -2183,12 +2226,18 @@ const useHasActiveFormSubmit = ({
|
|
2183
2226
|
const useFieldTouched = (field, { formId }) => {
|
2184
2227
|
const touched = useFormStore(formId, (state) => state.touchedFields[field]);
|
2185
2228
|
const setFieldTouched = useFormStore(formId, (state) => state.setTouched);
|
2186
|
-
const setTouched = useCallback(
|
2229
|
+
const setTouched = useCallback(
|
2230
|
+
(touched2) => setFieldTouched(field, touched2),
|
2231
|
+
[field, setFieldTouched]
|
2232
|
+
);
|
2187
2233
|
return [touched, setTouched];
|
2188
2234
|
};
|
2189
2235
|
const useFieldError = (name, context) => {
|
2190
2236
|
const fieldErrors = useFieldErrorsForForm(context);
|
2191
|
-
const state = useFormStore(
|
2237
|
+
const state = useFormStore(
|
2238
|
+
context.formId,
|
2239
|
+
(state2) => state2.fieldErrors[name]
|
2240
|
+
);
|
2192
2241
|
return fieldErrors.map((fieldErrors2) => fieldErrors2 == null ? void 0 : fieldErrors2[name]).hydrateTo(state);
|
2193
2242
|
};
|
2194
2243
|
const useClearError = (context) => {
|
@@ -2207,15 +2256,21 @@ const useValidateField = (formId) => useFormStore(formId, (state) => state.valid
|
|
2207
2256
|
const useValidate = (formId) => useFormStore(formId, (state) => state.validate);
|
2208
2257
|
const noOpReceiver = () => () => {
|
2209
2258
|
};
|
2210
|
-
const useRegisterReceiveFocus = (formId) => useFormStore(
|
2211
|
-
|
2212
|
-
|
2213
|
-
|
2259
|
+
const useRegisterReceiveFocus = (formId) => useFormStore(
|
2260
|
+
formId,
|
2261
|
+
(state) => {
|
2262
|
+
var _a, _b;
|
2263
|
+
return (_b = (_a = state.formProps) == null ? void 0 : _a.registerReceiveFocus) != null ? _b : noOpReceiver;
|
2264
|
+
}
|
2265
|
+
);
|
2214
2266
|
const defaultDefaultValues = {};
|
2215
|
-
const useSyncedDefaultValues = (formId) => useFormStore(
|
2216
|
-
|
2217
|
-
|
2218
|
-
|
2267
|
+
const useSyncedDefaultValues = (formId) => useFormStore(
|
2268
|
+
formId,
|
2269
|
+
(state) => {
|
2270
|
+
var _a, _b;
|
2271
|
+
return (_b = (_a = state.formProps) == null ? void 0 : _a.defaultValues) != null ? _b : defaultDefaultValues;
|
2272
|
+
}
|
2273
|
+
);
|
2219
2274
|
const useSetTouched = ({ formId }) => useFormStore(formId, (state) => state.setTouched);
|
2220
2275
|
const useTouchedFields = (formId) => useFormStore(formId, (state) => state.touchedFields);
|
2221
2276
|
const useFieldErrors = (formId) => useFormStore(formId, (state) => state.fieldErrors);
|
@@ -2232,17 +2287,26 @@ const useFormSubactionProp = (formId) => useFormStore(formId, (state) => {
|
|
2232
2287
|
});
|
2233
2288
|
const useFormValues = (formId) => useFormStore(formId, (state) => state.getValues);
|
2234
2289
|
const useControlledFieldValue = (context, field) => {
|
2235
|
-
const value = useControlledFieldStore(
|
2236
|
-
|
2237
|
-
|
2238
|
-
|
2239
|
-
|
2290
|
+
const value = useControlledFieldStore(
|
2291
|
+
(state) => {
|
2292
|
+
var _a;
|
2293
|
+
return (_a = state.getField(context.formId, field)) == null ? void 0 : _a.value;
|
2294
|
+
}
|
2295
|
+
);
|
2296
|
+
const isFormHydrated = useFormStore(
|
2297
|
+
context.formId,
|
2298
|
+
(state) => state.isHydrated
|
2299
|
+
);
|
2240
2300
|
const defaultValue = useFieldDefaultValue(field, context);
|
2241
|
-
const isFieldHydrated = useControlledFieldStore(
|
2242
|
-
|
2243
|
-
|
2244
|
-
|
2245
|
-
|
2301
|
+
const isFieldHydrated = useControlledFieldStore(
|
2302
|
+
(state) => {
|
2303
|
+
var _a, _b;
|
2304
|
+
return (_b = (_a = state.getField(context.formId, field)) == null ? void 0 : _a.hydrated) != null ? _b : false;
|
2305
|
+
}
|
2306
|
+
);
|
2307
|
+
const hydrateWithDefault = useControlledFieldStore(
|
2308
|
+
(state) => state.hydrateWithDefault
|
2309
|
+
);
|
2246
2310
|
useEffect(() => {
|
2247
2311
|
if (isFormHydrated && !isFieldHydrated) {
|
2248
2312
|
hydrateWithDefault(context.formId, field, defaultValue);
|
@@ -2258,10 +2322,12 @@ const useControlledFieldValue = (context, field) => {
|
|
2258
2322
|
return isFieldHydrated ? value : defaultValue;
|
2259
2323
|
};
|
2260
2324
|
const useControllableValue = (context, field) => {
|
2261
|
-
const resolveUpdate = useControlledFieldStore(
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2325
|
+
const resolveUpdate = useControlledFieldStore(
|
2326
|
+
(state) => {
|
2327
|
+
var _a;
|
2328
|
+
return (_a = state.getField(context.formId, field)) == null ? void 0 : _a.resolveValueUpdate;
|
2329
|
+
}
|
2330
|
+
);
|
2265
2331
|
useEffect(() => {
|
2266
2332
|
resolveUpdate == null ? void 0 : resolveUpdate();
|
2267
2333
|
}, [resolveUpdate]);
|
@@ -2271,14 +2337,22 @@ const useControllableValue = (context, field) => {
|
|
2271
2337
|
register(context.formId, field);
|
2272
2338
|
return () => unregister(context.formId, field);
|
2273
2339
|
}, [context.formId, field, register, unregister]);
|
2274
|
-
const setControlledFieldValue = useControlledFieldStore(
|
2275
|
-
|
2340
|
+
const setControlledFieldValue = useControlledFieldStore(
|
2341
|
+
(state) => state.setValue
|
2342
|
+
);
|
2343
|
+
const setValue = useCallback(
|
2344
|
+
(value2) => setControlledFieldValue(context.formId, field, value2),
|
2345
|
+
[context.formId, field, setControlledFieldValue]
|
2346
|
+
);
|
2276
2347
|
const value = useControlledFieldValue(context, field);
|
2277
2348
|
return [value, setValue];
|
2278
2349
|
};
|
2279
2350
|
const useUpdateControllableValue = (formId) => {
|
2280
2351
|
const setValue = useControlledFieldStore((state) => state.setValue);
|
2281
|
-
return useCallback(
|
2352
|
+
return useCallback(
|
2353
|
+
(field, value) => setValue(formId, field, value),
|
2354
|
+
[formId, setValue]
|
2355
|
+
);
|
2282
2356
|
};
|
2283
2357
|
const useIsSubmitting = (formId) => {
|
2284
2358
|
const formContext = useInternalFormContext(formId, "useIsSubmitting");
|
@@ -2313,14 +2387,16 @@ const useField = (name, options) => {
|
|
2313
2387
|
touched,
|
2314
2388
|
setTouched
|
2315
2389
|
};
|
2316
|
-
const getInputProps = createGetInputProps(
|
2390
|
+
const getInputProps = createGetInputProps({
|
2391
|
+
...helpers,
|
2317
2392
|
name,
|
2318
2393
|
hasBeenSubmitted,
|
2319
2394
|
validationBehavior: options == null ? void 0 : options.validationBehavior
|
2320
|
-
}));
|
2321
|
-
return __spreadProps(__spreadValues({}, helpers), {
|
2322
|
-
getInputProps
|
2323
2395
|
});
|
2396
|
+
return {
|
2397
|
+
...helpers,
|
2398
|
+
getInputProps
|
2399
|
+
};
|
2324
2400
|
}, [
|
2325
2401
|
error,
|
2326
2402
|
clearError,
|
@@ -2343,13 +2419,39 @@ const useUpdateControlledField = (formId) => {
|
|
2343
2419
|
const context = useInternalFormContext(formId, "useControlField");
|
2344
2420
|
return useUpdateControllableValue(context.formId);
|
2345
2421
|
};
|
2422
|
+
/**
|
2423
|
+
* @remix-run/server-runtime v1.6.5
|
2424
|
+
*
|
2425
|
+
* Copyright (c) Remix Software Inc.
|
2426
|
+
*
|
2427
|
+
* This source code is licensed under the MIT license found in the
|
2428
|
+
* LICENSE.md file in the root directory of this source tree.
|
2429
|
+
*
|
2430
|
+
* @license MIT
|
2431
|
+
*/
|
2432
|
+
const json = (data, init = {}) => {
|
2433
|
+
let responseInit = typeof init === "number" ? {
|
2434
|
+
status: init
|
2435
|
+
} : init;
|
2436
|
+
let headers = new Headers(responseInit.headers);
|
2437
|
+
if (!headers.has("Content-Type")) {
|
2438
|
+
headers.set("Content-Type", "application/json; charset=utf-8");
|
2439
|
+
}
|
2440
|
+
return new Response(JSON.stringify(data), {
|
2441
|
+
...responseInit,
|
2442
|
+
headers
|
2443
|
+
});
|
2444
|
+
};
|
2346
2445
|
function validationError(error, repopulateFields, init) {
|
2347
|
-
return json(
|
2348
|
-
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2352
|
-
|
2446
|
+
return json(
|
2447
|
+
{
|
2448
|
+
fieldErrors: error.fieldErrors,
|
2449
|
+
subaction: error.subaction,
|
2450
|
+
repopulateFields,
|
2451
|
+
formId: error.formId
|
2452
|
+
},
|
2453
|
+
{ status: 422, ...init }
|
2454
|
+
);
|
2353
2455
|
}
|
2354
2456
|
const setFormDefaults = (formId, defaultValues) => ({
|
2355
2457
|
[formDefaultValuesKey(formId)]: defaultValues
|
@@ -2560,7 +2662,9 @@ const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) =
|
|
2560
2662
|
if (!elem)
|
2561
2663
|
continue;
|
2562
2664
|
if (elem instanceof RadioNodeList) {
|
2563
|
-
const selectedRadio = (_a = [...elem].filter(
|
2665
|
+
const selectedRadio = (_a = [...elem].filter(
|
2666
|
+
(item) => item instanceof HTMLInputElement
|
2667
|
+
).find((item) => item.value === elem.value)) != null ? _a : elem[0];
|
2564
2668
|
if (selectedRadio && selectedRadio instanceof HTMLInputElement) {
|
2565
2669
|
selectedRadio.focus();
|
2566
2670
|
break;
|
@@ -2609,53 +2713,41 @@ function formEventProxy(event) {
|
|
2609
2713
|
}
|
2610
2714
|
});
|
2611
2715
|
}
|
2612
|
-
function ValidatedForm(
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2625
|
-
|
2626
|
-
|
2627
|
-
|
2628
|
-
|
2629
|
-
|
2630
|
-
"onSubmit",
|
2631
|
-
"children",
|
2632
|
-
"fetcher",
|
2633
|
-
"action",
|
2634
|
-
"defaultValues",
|
2635
|
-
"formRef",
|
2636
|
-
"onReset",
|
2637
|
-
"subaction",
|
2638
|
-
"resetAfterSubmit",
|
2639
|
-
"disableFocusOnError",
|
2640
|
-
"method",
|
2641
|
-
"replace",
|
2642
|
-
"id"
|
2643
|
-
]);
|
2644
|
-
var _a2;
|
2716
|
+
function ValidatedForm({
|
2717
|
+
validator,
|
2718
|
+
onSubmit,
|
2719
|
+
children,
|
2720
|
+
fetcher,
|
2721
|
+
action,
|
2722
|
+
defaultValues: unMemoizedDefaults,
|
2723
|
+
formRef: formRefProp,
|
2724
|
+
onReset,
|
2725
|
+
subaction,
|
2726
|
+
resetAfterSubmit = false,
|
2727
|
+
disableFocusOnError,
|
2728
|
+
method,
|
2729
|
+
replace,
|
2730
|
+
id,
|
2731
|
+
...rest
|
2732
|
+
}) {
|
2733
|
+
var _a;
|
2645
2734
|
const formId = useFormId(id);
|
2646
2735
|
const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);
|
2647
|
-
const contextValue = useMemo(
|
2648
|
-
|
2649
|
-
|
2650
|
-
|
2651
|
-
|
2652
|
-
|
2653
|
-
|
2736
|
+
const contextValue = useMemo(
|
2737
|
+
() => ({
|
2738
|
+
formId,
|
2739
|
+
action,
|
2740
|
+
subaction,
|
2741
|
+
defaultValuesProp: providedDefaultValues,
|
2742
|
+
fetcher
|
2743
|
+
}),
|
2744
|
+
[action, fetcher, formId, providedDefaultValues, subaction]
|
2745
|
+
);
|
2654
2746
|
const backendError = useErrorResponseForForm(contextValue);
|
2655
2747
|
const backendDefaultValues = useDefaultValuesFromLoader(contextValue);
|
2656
2748
|
const hasActiveSubmission = useHasActiveFormSubmit(contextValue);
|
2657
2749
|
const formRef = useRef(null);
|
2658
|
-
const Form$1 = (
|
2750
|
+
const Form$1 = (_a = fetcher == null ? void 0 : fetcher.Form) != null ? _a : Form;
|
2659
2751
|
const submit = useSubmit();
|
2660
2752
|
const setFieldErrors = useSetFieldErrors(formId);
|
2661
2753
|
const setFieldError = useFormStore(formId, (state) => state.setFieldError);
|
@@ -2664,25 +2756,31 @@ function ValidatedForm(_a) {
|
|
2664
2756
|
const startSubmit = useFormStore(formId, (state) => state.startSubmit);
|
2665
2757
|
const endSubmit = useFormStore(formId, (state) => state.endSubmit);
|
2666
2758
|
const syncFormProps = useFormStore(formId, (state) => state.syncFormProps);
|
2667
|
-
const setFormElementInState = useFormStore(
|
2759
|
+
const setFormElementInState = useFormStore(
|
2760
|
+
formId,
|
2761
|
+
(state) => state.setFormElement
|
2762
|
+
);
|
2668
2763
|
const cleanupForm = useRootFormStore((state) => state.cleanupForm);
|
2669
2764
|
const registerForm = useRootFormStore((state) => state.registerForm);
|
2670
2765
|
const customFocusHandlers = useMultiValueMap();
|
2671
|
-
const registerReceiveFocus = useCallback(
|
2672
|
-
|
2673
|
-
|
2674
|
-
|
2675
|
-
|
2676
|
-
|
2766
|
+
const registerReceiveFocus = useCallback(
|
2767
|
+
(fieldName, handler) => {
|
2768
|
+
customFocusHandlers().add(fieldName, handler);
|
2769
|
+
return () => {
|
2770
|
+
customFocusHandlers().remove(fieldName, handler);
|
2771
|
+
};
|
2772
|
+
},
|
2773
|
+
[customFocusHandlers]
|
2774
|
+
);
|
2677
2775
|
useIsomorphicLayoutEffect(() => {
|
2678
2776
|
registerForm(formId);
|
2679
2777
|
return () => cleanupForm(formId);
|
2680
2778
|
}, [cleanupForm, formId, registerForm]);
|
2681
2779
|
useIsomorphicLayoutEffect(() => {
|
2682
|
-
var
|
2780
|
+
var _a2;
|
2683
2781
|
syncFormProps({
|
2684
2782
|
action,
|
2685
|
-
defaultValues: (
|
2783
|
+
defaultValues: (_a2 = providedDefaultValues != null ? providedDefaultValues : backendDefaultValues) != null ? _a2 : {},
|
2686
2784
|
subaction,
|
2687
2785
|
registerReceiveFocus,
|
2688
2786
|
validator
|
@@ -2700,8 +2798,8 @@ function ValidatedForm(_a) {
|
|
2700
2798
|
setFormElementInState(formRef.current);
|
2701
2799
|
}, [setFormElementInState]);
|
2702
2800
|
useEffect(() => {
|
2703
|
-
var
|
2704
|
-
setFieldErrors((
|
2801
|
+
var _a2;
|
2802
|
+
setFieldErrors((_a2 = backendError == null ? void 0 : backendError.fieldErrors) != null ? _a2 : {});
|
2705
2803
|
}, [backendError == null ? void 0 : backendError.fieldErrors, setFieldErrors, setFieldError]);
|
2706
2804
|
useSubmitComplete(hasActiveSubmission, () => {
|
2707
2805
|
endSubmit();
|
@@ -2713,7 +2811,11 @@ function ValidatedForm(_a) {
|
|
2713
2811
|
endSubmit();
|
2714
2812
|
setFieldErrors(result.error.fieldErrors);
|
2715
2813
|
if (!disableFocusOnError) {
|
2716
|
-
focusFirstInvalidInput(
|
2814
|
+
focusFirstInvalidInput(
|
2815
|
+
result.error.fieldErrors,
|
2816
|
+
customFocusHandlers(),
|
2817
|
+
formRef.current
|
2818
|
+
);
|
2717
2819
|
}
|
2718
2820
|
} else {
|
2719
2821
|
const eventProxy = formEventProxy(e2);
|
@@ -2729,16 +2831,20 @@ function ValidatedForm(_a) {
|
|
2729
2831
|
submit(submitter || target, { replace });
|
2730
2832
|
}
|
2731
2833
|
};
|
2732
|
-
return /* @__PURE__ */ React.createElement(Form$1,
|
2733
|
-
ref: mergeRefs([formRef, formRefProp])
|
2734
|
-
|
2834
|
+
return /* @__PURE__ */ React.createElement(Form$1, {
|
2835
|
+
ref: mergeRefs([formRef, formRefProp]),
|
2836
|
+
...rest,
|
2735
2837
|
id,
|
2736
2838
|
action,
|
2737
2839
|
method,
|
2738
2840
|
replace,
|
2739
2841
|
onSubmit: (e2) => {
|
2740
2842
|
e2.preventDefault();
|
2741
|
-
handleSubmit(
|
2843
|
+
handleSubmit(
|
2844
|
+
e2,
|
2845
|
+
e2.currentTarget,
|
2846
|
+
e2.nativeEvent
|
2847
|
+
);
|
2742
2848
|
},
|
2743
2849
|
onReset: (event) => {
|
2744
2850
|
onReset == null ? void 0 : onReset(event);
|
@@ -2747,7 +2853,7 @@ function ValidatedForm(_a) {
|
|
2747
2853
|
reset();
|
2748
2854
|
resetControlledFields(formId);
|
2749
2855
|
}
|
2750
|
-
}
|
2856
|
+
}, /* @__PURE__ */ React.createElement(InternalFormContext.Provider, {
|
2751
2857
|
value: contextValue
|
2752
2858
|
}, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(FormResetter, {
|
2753
2859
|
formRef,
|
@@ -2770,7 +2876,10 @@ var set_1 = set;
|
|
2770
2876
|
const objectFromPathEntries = (entries) => {
|
2771
2877
|
const map = new MultiValueMap();
|
2772
2878
|
entries.forEach(([key, value]) => map.add(key, value));
|
2773
|
-
return [...map.entries()].reduce(
|
2879
|
+
return [...map.entries()].reduce(
|
2880
|
+
(acc, [key, value]) => set_1(acc, key, value.length === 1 ? value[0] : value),
|
2881
|
+
{}
|
2882
|
+
);
|
2774
2883
|
};
|
2775
2884
|
const preprocessFormData = (data) => {
|
2776
2885
|
if ("entries" in data && typeof data.entries === "function")
|
@@ -2818,25 +2927,28 @@ const useFormState = (formId) => {
|
|
2818
2927
|
const fieldErrorsFromState = useFieldErrors(formContext.formId);
|
2819
2928
|
const fieldErrorsToUse = useFieldErrorsForForm(formContext);
|
2820
2929
|
const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);
|
2821
|
-
return useMemo(
|
2822
|
-
|
2823
|
-
|
2824
|
-
|
2825
|
-
|
2826
|
-
|
2827
|
-
|
2828
|
-
|
2829
|
-
|
2830
|
-
|
2831
|
-
|
2832
|
-
|
2833
|
-
|
2834
|
-
|
2835
|
-
|
2836
|
-
|
2837
|
-
|
2838
|
-
|
2839
|
-
|
2930
|
+
return useMemo(
|
2931
|
+
() => ({
|
2932
|
+
action,
|
2933
|
+
subaction,
|
2934
|
+
defaultValues: hydratedDefaultValues,
|
2935
|
+
fieldErrors: hydratedFieldErrors != null ? hydratedFieldErrors : {},
|
2936
|
+
hasBeenSubmitted,
|
2937
|
+
isSubmitting,
|
2938
|
+
touchedFields,
|
2939
|
+
isValid
|
2940
|
+
}),
|
2941
|
+
[
|
2942
|
+
action,
|
2943
|
+
hasBeenSubmitted,
|
2944
|
+
hydratedDefaultValues,
|
2945
|
+
hydratedFieldErrors,
|
2946
|
+
isSubmitting,
|
2947
|
+
isValid,
|
2948
|
+
subaction,
|
2949
|
+
touchedFields
|
2950
|
+
]
|
2951
|
+
);
|
2840
2952
|
};
|
2841
2953
|
const useFormHelpers = (formId) => {
|
2842
2954
|
const formContext = useInternalFormContext(formId, "useFormHelpers");
|
@@ -2848,25 +2960,28 @@ const useFormHelpers = (formId) => {
|
|
2848
2960
|
const reset = useResetFormElement(formContext.formId);
|
2849
2961
|
const submit = useSubmitForm(formContext.formId);
|
2850
2962
|
const getValues = useFormValues(formContext.formId);
|
2851
|
-
return useMemo(
|
2852
|
-
|
2853
|
-
|
2854
|
-
|
2855
|
-
|
2856
|
-
|
2857
|
-
|
2858
|
-
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
2865
|
-
|
2866
|
-
|
2867
|
-
|
2868
|
-
|
2869
|
-
|
2963
|
+
return useMemo(
|
2964
|
+
() => ({
|
2965
|
+
setTouched,
|
2966
|
+
validateField,
|
2967
|
+
clearError,
|
2968
|
+
validate,
|
2969
|
+
clearAllErrors: () => setFieldErrors({}),
|
2970
|
+
reset,
|
2971
|
+
submit,
|
2972
|
+
getValues
|
2973
|
+
}),
|
2974
|
+
[
|
2975
|
+
clearError,
|
2976
|
+
reset,
|
2977
|
+
setFieldErrors,
|
2978
|
+
setTouched,
|
2979
|
+
submit,
|
2980
|
+
validate,
|
2981
|
+
validateField,
|
2982
|
+
getValues
|
2983
|
+
]
|
2984
|
+
);
|
2870
2985
|
};
|
2871
2986
|
const useFormContext = (formId) => {
|
2872
2987
|
const context = useInternalFormContext(formId, "useFormContext");
|
@@ -2882,33 +2997,40 @@ const useFormContext = (formId) => {
|
|
2882
2997
|
getValues
|
2883
2998
|
} = useFormHelpers(formId);
|
2884
2999
|
const registerReceiveFocus = useRegisterReceiveFocus(context.formId);
|
2885
|
-
const clearError = useCallback(
|
2886
|
-
names
|
2887
|
-
|
2888
|
-
|
2889
|
-
|
2890
|
-
|
2891
|
-
|
2892
|
-
|
2893
|
-
|
2894
|
-
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
2898
|
-
|
2899
|
-
|
2900
|
-
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
2904
|
-
|
2905
|
-
|
2906
|
-
|
2907
|
-
|
2908
|
-
|
2909
|
-
|
2910
|
-
|
2911
|
-
|
3000
|
+
const clearError = useCallback(
|
3001
|
+
(...names) => {
|
3002
|
+
names.forEach((name) => {
|
3003
|
+
internalClearError(name);
|
3004
|
+
});
|
3005
|
+
},
|
3006
|
+
[internalClearError]
|
3007
|
+
);
|
3008
|
+
return useMemo(
|
3009
|
+
() => ({
|
3010
|
+
...state,
|
3011
|
+
setFieldTouched: setTouched,
|
3012
|
+
validateField,
|
3013
|
+
clearError,
|
3014
|
+
registerReceiveFocus,
|
3015
|
+
clearAllErrors,
|
3016
|
+
validate,
|
3017
|
+
reset,
|
3018
|
+
submit,
|
3019
|
+
getValues
|
3020
|
+
}),
|
3021
|
+
[
|
3022
|
+
clearAllErrors,
|
3023
|
+
clearError,
|
3024
|
+
registerReceiveFocus,
|
3025
|
+
reset,
|
3026
|
+
setTouched,
|
3027
|
+
state,
|
3028
|
+
submit,
|
3029
|
+
validate,
|
3030
|
+
validateField,
|
3031
|
+
getValues
|
3032
|
+
]
|
3033
|
+
);
|
2912
3034
|
};
|
2913
3035
|
export { ValidatedForm, createValidator, setFormDefaults, useControlField, useField, useFormContext, useIsSubmitting, useIsValid, useUpdateControlledField, validationError };
|
2914
3036
|
//# sourceMappingURL=remix-validated-form.es.js.map
|