remix-validated-form 4.3.0 → 4.3.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +15 -9
- package/README.md +1 -0
- package/browser/internal/logic/getRadioChecked.js +10 -0
- package/browser/internal/reset.d.ts +0 -0
- package/browser/internal/reset.js +0 -0
- package/browser/unreleased/formStateHooks.d.ts +0 -0
- package/browser/unreleased/formStateHooks.js +0 -0
- package/dist/remix-validated-form.cjs.js +1 -0
- package/dist/remix-validated-form.es.js +3535 -0
- package/dist/remix-validated-form.umd.js +1 -0
- package/{build → dist/types}/ValidatedForm.d.ts +0 -0
- package/{build → dist/types}/hooks.d.ts +0 -0
- package/{build → dist/types}/index.d.ts +0 -0
- package/{build → dist/types}/internal/MultiValueMap.d.ts +0 -0
- package/{build → dist/types}/internal/constants.d.ts +0 -0
- package/{build → dist/types}/internal/flatten.d.ts +0 -0
- package/{build → dist/types}/internal/formContext.d.ts +0 -0
- package/{build → dist/types}/internal/getInputProps.d.ts +0 -0
- package/{build → dist/types}/internal/hooks.d.ts +0 -0
- package/{build → dist/types}/internal/hydratable.d.ts +0 -0
- package/{build → dist/types}/internal/logic/getCheckboxChecked.d.ts +0 -0
- package/{build → dist/types}/internal/logic/getRadioChecked.d.ts +0 -0
- package/{build → dist/types}/internal/reset.d.ts +0 -0
- package/{build → dist/types}/internal/state/atomUtils.d.ts +0 -0
- package/{build → dist/types}/internal/state/controlledFields.d.ts +0 -0
- package/{build → dist/types}/internal/state.d.ts +0 -0
- package/{build → dist/types}/internal/submissionCallbacks.d.ts +0 -0
- package/{build → dist/types}/internal/util.d.ts +0 -0
- package/{build → dist/types}/server.d.ts +0 -0
- package/{build → dist/types}/unreleased/formStateHooks.d.ts +0 -0
- package/{build → dist/types}/userFacingFormContext.d.ts +0 -0
- package/{build → dist/types}/validation/createValidator.d.ts +0 -0
- package/{build → dist/types}/validation/types.d.ts +0 -0
- package/package.json +8 -7
- package/src/internal/getInputProps.test.ts +251 -0
- package/src/internal/logic/getRadioChecked.ts +11 -0
- package/src/validation/validation.test.ts +304 -0
- package/tsconfig.json +4 -1
- package/vite.config.ts +7 -0
- package/.turbo/turbo-test.log +0 -11
- package/browser/components.d.ts +0 -7
- package/browser/components.js +0 -10
- package/browser/internal/SingleTypeMultiValueMap.d.ts +0 -9
- package/browser/internal/SingleTypeMultiValueMap.js +0 -41
- package/browser/internal/customState.d.ts +0 -105
- package/browser/internal/customState.js +0 -46
- package/browser/internal/hooks-valtio.d.ts +0 -18
- package/browser/internal/hooks-valtio.js +0 -110
- package/browser/internal/hooks-zustand.d.ts +0 -16
- package/browser/internal/hooks-zustand.js +0 -100
- package/browser/internal/immerMiddleware.d.ts +0 -6
- package/browser/internal/immerMiddleware.js +0 -7
- package/browser/internal/logic/elementUtils.d.ts +0 -3
- package/browser/internal/logic/elementUtils.js +0 -3
- package/browser/internal/logic/getCheckboxChecked copy.d.ts +0 -1
- package/browser/internal/logic/getCheckboxChecked copy.js +0 -9
- package/browser/internal/logic/setFieldValue.d.ts +0 -1
- package/browser/internal/logic/setFieldValue.js +0 -40
- package/browser/internal/logic/setInputValueInForm.d.ts +0 -1
- package/browser/internal/logic/setInputValueInForm.js +0 -77
- package/browser/internal/setFieldValue.d.ts +0 -20
- package/browser/internal/setFieldValue.js +0 -83
- package/browser/internal/setFormValues.d.ts +0 -2
- package/browser/internal/setFormValues.js +0 -26
- package/browser/internal/state/setFieldValue.d.ts +0 -0
- package/browser/internal/state/setFieldValue.js +0 -1
- package/browser/internal/state-valtio.d.ts +0 -62
- package/browser/internal/state-valtio.js +0 -69
- package/browser/internal/state-zustand.d.ts +0 -47
- package/browser/internal/state-zustand.js +0 -85
- package/browser/internal/test.d.ts +0 -0
- package/browser/internal/test.js +0 -15
- package/browser/internal/useMultiValueMap.d.ts +0 -1
- package/browser/internal/useMultiValueMap.js +0 -11
- package/browser/internal/watch.d.ts +0 -18
- package/browser/internal/watch.js +0 -122
- package/browser/lowLevelHooks.d.ts +0 -0
- package/browser/lowLevelHooks.js +0 -1
- package/browser/test-data/testFormData.d.ts +0 -15
- package/browser/test-data/testFormData.js +0 -46
- package/browser/types.d.ts +0 -1
- package/browser/types.js +0 -1
- package/browser/validation/validation.test.d.ts +0 -1
- package/browser/validation/validation.test.js +0 -274
- package/browser/validation/withYup.d.ts +0 -6
- package/browser/validation/withYup.js +0 -40
- package/browser/validation/withZod.d.ts +0 -6
- package/browser/validation/withZod.js +0 -50
- package/build/ValidatedForm.js +0 -261
- package/build/hooks.js +0 -91
- package/build/index.js +0 -18
- package/build/internal/MultiValueMap.js +0 -48
- package/build/internal/SingleTypeMultiValueMap.d.ts +0 -8
- package/build/internal/SingleTypeMultiValueMap.js +0 -45
- package/build/internal/constants.js +0 -7
- package/build/internal/flatten.js +0 -14
- package/build/internal/formContext.js +0 -5
- package/build/internal/getInputProps.js +0 -58
- package/build/internal/hooks-valtio.d.ts +0 -18
- package/build/internal/hooks-valtio.js +0 -128
- package/build/internal/hooks-zustand.d.ts +0 -16
- package/build/internal/hooks-zustand.js +0 -117
- package/build/internal/hooks.js +0 -128
- package/build/internal/hydratable.js +0 -17
- package/build/internal/immerMiddleware.d.ts +0 -6
- package/build/internal/immerMiddleware.js +0 -14
- package/build/internal/logic/elementUtils.d.ts +0 -3
- package/build/internal/logic/elementUtils.js +0 -9
- package/build/internal/logic/getCheckboxChecked.js +0 -13
- package/build/internal/logic/getRadioChecked.js +0 -9
- package/build/internal/logic/setFieldValue.d.ts +0 -1
- package/build/internal/logic/setFieldValue.js +0 -47
- package/build/internal/logic/setInputValueInForm.d.ts +0 -1
- package/build/internal/logic/setInputValueInForm.js +0 -84
- package/build/internal/reset.js +0 -19
- package/build/internal/setFormValues.d.ts +0 -2
- package/build/internal/setFormValues.js +0 -33
- package/build/internal/state/atomUtils.js +0 -13
- package/build/internal/state/controlledFields.js +0 -103
- package/build/internal/state-valtio.d.ts +0 -62
- package/build/internal/state-valtio.js +0 -83
- package/build/internal/state-zustand.d.ts +0 -47
- package/build/internal/state-zustand.js +0 -91
- package/build/internal/state.js +0 -71
- package/build/internal/submissionCallbacks.js +0 -17
- package/build/internal/test.d.ts +0 -1
- package/build/internal/test.js +0 -12
- package/build/internal/util.js +0 -41
- package/build/internal/watch.d.ts +0 -20
- package/build/internal/watch.js +0 -126
- package/build/server.js +0 -32
- package/build/types.d.ts +0 -1
- package/build/types.js +0 -2
- package/build/unreleased/formStateHooks.js +0 -59
- package/build/userFacingFormContext.js +0 -30
- package/build/validation/createValidator.js +0 -45
- package/build/validation/types.js +0 -2
@@ -0,0 +1,3535 @@
|
|
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 = (a, b) => {
|
9
|
+
for (var prop in b || (b = {}))
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
12
|
+
if (__getOwnPropSymbols)
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
14
|
+
if (__propIsEnum.call(b, prop))
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
16
|
+
}
|
17
|
+
return a;
|
18
|
+
};
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
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
|
+
import React, { useContext, useCallback, useReducer, useEffect, useDebugValue, createContext, useMemo, useRef, useLayoutEffect, useState } from "react";
|
33
|
+
import { useActionData, useMatches, useTransition, Form, useSubmit } from "@remix-run/react";
|
34
|
+
import { json } from "@remix-run/server-runtime";
|
35
|
+
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
36
|
+
function listCacheClear$1() {
|
37
|
+
this.__data__ = [];
|
38
|
+
this.size = 0;
|
39
|
+
}
|
40
|
+
var _listCacheClear = listCacheClear$1;
|
41
|
+
function eq$3(value, other) {
|
42
|
+
return value === other || value !== value && other !== other;
|
43
|
+
}
|
44
|
+
var eq_1 = eq$3;
|
45
|
+
var eq$2 = eq_1;
|
46
|
+
function assocIndexOf$4(array, key) {
|
47
|
+
var length = array.length;
|
48
|
+
while (length--) {
|
49
|
+
if (eq$2(array[length][0], key)) {
|
50
|
+
return length;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
return -1;
|
54
|
+
}
|
55
|
+
var _assocIndexOf = assocIndexOf$4;
|
56
|
+
var assocIndexOf$3 = _assocIndexOf;
|
57
|
+
var arrayProto = Array.prototype;
|
58
|
+
var splice = arrayProto.splice;
|
59
|
+
function listCacheDelete$1(key) {
|
60
|
+
var data = this.__data__, index = assocIndexOf$3(data, key);
|
61
|
+
if (index < 0) {
|
62
|
+
return false;
|
63
|
+
}
|
64
|
+
var lastIndex = data.length - 1;
|
65
|
+
if (index == lastIndex) {
|
66
|
+
data.pop();
|
67
|
+
} else {
|
68
|
+
splice.call(data, index, 1);
|
69
|
+
}
|
70
|
+
--this.size;
|
71
|
+
return true;
|
72
|
+
}
|
73
|
+
var _listCacheDelete = listCacheDelete$1;
|
74
|
+
var assocIndexOf$2 = _assocIndexOf;
|
75
|
+
function listCacheGet$1(key) {
|
76
|
+
var data = this.__data__, index = assocIndexOf$2(data, key);
|
77
|
+
return index < 0 ? void 0 : data[index][1];
|
78
|
+
}
|
79
|
+
var _listCacheGet = listCacheGet$1;
|
80
|
+
var assocIndexOf$1 = _assocIndexOf;
|
81
|
+
function listCacheHas$1(key) {
|
82
|
+
return assocIndexOf$1(this.__data__, key) > -1;
|
83
|
+
}
|
84
|
+
var _listCacheHas = listCacheHas$1;
|
85
|
+
var assocIndexOf = _assocIndexOf;
|
86
|
+
function listCacheSet$1(key, value) {
|
87
|
+
var data = this.__data__, index = assocIndexOf(data, key);
|
88
|
+
if (index < 0) {
|
89
|
+
++this.size;
|
90
|
+
data.push([key, value]);
|
91
|
+
} else {
|
92
|
+
data[index][1] = value;
|
93
|
+
}
|
94
|
+
return this;
|
95
|
+
}
|
96
|
+
var _listCacheSet = listCacheSet$1;
|
97
|
+
var listCacheClear = _listCacheClear, listCacheDelete = _listCacheDelete, listCacheGet = _listCacheGet, listCacheHas = _listCacheHas, listCacheSet = _listCacheSet;
|
98
|
+
function ListCache$4(entries) {
|
99
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
100
|
+
this.clear();
|
101
|
+
while (++index < length) {
|
102
|
+
var entry = entries[index];
|
103
|
+
this.set(entry[0], entry[1]);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
ListCache$4.prototype.clear = listCacheClear;
|
107
|
+
ListCache$4.prototype["delete"] = listCacheDelete;
|
108
|
+
ListCache$4.prototype.get = listCacheGet;
|
109
|
+
ListCache$4.prototype.has = listCacheHas;
|
110
|
+
ListCache$4.prototype.set = listCacheSet;
|
111
|
+
var _ListCache = ListCache$4;
|
112
|
+
var ListCache$3 = _ListCache;
|
113
|
+
function stackClear$1() {
|
114
|
+
this.__data__ = new ListCache$3();
|
115
|
+
this.size = 0;
|
116
|
+
}
|
117
|
+
var _stackClear = stackClear$1;
|
118
|
+
function stackDelete$1(key) {
|
119
|
+
var data = this.__data__, result = data["delete"](key);
|
120
|
+
this.size = data.size;
|
121
|
+
return result;
|
122
|
+
}
|
123
|
+
var _stackDelete = stackDelete$1;
|
124
|
+
function stackGet$1(key) {
|
125
|
+
return this.__data__.get(key);
|
126
|
+
}
|
127
|
+
var _stackGet = stackGet$1;
|
128
|
+
function stackHas$1(key) {
|
129
|
+
return this.__data__.has(key);
|
130
|
+
}
|
131
|
+
var _stackHas = stackHas$1;
|
132
|
+
var freeGlobal$1 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
|
133
|
+
var _freeGlobal = freeGlobal$1;
|
134
|
+
var freeGlobal = _freeGlobal;
|
135
|
+
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
|
136
|
+
var root$8 = freeGlobal || freeSelf || Function("return this")();
|
137
|
+
var _root = root$8;
|
138
|
+
var root$7 = _root;
|
139
|
+
var Symbol$7 = root$7.Symbol;
|
140
|
+
var _Symbol = Symbol$7;
|
141
|
+
var Symbol$6 = _Symbol;
|
142
|
+
var objectProto$f = Object.prototype;
|
143
|
+
var hasOwnProperty$c = objectProto$f.hasOwnProperty;
|
144
|
+
var nativeObjectToString$1 = objectProto$f.toString;
|
145
|
+
var symToStringTag$1 = Symbol$6 ? Symbol$6.toStringTag : void 0;
|
146
|
+
function getRawTag$1(value) {
|
147
|
+
var isOwn = hasOwnProperty$c.call(value, symToStringTag$1), tag = value[symToStringTag$1];
|
148
|
+
try {
|
149
|
+
value[symToStringTag$1] = void 0;
|
150
|
+
var unmasked = true;
|
151
|
+
} catch (e) {
|
152
|
+
}
|
153
|
+
var result = nativeObjectToString$1.call(value);
|
154
|
+
if (unmasked) {
|
155
|
+
if (isOwn) {
|
156
|
+
value[symToStringTag$1] = tag;
|
157
|
+
} else {
|
158
|
+
delete value[symToStringTag$1];
|
159
|
+
}
|
160
|
+
}
|
161
|
+
return result;
|
162
|
+
}
|
163
|
+
var _getRawTag = getRawTag$1;
|
164
|
+
var objectProto$e = Object.prototype;
|
165
|
+
var nativeObjectToString = objectProto$e.toString;
|
166
|
+
function objectToString$1(value) {
|
167
|
+
return nativeObjectToString.call(value);
|
168
|
+
}
|
169
|
+
var _objectToString = objectToString$1;
|
170
|
+
var Symbol$5 = _Symbol, getRawTag = _getRawTag, objectToString = _objectToString;
|
171
|
+
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
|
172
|
+
var symToStringTag = Symbol$5 ? Symbol$5.toStringTag : void 0;
|
173
|
+
function baseGetTag$6(value) {
|
174
|
+
if (value == null) {
|
175
|
+
return value === void 0 ? undefinedTag : nullTag;
|
176
|
+
}
|
177
|
+
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
|
178
|
+
}
|
179
|
+
var _baseGetTag = baseGetTag$6;
|
180
|
+
function isObject$7(value) {
|
181
|
+
var type = typeof value;
|
182
|
+
return value != null && (type == "object" || type == "function");
|
183
|
+
}
|
184
|
+
var isObject_1 = isObject$7;
|
185
|
+
var baseGetTag$5 = _baseGetTag, isObject$6 = isObject_1;
|
186
|
+
var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
|
187
|
+
function isFunction$2(value) {
|
188
|
+
if (!isObject$6(value)) {
|
189
|
+
return false;
|
190
|
+
}
|
191
|
+
var tag = baseGetTag$5(value);
|
192
|
+
return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
|
193
|
+
}
|
194
|
+
var isFunction_1 = isFunction$2;
|
195
|
+
var root$6 = _root;
|
196
|
+
var coreJsData$1 = root$6["__core-js_shared__"];
|
197
|
+
var _coreJsData = coreJsData$1;
|
198
|
+
var coreJsData = _coreJsData;
|
199
|
+
var maskSrcKey = function() {
|
200
|
+
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
|
201
|
+
return uid ? "Symbol(src)_1." + uid : "";
|
202
|
+
}();
|
203
|
+
function isMasked$1(func) {
|
204
|
+
return !!maskSrcKey && maskSrcKey in func;
|
205
|
+
}
|
206
|
+
var _isMasked = isMasked$1;
|
207
|
+
var funcProto$2 = Function.prototype;
|
208
|
+
var funcToString$2 = funcProto$2.toString;
|
209
|
+
function toSource$2(func) {
|
210
|
+
if (func != null) {
|
211
|
+
try {
|
212
|
+
return funcToString$2.call(func);
|
213
|
+
} catch (e) {
|
214
|
+
}
|
215
|
+
try {
|
216
|
+
return func + "";
|
217
|
+
} catch (e) {
|
218
|
+
}
|
219
|
+
}
|
220
|
+
return "";
|
221
|
+
}
|
222
|
+
var _toSource = toSource$2;
|
223
|
+
var isFunction$1 = isFunction_1, isMasked = _isMasked, isObject$5 = isObject_1, toSource$1 = _toSource;
|
224
|
+
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
225
|
+
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
226
|
+
var funcProto$1 = Function.prototype, objectProto$d = Object.prototype;
|
227
|
+
var funcToString$1 = funcProto$1.toString;
|
228
|
+
var hasOwnProperty$b = objectProto$d.hasOwnProperty;
|
229
|
+
var reIsNative = RegExp("^" + funcToString$1.call(hasOwnProperty$b).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
|
230
|
+
function baseIsNative$1(value) {
|
231
|
+
if (!isObject$5(value) || isMasked(value)) {
|
232
|
+
return false;
|
233
|
+
}
|
234
|
+
var pattern = isFunction$1(value) ? reIsNative : reIsHostCtor;
|
235
|
+
return pattern.test(toSource$1(value));
|
236
|
+
}
|
237
|
+
var _baseIsNative = baseIsNative$1;
|
238
|
+
function getValue$1(object, key) {
|
239
|
+
return object == null ? void 0 : object[key];
|
240
|
+
}
|
241
|
+
var _getValue = getValue$1;
|
242
|
+
var baseIsNative = _baseIsNative, getValue = _getValue;
|
243
|
+
function getNative$7(object, key) {
|
244
|
+
var value = getValue(object, key);
|
245
|
+
return baseIsNative(value) ? value : void 0;
|
246
|
+
}
|
247
|
+
var _getNative = getNative$7;
|
248
|
+
var getNative$6 = _getNative, root$5 = _root;
|
249
|
+
var Map$4 = getNative$6(root$5, "Map");
|
250
|
+
var _Map = Map$4;
|
251
|
+
var getNative$5 = _getNative;
|
252
|
+
var nativeCreate$4 = getNative$5(Object, "create");
|
253
|
+
var _nativeCreate = nativeCreate$4;
|
254
|
+
var nativeCreate$3 = _nativeCreate;
|
255
|
+
function hashClear$1() {
|
256
|
+
this.__data__ = nativeCreate$3 ? nativeCreate$3(null) : {};
|
257
|
+
this.size = 0;
|
258
|
+
}
|
259
|
+
var _hashClear = hashClear$1;
|
260
|
+
function hashDelete$1(key) {
|
261
|
+
var result = this.has(key) && delete this.__data__[key];
|
262
|
+
this.size -= result ? 1 : 0;
|
263
|
+
return result;
|
264
|
+
}
|
265
|
+
var _hashDelete = hashDelete$1;
|
266
|
+
var nativeCreate$2 = _nativeCreate;
|
267
|
+
var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
|
268
|
+
var objectProto$c = Object.prototype;
|
269
|
+
var hasOwnProperty$a = objectProto$c.hasOwnProperty;
|
270
|
+
function hashGet$1(key) {
|
271
|
+
var data = this.__data__;
|
272
|
+
if (nativeCreate$2) {
|
273
|
+
var result = data[key];
|
274
|
+
return result === HASH_UNDEFINED$2 ? void 0 : result;
|
275
|
+
}
|
276
|
+
return hasOwnProperty$a.call(data, key) ? data[key] : void 0;
|
277
|
+
}
|
278
|
+
var _hashGet = hashGet$1;
|
279
|
+
var nativeCreate$1 = _nativeCreate;
|
280
|
+
var objectProto$b = Object.prototype;
|
281
|
+
var hasOwnProperty$9 = objectProto$b.hasOwnProperty;
|
282
|
+
function hashHas$1(key) {
|
283
|
+
var data = this.__data__;
|
284
|
+
return nativeCreate$1 ? data[key] !== void 0 : hasOwnProperty$9.call(data, key);
|
285
|
+
}
|
286
|
+
var _hashHas = hashHas$1;
|
287
|
+
var nativeCreate = _nativeCreate;
|
288
|
+
var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
|
289
|
+
function hashSet$1(key, value) {
|
290
|
+
var data = this.__data__;
|
291
|
+
this.size += this.has(key) ? 0 : 1;
|
292
|
+
data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;
|
293
|
+
return this;
|
294
|
+
}
|
295
|
+
var _hashSet = hashSet$1;
|
296
|
+
var hashClear = _hashClear, hashDelete = _hashDelete, hashGet = _hashGet, hashHas = _hashHas, hashSet = _hashSet;
|
297
|
+
function Hash$1(entries) {
|
298
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
299
|
+
this.clear();
|
300
|
+
while (++index < length) {
|
301
|
+
var entry = entries[index];
|
302
|
+
this.set(entry[0], entry[1]);
|
303
|
+
}
|
304
|
+
}
|
305
|
+
Hash$1.prototype.clear = hashClear;
|
306
|
+
Hash$1.prototype["delete"] = hashDelete;
|
307
|
+
Hash$1.prototype.get = hashGet;
|
308
|
+
Hash$1.prototype.has = hashHas;
|
309
|
+
Hash$1.prototype.set = hashSet;
|
310
|
+
var _Hash = Hash$1;
|
311
|
+
var Hash = _Hash, ListCache$2 = _ListCache, Map$3 = _Map;
|
312
|
+
function mapCacheClear$1() {
|
313
|
+
this.size = 0;
|
314
|
+
this.__data__ = {
|
315
|
+
"hash": new Hash(),
|
316
|
+
"map": new (Map$3 || ListCache$2)(),
|
317
|
+
"string": new Hash()
|
318
|
+
};
|
319
|
+
}
|
320
|
+
var _mapCacheClear = mapCacheClear$1;
|
321
|
+
function isKeyable$1(value) {
|
322
|
+
var type = typeof value;
|
323
|
+
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
|
324
|
+
}
|
325
|
+
var _isKeyable = isKeyable$1;
|
326
|
+
var isKeyable = _isKeyable;
|
327
|
+
function getMapData$4(map, key) {
|
328
|
+
var data = map.__data__;
|
329
|
+
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
|
330
|
+
}
|
331
|
+
var _getMapData = getMapData$4;
|
332
|
+
var getMapData$3 = _getMapData;
|
333
|
+
function mapCacheDelete$1(key) {
|
334
|
+
var result = getMapData$3(this, key)["delete"](key);
|
335
|
+
this.size -= result ? 1 : 0;
|
336
|
+
return result;
|
337
|
+
}
|
338
|
+
var _mapCacheDelete = mapCacheDelete$1;
|
339
|
+
var getMapData$2 = _getMapData;
|
340
|
+
function mapCacheGet$1(key) {
|
341
|
+
return getMapData$2(this, key).get(key);
|
342
|
+
}
|
343
|
+
var _mapCacheGet = mapCacheGet$1;
|
344
|
+
var getMapData$1 = _getMapData;
|
345
|
+
function mapCacheHas$1(key) {
|
346
|
+
return getMapData$1(this, key).has(key);
|
347
|
+
}
|
348
|
+
var _mapCacheHas = mapCacheHas$1;
|
349
|
+
var getMapData = _getMapData;
|
350
|
+
function mapCacheSet$1(key, value) {
|
351
|
+
var data = getMapData(this, key), size = data.size;
|
352
|
+
data.set(key, value);
|
353
|
+
this.size += data.size == size ? 0 : 1;
|
354
|
+
return this;
|
355
|
+
}
|
356
|
+
var _mapCacheSet = mapCacheSet$1;
|
357
|
+
var mapCacheClear = _mapCacheClear, mapCacheDelete = _mapCacheDelete, mapCacheGet = _mapCacheGet, mapCacheHas = _mapCacheHas, mapCacheSet = _mapCacheSet;
|
358
|
+
function MapCache$3(entries) {
|
359
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
360
|
+
this.clear();
|
361
|
+
while (++index < length) {
|
362
|
+
var entry = entries[index];
|
363
|
+
this.set(entry[0], entry[1]);
|
364
|
+
}
|
365
|
+
}
|
366
|
+
MapCache$3.prototype.clear = mapCacheClear;
|
367
|
+
MapCache$3.prototype["delete"] = mapCacheDelete;
|
368
|
+
MapCache$3.prototype.get = mapCacheGet;
|
369
|
+
MapCache$3.prototype.has = mapCacheHas;
|
370
|
+
MapCache$3.prototype.set = mapCacheSet;
|
371
|
+
var _MapCache = MapCache$3;
|
372
|
+
var ListCache$1 = _ListCache, Map$2 = _Map, MapCache$2 = _MapCache;
|
373
|
+
var LARGE_ARRAY_SIZE$1 = 200;
|
374
|
+
function stackSet$1(key, value) {
|
375
|
+
var data = this.__data__;
|
376
|
+
if (data instanceof ListCache$1) {
|
377
|
+
var pairs = data.__data__;
|
378
|
+
if (!Map$2 || pairs.length < LARGE_ARRAY_SIZE$1 - 1) {
|
379
|
+
pairs.push([key, value]);
|
380
|
+
this.size = ++data.size;
|
381
|
+
return this;
|
382
|
+
}
|
383
|
+
data = this.__data__ = new MapCache$2(pairs);
|
384
|
+
}
|
385
|
+
data.set(key, value);
|
386
|
+
this.size = data.size;
|
387
|
+
return this;
|
388
|
+
}
|
389
|
+
var _stackSet = stackSet$1;
|
390
|
+
var ListCache = _ListCache, stackClear = _stackClear, stackDelete = _stackDelete, stackGet = _stackGet, stackHas = _stackHas, stackSet = _stackSet;
|
391
|
+
function Stack$3(entries) {
|
392
|
+
var data = this.__data__ = new ListCache(entries);
|
393
|
+
this.size = data.size;
|
394
|
+
}
|
395
|
+
Stack$3.prototype.clear = stackClear;
|
396
|
+
Stack$3.prototype["delete"] = stackDelete;
|
397
|
+
Stack$3.prototype.get = stackGet;
|
398
|
+
Stack$3.prototype.has = stackHas;
|
399
|
+
Stack$3.prototype.set = stackSet;
|
400
|
+
var _Stack = Stack$3;
|
401
|
+
var HASH_UNDEFINED = "__lodash_hash_undefined__";
|
402
|
+
function setCacheAdd$1(value) {
|
403
|
+
this.__data__.set(value, HASH_UNDEFINED);
|
404
|
+
return this;
|
405
|
+
}
|
406
|
+
var _setCacheAdd = setCacheAdd$1;
|
407
|
+
function setCacheHas$1(value) {
|
408
|
+
return this.__data__.has(value);
|
409
|
+
}
|
410
|
+
var _setCacheHas = setCacheHas$1;
|
411
|
+
var MapCache$1 = _MapCache, setCacheAdd = _setCacheAdd, setCacheHas = _setCacheHas;
|
412
|
+
function SetCache$2(values) {
|
413
|
+
var index = -1, length = values == null ? 0 : values.length;
|
414
|
+
this.__data__ = new MapCache$1();
|
415
|
+
while (++index < length) {
|
416
|
+
this.add(values[index]);
|
417
|
+
}
|
418
|
+
}
|
419
|
+
SetCache$2.prototype.add = SetCache$2.prototype.push = setCacheAdd;
|
420
|
+
SetCache$2.prototype.has = setCacheHas;
|
421
|
+
var _SetCache = SetCache$2;
|
422
|
+
function arraySome$1(array, predicate) {
|
423
|
+
var index = -1, length = array == null ? 0 : array.length;
|
424
|
+
while (++index < length) {
|
425
|
+
if (predicate(array[index], index, array)) {
|
426
|
+
return true;
|
427
|
+
}
|
428
|
+
}
|
429
|
+
return false;
|
430
|
+
}
|
431
|
+
var _arraySome = arraySome$1;
|
432
|
+
function cacheHas$2(cache, key) {
|
433
|
+
return cache.has(key);
|
434
|
+
}
|
435
|
+
var _cacheHas = cacheHas$2;
|
436
|
+
var SetCache$1 = _SetCache, arraySome = _arraySome, cacheHas$1 = _cacheHas;
|
437
|
+
var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;
|
438
|
+
function equalArrays$2(array, other, bitmask, customizer, equalFunc, stack) {
|
439
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;
|
440
|
+
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
|
441
|
+
return false;
|
442
|
+
}
|
443
|
+
var arrStacked = stack.get(array);
|
444
|
+
var othStacked = stack.get(other);
|
445
|
+
if (arrStacked && othStacked) {
|
446
|
+
return arrStacked == other && othStacked == array;
|
447
|
+
}
|
448
|
+
var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache$1() : void 0;
|
449
|
+
stack.set(array, other);
|
450
|
+
stack.set(other, array);
|
451
|
+
while (++index < arrLength) {
|
452
|
+
var arrValue = array[index], othValue = other[index];
|
453
|
+
if (customizer) {
|
454
|
+
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
|
455
|
+
}
|
456
|
+
if (compared !== void 0) {
|
457
|
+
if (compared) {
|
458
|
+
continue;
|
459
|
+
}
|
460
|
+
result = false;
|
461
|
+
break;
|
462
|
+
}
|
463
|
+
if (seen) {
|
464
|
+
if (!arraySome(other, function(othValue2, othIndex) {
|
465
|
+
if (!cacheHas$1(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
|
466
|
+
return seen.push(othIndex);
|
467
|
+
}
|
468
|
+
})) {
|
469
|
+
result = false;
|
470
|
+
break;
|
471
|
+
}
|
472
|
+
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
|
473
|
+
result = false;
|
474
|
+
break;
|
475
|
+
}
|
476
|
+
}
|
477
|
+
stack["delete"](array);
|
478
|
+
stack["delete"](other);
|
479
|
+
return result;
|
480
|
+
}
|
481
|
+
var _equalArrays = equalArrays$2;
|
482
|
+
var root$4 = _root;
|
483
|
+
var Uint8Array$2 = root$4.Uint8Array;
|
484
|
+
var _Uint8Array = Uint8Array$2;
|
485
|
+
function mapToArray$1(map) {
|
486
|
+
var index = -1, result = Array(map.size);
|
487
|
+
map.forEach(function(value, key) {
|
488
|
+
result[++index] = [key, value];
|
489
|
+
});
|
490
|
+
return result;
|
491
|
+
}
|
492
|
+
var _mapToArray = mapToArray$1;
|
493
|
+
function setToArray$3(set2) {
|
494
|
+
var index = -1, result = Array(set2.size);
|
495
|
+
set2.forEach(function(value) {
|
496
|
+
result[++index] = value;
|
497
|
+
});
|
498
|
+
return result;
|
499
|
+
}
|
500
|
+
var _setToArray = setToArray$3;
|
501
|
+
var Symbol$4 = _Symbol, Uint8Array$1 = _Uint8Array, eq$1 = eq_1, equalArrays$1 = _equalArrays, mapToArray = _mapToArray, setToArray$2 = _setToArray;
|
502
|
+
var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;
|
503
|
+
var boolTag$3 = "[object Boolean]", dateTag$3 = "[object Date]", errorTag$2 = "[object Error]", mapTag$5 = "[object Map]", numberTag$3 = "[object Number]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", symbolTag$3 = "[object Symbol]";
|
504
|
+
var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]";
|
505
|
+
var symbolProto$2 = Symbol$4 ? Symbol$4.prototype : void 0, symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;
|
506
|
+
function equalByTag$1(object, other, tag, bitmask, customizer, equalFunc, stack) {
|
507
|
+
switch (tag) {
|
508
|
+
case dataViewTag$4:
|
509
|
+
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
|
510
|
+
return false;
|
511
|
+
}
|
512
|
+
object = object.buffer;
|
513
|
+
other = other.buffer;
|
514
|
+
case arrayBufferTag$3:
|
515
|
+
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {
|
516
|
+
return false;
|
517
|
+
}
|
518
|
+
return true;
|
519
|
+
case boolTag$3:
|
520
|
+
case dateTag$3:
|
521
|
+
case numberTag$3:
|
522
|
+
return eq$1(+object, +other);
|
523
|
+
case errorTag$2:
|
524
|
+
return object.name == other.name && object.message == other.message;
|
525
|
+
case regexpTag$3:
|
526
|
+
case stringTag$3:
|
527
|
+
return object == other + "";
|
528
|
+
case mapTag$5:
|
529
|
+
var convert = mapToArray;
|
530
|
+
case setTag$5:
|
531
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
|
532
|
+
convert || (convert = setToArray$2);
|
533
|
+
if (object.size != other.size && !isPartial) {
|
534
|
+
return false;
|
535
|
+
}
|
536
|
+
var stacked = stack.get(object);
|
537
|
+
if (stacked) {
|
538
|
+
return stacked == other;
|
539
|
+
}
|
540
|
+
bitmask |= COMPARE_UNORDERED_FLAG$2;
|
541
|
+
stack.set(object, other);
|
542
|
+
var result = equalArrays$1(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
|
543
|
+
stack["delete"](object);
|
544
|
+
return result;
|
545
|
+
case symbolTag$3:
|
546
|
+
if (symbolValueOf$1) {
|
547
|
+
return symbolValueOf$1.call(object) == symbolValueOf$1.call(other);
|
548
|
+
}
|
549
|
+
}
|
550
|
+
return false;
|
551
|
+
}
|
552
|
+
var _equalByTag = equalByTag$1;
|
553
|
+
function arrayPush$3(array, values) {
|
554
|
+
var index = -1, length = values.length, offset = array.length;
|
555
|
+
while (++index < length) {
|
556
|
+
array[offset + index] = values[index];
|
557
|
+
}
|
558
|
+
return array;
|
559
|
+
}
|
560
|
+
var _arrayPush = arrayPush$3;
|
561
|
+
var isArray$a = Array.isArray;
|
562
|
+
var isArray_1 = isArray$a;
|
563
|
+
var arrayPush$2 = _arrayPush, isArray$9 = isArray_1;
|
564
|
+
function baseGetAllKeys$2(object, keysFunc, symbolsFunc) {
|
565
|
+
var result = keysFunc(object);
|
566
|
+
return isArray$9(object) ? result : arrayPush$2(result, symbolsFunc(object));
|
567
|
+
}
|
568
|
+
var _baseGetAllKeys = baseGetAllKeys$2;
|
569
|
+
function arrayFilter$1(array, predicate) {
|
570
|
+
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
|
571
|
+
while (++index < length) {
|
572
|
+
var value = array[index];
|
573
|
+
if (predicate(value, index, array)) {
|
574
|
+
result[resIndex++] = value;
|
575
|
+
}
|
576
|
+
}
|
577
|
+
return result;
|
578
|
+
}
|
579
|
+
var _arrayFilter = arrayFilter$1;
|
580
|
+
function stubArray$2() {
|
581
|
+
return [];
|
582
|
+
}
|
583
|
+
var stubArray_1 = stubArray$2;
|
584
|
+
var arrayFilter = _arrayFilter, stubArray$1 = stubArray_1;
|
585
|
+
var objectProto$a = Object.prototype;
|
586
|
+
var propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable;
|
587
|
+
var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
|
588
|
+
var getSymbols$3 = !nativeGetSymbols$1 ? stubArray$1 : function(object) {
|
589
|
+
if (object == null) {
|
590
|
+
return [];
|
591
|
+
}
|
592
|
+
object = Object(object);
|
593
|
+
return arrayFilter(nativeGetSymbols$1(object), function(symbol) {
|
594
|
+
return propertyIsEnumerable$1.call(object, symbol);
|
595
|
+
});
|
596
|
+
};
|
597
|
+
var _getSymbols = getSymbols$3;
|
598
|
+
function baseTimes$1(n, iteratee) {
|
599
|
+
var index = -1, result = Array(n);
|
600
|
+
while (++index < n) {
|
601
|
+
result[index] = iteratee(index);
|
602
|
+
}
|
603
|
+
return result;
|
604
|
+
}
|
605
|
+
var _baseTimes = baseTimes$1;
|
606
|
+
function isObjectLike$8(value) {
|
607
|
+
return value != null && typeof value == "object";
|
608
|
+
}
|
609
|
+
var isObjectLike_1 = isObjectLike$8;
|
610
|
+
var baseGetTag$4 = _baseGetTag, isObjectLike$7 = isObjectLike_1;
|
611
|
+
var argsTag$3 = "[object Arguments]";
|
612
|
+
function baseIsArguments$1(value) {
|
613
|
+
return isObjectLike$7(value) && baseGetTag$4(value) == argsTag$3;
|
614
|
+
}
|
615
|
+
var _baseIsArguments = baseIsArguments$1;
|
616
|
+
var baseIsArguments = _baseIsArguments, isObjectLike$6 = isObjectLike_1;
|
617
|
+
var objectProto$9 = Object.prototype;
|
618
|
+
var hasOwnProperty$8 = objectProto$9.hasOwnProperty;
|
619
|
+
var propertyIsEnumerable = objectProto$9.propertyIsEnumerable;
|
620
|
+
var isArguments$3 = baseIsArguments(function() {
|
621
|
+
return arguments;
|
622
|
+
}()) ? baseIsArguments : function(value) {
|
623
|
+
return isObjectLike$6(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
|
624
|
+
};
|
625
|
+
var isArguments_1 = isArguments$3;
|
626
|
+
var isBuffer$3 = { exports: {} };
|
627
|
+
function stubFalse() {
|
628
|
+
return false;
|
629
|
+
}
|
630
|
+
var stubFalse_1 = stubFalse;
|
631
|
+
(function(module, exports) {
|
632
|
+
var root2 = _root, stubFalse2 = stubFalse_1;
|
633
|
+
var freeExports = exports && !exports.nodeType && exports;
|
634
|
+
var freeModule = freeExports && true && module && !module.nodeType && module;
|
635
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
636
|
+
var Buffer2 = moduleExports ? root2.Buffer : void 0;
|
637
|
+
var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
|
638
|
+
var isBuffer2 = nativeIsBuffer || stubFalse2;
|
639
|
+
module.exports = isBuffer2;
|
640
|
+
})(isBuffer$3, isBuffer$3.exports);
|
641
|
+
var MAX_SAFE_INTEGER$1 = 9007199254740991;
|
642
|
+
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
643
|
+
function isIndex$3(value, length) {
|
644
|
+
var type = typeof value;
|
645
|
+
length = length == null ? MAX_SAFE_INTEGER$1 : length;
|
646
|
+
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
|
647
|
+
}
|
648
|
+
var _isIndex = isIndex$3;
|
649
|
+
var MAX_SAFE_INTEGER = 9007199254740991;
|
650
|
+
function isLength$3(value) {
|
651
|
+
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
|
652
|
+
}
|
653
|
+
var isLength_1 = isLength$3;
|
654
|
+
var baseGetTag$3 = _baseGetTag, isLength$2 = isLength_1, isObjectLike$5 = isObjectLike_1;
|
655
|
+
var argsTag$2 = "[object Arguments]", arrayTag$2 = "[object Array]", boolTag$2 = "[object Boolean]", dateTag$2 = "[object Date]", errorTag$1 = "[object Error]", funcTag$1 = "[object Function]", mapTag$4 = "[object Map]", numberTag$2 = "[object Number]", objectTag$4 = "[object Object]", regexpTag$2 = "[object RegExp]", setTag$4 = "[object Set]", stringTag$2 = "[object String]", weakMapTag$2 = "[object WeakMap]";
|
656
|
+
var arrayBufferTag$2 = "[object ArrayBuffer]", dataViewTag$3 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]";
|
657
|
+
var typedArrayTags = {};
|
658
|
+
typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
|
659
|
+
typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$2] = typedArrayTags[boolTag$2] = typedArrayTags[dataViewTag$3] = typedArrayTags[dateTag$2] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$4] = typedArrayTags[numberTag$2] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$2] = typedArrayTags[setTag$4] = typedArrayTags[stringTag$2] = typedArrayTags[weakMapTag$2] = false;
|
660
|
+
function baseIsTypedArray$1(value) {
|
661
|
+
return isObjectLike$5(value) && isLength$2(value.length) && !!typedArrayTags[baseGetTag$3(value)];
|
662
|
+
}
|
663
|
+
var _baseIsTypedArray = baseIsTypedArray$1;
|
664
|
+
function baseUnary$3(func) {
|
665
|
+
return function(value) {
|
666
|
+
return func(value);
|
667
|
+
};
|
668
|
+
}
|
669
|
+
var _baseUnary = baseUnary$3;
|
670
|
+
var _nodeUtil = { exports: {} };
|
671
|
+
(function(module, exports) {
|
672
|
+
var freeGlobal2 = _freeGlobal;
|
673
|
+
var freeExports = exports && !exports.nodeType && exports;
|
674
|
+
var freeModule = freeExports && true && module && !module.nodeType && module;
|
675
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
676
|
+
var freeProcess = moduleExports && freeGlobal2.process;
|
677
|
+
var nodeUtil2 = function() {
|
678
|
+
try {
|
679
|
+
var types = freeModule && freeModule.require && freeModule.require("util").types;
|
680
|
+
if (types) {
|
681
|
+
return types;
|
682
|
+
}
|
683
|
+
return freeProcess && freeProcess.binding && freeProcess.binding("util");
|
684
|
+
} catch (e) {
|
685
|
+
}
|
686
|
+
}();
|
687
|
+
module.exports = nodeUtil2;
|
688
|
+
})(_nodeUtil, _nodeUtil.exports);
|
689
|
+
var baseIsTypedArray = _baseIsTypedArray, baseUnary$2 = _baseUnary, nodeUtil$2 = _nodeUtil.exports;
|
690
|
+
var nodeIsTypedArray = nodeUtil$2 && nodeUtil$2.isTypedArray;
|
691
|
+
var isTypedArray$2 = nodeIsTypedArray ? baseUnary$2(nodeIsTypedArray) : baseIsTypedArray;
|
692
|
+
var isTypedArray_1 = isTypedArray$2;
|
693
|
+
var baseTimes = _baseTimes, isArguments$2 = isArguments_1, isArray$8 = isArray_1, isBuffer$2 = isBuffer$3.exports, isIndex$2 = _isIndex, isTypedArray$1 = isTypedArray_1;
|
694
|
+
var objectProto$8 = Object.prototype;
|
695
|
+
var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
|
696
|
+
function arrayLikeKeys$2(value, inherited) {
|
697
|
+
var isArr = isArray$8(value), isArg = !isArr && isArguments$2(value), isBuff = !isArr && !isArg && isBuffer$2(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
|
698
|
+
for (var key in value) {
|
699
|
+
if ((inherited || hasOwnProperty$7.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex$2(key, length)))) {
|
700
|
+
result.push(key);
|
701
|
+
}
|
702
|
+
}
|
703
|
+
return result;
|
704
|
+
}
|
705
|
+
var _arrayLikeKeys = arrayLikeKeys$2;
|
706
|
+
var objectProto$7 = Object.prototype;
|
707
|
+
function isPrototype$3(value) {
|
708
|
+
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$7;
|
709
|
+
return value === proto;
|
710
|
+
}
|
711
|
+
var _isPrototype = isPrototype$3;
|
712
|
+
function overArg$2(func, transform) {
|
713
|
+
return function(arg) {
|
714
|
+
return func(transform(arg));
|
715
|
+
};
|
716
|
+
}
|
717
|
+
var _overArg = overArg$2;
|
718
|
+
var overArg$1 = _overArg;
|
719
|
+
var nativeKeys$1 = overArg$1(Object.keys, Object);
|
720
|
+
var _nativeKeys = nativeKeys$1;
|
721
|
+
var isPrototype$2 = _isPrototype, nativeKeys = _nativeKeys;
|
722
|
+
var objectProto$6 = Object.prototype;
|
723
|
+
var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
|
724
|
+
function baseKeys$1(object) {
|
725
|
+
if (!isPrototype$2(object)) {
|
726
|
+
return nativeKeys(object);
|
727
|
+
}
|
728
|
+
var result = [];
|
729
|
+
for (var key in Object(object)) {
|
730
|
+
if (hasOwnProperty$6.call(object, key) && key != "constructor") {
|
731
|
+
result.push(key);
|
732
|
+
}
|
733
|
+
}
|
734
|
+
return result;
|
735
|
+
}
|
736
|
+
var _baseKeys = baseKeys$1;
|
737
|
+
var isFunction = isFunction_1, isLength$1 = isLength_1;
|
738
|
+
function isArrayLike$2(value) {
|
739
|
+
return value != null && isLength$1(value.length) && !isFunction(value);
|
740
|
+
}
|
741
|
+
var isArrayLike_1 = isArrayLike$2;
|
742
|
+
var arrayLikeKeys$1 = _arrayLikeKeys, baseKeys = _baseKeys, isArrayLike$1 = isArrayLike_1;
|
743
|
+
function keys$4(object) {
|
744
|
+
return isArrayLike$1(object) ? arrayLikeKeys$1(object) : baseKeys(object);
|
745
|
+
}
|
746
|
+
var keys_1 = keys$4;
|
747
|
+
var baseGetAllKeys$1 = _baseGetAllKeys, getSymbols$2 = _getSymbols, keys$3 = keys_1;
|
748
|
+
function getAllKeys$2(object) {
|
749
|
+
return baseGetAllKeys$1(object, keys$3, getSymbols$2);
|
750
|
+
}
|
751
|
+
var _getAllKeys = getAllKeys$2;
|
752
|
+
var getAllKeys$1 = _getAllKeys;
|
753
|
+
var COMPARE_PARTIAL_FLAG$3 = 1;
|
754
|
+
var objectProto$5 = Object.prototype;
|
755
|
+
var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
|
756
|
+
function equalObjects$1(object, other, bitmask, customizer, equalFunc, stack) {
|
757
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys$1(object), objLength = objProps.length, othProps = getAllKeys$1(other), othLength = othProps.length;
|
758
|
+
if (objLength != othLength && !isPartial) {
|
759
|
+
return false;
|
760
|
+
}
|
761
|
+
var index = objLength;
|
762
|
+
while (index--) {
|
763
|
+
var key = objProps[index];
|
764
|
+
if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) {
|
765
|
+
return false;
|
766
|
+
}
|
767
|
+
}
|
768
|
+
var objStacked = stack.get(object);
|
769
|
+
var othStacked = stack.get(other);
|
770
|
+
if (objStacked && othStacked) {
|
771
|
+
return objStacked == other && othStacked == object;
|
772
|
+
}
|
773
|
+
var result = true;
|
774
|
+
stack.set(object, other);
|
775
|
+
stack.set(other, object);
|
776
|
+
var skipCtor = isPartial;
|
777
|
+
while (++index < objLength) {
|
778
|
+
key = objProps[index];
|
779
|
+
var objValue = object[key], othValue = other[key];
|
780
|
+
if (customizer) {
|
781
|
+
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
|
782
|
+
}
|
783
|
+
if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
|
784
|
+
result = false;
|
785
|
+
break;
|
786
|
+
}
|
787
|
+
skipCtor || (skipCtor = key == "constructor");
|
788
|
+
}
|
789
|
+
if (result && !skipCtor) {
|
790
|
+
var objCtor = object.constructor, othCtor = other.constructor;
|
791
|
+
if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
|
792
|
+
result = false;
|
793
|
+
}
|
794
|
+
}
|
795
|
+
stack["delete"](object);
|
796
|
+
stack["delete"](other);
|
797
|
+
return result;
|
798
|
+
}
|
799
|
+
var _equalObjects = equalObjects$1;
|
800
|
+
var getNative$4 = _getNative, root$3 = _root;
|
801
|
+
var DataView$1 = getNative$4(root$3, "DataView");
|
802
|
+
var _DataView = DataView$1;
|
803
|
+
var getNative$3 = _getNative, root$2 = _root;
|
804
|
+
var Promise$2 = getNative$3(root$2, "Promise");
|
805
|
+
var _Promise = Promise$2;
|
806
|
+
var getNative$2 = _getNative, root$1 = _root;
|
807
|
+
var Set$3 = getNative$2(root$1, "Set");
|
808
|
+
var _Set = Set$3;
|
809
|
+
var getNative$1 = _getNative, root = _root;
|
810
|
+
var WeakMap$2 = getNative$1(root, "WeakMap");
|
811
|
+
var _WeakMap = WeakMap$2;
|
812
|
+
var DataView = _DataView, Map$1 = _Map, Promise$1 = _Promise, Set$2 = _Set, WeakMap$1 = _WeakMap, baseGetTag$2 = _baseGetTag, toSource = _toSource;
|
813
|
+
var mapTag$3 = "[object Map]", objectTag$3 = "[object Object]", promiseTag = "[object Promise]", setTag$3 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
|
814
|
+
var dataViewTag$2 = "[object DataView]";
|
815
|
+
var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$2), weakMapCtorString = toSource(WeakMap$1);
|
816
|
+
var getTag$4 = baseGetTag$2;
|
817
|
+
if (DataView && getTag$4(new DataView(new ArrayBuffer(1))) != dataViewTag$2 || Map$1 && getTag$4(new Map$1()) != mapTag$3 || Promise$1 && getTag$4(Promise$1.resolve()) != promiseTag || Set$2 && getTag$4(new Set$2()) != setTag$3 || WeakMap$1 && getTag$4(new WeakMap$1()) != weakMapTag$1) {
|
818
|
+
getTag$4 = function(value) {
|
819
|
+
var result = baseGetTag$2(value), Ctor = result == objectTag$3 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
|
820
|
+
if (ctorString) {
|
821
|
+
switch (ctorString) {
|
822
|
+
case dataViewCtorString:
|
823
|
+
return dataViewTag$2;
|
824
|
+
case mapCtorString:
|
825
|
+
return mapTag$3;
|
826
|
+
case promiseCtorString:
|
827
|
+
return promiseTag;
|
828
|
+
case setCtorString:
|
829
|
+
return setTag$3;
|
830
|
+
case weakMapCtorString:
|
831
|
+
return weakMapTag$1;
|
832
|
+
}
|
833
|
+
}
|
834
|
+
return result;
|
835
|
+
};
|
836
|
+
}
|
837
|
+
var _getTag = getTag$4;
|
838
|
+
var Stack$2 = _Stack, equalArrays = _equalArrays, equalByTag = _equalByTag, equalObjects = _equalObjects, getTag$3 = _getTag, isArray$7 = isArray_1, isBuffer$1 = isBuffer$3.exports, isTypedArray = isTypedArray_1;
|
839
|
+
var COMPARE_PARTIAL_FLAG$2 = 1;
|
840
|
+
var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", objectTag$2 = "[object Object]";
|
841
|
+
var objectProto$4 = Object.prototype;
|
842
|
+
var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
|
843
|
+
function baseIsEqualDeep$1(object, other, bitmask, customizer, equalFunc, stack) {
|
844
|
+
var objIsArr = isArray$7(object), othIsArr = isArray$7(other), objTag = objIsArr ? arrayTag$1 : getTag$3(object), othTag = othIsArr ? arrayTag$1 : getTag$3(other);
|
845
|
+
objTag = objTag == argsTag$1 ? objectTag$2 : objTag;
|
846
|
+
othTag = othTag == argsTag$1 ? objectTag$2 : othTag;
|
847
|
+
var objIsObj = objTag == objectTag$2, othIsObj = othTag == objectTag$2, isSameTag = objTag == othTag;
|
848
|
+
if (isSameTag && isBuffer$1(object)) {
|
849
|
+
if (!isBuffer$1(other)) {
|
850
|
+
return false;
|
851
|
+
}
|
852
|
+
objIsArr = true;
|
853
|
+
objIsObj = false;
|
854
|
+
}
|
855
|
+
if (isSameTag && !objIsObj) {
|
856
|
+
stack || (stack = new Stack$2());
|
857
|
+
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
|
858
|
+
}
|
859
|
+
if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
|
860
|
+
var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty$4.call(other, "__wrapped__");
|
861
|
+
if (objIsWrapped || othIsWrapped) {
|
862
|
+
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
|
863
|
+
stack || (stack = new Stack$2());
|
864
|
+
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
|
865
|
+
}
|
866
|
+
}
|
867
|
+
if (!isSameTag) {
|
868
|
+
return false;
|
869
|
+
}
|
870
|
+
stack || (stack = new Stack$2());
|
871
|
+
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
|
872
|
+
}
|
873
|
+
var _baseIsEqualDeep = baseIsEqualDeep$1;
|
874
|
+
var baseIsEqualDeep = _baseIsEqualDeep, isObjectLike$4 = isObjectLike_1;
|
875
|
+
function baseIsEqual$3(value, other, bitmask, customizer, stack) {
|
876
|
+
if (value === other) {
|
877
|
+
return true;
|
878
|
+
}
|
879
|
+
if (value == null || other == null || !isObjectLike$4(value) && !isObjectLike$4(other)) {
|
880
|
+
return value !== value && other !== other;
|
881
|
+
}
|
882
|
+
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual$3, stack);
|
883
|
+
}
|
884
|
+
var _baseIsEqual = baseIsEqual$3;
|
885
|
+
var Stack$1 = _Stack, baseIsEqual$2 = _baseIsEqual;
|
886
|
+
var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
|
887
|
+
function baseIsMatch$1(object, source, matchData, customizer) {
|
888
|
+
var index = matchData.length, length = index, noCustomizer = !customizer;
|
889
|
+
if (object == null) {
|
890
|
+
return !length;
|
891
|
+
}
|
892
|
+
object = Object(object);
|
893
|
+
while (index--) {
|
894
|
+
var data = matchData[index];
|
895
|
+
if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
|
896
|
+
return false;
|
897
|
+
}
|
898
|
+
}
|
899
|
+
while (++index < length) {
|
900
|
+
data = matchData[index];
|
901
|
+
var key = data[0], objValue = object[key], srcValue = data[1];
|
902
|
+
if (noCustomizer && data[2]) {
|
903
|
+
if (objValue === void 0 && !(key in object)) {
|
904
|
+
return false;
|
905
|
+
}
|
906
|
+
} else {
|
907
|
+
var stack = new Stack$1();
|
908
|
+
if (customizer) {
|
909
|
+
var result = customizer(objValue, srcValue, key, object, source, stack);
|
910
|
+
}
|
911
|
+
if (!(result === void 0 ? baseIsEqual$2(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {
|
912
|
+
return false;
|
913
|
+
}
|
914
|
+
}
|
915
|
+
}
|
916
|
+
return true;
|
917
|
+
}
|
918
|
+
var _baseIsMatch = baseIsMatch$1;
|
919
|
+
var isObject$4 = isObject_1;
|
920
|
+
function isStrictComparable$2(value) {
|
921
|
+
return value === value && !isObject$4(value);
|
922
|
+
}
|
923
|
+
var _isStrictComparable = isStrictComparable$2;
|
924
|
+
var isStrictComparable$1 = _isStrictComparable, keys$2 = keys_1;
|
925
|
+
function getMatchData$1(object) {
|
926
|
+
var result = keys$2(object), length = result.length;
|
927
|
+
while (length--) {
|
928
|
+
var key = result[length], value = object[key];
|
929
|
+
result[length] = [key, value, isStrictComparable$1(value)];
|
930
|
+
}
|
931
|
+
return result;
|
932
|
+
}
|
933
|
+
var _getMatchData = getMatchData$1;
|
934
|
+
function matchesStrictComparable$2(key, srcValue) {
|
935
|
+
return function(object) {
|
936
|
+
if (object == null) {
|
937
|
+
return false;
|
938
|
+
}
|
939
|
+
return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
|
940
|
+
};
|
941
|
+
}
|
942
|
+
var _matchesStrictComparable = matchesStrictComparable$2;
|
943
|
+
var baseIsMatch = _baseIsMatch, getMatchData = _getMatchData, matchesStrictComparable$1 = _matchesStrictComparable;
|
944
|
+
function baseMatches$1(source) {
|
945
|
+
var matchData = getMatchData(source);
|
946
|
+
if (matchData.length == 1 && matchData[0][2]) {
|
947
|
+
return matchesStrictComparable$1(matchData[0][0], matchData[0][1]);
|
948
|
+
}
|
949
|
+
return function(object) {
|
950
|
+
return object === source || baseIsMatch(object, source, matchData);
|
951
|
+
};
|
952
|
+
}
|
953
|
+
var _baseMatches = baseMatches$1;
|
954
|
+
var baseGetTag$1 = _baseGetTag, isObjectLike$3 = isObjectLike_1;
|
955
|
+
var symbolTag$2 = "[object Symbol]";
|
956
|
+
function isSymbol$3(value) {
|
957
|
+
return typeof value == "symbol" || isObjectLike$3(value) && baseGetTag$1(value) == symbolTag$2;
|
958
|
+
}
|
959
|
+
var isSymbol_1 = isSymbol$3;
|
960
|
+
var isArray$6 = isArray_1, isSymbol$2 = isSymbol_1;
|
961
|
+
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
|
962
|
+
function isKey$3(value, object) {
|
963
|
+
if (isArray$6(value)) {
|
964
|
+
return false;
|
965
|
+
}
|
966
|
+
var type = typeof value;
|
967
|
+
if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol$2(value)) {
|
968
|
+
return true;
|
969
|
+
}
|
970
|
+
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
|
971
|
+
}
|
972
|
+
var _isKey = isKey$3;
|
973
|
+
var MapCache = _MapCache;
|
974
|
+
var FUNC_ERROR_TEXT$1 = "Expected a function";
|
975
|
+
function memoize$1(func, resolver) {
|
976
|
+
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
|
977
|
+
throw new TypeError(FUNC_ERROR_TEXT$1);
|
978
|
+
}
|
979
|
+
var memoized = function() {
|
980
|
+
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
|
981
|
+
if (cache.has(key)) {
|
982
|
+
return cache.get(key);
|
983
|
+
}
|
984
|
+
var result = func.apply(this, args);
|
985
|
+
memoized.cache = cache.set(key, result) || cache;
|
986
|
+
return result;
|
987
|
+
};
|
988
|
+
memoized.cache = new (memoize$1.Cache || MapCache)();
|
989
|
+
return memoized;
|
990
|
+
}
|
991
|
+
memoize$1.Cache = MapCache;
|
992
|
+
var memoize_1 = memoize$1;
|
993
|
+
var memoize = memoize_1;
|
994
|
+
var MAX_MEMOIZE_SIZE = 500;
|
995
|
+
function memoizeCapped$1(func) {
|
996
|
+
var result = memoize(func, function(key) {
|
997
|
+
if (cache.size === MAX_MEMOIZE_SIZE) {
|
998
|
+
cache.clear();
|
999
|
+
}
|
1000
|
+
return key;
|
1001
|
+
});
|
1002
|
+
var cache = result.cache;
|
1003
|
+
return result;
|
1004
|
+
}
|
1005
|
+
var _memoizeCapped = memoizeCapped$1;
|
1006
|
+
var memoizeCapped = _memoizeCapped;
|
1007
|
+
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
1008
|
+
var reEscapeChar = /\\(\\)?/g;
|
1009
|
+
var stringToPath$1 = memoizeCapped(function(string) {
|
1010
|
+
var result = [];
|
1011
|
+
if (string.charCodeAt(0) === 46) {
|
1012
|
+
result.push("");
|
1013
|
+
}
|
1014
|
+
string.replace(rePropName, function(match, number, quote, subString) {
|
1015
|
+
result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
|
1016
|
+
});
|
1017
|
+
return result;
|
1018
|
+
});
|
1019
|
+
var _stringToPath = stringToPath$1;
|
1020
|
+
function arrayMap$3(array, iteratee) {
|
1021
|
+
var index = -1, length = array == null ? 0 : array.length, result = Array(length);
|
1022
|
+
while (++index < length) {
|
1023
|
+
result[index] = iteratee(array[index], index, array);
|
1024
|
+
}
|
1025
|
+
return result;
|
1026
|
+
}
|
1027
|
+
var _arrayMap = arrayMap$3;
|
1028
|
+
var Symbol$3 = _Symbol, arrayMap$2 = _arrayMap, isArray$5 = isArray_1, isSymbol$1 = isSymbol_1;
|
1029
|
+
var INFINITY$2 = 1 / 0;
|
1030
|
+
var symbolProto$1 = Symbol$3 ? Symbol$3.prototype : void 0, symbolToString = symbolProto$1 ? symbolProto$1.toString : void 0;
|
1031
|
+
function baseToString$1(value) {
|
1032
|
+
if (typeof value == "string") {
|
1033
|
+
return value;
|
1034
|
+
}
|
1035
|
+
if (isArray$5(value)) {
|
1036
|
+
return arrayMap$2(value, baseToString$1) + "";
|
1037
|
+
}
|
1038
|
+
if (isSymbol$1(value)) {
|
1039
|
+
return symbolToString ? symbolToString.call(value) : "";
|
1040
|
+
}
|
1041
|
+
var result = value + "";
|
1042
|
+
return result == "0" && 1 / value == -INFINITY$2 ? "-0" : result;
|
1043
|
+
}
|
1044
|
+
var _baseToString = baseToString$1;
|
1045
|
+
var baseToString = _baseToString;
|
1046
|
+
function toString$1(value) {
|
1047
|
+
return value == null ? "" : baseToString(value);
|
1048
|
+
}
|
1049
|
+
var toString_1 = toString$1;
|
1050
|
+
var isArray$4 = isArray_1, isKey$2 = _isKey, stringToPath = _stringToPath, toString = toString_1;
|
1051
|
+
function castPath$6(value, object) {
|
1052
|
+
if (isArray$4(value)) {
|
1053
|
+
return value;
|
1054
|
+
}
|
1055
|
+
return isKey$2(value, object) ? [value] : stringToPath(toString(value));
|
1056
|
+
}
|
1057
|
+
var _castPath = castPath$6;
|
1058
|
+
var isSymbol = isSymbol_1;
|
1059
|
+
var INFINITY$1 = 1 / 0;
|
1060
|
+
function toKey$6(value) {
|
1061
|
+
if (typeof value == "string" || isSymbol(value)) {
|
1062
|
+
return value;
|
1063
|
+
}
|
1064
|
+
var result = value + "";
|
1065
|
+
return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
|
1066
|
+
}
|
1067
|
+
var _toKey = toKey$6;
|
1068
|
+
var castPath$5 = _castPath, toKey$5 = _toKey;
|
1069
|
+
function baseGet$4(object, path) {
|
1070
|
+
path = castPath$5(path, object);
|
1071
|
+
var index = 0, length = path.length;
|
1072
|
+
while (object != null && index < length) {
|
1073
|
+
object = object[toKey$5(path[index++])];
|
1074
|
+
}
|
1075
|
+
return index && index == length ? object : void 0;
|
1076
|
+
}
|
1077
|
+
var _baseGet = baseGet$4;
|
1078
|
+
var baseGet$3 = _baseGet;
|
1079
|
+
function get$1(object, path, defaultValue) {
|
1080
|
+
var result = object == null ? void 0 : baseGet$3(object, path);
|
1081
|
+
return result === void 0 ? defaultValue : result;
|
1082
|
+
}
|
1083
|
+
var get_1 = get$1;
|
1084
|
+
function baseHasIn$1(object, key) {
|
1085
|
+
return object != null && key in Object(object);
|
1086
|
+
}
|
1087
|
+
var _baseHasIn = baseHasIn$1;
|
1088
|
+
var castPath$4 = _castPath, isArguments$1 = isArguments_1, isArray$3 = isArray_1, isIndex$1 = _isIndex, isLength = isLength_1, toKey$4 = _toKey;
|
1089
|
+
function hasPath$1(object, path, hasFunc) {
|
1090
|
+
path = castPath$4(path, object);
|
1091
|
+
var index = -1, length = path.length, result = false;
|
1092
|
+
while (++index < length) {
|
1093
|
+
var key = toKey$4(path[index]);
|
1094
|
+
if (!(result = object != null && hasFunc(object, key))) {
|
1095
|
+
break;
|
1096
|
+
}
|
1097
|
+
object = object[key];
|
1098
|
+
}
|
1099
|
+
if (result || ++index != length) {
|
1100
|
+
return result;
|
1101
|
+
}
|
1102
|
+
length = object == null ? 0 : object.length;
|
1103
|
+
return !!length && isLength(length) && isIndex$1(key, length) && (isArray$3(object) || isArguments$1(object));
|
1104
|
+
}
|
1105
|
+
var _hasPath = hasPath$1;
|
1106
|
+
var baseHasIn = _baseHasIn, hasPath = _hasPath;
|
1107
|
+
function hasIn$1(object, path) {
|
1108
|
+
return object != null && hasPath(object, path, baseHasIn);
|
1109
|
+
}
|
1110
|
+
var hasIn_1 = hasIn$1;
|
1111
|
+
var baseIsEqual$1 = _baseIsEqual, get = get_1, hasIn = hasIn_1, isKey$1 = _isKey, isStrictComparable = _isStrictComparable, matchesStrictComparable = _matchesStrictComparable, toKey$3 = _toKey;
|
1112
|
+
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
|
1113
|
+
function baseMatchesProperty$1(path, srcValue) {
|
1114
|
+
if (isKey$1(path) && isStrictComparable(srcValue)) {
|
1115
|
+
return matchesStrictComparable(toKey$3(path), srcValue);
|
1116
|
+
}
|
1117
|
+
return function(object) {
|
1118
|
+
var objValue = get(object, path);
|
1119
|
+
return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual$1(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
|
1120
|
+
};
|
1121
|
+
}
|
1122
|
+
var _baseMatchesProperty = baseMatchesProperty$1;
|
1123
|
+
function identity$2(value) {
|
1124
|
+
return value;
|
1125
|
+
}
|
1126
|
+
var identity_1 = identity$2;
|
1127
|
+
function baseProperty$1(key) {
|
1128
|
+
return function(object) {
|
1129
|
+
return object == null ? void 0 : object[key];
|
1130
|
+
};
|
1131
|
+
}
|
1132
|
+
var _baseProperty = baseProperty$1;
|
1133
|
+
var baseGet$2 = _baseGet;
|
1134
|
+
function basePropertyDeep$1(path) {
|
1135
|
+
return function(object) {
|
1136
|
+
return baseGet$2(object, path);
|
1137
|
+
};
|
1138
|
+
}
|
1139
|
+
var _basePropertyDeep = basePropertyDeep$1;
|
1140
|
+
var baseProperty = _baseProperty, basePropertyDeep = _basePropertyDeep, isKey = _isKey, toKey$2 = _toKey;
|
1141
|
+
function property$1(path) {
|
1142
|
+
return isKey(path) ? baseProperty(toKey$2(path)) : basePropertyDeep(path);
|
1143
|
+
}
|
1144
|
+
var property_1 = property$1;
|
1145
|
+
var baseMatches = _baseMatches, baseMatchesProperty = _baseMatchesProperty, identity$1 = identity_1, isArray$2 = isArray_1, property = property_1;
|
1146
|
+
function baseIteratee$2(value) {
|
1147
|
+
if (typeof value == "function") {
|
1148
|
+
return value;
|
1149
|
+
}
|
1150
|
+
if (value == null) {
|
1151
|
+
return identity$1;
|
1152
|
+
}
|
1153
|
+
if (typeof value == "object") {
|
1154
|
+
return isArray$2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
|
1155
|
+
}
|
1156
|
+
return property(value);
|
1157
|
+
}
|
1158
|
+
var _baseIteratee = baseIteratee$2;
|
1159
|
+
var FUNC_ERROR_TEXT = "Expected a function";
|
1160
|
+
function negate$1(predicate) {
|
1161
|
+
if (typeof predicate != "function") {
|
1162
|
+
throw new TypeError(FUNC_ERROR_TEXT);
|
1163
|
+
}
|
1164
|
+
return function() {
|
1165
|
+
var args = arguments;
|
1166
|
+
switch (args.length) {
|
1167
|
+
case 0:
|
1168
|
+
return !predicate.call(this);
|
1169
|
+
case 1:
|
1170
|
+
return !predicate.call(this, args[0]);
|
1171
|
+
case 2:
|
1172
|
+
return !predicate.call(this, args[0], args[1]);
|
1173
|
+
case 3:
|
1174
|
+
return !predicate.call(this, args[0], args[1], args[2]);
|
1175
|
+
}
|
1176
|
+
return !predicate.apply(this, args);
|
1177
|
+
};
|
1178
|
+
}
|
1179
|
+
var negate_1 = negate$1;
|
1180
|
+
var getNative = _getNative;
|
1181
|
+
var defineProperty$2 = function() {
|
1182
|
+
try {
|
1183
|
+
var func = getNative(Object, "defineProperty");
|
1184
|
+
func({}, "", {});
|
1185
|
+
return func;
|
1186
|
+
} catch (e) {
|
1187
|
+
}
|
1188
|
+
}();
|
1189
|
+
var _defineProperty = defineProperty$2;
|
1190
|
+
var defineProperty$1 = _defineProperty;
|
1191
|
+
function baseAssignValue$2(object, key, value) {
|
1192
|
+
if (key == "__proto__" && defineProperty$1) {
|
1193
|
+
defineProperty$1(object, key, {
|
1194
|
+
"configurable": true,
|
1195
|
+
"enumerable": true,
|
1196
|
+
"value": value,
|
1197
|
+
"writable": true
|
1198
|
+
});
|
1199
|
+
} else {
|
1200
|
+
object[key] = value;
|
1201
|
+
}
|
1202
|
+
}
|
1203
|
+
var _baseAssignValue = baseAssignValue$2;
|
1204
|
+
var baseAssignValue$1 = _baseAssignValue, eq = eq_1;
|
1205
|
+
var objectProto$3 = Object.prototype;
|
1206
|
+
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
|
1207
|
+
function assignValue$3(object, key, value) {
|
1208
|
+
var objValue = object[key];
|
1209
|
+
if (!(hasOwnProperty$3.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
|
1210
|
+
baseAssignValue$1(object, key, value);
|
1211
|
+
}
|
1212
|
+
}
|
1213
|
+
var _assignValue = assignValue$3;
|
1214
|
+
var assignValue$2 = _assignValue, castPath$3 = _castPath, isIndex = _isIndex, isObject$3 = isObject_1, toKey$1 = _toKey;
|
1215
|
+
function baseSet$2(object, path, value, customizer) {
|
1216
|
+
if (!isObject$3(object)) {
|
1217
|
+
return object;
|
1218
|
+
}
|
1219
|
+
path = castPath$3(path, object);
|
1220
|
+
var index = -1, length = path.length, lastIndex = length - 1, nested = object;
|
1221
|
+
while (nested != null && ++index < length) {
|
1222
|
+
var key = toKey$1(path[index]), newValue = value;
|
1223
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
1224
|
+
return object;
|
1225
|
+
}
|
1226
|
+
if (index != lastIndex) {
|
1227
|
+
var objValue = nested[key];
|
1228
|
+
newValue = customizer ? customizer(objValue, key, nested) : void 0;
|
1229
|
+
if (newValue === void 0) {
|
1230
|
+
newValue = isObject$3(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
|
1231
|
+
}
|
1232
|
+
}
|
1233
|
+
assignValue$2(nested, key, newValue);
|
1234
|
+
nested = nested[key];
|
1235
|
+
}
|
1236
|
+
return object;
|
1237
|
+
}
|
1238
|
+
var _baseSet = baseSet$2;
|
1239
|
+
var baseGet$1 = _baseGet, baseSet$1 = _baseSet, castPath$2 = _castPath;
|
1240
|
+
function basePickBy$1(object, paths, predicate) {
|
1241
|
+
var index = -1, length = paths.length, result = {};
|
1242
|
+
while (++index < length) {
|
1243
|
+
var path = paths[index], value = baseGet$1(object, path);
|
1244
|
+
if (predicate(value, path)) {
|
1245
|
+
baseSet$1(result, castPath$2(path, object), value);
|
1246
|
+
}
|
1247
|
+
}
|
1248
|
+
return result;
|
1249
|
+
}
|
1250
|
+
var _basePickBy = basePickBy$1;
|
1251
|
+
var overArg = _overArg;
|
1252
|
+
var getPrototype$3 = overArg(Object.getPrototypeOf, Object);
|
1253
|
+
var _getPrototype = getPrototype$3;
|
1254
|
+
var arrayPush$1 = _arrayPush, getPrototype$2 = _getPrototype, getSymbols$1 = _getSymbols, stubArray = stubArray_1;
|
1255
|
+
var nativeGetSymbols = Object.getOwnPropertySymbols;
|
1256
|
+
var getSymbolsIn$2 = !nativeGetSymbols ? stubArray : function(object) {
|
1257
|
+
var result = [];
|
1258
|
+
while (object) {
|
1259
|
+
arrayPush$1(result, getSymbols$1(object));
|
1260
|
+
object = getPrototype$2(object);
|
1261
|
+
}
|
1262
|
+
return result;
|
1263
|
+
};
|
1264
|
+
var _getSymbolsIn = getSymbolsIn$2;
|
1265
|
+
function nativeKeysIn$1(object) {
|
1266
|
+
var result = [];
|
1267
|
+
if (object != null) {
|
1268
|
+
for (var key in Object(object)) {
|
1269
|
+
result.push(key);
|
1270
|
+
}
|
1271
|
+
}
|
1272
|
+
return result;
|
1273
|
+
}
|
1274
|
+
var _nativeKeysIn = nativeKeysIn$1;
|
1275
|
+
var isObject$2 = isObject_1, isPrototype$1 = _isPrototype, nativeKeysIn = _nativeKeysIn;
|
1276
|
+
var objectProto$2 = Object.prototype;
|
1277
|
+
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
|
1278
|
+
function baseKeysIn$1(object) {
|
1279
|
+
if (!isObject$2(object)) {
|
1280
|
+
return nativeKeysIn(object);
|
1281
|
+
}
|
1282
|
+
var isProto = isPrototype$1(object), result = [];
|
1283
|
+
for (var key in object) {
|
1284
|
+
if (!(key == "constructor" && (isProto || !hasOwnProperty$2.call(object, key)))) {
|
1285
|
+
result.push(key);
|
1286
|
+
}
|
1287
|
+
}
|
1288
|
+
return result;
|
1289
|
+
}
|
1290
|
+
var _baseKeysIn = baseKeysIn$1;
|
1291
|
+
var arrayLikeKeys = _arrayLikeKeys, baseKeysIn = _baseKeysIn, isArrayLike = isArrayLike_1;
|
1292
|
+
function keysIn$3(object) {
|
1293
|
+
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
|
1294
|
+
}
|
1295
|
+
var keysIn_1 = keysIn$3;
|
1296
|
+
var baseGetAllKeys = _baseGetAllKeys, getSymbolsIn$1 = _getSymbolsIn, keysIn$2 = keysIn_1;
|
1297
|
+
function getAllKeysIn$3(object) {
|
1298
|
+
return baseGetAllKeys(object, keysIn$2, getSymbolsIn$1);
|
1299
|
+
}
|
1300
|
+
var _getAllKeysIn = getAllKeysIn$3;
|
1301
|
+
var arrayMap$1 = _arrayMap, baseIteratee$1 = _baseIteratee, basePickBy = _basePickBy, getAllKeysIn$2 = _getAllKeysIn;
|
1302
|
+
function pickBy$1(object, predicate) {
|
1303
|
+
if (object == null) {
|
1304
|
+
return {};
|
1305
|
+
}
|
1306
|
+
var props = arrayMap$1(getAllKeysIn$2(object), function(prop) {
|
1307
|
+
return [prop];
|
1308
|
+
});
|
1309
|
+
predicate = baseIteratee$1(predicate);
|
1310
|
+
return basePickBy(object, props, function(value, path) {
|
1311
|
+
return predicate(value, path[0]);
|
1312
|
+
});
|
1313
|
+
}
|
1314
|
+
var pickBy_1 = pickBy$1;
|
1315
|
+
var baseIteratee = _baseIteratee, negate = negate_1, pickBy = pickBy_1;
|
1316
|
+
function omitBy(object, predicate) {
|
1317
|
+
return pickBy(object, negate(baseIteratee(predicate)));
|
1318
|
+
}
|
1319
|
+
var omitBy_1 = omitBy;
|
1320
|
+
const getCheckboxChecked = (checkboxValue = "on", newValue) => {
|
1321
|
+
if (Array.isArray(newValue))
|
1322
|
+
return newValue.some((val) => val === true || val === checkboxValue);
|
1323
|
+
if (typeof newValue === "boolean")
|
1324
|
+
return newValue;
|
1325
|
+
if (typeof newValue === "string")
|
1326
|
+
return newValue === checkboxValue;
|
1327
|
+
return void 0;
|
1328
|
+
};
|
1329
|
+
const getRadioChecked = (radioValue = "on", newValue) => {
|
1330
|
+
if (typeof newValue === "string")
|
1331
|
+
return newValue === radioValue;
|
1332
|
+
return void 0;
|
1333
|
+
};
|
1334
|
+
const defaultValidationBehavior = {
|
1335
|
+
initial: "onBlur",
|
1336
|
+
whenTouched: "onChange",
|
1337
|
+
whenSubmitted: "onChange"
|
1338
|
+
};
|
1339
|
+
const createGetInputProps = ({
|
1340
|
+
clearError,
|
1341
|
+
validate,
|
1342
|
+
defaultValue,
|
1343
|
+
touched,
|
1344
|
+
setTouched,
|
1345
|
+
hasBeenSubmitted,
|
1346
|
+
validationBehavior,
|
1347
|
+
name
|
1348
|
+
}) => {
|
1349
|
+
const validationBehaviors = __spreadValues(__spreadValues({}, defaultValidationBehavior), validationBehavior);
|
1350
|
+
return (props = {}) => {
|
1351
|
+
const behavior = hasBeenSubmitted ? validationBehaviors.whenSubmitted : touched ? validationBehaviors.whenTouched : validationBehaviors.initial;
|
1352
|
+
const inputProps = __spreadProps(__spreadValues({}, props), {
|
1353
|
+
onChange: (...args) => {
|
1354
|
+
var _a;
|
1355
|
+
if (behavior === "onChange")
|
1356
|
+
validate();
|
1357
|
+
else
|
1358
|
+
clearError();
|
1359
|
+
return (_a = props == null ? void 0 : props.onChange) == null ? void 0 : _a.call(props, ...args);
|
1360
|
+
},
|
1361
|
+
onBlur: (...args) => {
|
1362
|
+
var _a;
|
1363
|
+
if (behavior === "onBlur")
|
1364
|
+
validate();
|
1365
|
+
setTouched(true);
|
1366
|
+
return (_a = props == null ? void 0 : props.onBlur) == null ? void 0 : _a.call(props, ...args);
|
1367
|
+
},
|
1368
|
+
name
|
1369
|
+
});
|
1370
|
+
if (props.type === "checkbox") {
|
1371
|
+
inputProps.defaultChecked = getCheckboxChecked(props.value, defaultValue);
|
1372
|
+
} else if (props.type === "radio") {
|
1373
|
+
inputProps.defaultChecked = getRadioChecked(props.value, defaultValue);
|
1374
|
+
} else if (props.value === void 0) {
|
1375
|
+
inputProps.defaultValue = defaultValue;
|
1376
|
+
}
|
1377
|
+
return omitBy_1(inputProps, (value) => value === void 0);
|
1378
|
+
};
|
1379
|
+
};
|
1380
|
+
const SUSPENSE_PROMISE = Symbol();
|
1381
|
+
const isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];
|
1382
|
+
const isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;
|
1383
|
+
const cancelSuspensePromise = (suspensePromise) => {
|
1384
|
+
var _a, _b;
|
1385
|
+
(_b = (_a = suspensePromise[SUSPENSE_PROMISE]).c) == null ? void 0 : _b.call(_a);
|
1386
|
+
};
|
1387
|
+
const isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {
|
1388
|
+
const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;
|
1389
|
+
const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;
|
1390
|
+
return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);
|
1391
|
+
};
|
1392
|
+
const createSuspensePromise = (promise) => {
|
1393
|
+
const objectToAttach = {
|
1394
|
+
o: promise,
|
1395
|
+
c: null
|
1396
|
+
};
|
1397
|
+
const suspensePromise = new Promise((resolve) => {
|
1398
|
+
objectToAttach.c = () => {
|
1399
|
+
objectToAttach.c = null;
|
1400
|
+
resolve();
|
1401
|
+
};
|
1402
|
+
promise.then(objectToAttach.c, objectToAttach.c);
|
1403
|
+
});
|
1404
|
+
suspensePromise[SUSPENSE_PROMISE] = objectToAttach;
|
1405
|
+
return suspensePromise;
|
1406
|
+
};
|
1407
|
+
var __defProp$1 = Object.defineProperty;
|
1408
|
+
var __defProps$1 = Object.defineProperties;
|
1409
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
1410
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
1411
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
1412
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
1413
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
1414
|
+
var __spreadValues$1 = (a, b) => {
|
1415
|
+
for (var prop in b || (b = {}))
|
1416
|
+
if (__hasOwnProp$1.call(b, prop))
|
1417
|
+
__defNormalProp$1(a, prop, b[prop]);
|
1418
|
+
if (__getOwnPropSymbols$1)
|
1419
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
1420
|
+
if (__propIsEnum$1.call(b, prop))
|
1421
|
+
__defNormalProp$1(a, prop, b[prop]);
|
1422
|
+
}
|
1423
|
+
return a;
|
1424
|
+
};
|
1425
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
1426
|
+
const hasInitialValue = (atom2) => "init" in atom2;
|
1427
|
+
const READ_ATOM = "r";
|
1428
|
+
const WRITE_ATOM$1 = "w";
|
1429
|
+
const COMMIT_ATOM = "c";
|
1430
|
+
const SUBSCRIBE_ATOM = "s";
|
1431
|
+
const RESTORE_ATOMS = "h";
|
1432
|
+
const DEV_SUBSCRIBE_STATE = "n";
|
1433
|
+
const DEV_GET_MOUNTED_ATOMS = "l";
|
1434
|
+
const DEV_GET_ATOM_STATE = "a";
|
1435
|
+
const DEV_GET_MOUNTED = "m";
|
1436
|
+
const createStore = (initialValues) => {
|
1437
|
+
const committedAtomStateMap = /* @__PURE__ */ new WeakMap();
|
1438
|
+
const mountedMap = /* @__PURE__ */ new WeakMap();
|
1439
|
+
const pendingMap = /* @__PURE__ */ new Map();
|
1440
|
+
let stateListeners;
|
1441
|
+
let mountedAtoms;
|
1442
|
+
if (typeof process === "object" && false) {
|
1443
|
+
stateListeners = /* @__PURE__ */ new Set();
|
1444
|
+
mountedAtoms = /* @__PURE__ */ new Set();
|
1445
|
+
}
|
1446
|
+
if (initialValues) {
|
1447
|
+
for (const [atom2, value] of initialValues) {
|
1448
|
+
const atomState = { v: value, r: 0, d: /* @__PURE__ */ new Map() };
|
1449
|
+
if (typeof process === "object" && false) {
|
1450
|
+
Object.freeze(atomState);
|
1451
|
+
if (!hasInitialValue(atom2)) {
|
1452
|
+
console.warn("Found initial value for derived atom which can cause unexpected behavior", atom2);
|
1453
|
+
}
|
1454
|
+
}
|
1455
|
+
committedAtomStateMap.set(atom2, atomState);
|
1456
|
+
}
|
1457
|
+
}
|
1458
|
+
const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();
|
1459
|
+
const addSuspensePromiseToCache = (version, atom2, suspensePromise) => {
|
1460
|
+
let cache = suspensePromiseCacheMap.get(atom2);
|
1461
|
+
if (!cache) {
|
1462
|
+
cache = /* @__PURE__ */ new Map();
|
1463
|
+
suspensePromiseCacheMap.set(atom2, cache);
|
1464
|
+
}
|
1465
|
+
suspensePromise.then(() => {
|
1466
|
+
if (cache.get(version) === suspensePromise) {
|
1467
|
+
cache.delete(version);
|
1468
|
+
if (!cache.size) {
|
1469
|
+
suspensePromiseCacheMap.delete(atom2);
|
1470
|
+
}
|
1471
|
+
}
|
1472
|
+
});
|
1473
|
+
cache.set(version, suspensePromise);
|
1474
|
+
};
|
1475
|
+
const cancelAllSuspensePromiseInCache = (atom2) => {
|
1476
|
+
const versionSet = /* @__PURE__ */ new Set();
|
1477
|
+
const cache = suspensePromiseCacheMap.get(atom2);
|
1478
|
+
if (cache) {
|
1479
|
+
suspensePromiseCacheMap.delete(atom2);
|
1480
|
+
cache.forEach((suspensePromise, version) => {
|
1481
|
+
cancelSuspensePromise(suspensePromise);
|
1482
|
+
versionSet.add(version);
|
1483
|
+
});
|
1484
|
+
}
|
1485
|
+
return versionSet;
|
1486
|
+
};
|
1487
|
+
const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();
|
1488
|
+
const getVersionedAtomStateMap = (version) => {
|
1489
|
+
let versionedAtomStateMap = versionedAtomStateMapMap.get(version);
|
1490
|
+
if (!versionedAtomStateMap) {
|
1491
|
+
versionedAtomStateMap = /* @__PURE__ */ new Map();
|
1492
|
+
versionedAtomStateMapMap.set(version, versionedAtomStateMap);
|
1493
|
+
}
|
1494
|
+
return versionedAtomStateMap;
|
1495
|
+
};
|
1496
|
+
const getAtomState = (version, atom2) => {
|
1497
|
+
if (version) {
|
1498
|
+
const versionedAtomStateMap = getVersionedAtomStateMap(version);
|
1499
|
+
let atomState = versionedAtomStateMap.get(atom2);
|
1500
|
+
if (!atomState) {
|
1501
|
+
atomState = getAtomState(version.p, atom2);
|
1502
|
+
if (atomState) {
|
1503
|
+
if ("p" in atomState) {
|
1504
|
+
atomState.p.then(() => versionedAtomStateMap.delete(atom2));
|
1505
|
+
}
|
1506
|
+
versionedAtomStateMap.set(atom2, atomState);
|
1507
|
+
}
|
1508
|
+
}
|
1509
|
+
return atomState;
|
1510
|
+
}
|
1511
|
+
return committedAtomStateMap.get(atom2);
|
1512
|
+
};
|
1513
|
+
const setAtomState = (version, atom2, atomState) => {
|
1514
|
+
if (typeof process === "object" && false) {
|
1515
|
+
Object.freeze(atomState);
|
1516
|
+
}
|
1517
|
+
if (version) {
|
1518
|
+
const versionedAtomStateMap = getVersionedAtomStateMap(version);
|
1519
|
+
versionedAtomStateMap.set(atom2, atomState);
|
1520
|
+
} else {
|
1521
|
+
const prevAtomState = committedAtomStateMap.get(atom2);
|
1522
|
+
committedAtomStateMap.set(atom2, atomState);
|
1523
|
+
if (!pendingMap.has(atom2)) {
|
1524
|
+
pendingMap.set(atom2, prevAtomState);
|
1525
|
+
}
|
1526
|
+
}
|
1527
|
+
};
|
1528
|
+
const createReadDependencies = (version, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {
|
1529
|
+
if (!dependencies) {
|
1530
|
+
return prevReadDependencies;
|
1531
|
+
}
|
1532
|
+
const readDependencies = /* @__PURE__ */ new Map();
|
1533
|
+
let changed = false;
|
1534
|
+
dependencies.forEach((atom2) => {
|
1535
|
+
var _a;
|
1536
|
+
const revision = ((_a = getAtomState(version, atom2)) == null ? void 0 : _a.r) || 0;
|
1537
|
+
readDependencies.set(atom2, revision);
|
1538
|
+
if (prevReadDependencies.get(atom2) !== revision) {
|
1539
|
+
changed = true;
|
1540
|
+
}
|
1541
|
+
});
|
1542
|
+
if (prevReadDependencies.size === readDependencies.size && !changed) {
|
1543
|
+
return prevReadDependencies;
|
1544
|
+
}
|
1545
|
+
return readDependencies;
|
1546
|
+
};
|
1547
|
+
const setAtomValue = (version, atom2, value, dependencies, suspensePromise) => {
|
1548
|
+
const atomState = getAtomState(version, atom2);
|
1549
|
+
if (atomState) {
|
1550
|
+
if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {
|
1551
|
+
return atomState;
|
1552
|
+
}
|
1553
|
+
if ("p" in atomState) {
|
1554
|
+
cancelSuspensePromise(atomState.p);
|
1555
|
+
}
|
1556
|
+
}
|
1557
|
+
const nextAtomState = {
|
1558
|
+
v: value,
|
1559
|
+
r: (atomState == null ? void 0 : atomState.r) || 0,
|
1560
|
+
d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)
|
1561
|
+
};
|
1562
|
+
if (!atomState || !("v" in atomState) || !Object.is(atomState.v, value)) {
|
1563
|
+
++nextAtomState.r;
|
1564
|
+
if (nextAtomState.d.has(atom2)) {
|
1565
|
+
nextAtomState.d = new Map(nextAtomState.d).set(atom2, nextAtomState.r);
|
1566
|
+
}
|
1567
|
+
} else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a) => atomState.d.has(a)))) {
|
1568
|
+
Promise.resolve().then(() => {
|
1569
|
+
flushPending(version);
|
1570
|
+
});
|
1571
|
+
}
|
1572
|
+
setAtomState(version, atom2, nextAtomState);
|
1573
|
+
return nextAtomState;
|
1574
|
+
};
|
1575
|
+
const setAtomReadError = (version, atom2, error, dependencies, suspensePromise) => {
|
1576
|
+
const atomState = getAtomState(version, atom2);
|
1577
|
+
if (atomState) {
|
1578
|
+
if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {
|
1579
|
+
return atomState;
|
1580
|
+
}
|
1581
|
+
if ("p" in atomState) {
|
1582
|
+
cancelSuspensePromise(atomState.p);
|
1583
|
+
}
|
1584
|
+
}
|
1585
|
+
const nextAtomState = {
|
1586
|
+
e: error,
|
1587
|
+
r: (atomState == null ? void 0 : atomState.r) || 0,
|
1588
|
+
d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)
|
1589
|
+
};
|
1590
|
+
setAtomState(version, atom2, nextAtomState);
|
1591
|
+
return nextAtomState;
|
1592
|
+
};
|
1593
|
+
const setAtomSuspensePromise = (version, atom2, suspensePromise, dependencies) => {
|
1594
|
+
const atomState = getAtomState(version, atom2);
|
1595
|
+
if (atomState && "p" in atomState) {
|
1596
|
+
if (isEqualSuspensePromise(atomState.p, suspensePromise)) {
|
1597
|
+
return atomState;
|
1598
|
+
}
|
1599
|
+
cancelSuspensePromise(atomState.p);
|
1600
|
+
}
|
1601
|
+
addSuspensePromiseToCache(version, atom2, suspensePromise);
|
1602
|
+
const nextAtomState = {
|
1603
|
+
p: suspensePromise,
|
1604
|
+
r: (atomState == null ? void 0 : atomState.r) || 0,
|
1605
|
+
d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)
|
1606
|
+
};
|
1607
|
+
setAtomState(version, atom2, nextAtomState);
|
1608
|
+
return nextAtomState;
|
1609
|
+
};
|
1610
|
+
const setAtomPromiseOrValue = (version, atom2, promiseOrValue, dependencies) => {
|
1611
|
+
if (promiseOrValue instanceof Promise) {
|
1612
|
+
const suspensePromise = createSuspensePromise(promiseOrValue.then((value) => {
|
1613
|
+
setAtomValue(version, atom2, value, dependencies, suspensePromise);
|
1614
|
+
flushPending(version);
|
1615
|
+
}).catch((e) => {
|
1616
|
+
if (e instanceof Promise) {
|
1617
|
+
if (isSuspensePromise(e)) {
|
1618
|
+
return e.then(() => {
|
1619
|
+
readAtomState(version, atom2, true);
|
1620
|
+
});
|
1621
|
+
}
|
1622
|
+
return e;
|
1623
|
+
}
|
1624
|
+
setAtomReadError(version, atom2, e, dependencies, suspensePromise);
|
1625
|
+
flushPending(version);
|
1626
|
+
}));
|
1627
|
+
return setAtomSuspensePromise(version, atom2, suspensePromise, dependencies);
|
1628
|
+
}
|
1629
|
+
return setAtomValue(version, atom2, promiseOrValue, dependencies);
|
1630
|
+
};
|
1631
|
+
const setAtomInvalidated = (version, atom2) => {
|
1632
|
+
const atomState = getAtomState(version, atom2);
|
1633
|
+
if (atomState) {
|
1634
|
+
const nextAtomState = __spreadProps$1(__spreadValues$1({}, atomState), {
|
1635
|
+
i: atomState.r
|
1636
|
+
});
|
1637
|
+
setAtomState(version, atom2, nextAtomState);
|
1638
|
+
} else if (typeof process === "object" && false) {
|
1639
|
+
console.warn("[Bug] could not invalidate non existing atom", atom2);
|
1640
|
+
}
|
1641
|
+
};
|
1642
|
+
const readAtomState = (version, atom2, force) => {
|
1643
|
+
if (!force) {
|
1644
|
+
const atomState = getAtomState(version, atom2);
|
1645
|
+
if (atomState) {
|
1646
|
+
if (atomState.r !== atomState.i && "p" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {
|
1647
|
+
return atomState;
|
1648
|
+
}
|
1649
|
+
atomState.d.forEach((_, a) => {
|
1650
|
+
if (a !== atom2) {
|
1651
|
+
if (!mountedMap.has(a)) {
|
1652
|
+
readAtomState(version, a);
|
1653
|
+
} else {
|
1654
|
+
const aState = getAtomState(version, a);
|
1655
|
+
if (aState && aState.r === aState.i) {
|
1656
|
+
readAtomState(version, a);
|
1657
|
+
}
|
1658
|
+
}
|
1659
|
+
}
|
1660
|
+
});
|
1661
|
+
if (Array.from(atomState.d).every(([a, r]) => {
|
1662
|
+
const aState = getAtomState(version, a);
|
1663
|
+
return aState && "v" in aState && aState.r === r;
|
1664
|
+
})) {
|
1665
|
+
return atomState;
|
1666
|
+
}
|
1667
|
+
}
|
1668
|
+
}
|
1669
|
+
const dependencies = /* @__PURE__ */ new Set();
|
1670
|
+
try {
|
1671
|
+
const promiseOrValue = atom2.read((a) => {
|
1672
|
+
dependencies.add(a);
|
1673
|
+
const aState = a === atom2 ? getAtomState(version, a) : readAtomState(version, a);
|
1674
|
+
if (aState) {
|
1675
|
+
if ("e" in aState) {
|
1676
|
+
throw aState.e;
|
1677
|
+
}
|
1678
|
+
if ("p" in aState) {
|
1679
|
+
throw aState.p;
|
1680
|
+
}
|
1681
|
+
return aState.v;
|
1682
|
+
}
|
1683
|
+
if (hasInitialValue(a)) {
|
1684
|
+
return a.init;
|
1685
|
+
}
|
1686
|
+
throw new Error("no atom init");
|
1687
|
+
});
|
1688
|
+
return setAtomPromiseOrValue(version, atom2, promiseOrValue, dependencies);
|
1689
|
+
} catch (errorOrPromise) {
|
1690
|
+
if (errorOrPromise instanceof Promise) {
|
1691
|
+
const suspensePromise = createSuspensePromise(errorOrPromise);
|
1692
|
+
return setAtomSuspensePromise(version, atom2, suspensePromise, dependencies);
|
1693
|
+
}
|
1694
|
+
return setAtomReadError(version, atom2, errorOrPromise, dependencies);
|
1695
|
+
}
|
1696
|
+
};
|
1697
|
+
const readAtom = (readingAtom, version) => {
|
1698
|
+
const atomState = readAtomState(version, readingAtom);
|
1699
|
+
return atomState;
|
1700
|
+
};
|
1701
|
+
const addAtom = (addingAtom) => {
|
1702
|
+
let mounted = mountedMap.get(addingAtom);
|
1703
|
+
if (!mounted) {
|
1704
|
+
mounted = mountAtom(addingAtom);
|
1705
|
+
}
|
1706
|
+
return mounted;
|
1707
|
+
};
|
1708
|
+
const canUnmountAtom = (atom2, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom2));
|
1709
|
+
const delAtom = (deletingAtom) => {
|
1710
|
+
const mounted = mountedMap.get(deletingAtom);
|
1711
|
+
if (mounted && canUnmountAtom(deletingAtom, mounted)) {
|
1712
|
+
unmountAtom(deletingAtom);
|
1713
|
+
}
|
1714
|
+
};
|
1715
|
+
const invalidateDependents = (version, atom2) => {
|
1716
|
+
const mounted = mountedMap.get(atom2);
|
1717
|
+
mounted == null ? void 0 : mounted.t.forEach((dependent) => {
|
1718
|
+
if (dependent !== atom2) {
|
1719
|
+
setAtomInvalidated(version, dependent);
|
1720
|
+
invalidateDependents(version, dependent);
|
1721
|
+
}
|
1722
|
+
});
|
1723
|
+
};
|
1724
|
+
const writeAtomState = (version, atom2, update) => {
|
1725
|
+
let isSync = true;
|
1726
|
+
const writeGetter = (a, options) => {
|
1727
|
+
if (typeof options === "boolean") {
|
1728
|
+
console.warn("[DEPRECATED] Please use { unstable_promise: true }");
|
1729
|
+
options = { unstable_promise: options };
|
1730
|
+
}
|
1731
|
+
const aState = readAtomState(version, a);
|
1732
|
+
if ("e" in aState) {
|
1733
|
+
throw aState.e;
|
1734
|
+
}
|
1735
|
+
if ("p" in aState) {
|
1736
|
+
if (options == null ? void 0 : options.unstable_promise) {
|
1737
|
+
return aState.p.then(() => writeGetter(a, options));
|
1738
|
+
}
|
1739
|
+
if (typeof process === "object" && false) {
|
1740
|
+
console.info("Reading pending atom state in write operation. We throw a promise for now.", a);
|
1741
|
+
}
|
1742
|
+
throw aState.p;
|
1743
|
+
}
|
1744
|
+
if ("v" in aState) {
|
1745
|
+
return aState.v;
|
1746
|
+
}
|
1747
|
+
if (typeof process === "object" && false) {
|
1748
|
+
console.warn("[Bug] no value found while reading atom in write operation. This is probably a bug.", a);
|
1749
|
+
}
|
1750
|
+
throw new Error("no value found");
|
1751
|
+
};
|
1752
|
+
const setter = (a, v) => {
|
1753
|
+
let promiseOrVoid2;
|
1754
|
+
if (a === atom2) {
|
1755
|
+
if (!hasInitialValue(a)) {
|
1756
|
+
throw new Error("atom not writable");
|
1757
|
+
}
|
1758
|
+
const versionSet = cancelAllSuspensePromiseInCache(a);
|
1759
|
+
versionSet.forEach((cancelledVersion) => {
|
1760
|
+
if (cancelledVersion !== version) {
|
1761
|
+
setAtomPromiseOrValue(cancelledVersion, a, v);
|
1762
|
+
}
|
1763
|
+
});
|
1764
|
+
setAtomPromiseOrValue(version, a, v);
|
1765
|
+
invalidateDependents(version, a);
|
1766
|
+
} else {
|
1767
|
+
promiseOrVoid2 = writeAtomState(version, a, v);
|
1768
|
+
}
|
1769
|
+
if (!isSync) {
|
1770
|
+
flushPending(version);
|
1771
|
+
}
|
1772
|
+
return promiseOrVoid2;
|
1773
|
+
};
|
1774
|
+
const promiseOrVoid = atom2.write(writeGetter, setter, update);
|
1775
|
+
isSync = false;
|
1776
|
+
version = void 0;
|
1777
|
+
return promiseOrVoid;
|
1778
|
+
};
|
1779
|
+
const writeAtom = (writingAtom, update, version) => {
|
1780
|
+
const promiseOrVoid = writeAtomState(version, writingAtom, update);
|
1781
|
+
flushPending(version);
|
1782
|
+
return promiseOrVoid;
|
1783
|
+
};
|
1784
|
+
const isActuallyWritableAtom = (atom2) => !!atom2.write;
|
1785
|
+
const mountAtom = (atom2, initialDependent) => {
|
1786
|
+
const mounted = {
|
1787
|
+
t: new Set(initialDependent && [initialDependent]),
|
1788
|
+
l: /* @__PURE__ */ new Set()
|
1789
|
+
};
|
1790
|
+
mountedMap.set(atom2, mounted);
|
1791
|
+
if (typeof process === "object" && false) {
|
1792
|
+
mountedAtoms.add(atom2);
|
1793
|
+
}
|
1794
|
+
const atomState = readAtomState(void 0, atom2);
|
1795
|
+
atomState.d.forEach((_, a) => {
|
1796
|
+
const aMounted = mountedMap.get(a);
|
1797
|
+
if (aMounted) {
|
1798
|
+
aMounted.t.add(atom2);
|
1799
|
+
} else {
|
1800
|
+
if (a !== atom2) {
|
1801
|
+
mountAtom(a, atom2);
|
1802
|
+
}
|
1803
|
+
}
|
1804
|
+
});
|
1805
|
+
if (isActuallyWritableAtom(atom2) && atom2.onMount) {
|
1806
|
+
const setAtom = (update) => writeAtom(atom2, update);
|
1807
|
+
const onUnmount = atom2.onMount(setAtom);
|
1808
|
+
if (onUnmount) {
|
1809
|
+
mounted.u = onUnmount;
|
1810
|
+
}
|
1811
|
+
}
|
1812
|
+
return mounted;
|
1813
|
+
};
|
1814
|
+
const unmountAtom = (atom2) => {
|
1815
|
+
var _a;
|
1816
|
+
const onUnmount = (_a = mountedMap.get(atom2)) == null ? void 0 : _a.u;
|
1817
|
+
if (onUnmount) {
|
1818
|
+
onUnmount();
|
1819
|
+
}
|
1820
|
+
mountedMap.delete(atom2);
|
1821
|
+
if (typeof process === "object" && false) {
|
1822
|
+
mountedAtoms.delete(atom2);
|
1823
|
+
}
|
1824
|
+
const atomState = getAtomState(void 0, atom2);
|
1825
|
+
if (atomState) {
|
1826
|
+
atomState.d.forEach((_, a) => {
|
1827
|
+
if (a !== atom2) {
|
1828
|
+
const mounted = mountedMap.get(a);
|
1829
|
+
if (mounted) {
|
1830
|
+
mounted.t.delete(atom2);
|
1831
|
+
if (canUnmountAtom(a, mounted)) {
|
1832
|
+
unmountAtom(a);
|
1833
|
+
}
|
1834
|
+
}
|
1835
|
+
}
|
1836
|
+
});
|
1837
|
+
} else if (typeof process === "object" && false) {
|
1838
|
+
console.warn("[Bug] could not find atom state to unmount", atom2);
|
1839
|
+
}
|
1840
|
+
};
|
1841
|
+
const mountDependencies = (atom2, atomState, prevReadDependencies) => {
|
1842
|
+
const dependencies = new Set(atomState.d.keys());
|
1843
|
+
prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_, a) => {
|
1844
|
+
if (dependencies.has(a)) {
|
1845
|
+
dependencies.delete(a);
|
1846
|
+
return;
|
1847
|
+
}
|
1848
|
+
const mounted = mountedMap.get(a);
|
1849
|
+
if (mounted) {
|
1850
|
+
mounted.t.delete(atom2);
|
1851
|
+
if (canUnmountAtom(a, mounted)) {
|
1852
|
+
unmountAtom(a);
|
1853
|
+
}
|
1854
|
+
}
|
1855
|
+
});
|
1856
|
+
dependencies.forEach((a) => {
|
1857
|
+
const mounted = mountedMap.get(a);
|
1858
|
+
if (mounted) {
|
1859
|
+
mounted.t.add(atom2);
|
1860
|
+
} else if (mountedMap.has(atom2)) {
|
1861
|
+
mountAtom(a, atom2);
|
1862
|
+
}
|
1863
|
+
});
|
1864
|
+
};
|
1865
|
+
const flushPending = (version) => {
|
1866
|
+
if (version) {
|
1867
|
+
const versionedAtomStateMap = getVersionedAtomStateMap(version);
|
1868
|
+
versionedAtomStateMap.forEach((atomState, atom2) => {
|
1869
|
+
if (atomState !== committedAtomStateMap.get(atom2)) {
|
1870
|
+
const mounted = mountedMap.get(atom2);
|
1871
|
+
mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version));
|
1872
|
+
}
|
1873
|
+
});
|
1874
|
+
return;
|
1875
|
+
}
|
1876
|
+
while (pendingMap.size) {
|
1877
|
+
const pending = Array.from(pendingMap);
|
1878
|
+
pendingMap.clear();
|
1879
|
+
pending.forEach(([atom2, prevAtomState]) => {
|
1880
|
+
const atomState = getAtomState(void 0, atom2);
|
1881
|
+
if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {
|
1882
|
+
mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);
|
1883
|
+
}
|
1884
|
+
const mounted = mountedMap.get(atom2);
|
1885
|
+
mounted == null ? void 0 : mounted.l.forEach((listener) => listener());
|
1886
|
+
});
|
1887
|
+
}
|
1888
|
+
if (typeof process === "object" && false) {
|
1889
|
+
stateListeners.forEach((l) => l());
|
1890
|
+
}
|
1891
|
+
};
|
1892
|
+
const commitVersionedAtomStateMap = (version) => {
|
1893
|
+
const versionedAtomStateMap = getVersionedAtomStateMap(version);
|
1894
|
+
versionedAtomStateMap.forEach((atomState, atom2) => {
|
1895
|
+
const prevAtomState = committedAtomStateMap.get(atom2);
|
1896
|
+
if (atomState.r > ((prevAtomState == null ? void 0 : prevAtomState.r) || 0) || "v" in atomState && atomState.r === (prevAtomState == null ? void 0 : prevAtomState.r) && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {
|
1897
|
+
committedAtomStateMap.set(atom2, atomState);
|
1898
|
+
if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {
|
1899
|
+
mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);
|
1900
|
+
}
|
1901
|
+
}
|
1902
|
+
});
|
1903
|
+
};
|
1904
|
+
const commitAtom = (_atom, version) => {
|
1905
|
+
if (version) {
|
1906
|
+
commitVersionedAtomStateMap(version);
|
1907
|
+
}
|
1908
|
+
flushPending(void 0);
|
1909
|
+
};
|
1910
|
+
const subscribeAtom = (atom2, callback) => {
|
1911
|
+
const mounted = addAtom(atom2);
|
1912
|
+
const listeners = mounted.l;
|
1913
|
+
listeners.add(callback);
|
1914
|
+
return () => {
|
1915
|
+
listeners.delete(callback);
|
1916
|
+
delAtom(atom2);
|
1917
|
+
};
|
1918
|
+
};
|
1919
|
+
const restoreAtoms = (values, version) => {
|
1920
|
+
for (const [atom2, value] of values) {
|
1921
|
+
if (hasInitialValue(atom2)) {
|
1922
|
+
setAtomPromiseOrValue(version, atom2, value);
|
1923
|
+
invalidateDependents(version, atom2);
|
1924
|
+
}
|
1925
|
+
}
|
1926
|
+
flushPending(version);
|
1927
|
+
};
|
1928
|
+
if (typeof process === "object" && false) {
|
1929
|
+
return {
|
1930
|
+
[READ_ATOM]: readAtom,
|
1931
|
+
[WRITE_ATOM$1]: writeAtom,
|
1932
|
+
[COMMIT_ATOM]: commitAtom,
|
1933
|
+
[SUBSCRIBE_ATOM]: subscribeAtom,
|
1934
|
+
[RESTORE_ATOMS]: restoreAtoms,
|
1935
|
+
[DEV_SUBSCRIBE_STATE]: (l) => {
|
1936
|
+
stateListeners.add(l);
|
1937
|
+
return () => {
|
1938
|
+
stateListeners.delete(l);
|
1939
|
+
};
|
1940
|
+
},
|
1941
|
+
[DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),
|
1942
|
+
[DEV_GET_ATOM_STATE]: (a) => committedAtomStateMap.get(a),
|
1943
|
+
[DEV_GET_MOUNTED]: (a) => mountedMap.get(a)
|
1944
|
+
};
|
1945
|
+
}
|
1946
|
+
return {
|
1947
|
+
[READ_ATOM]: readAtom,
|
1948
|
+
[WRITE_ATOM$1]: writeAtom,
|
1949
|
+
[COMMIT_ATOM]: commitAtom,
|
1950
|
+
[SUBSCRIBE_ATOM]: subscribeAtom,
|
1951
|
+
[RESTORE_ATOMS]: restoreAtoms
|
1952
|
+
};
|
1953
|
+
};
|
1954
|
+
const createScopeContainer = (initialValues) => {
|
1955
|
+
const store = createStore(initialValues);
|
1956
|
+
return { s: store };
|
1957
|
+
};
|
1958
|
+
const ScopeContextMap = /* @__PURE__ */ new Map();
|
1959
|
+
const getScopeContext = (scope) => {
|
1960
|
+
if (!ScopeContextMap.has(scope)) {
|
1961
|
+
ScopeContextMap.set(scope, createContext(createScopeContainer()));
|
1962
|
+
}
|
1963
|
+
return ScopeContextMap.get(scope);
|
1964
|
+
};
|
1965
|
+
let keyCount = 0;
|
1966
|
+
function atom(read, write) {
|
1967
|
+
const key = `atom${++keyCount}`;
|
1968
|
+
const config = {
|
1969
|
+
toString: () => key
|
1970
|
+
};
|
1971
|
+
if (typeof read === "function") {
|
1972
|
+
config.read = read;
|
1973
|
+
} else {
|
1974
|
+
config.init = read;
|
1975
|
+
config.read = (get2) => get2(config);
|
1976
|
+
config.write = (get2, set2, update) => set2(config, typeof update === "function" ? update(get2(config)) : update);
|
1977
|
+
}
|
1978
|
+
if (write) {
|
1979
|
+
config.write = write;
|
1980
|
+
}
|
1981
|
+
return config;
|
1982
|
+
}
|
1983
|
+
const isWritable = (atom2) => !!atom2.write;
|
1984
|
+
function useAtom(atom2, scope) {
|
1985
|
+
if ("scope" in atom2) {
|
1986
|
+
console.warn("atom.scope is deprecated. Please do useAtom(atom, scope) instead.");
|
1987
|
+
scope = atom2.scope;
|
1988
|
+
}
|
1989
|
+
const ScopeContext = getScopeContext(scope);
|
1990
|
+
const { s: store, w: versionedWrite } = useContext(ScopeContext);
|
1991
|
+
const getAtomValue = useCallback((version2) => {
|
1992
|
+
const atomState = store[READ_ATOM](atom2, version2);
|
1993
|
+
if ("e" in atomState) {
|
1994
|
+
throw atomState.e;
|
1995
|
+
}
|
1996
|
+
if ("p" in atomState) {
|
1997
|
+
throw atomState.p;
|
1998
|
+
}
|
1999
|
+
if ("v" in atomState) {
|
2000
|
+
return atomState.v;
|
2001
|
+
}
|
2002
|
+
throw new Error("no atom value");
|
2003
|
+
}, [store, atom2]);
|
2004
|
+
const [[version, value, atomFromUseReducer], rerenderIfChanged] = useReducer(useCallback((prev, nextVersion) => {
|
2005
|
+
const nextValue = getAtomValue(nextVersion);
|
2006
|
+
if (Object.is(prev[1], nextValue) && prev[2] === atom2) {
|
2007
|
+
return prev;
|
2008
|
+
}
|
2009
|
+
return [nextVersion, nextValue, atom2];
|
2010
|
+
}, [getAtomValue, atom2]), void 0, () => {
|
2011
|
+
const initialVersion = void 0;
|
2012
|
+
const initialValue = getAtomValue(initialVersion);
|
2013
|
+
return [initialVersion, initialValue, atom2];
|
2014
|
+
});
|
2015
|
+
if (atomFromUseReducer !== atom2) {
|
2016
|
+
rerenderIfChanged(void 0);
|
2017
|
+
}
|
2018
|
+
useEffect(() => {
|
2019
|
+
const unsubscribe = store[SUBSCRIBE_ATOM](atom2, rerenderIfChanged);
|
2020
|
+
rerenderIfChanged(void 0);
|
2021
|
+
return unsubscribe;
|
2022
|
+
}, [store, atom2]);
|
2023
|
+
useEffect(() => {
|
2024
|
+
store[COMMIT_ATOM](atom2, version);
|
2025
|
+
});
|
2026
|
+
const setAtom = useCallback((update) => {
|
2027
|
+
if (isWritable(atom2)) {
|
2028
|
+
const write = (version2) => store[WRITE_ATOM$1](atom2, update, version2);
|
2029
|
+
return versionedWrite ? versionedWrite(write) : write();
|
2030
|
+
} else {
|
2031
|
+
throw new Error("not writable atom");
|
2032
|
+
}
|
2033
|
+
}, [store, versionedWrite, atom2]);
|
2034
|
+
useDebugValue(value);
|
2035
|
+
return [value, setAtom];
|
2036
|
+
}
|
2037
|
+
const WRITE_ATOM = "w";
|
2038
|
+
function useUpdateAtom(anAtom, scope) {
|
2039
|
+
const ScopeContext = getScopeContext(scope);
|
2040
|
+
const { s: store, w: versionedWrite } = useContext(ScopeContext);
|
2041
|
+
const setAtom = useCallback((update) => {
|
2042
|
+
const write = (version) => store[WRITE_ATOM](anAtom, update, version);
|
2043
|
+
return versionedWrite ? versionedWrite(write) : write();
|
2044
|
+
}, [store, versionedWrite, anAtom]);
|
2045
|
+
return setAtom;
|
2046
|
+
}
|
2047
|
+
function useAtomValue(anAtom, scope) {
|
2048
|
+
return useAtom(anAtom, scope)[0];
|
2049
|
+
}
|
2050
|
+
function atomFamily(initializeAtom, areEqual) {
|
2051
|
+
let shouldRemove = null;
|
2052
|
+
const atoms = /* @__PURE__ */ new Map();
|
2053
|
+
const createAtom = (param) => {
|
2054
|
+
let item;
|
2055
|
+
if (areEqual === void 0) {
|
2056
|
+
item = atoms.get(param);
|
2057
|
+
} else {
|
2058
|
+
for (const [key, value] of atoms) {
|
2059
|
+
if (areEqual(key, param)) {
|
2060
|
+
item = value;
|
2061
|
+
break;
|
2062
|
+
}
|
2063
|
+
}
|
2064
|
+
}
|
2065
|
+
if (item !== void 0) {
|
2066
|
+
if (shouldRemove == null ? void 0 : shouldRemove(item[1], param)) {
|
2067
|
+
atoms.delete(param);
|
2068
|
+
} else {
|
2069
|
+
return item[0];
|
2070
|
+
}
|
2071
|
+
}
|
2072
|
+
const newAtom = initializeAtom(param);
|
2073
|
+
atoms.set(param, [newAtom, Date.now()]);
|
2074
|
+
return newAtom;
|
2075
|
+
};
|
2076
|
+
createAtom.remove = (param) => {
|
2077
|
+
if (areEqual === void 0) {
|
2078
|
+
atoms.delete(param);
|
2079
|
+
} else {
|
2080
|
+
for (const [key] of atoms) {
|
2081
|
+
if (areEqual(key, param)) {
|
2082
|
+
atoms.delete(key);
|
2083
|
+
break;
|
2084
|
+
}
|
2085
|
+
}
|
2086
|
+
}
|
2087
|
+
};
|
2088
|
+
createAtom.setShouldRemove = (fn) => {
|
2089
|
+
shouldRemove = fn;
|
2090
|
+
if (!shouldRemove)
|
2091
|
+
return;
|
2092
|
+
for (const [key, value] of atoms) {
|
2093
|
+
if (shouldRemove(value[1], key)) {
|
2094
|
+
atoms.delete(key);
|
2095
|
+
}
|
2096
|
+
}
|
2097
|
+
};
|
2098
|
+
return createAtom;
|
2099
|
+
}
|
2100
|
+
const getWeakCacheItem = (cache, deps) => {
|
2101
|
+
do {
|
2102
|
+
const [dep, ...rest] = deps;
|
2103
|
+
const entry = cache.get(dep);
|
2104
|
+
if (!entry) {
|
2105
|
+
return;
|
2106
|
+
}
|
2107
|
+
if (!rest.length) {
|
2108
|
+
return entry[1];
|
2109
|
+
}
|
2110
|
+
cache = entry[0];
|
2111
|
+
deps = rest;
|
2112
|
+
} while (deps.length);
|
2113
|
+
};
|
2114
|
+
const setWeakCacheItem = (cache, deps, item) => {
|
2115
|
+
do {
|
2116
|
+
const [dep, ...rest] = deps;
|
2117
|
+
let entry = cache.get(dep);
|
2118
|
+
if (!entry) {
|
2119
|
+
entry = [/* @__PURE__ */ new WeakMap()];
|
2120
|
+
cache.set(dep, entry);
|
2121
|
+
}
|
2122
|
+
if (!rest.length) {
|
2123
|
+
entry[1] = item;
|
2124
|
+
return;
|
2125
|
+
}
|
2126
|
+
cache = entry[0];
|
2127
|
+
deps = rest;
|
2128
|
+
} while (deps.length);
|
2129
|
+
};
|
2130
|
+
const createMemoizeAtom = () => {
|
2131
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
2132
|
+
const memoizeAtom = (createAtom, deps) => {
|
2133
|
+
const cachedAtom = getWeakCacheItem(cache, deps);
|
2134
|
+
if (cachedAtom) {
|
2135
|
+
return cachedAtom;
|
2136
|
+
}
|
2137
|
+
const createdAtom = createAtom();
|
2138
|
+
setWeakCacheItem(cache, deps, createdAtom);
|
2139
|
+
return createdAtom;
|
2140
|
+
};
|
2141
|
+
return memoizeAtom;
|
2142
|
+
};
|
2143
|
+
const memoizeAtom$4 = createMemoizeAtom();
|
2144
|
+
function selectAtom(anAtom, selector, equalityFn = Object.is) {
|
2145
|
+
return memoizeAtom$4(() => {
|
2146
|
+
const refAtom = atom(() => ({}));
|
2147
|
+
const derivedAtom = atom((get2) => {
|
2148
|
+
const slice = selector(get2(anAtom));
|
2149
|
+
const ref = get2(refAtom);
|
2150
|
+
if ("prev" in ref && equalityFn(ref.prev, slice)) {
|
2151
|
+
return ref.prev;
|
2152
|
+
}
|
2153
|
+
ref.prev = slice;
|
2154
|
+
return slice;
|
2155
|
+
});
|
2156
|
+
return derivedAtom;
|
2157
|
+
}, [anAtom, selector, equalityFn]);
|
2158
|
+
}
|
2159
|
+
function useAtomCallback(callback, scope) {
|
2160
|
+
const anAtom = useMemo(() => atom(null, (get2, set2, [arg, resolve, reject]) => {
|
2161
|
+
try {
|
2162
|
+
resolve(callback(get2, set2, arg));
|
2163
|
+
} catch (e) {
|
2164
|
+
reject(e);
|
2165
|
+
}
|
2166
|
+
}), [callback]);
|
2167
|
+
const invoke = useUpdateAtom(anAtom, scope);
|
2168
|
+
return useCallback((arg) => new Promise((resolve, reject) => {
|
2169
|
+
invoke([arg, resolve, reject]);
|
2170
|
+
}), [invoke]);
|
2171
|
+
}
|
2172
|
+
function createJSONStorage(getStringStorage) {
|
2173
|
+
try {
|
2174
|
+
if (!getStringStorage().removeItem) {
|
2175
|
+
console.warn("Missing removeItem. In the next version, it will be required.");
|
2176
|
+
}
|
2177
|
+
} catch {
|
2178
|
+
}
|
2179
|
+
return {
|
2180
|
+
getItem: (key) => {
|
2181
|
+
const value = getStringStorage().getItem(key);
|
2182
|
+
if (value instanceof Promise) {
|
2183
|
+
return value.then((v) => JSON.parse(v || ""));
|
2184
|
+
}
|
2185
|
+
return JSON.parse(value || "");
|
2186
|
+
},
|
2187
|
+
setItem: (key, newValue) => getStringStorage().setItem(key, JSON.stringify(newValue)),
|
2188
|
+
removeItem: (key) => {
|
2189
|
+
var _a, _b;
|
2190
|
+
return (_b = (_a = getStringStorage()).removeItem) == null ? void 0 : _b.call(_a, key);
|
2191
|
+
}
|
2192
|
+
};
|
2193
|
+
}
|
2194
|
+
createJSONStorage(() => localStorage);
|
2195
|
+
var prefix = "Invariant failed";
|
2196
|
+
function invariant(condition, message) {
|
2197
|
+
if (condition) {
|
2198
|
+
return;
|
2199
|
+
}
|
2200
|
+
{
|
2201
|
+
throw new Error(prefix);
|
2202
|
+
}
|
2203
|
+
}
|
2204
|
+
const FORM_ID_FIELD = "__rvfInternalFormId";
|
2205
|
+
const FORM_DEFAULTS_FIELD = "__rvfInternalFormDefaults";
|
2206
|
+
const formDefaultValuesKey = (formId) => `${FORM_DEFAULTS_FIELD}_${formId}`;
|
2207
|
+
const InternalFormContext = createContext(null);
|
2208
|
+
const serverData = (data) => ({
|
2209
|
+
hydrateTo: () => data,
|
2210
|
+
map: (fn) => serverData(fn(data))
|
2211
|
+
});
|
2212
|
+
const hydratedData = () => ({
|
2213
|
+
hydrateTo: (hydratedData2) => hydratedData2,
|
2214
|
+
map: () => hydratedData()
|
2215
|
+
});
|
2216
|
+
const from = (data, hydrated) => hydrated ? hydratedData() : serverData(data);
|
2217
|
+
const hydratable = {
|
2218
|
+
serverData,
|
2219
|
+
hydratedData,
|
2220
|
+
from
|
2221
|
+
};
|
2222
|
+
function arrayEach$1(array, iteratee) {
|
2223
|
+
var index = -1, length = array == null ? 0 : array.length;
|
2224
|
+
while (++index < length) {
|
2225
|
+
if (iteratee(array[index], index, array) === false) {
|
2226
|
+
break;
|
2227
|
+
}
|
2228
|
+
}
|
2229
|
+
return array;
|
2230
|
+
}
|
2231
|
+
var _arrayEach = arrayEach$1;
|
2232
|
+
var assignValue$1 = _assignValue, baseAssignValue = _baseAssignValue;
|
2233
|
+
function copyObject$5(source, props, object, customizer) {
|
2234
|
+
var isNew = !object;
|
2235
|
+
object || (object = {});
|
2236
|
+
var index = -1, length = props.length;
|
2237
|
+
while (++index < length) {
|
2238
|
+
var key = props[index];
|
2239
|
+
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
|
2240
|
+
if (newValue === void 0) {
|
2241
|
+
newValue = source[key];
|
2242
|
+
}
|
2243
|
+
if (isNew) {
|
2244
|
+
baseAssignValue(object, key, newValue);
|
2245
|
+
} else {
|
2246
|
+
assignValue$1(object, key, newValue);
|
2247
|
+
}
|
2248
|
+
}
|
2249
|
+
return object;
|
2250
|
+
}
|
2251
|
+
var _copyObject = copyObject$5;
|
2252
|
+
var copyObject$4 = _copyObject, keys$1 = keys_1;
|
2253
|
+
function baseAssign$1(object, source) {
|
2254
|
+
return object && copyObject$4(source, keys$1(source), object);
|
2255
|
+
}
|
2256
|
+
var _baseAssign = baseAssign$1;
|
2257
|
+
var copyObject$3 = _copyObject, keysIn$1 = keysIn_1;
|
2258
|
+
function baseAssignIn$1(object, source) {
|
2259
|
+
return object && copyObject$3(source, keysIn$1(source), object);
|
2260
|
+
}
|
2261
|
+
var _baseAssignIn = baseAssignIn$1;
|
2262
|
+
var _cloneBuffer = { exports: {} };
|
2263
|
+
(function(module, exports) {
|
2264
|
+
var root2 = _root;
|
2265
|
+
var freeExports = exports && !exports.nodeType && exports;
|
2266
|
+
var freeModule = freeExports && true && module && !module.nodeType && module;
|
2267
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
2268
|
+
var Buffer2 = moduleExports ? root2.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
|
2269
|
+
function cloneBuffer2(buffer, isDeep) {
|
2270
|
+
if (isDeep) {
|
2271
|
+
return buffer.slice();
|
2272
|
+
}
|
2273
|
+
var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
|
2274
|
+
buffer.copy(result);
|
2275
|
+
return result;
|
2276
|
+
}
|
2277
|
+
module.exports = cloneBuffer2;
|
2278
|
+
})(_cloneBuffer, _cloneBuffer.exports);
|
2279
|
+
function copyArray$1(source, array) {
|
2280
|
+
var index = -1, length = source.length;
|
2281
|
+
array || (array = Array(length));
|
2282
|
+
while (++index < length) {
|
2283
|
+
array[index] = source[index];
|
2284
|
+
}
|
2285
|
+
return array;
|
2286
|
+
}
|
2287
|
+
var _copyArray = copyArray$1;
|
2288
|
+
var copyObject$2 = _copyObject, getSymbols = _getSymbols;
|
2289
|
+
function copySymbols$1(source, object) {
|
2290
|
+
return copyObject$2(source, getSymbols(source), object);
|
2291
|
+
}
|
2292
|
+
var _copySymbols = copySymbols$1;
|
2293
|
+
var copyObject$1 = _copyObject, getSymbolsIn = _getSymbolsIn;
|
2294
|
+
function copySymbolsIn$1(source, object) {
|
2295
|
+
return copyObject$1(source, getSymbolsIn(source), object);
|
2296
|
+
}
|
2297
|
+
var _copySymbolsIn = copySymbolsIn$1;
|
2298
|
+
var objectProto$1 = Object.prototype;
|
2299
|
+
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
2300
|
+
function initCloneArray$1(array) {
|
2301
|
+
var length = array.length, result = new array.constructor(length);
|
2302
|
+
if (length && typeof array[0] == "string" && hasOwnProperty$1.call(array, "index")) {
|
2303
|
+
result.index = array.index;
|
2304
|
+
result.input = array.input;
|
2305
|
+
}
|
2306
|
+
return result;
|
2307
|
+
}
|
2308
|
+
var _initCloneArray = initCloneArray$1;
|
2309
|
+
var Uint8Array2 = _Uint8Array;
|
2310
|
+
function cloneArrayBuffer$3(arrayBuffer) {
|
2311
|
+
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
2312
|
+
new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
|
2313
|
+
return result;
|
2314
|
+
}
|
2315
|
+
var _cloneArrayBuffer = cloneArrayBuffer$3;
|
2316
|
+
var cloneArrayBuffer$2 = _cloneArrayBuffer;
|
2317
|
+
function cloneDataView$1(dataView, isDeep) {
|
2318
|
+
var buffer = isDeep ? cloneArrayBuffer$2(dataView.buffer) : dataView.buffer;
|
2319
|
+
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
|
2320
|
+
}
|
2321
|
+
var _cloneDataView = cloneDataView$1;
|
2322
|
+
var reFlags = /\w*$/;
|
2323
|
+
function cloneRegExp$1(regexp) {
|
2324
|
+
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
|
2325
|
+
result.lastIndex = regexp.lastIndex;
|
2326
|
+
return result;
|
2327
|
+
}
|
2328
|
+
var _cloneRegExp = cloneRegExp$1;
|
2329
|
+
var Symbol$2 = _Symbol;
|
2330
|
+
var symbolProto = Symbol$2 ? Symbol$2.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
|
2331
|
+
function cloneSymbol$1(symbol) {
|
2332
|
+
return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
|
2333
|
+
}
|
2334
|
+
var _cloneSymbol = cloneSymbol$1;
|
2335
|
+
var cloneArrayBuffer$1 = _cloneArrayBuffer;
|
2336
|
+
function cloneTypedArray$1(typedArray, isDeep) {
|
2337
|
+
var buffer = isDeep ? cloneArrayBuffer$1(typedArray.buffer) : typedArray.buffer;
|
2338
|
+
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
|
2339
|
+
}
|
2340
|
+
var _cloneTypedArray = cloneTypedArray$1;
|
2341
|
+
var cloneArrayBuffer = _cloneArrayBuffer, cloneDataView = _cloneDataView, cloneRegExp = _cloneRegExp, cloneSymbol = _cloneSymbol, cloneTypedArray = _cloneTypedArray;
|
2342
|
+
var boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", mapTag$2 = "[object Map]", numberTag$1 = "[object Number]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]";
|
2343
|
+
var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
|
2344
|
+
function initCloneByTag$1(object, tag, isDeep) {
|
2345
|
+
var Ctor = object.constructor;
|
2346
|
+
switch (tag) {
|
2347
|
+
case arrayBufferTag$1:
|
2348
|
+
return cloneArrayBuffer(object);
|
2349
|
+
case boolTag$1:
|
2350
|
+
case dateTag$1:
|
2351
|
+
return new Ctor(+object);
|
2352
|
+
case dataViewTag$1:
|
2353
|
+
return cloneDataView(object, isDeep);
|
2354
|
+
case float32Tag$1:
|
2355
|
+
case float64Tag$1:
|
2356
|
+
case int8Tag$1:
|
2357
|
+
case int16Tag$1:
|
2358
|
+
case int32Tag$1:
|
2359
|
+
case uint8Tag$1:
|
2360
|
+
case uint8ClampedTag$1:
|
2361
|
+
case uint16Tag$1:
|
2362
|
+
case uint32Tag$1:
|
2363
|
+
return cloneTypedArray(object, isDeep);
|
2364
|
+
case mapTag$2:
|
2365
|
+
return new Ctor();
|
2366
|
+
case numberTag$1:
|
2367
|
+
case stringTag$1:
|
2368
|
+
return new Ctor(object);
|
2369
|
+
case regexpTag$1:
|
2370
|
+
return cloneRegExp(object);
|
2371
|
+
case setTag$2:
|
2372
|
+
return new Ctor();
|
2373
|
+
case symbolTag$1:
|
2374
|
+
return cloneSymbol(object);
|
2375
|
+
}
|
2376
|
+
}
|
2377
|
+
var _initCloneByTag = initCloneByTag$1;
|
2378
|
+
var isObject$1 = isObject_1;
|
2379
|
+
var objectCreate = Object.create;
|
2380
|
+
var baseCreate$1 = function() {
|
2381
|
+
function object() {
|
2382
|
+
}
|
2383
|
+
return function(proto) {
|
2384
|
+
if (!isObject$1(proto)) {
|
2385
|
+
return {};
|
2386
|
+
}
|
2387
|
+
if (objectCreate) {
|
2388
|
+
return objectCreate(proto);
|
2389
|
+
}
|
2390
|
+
object.prototype = proto;
|
2391
|
+
var result = new object();
|
2392
|
+
object.prototype = void 0;
|
2393
|
+
return result;
|
2394
|
+
};
|
2395
|
+
}();
|
2396
|
+
var _baseCreate = baseCreate$1;
|
2397
|
+
var baseCreate = _baseCreate, getPrototype$1 = _getPrototype, isPrototype = _isPrototype;
|
2398
|
+
function initCloneObject$1(object) {
|
2399
|
+
return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype$1(object)) : {};
|
2400
|
+
}
|
2401
|
+
var _initCloneObject = initCloneObject$1;
|
2402
|
+
var getTag$2 = _getTag, isObjectLike$2 = isObjectLike_1;
|
2403
|
+
var mapTag$1 = "[object Map]";
|
2404
|
+
function baseIsMap$1(value) {
|
2405
|
+
return isObjectLike$2(value) && getTag$2(value) == mapTag$1;
|
2406
|
+
}
|
2407
|
+
var _baseIsMap = baseIsMap$1;
|
2408
|
+
var baseIsMap = _baseIsMap, baseUnary$1 = _baseUnary, nodeUtil$1 = _nodeUtil.exports;
|
2409
|
+
var nodeIsMap = nodeUtil$1 && nodeUtil$1.isMap;
|
2410
|
+
var isMap$1 = nodeIsMap ? baseUnary$1(nodeIsMap) : baseIsMap;
|
2411
|
+
var isMap_1 = isMap$1;
|
2412
|
+
var getTag$1 = _getTag, isObjectLike$1 = isObjectLike_1;
|
2413
|
+
var setTag$1 = "[object Set]";
|
2414
|
+
function baseIsSet$1(value) {
|
2415
|
+
return isObjectLike$1(value) && getTag$1(value) == setTag$1;
|
2416
|
+
}
|
2417
|
+
var _baseIsSet = baseIsSet$1;
|
2418
|
+
var baseIsSet = _baseIsSet, baseUnary = _baseUnary, nodeUtil = _nodeUtil.exports;
|
2419
|
+
var nodeIsSet = nodeUtil && nodeUtil.isSet;
|
2420
|
+
var isSet$1 = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
|
2421
|
+
var isSet_1 = isSet$1;
|
2422
|
+
var Stack = _Stack, arrayEach = _arrayEach, assignValue = _assignValue, baseAssign = _baseAssign, baseAssignIn = _baseAssignIn, cloneBuffer = _cloneBuffer.exports, copyArray = _copyArray, copySymbols = _copySymbols, copySymbolsIn = _copySymbolsIn, getAllKeys = _getAllKeys, getAllKeysIn$1 = _getAllKeysIn, getTag = _getTag, initCloneArray = _initCloneArray, initCloneByTag = _initCloneByTag, initCloneObject = _initCloneObject, isArray$1 = isArray_1, isBuffer = isBuffer$3.exports, isMap = isMap_1, isObject = isObject_1, isSet = isSet_1, keys = keys_1, keysIn = keysIn_1;
|
2423
|
+
var CLONE_DEEP_FLAG$1 = 1, CLONE_FLAT_FLAG$1 = 2, CLONE_SYMBOLS_FLAG$1 = 4;
|
2424
|
+
var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag$1 = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", weakMapTag = "[object WeakMap]";
|
2425
|
+
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
|
2426
|
+
var cloneableTags = {};
|
2427
|
+
cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag$1] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
|
2428
|
+
cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
|
2429
|
+
function baseClone$1(value, bitmask, customizer, key, object, stack) {
|
2430
|
+
var result, isDeep = bitmask & CLONE_DEEP_FLAG$1, isFlat = bitmask & CLONE_FLAT_FLAG$1, isFull = bitmask & CLONE_SYMBOLS_FLAG$1;
|
2431
|
+
if (customizer) {
|
2432
|
+
result = object ? customizer(value, key, object, stack) : customizer(value);
|
2433
|
+
}
|
2434
|
+
if (result !== void 0) {
|
2435
|
+
return result;
|
2436
|
+
}
|
2437
|
+
if (!isObject(value)) {
|
2438
|
+
return value;
|
2439
|
+
}
|
2440
|
+
var isArr = isArray$1(value);
|
2441
|
+
if (isArr) {
|
2442
|
+
result = initCloneArray(value);
|
2443
|
+
if (!isDeep) {
|
2444
|
+
return copyArray(value, result);
|
2445
|
+
}
|
2446
|
+
} else {
|
2447
|
+
var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
|
2448
|
+
if (isBuffer(value)) {
|
2449
|
+
return cloneBuffer(value, isDeep);
|
2450
|
+
}
|
2451
|
+
if (tag == objectTag$1 || tag == argsTag || isFunc && !object) {
|
2452
|
+
result = isFlat || isFunc ? {} : initCloneObject(value);
|
2453
|
+
if (!isDeep) {
|
2454
|
+
return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
|
2455
|
+
}
|
2456
|
+
} else {
|
2457
|
+
if (!cloneableTags[tag]) {
|
2458
|
+
return object ? value : {};
|
2459
|
+
}
|
2460
|
+
result = initCloneByTag(value, tag, isDeep);
|
2461
|
+
}
|
2462
|
+
}
|
2463
|
+
stack || (stack = new Stack());
|
2464
|
+
var stacked = stack.get(value);
|
2465
|
+
if (stacked) {
|
2466
|
+
return stacked;
|
2467
|
+
}
|
2468
|
+
stack.set(value, result);
|
2469
|
+
if (isSet(value)) {
|
2470
|
+
value.forEach(function(subValue) {
|
2471
|
+
result.add(baseClone$1(subValue, bitmask, customizer, subValue, value, stack));
|
2472
|
+
});
|
2473
|
+
} else if (isMap(value)) {
|
2474
|
+
value.forEach(function(subValue, key2) {
|
2475
|
+
result.set(key2, baseClone$1(subValue, bitmask, customizer, key2, value, stack));
|
2476
|
+
});
|
2477
|
+
}
|
2478
|
+
var keysFunc = isFull ? isFlat ? getAllKeysIn$1 : getAllKeys : isFlat ? keysIn : keys;
|
2479
|
+
var props = isArr ? void 0 : keysFunc(value);
|
2480
|
+
arrayEach(props || value, function(subValue, key2) {
|
2481
|
+
if (props) {
|
2482
|
+
key2 = subValue;
|
2483
|
+
subValue = value[key2];
|
2484
|
+
}
|
2485
|
+
assignValue(result, key2, baseClone$1(subValue, bitmask, customizer, key2, value, stack));
|
2486
|
+
});
|
2487
|
+
return result;
|
2488
|
+
}
|
2489
|
+
var _baseClone = baseClone$1;
|
2490
|
+
function last$1(array) {
|
2491
|
+
var length = array == null ? 0 : array.length;
|
2492
|
+
return length ? array[length - 1] : void 0;
|
2493
|
+
}
|
2494
|
+
var last_1 = last$1;
|
2495
|
+
function baseSlice$1(array, start, end) {
|
2496
|
+
var index = -1, length = array.length;
|
2497
|
+
if (start < 0) {
|
2498
|
+
start = -start > length ? 0 : length + start;
|
2499
|
+
}
|
2500
|
+
end = end > length ? length : end;
|
2501
|
+
if (end < 0) {
|
2502
|
+
end += length;
|
2503
|
+
}
|
2504
|
+
length = start > end ? 0 : end - start >>> 0;
|
2505
|
+
start >>>= 0;
|
2506
|
+
var result = Array(length);
|
2507
|
+
while (++index < length) {
|
2508
|
+
result[index] = array[index + start];
|
2509
|
+
}
|
2510
|
+
return result;
|
2511
|
+
}
|
2512
|
+
var _baseSlice = baseSlice$1;
|
2513
|
+
var baseGet = _baseGet, baseSlice = _baseSlice;
|
2514
|
+
function parent$1(object, path) {
|
2515
|
+
return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
|
2516
|
+
}
|
2517
|
+
var _parent = parent$1;
|
2518
|
+
var castPath$1 = _castPath, last = last_1, parent = _parent, toKey = _toKey;
|
2519
|
+
function baseUnset$1(object, path) {
|
2520
|
+
path = castPath$1(path, object);
|
2521
|
+
object = parent(object, path);
|
2522
|
+
return object == null || delete object[toKey(last(path))];
|
2523
|
+
}
|
2524
|
+
var _baseUnset = baseUnset$1;
|
2525
|
+
var baseGetTag = _baseGetTag, getPrototype = _getPrototype, isObjectLike = isObjectLike_1;
|
2526
|
+
var objectTag = "[object Object]";
|
2527
|
+
var funcProto = Function.prototype, objectProto = Object.prototype;
|
2528
|
+
var funcToString = funcProto.toString;
|
2529
|
+
var hasOwnProperty = objectProto.hasOwnProperty;
|
2530
|
+
var objectCtorString = funcToString.call(Object);
|
2531
|
+
function isPlainObject$1(value) {
|
2532
|
+
if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
|
2533
|
+
return false;
|
2534
|
+
}
|
2535
|
+
var proto = getPrototype(value);
|
2536
|
+
if (proto === null) {
|
2537
|
+
return true;
|
2538
|
+
}
|
2539
|
+
var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
|
2540
|
+
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
|
2541
|
+
}
|
2542
|
+
var isPlainObject_1 = isPlainObject$1;
|
2543
|
+
var isPlainObject = isPlainObject_1;
|
2544
|
+
function customOmitClone$1(value) {
|
2545
|
+
return isPlainObject(value) ? void 0 : value;
|
2546
|
+
}
|
2547
|
+
var _customOmitClone = customOmitClone$1;
|
2548
|
+
var Symbol$1 = _Symbol, isArguments = isArguments_1, isArray = isArray_1;
|
2549
|
+
var spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : void 0;
|
2550
|
+
function isFlattenable$1(value) {
|
2551
|
+
return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
|
2552
|
+
}
|
2553
|
+
var _isFlattenable = isFlattenable$1;
|
2554
|
+
var arrayPush = _arrayPush, isFlattenable = _isFlattenable;
|
2555
|
+
function baseFlatten$1(array, depth, predicate, isStrict, result) {
|
2556
|
+
var index = -1, length = array.length;
|
2557
|
+
predicate || (predicate = isFlattenable);
|
2558
|
+
result || (result = []);
|
2559
|
+
while (++index < length) {
|
2560
|
+
var value = array[index];
|
2561
|
+
if (depth > 0 && predicate(value)) {
|
2562
|
+
if (depth > 1) {
|
2563
|
+
baseFlatten$1(value, depth - 1, predicate, isStrict, result);
|
2564
|
+
} else {
|
2565
|
+
arrayPush(result, value);
|
2566
|
+
}
|
2567
|
+
} else if (!isStrict) {
|
2568
|
+
result[result.length] = value;
|
2569
|
+
}
|
2570
|
+
}
|
2571
|
+
return result;
|
2572
|
+
}
|
2573
|
+
var _baseFlatten = baseFlatten$1;
|
2574
|
+
var baseFlatten = _baseFlatten;
|
2575
|
+
function flatten$1(array) {
|
2576
|
+
var length = array == null ? 0 : array.length;
|
2577
|
+
return length ? baseFlatten(array, 1) : [];
|
2578
|
+
}
|
2579
|
+
var flatten_1 = flatten$1;
|
2580
|
+
function apply$1(func, thisArg, args) {
|
2581
|
+
switch (args.length) {
|
2582
|
+
case 0:
|
2583
|
+
return func.call(thisArg);
|
2584
|
+
case 1:
|
2585
|
+
return func.call(thisArg, args[0]);
|
2586
|
+
case 2:
|
2587
|
+
return func.call(thisArg, args[0], args[1]);
|
2588
|
+
case 3:
|
2589
|
+
return func.call(thisArg, args[0], args[1], args[2]);
|
2590
|
+
}
|
2591
|
+
return func.apply(thisArg, args);
|
2592
|
+
}
|
2593
|
+
var _apply = apply$1;
|
2594
|
+
var apply = _apply;
|
2595
|
+
var nativeMax = Math.max;
|
2596
|
+
function overRest$1(func, start, transform) {
|
2597
|
+
start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
|
2598
|
+
return function() {
|
2599
|
+
var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);
|
2600
|
+
while (++index < length) {
|
2601
|
+
array[index] = args[start + index];
|
2602
|
+
}
|
2603
|
+
index = -1;
|
2604
|
+
var otherArgs = Array(start + 1);
|
2605
|
+
while (++index < start) {
|
2606
|
+
otherArgs[index] = args[index];
|
2607
|
+
}
|
2608
|
+
otherArgs[start] = transform(array);
|
2609
|
+
return apply(func, this, otherArgs);
|
2610
|
+
};
|
2611
|
+
}
|
2612
|
+
var _overRest = overRest$1;
|
2613
|
+
function constant$1(value) {
|
2614
|
+
return function() {
|
2615
|
+
return value;
|
2616
|
+
};
|
2617
|
+
}
|
2618
|
+
var constant_1 = constant$1;
|
2619
|
+
var constant = constant_1, defineProperty = _defineProperty, identity = identity_1;
|
2620
|
+
var baseSetToString$1 = !defineProperty ? identity : function(func, string) {
|
2621
|
+
return defineProperty(func, "toString", {
|
2622
|
+
"configurable": true,
|
2623
|
+
"enumerable": false,
|
2624
|
+
"value": constant(string),
|
2625
|
+
"writable": true
|
2626
|
+
});
|
2627
|
+
};
|
2628
|
+
var _baseSetToString = baseSetToString$1;
|
2629
|
+
var HOT_COUNT = 800, HOT_SPAN = 16;
|
2630
|
+
var nativeNow = Date.now;
|
2631
|
+
function shortOut$1(func) {
|
2632
|
+
var count = 0, lastCalled = 0;
|
2633
|
+
return function() {
|
2634
|
+
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
|
2635
|
+
lastCalled = stamp;
|
2636
|
+
if (remaining > 0) {
|
2637
|
+
if (++count >= HOT_COUNT) {
|
2638
|
+
return arguments[0];
|
2639
|
+
}
|
2640
|
+
} else {
|
2641
|
+
count = 0;
|
2642
|
+
}
|
2643
|
+
return func.apply(void 0, arguments);
|
2644
|
+
};
|
2645
|
+
}
|
2646
|
+
var _shortOut = shortOut$1;
|
2647
|
+
var baseSetToString = _baseSetToString, shortOut = _shortOut;
|
2648
|
+
var setToString$1 = shortOut(baseSetToString);
|
2649
|
+
var _setToString = setToString$1;
|
2650
|
+
var flatten = flatten_1, overRest = _overRest, setToString = _setToString;
|
2651
|
+
function flatRest$1(func) {
|
2652
|
+
return setToString(overRest(func, void 0, flatten), func + "");
|
2653
|
+
}
|
2654
|
+
var _flatRest = flatRest$1;
|
2655
|
+
var arrayMap = _arrayMap, baseClone = _baseClone, baseUnset = _baseUnset, castPath = _castPath, copyObject = _copyObject, customOmitClone = _customOmitClone, flatRest = _flatRest, getAllKeysIn = _getAllKeysIn;
|
2656
|
+
var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
|
2657
|
+
var omit = flatRest(function(object, paths) {
|
2658
|
+
var result = {};
|
2659
|
+
if (object == null) {
|
2660
|
+
return result;
|
2661
|
+
}
|
2662
|
+
var isDeep = false;
|
2663
|
+
paths = arrayMap(paths, function(path) {
|
2664
|
+
path = castPath(path, object);
|
2665
|
+
isDeep || (isDeep = path.length > 1);
|
2666
|
+
return path;
|
2667
|
+
});
|
2668
|
+
copyObject(object, getAllKeysIn(object), result);
|
2669
|
+
if (isDeep) {
|
2670
|
+
result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
|
2671
|
+
}
|
2672
|
+
var length = paths.length;
|
2673
|
+
while (length--) {
|
2674
|
+
baseUnset(result, paths[length]);
|
2675
|
+
}
|
2676
|
+
return result;
|
2677
|
+
});
|
2678
|
+
var omit_1 = omit;
|
2679
|
+
var baseIsEqual = _baseIsEqual;
|
2680
|
+
function isEqual(value, other) {
|
2681
|
+
return baseIsEqual(value, other);
|
2682
|
+
}
|
2683
|
+
var isEqual_1 = isEqual;
|
2684
|
+
const formAtomFamily = (data) => atomFamily((_) => atom(data));
|
2685
|
+
const fieldAtomFamily = (func) => atomFamily(func, isEqual_1);
|
2686
|
+
const ATOM_SCOPE = Symbol("remix-validated-form-scope");
|
2687
|
+
const isHydratedAtom = formAtomFamily(false);
|
2688
|
+
const isSubmittingAtom = formAtomFamily(false);
|
2689
|
+
const hasBeenSubmittedAtom = formAtomFamily(false);
|
2690
|
+
const fieldErrorsAtom = formAtomFamily({});
|
2691
|
+
const touchedFieldsAtom = formAtomFamily({});
|
2692
|
+
const formPropsAtom = formAtomFamily({
|
2693
|
+
validateField: () => Promise.resolve(null),
|
2694
|
+
registerReceiveFocus: () => () => {
|
2695
|
+
},
|
2696
|
+
defaultValues: {}
|
2697
|
+
});
|
2698
|
+
const formElementAtom = formAtomFamily(null);
|
2699
|
+
const cleanupFormState = (formId) => {
|
2700
|
+
[
|
2701
|
+
isHydratedAtom,
|
2702
|
+
isSubmittingAtom,
|
2703
|
+
hasBeenSubmittedAtom,
|
2704
|
+
fieldErrorsAtom,
|
2705
|
+
touchedFieldsAtom,
|
2706
|
+
formPropsAtom
|
2707
|
+
].forEach((formAtom) => formAtom.remove(formId));
|
2708
|
+
};
|
2709
|
+
const isValidAtom = atomFamily((formId) => atom((get2) => Object.keys(get2(fieldErrorsAtom(formId))).length === 0));
|
2710
|
+
const startSubmitAtom = atomFamily((formId) => atom(null, (_get, set2) => {
|
2711
|
+
set2(isSubmittingAtom(formId), true);
|
2712
|
+
set2(hasBeenSubmittedAtom(formId), true);
|
2713
|
+
}));
|
2714
|
+
const endSubmitAtom = atomFamily((formId) => atom(null, (_get, set2) => {
|
2715
|
+
set2(isSubmittingAtom(formId), false);
|
2716
|
+
}));
|
2717
|
+
const setTouchedAtom = atomFamily((formId) => atom(null, (get2, set2, { field, touched }) => {
|
2718
|
+
const prev = get2(touchedFieldsAtom(formId));
|
2719
|
+
if (prev[field] !== touched) {
|
2720
|
+
set2(touchedFieldsAtom(formId), __spreadProps(__spreadValues({}, prev), {
|
2721
|
+
[field]: touched
|
2722
|
+
}));
|
2723
|
+
}
|
2724
|
+
}));
|
2725
|
+
const setFieldErrorAtom = atomFamily((formId) => atom(null, (get2, set2, { field, error }) => {
|
2726
|
+
const prev = get2(fieldErrorsAtom(formId));
|
2727
|
+
if (error === void 0 && field in prev) {
|
2728
|
+
set2(fieldErrorsAtom(formId), omit_1(prev, field));
|
2729
|
+
}
|
2730
|
+
if (error !== void 0 && prev[field] !== error) {
|
2731
|
+
set2(fieldErrorsAtom(formId), __spreadProps(__spreadValues({}, get2(fieldErrorsAtom(formId))), {
|
2732
|
+
[field]: error
|
2733
|
+
}));
|
2734
|
+
}
|
2735
|
+
}));
|
2736
|
+
const fieldTouchedAtom = fieldAtomFamily(({ formId, field }) => atom((get2) => get2(touchedFieldsAtom(formId))[field], (_get, set2, touched) => {
|
2737
|
+
set2(setTouchedAtom(formId), { field, touched });
|
2738
|
+
}));
|
2739
|
+
const fieldErrorAtom = fieldAtomFamily(({ formId, field }) => atom((get2) => get2(fieldErrorsAtom(formId))[field], (_get, set2, error) => {
|
2740
|
+
set2(setFieldErrorAtom(formId), { field, error });
|
2741
|
+
}));
|
2742
|
+
fieldAtomFamily(({ formId, field }) => selectAtom(formPropsAtom(formId), (state) => state.defaultValues[field]));
|
2743
|
+
const useFormUpdateAtom = (atom2) => useUpdateAtom(atom2, ATOM_SCOPE);
|
2744
|
+
const useFormAtom = (anAtom) => useAtom(anAtom, ATOM_SCOPE);
|
2745
|
+
const useFormAtomValue = (anAtom) => useAtomValue(anAtom, ATOM_SCOPE);
|
2746
|
+
const useInternalFormContext = (formId, hookName) => {
|
2747
|
+
const formContext = useContext(InternalFormContext);
|
2748
|
+
if (formId)
|
2749
|
+
return { formId };
|
2750
|
+
if (formContext)
|
2751
|
+
return formContext;
|
2752
|
+
throw new Error(`Unable to determine form for ${hookName}. Please use it inside a ValidatedForm or pass a 'formId'.`);
|
2753
|
+
};
|
2754
|
+
function useErrorResponseForForm({
|
2755
|
+
fetcher,
|
2756
|
+
subaction,
|
2757
|
+
formId
|
2758
|
+
}) {
|
2759
|
+
var _a;
|
2760
|
+
const actionData = useActionData();
|
2761
|
+
if (fetcher) {
|
2762
|
+
if ((_a = fetcher.data) == null ? void 0 : _a.fieldErrors)
|
2763
|
+
return fetcher.data;
|
2764
|
+
return null;
|
2765
|
+
}
|
2766
|
+
if (!(actionData == null ? void 0 : actionData.fieldErrors))
|
2767
|
+
return null;
|
2768
|
+
if (typeof formId === "string" && actionData.formId)
|
2769
|
+
return actionData.formId === formId ? actionData : null;
|
2770
|
+
if (!subaction && !actionData.subaction || actionData.subaction === subaction)
|
2771
|
+
return actionData;
|
2772
|
+
return null;
|
2773
|
+
}
|
2774
|
+
const useFieldErrorsForForm = (context) => {
|
2775
|
+
const response = useErrorResponseForForm(context);
|
2776
|
+
const hydrated = useFormAtomValue(isHydratedAtom(context.formId));
|
2777
|
+
return hydratable.from(response == null ? void 0 : response.fieldErrors, hydrated);
|
2778
|
+
};
|
2779
|
+
const useDefaultValuesFromLoader = ({
|
2780
|
+
formId
|
2781
|
+
}) => {
|
2782
|
+
const matches = useMatches();
|
2783
|
+
if (typeof formId === "string") {
|
2784
|
+
const dataKey = formDefaultValuesKey(formId);
|
2785
|
+
const match = matches.reverse().find((match2) => match2.data && dataKey in match2.data);
|
2786
|
+
return match == null ? void 0 : match.data[dataKey];
|
2787
|
+
}
|
2788
|
+
return null;
|
2789
|
+
};
|
2790
|
+
const useDefaultValuesForForm = (context) => {
|
2791
|
+
const { formId, defaultValuesProp } = context;
|
2792
|
+
const hydrated = useFormAtomValue(isHydratedAtom(formId));
|
2793
|
+
const errorResponse = useErrorResponseForForm(context);
|
2794
|
+
const defaultValuesFromLoader = useDefaultValuesFromLoader(context);
|
2795
|
+
if (hydrated)
|
2796
|
+
return hydratable.hydratedData();
|
2797
|
+
if (errorResponse == null ? void 0 : errorResponse.repopulateFields) {
|
2798
|
+
invariant(typeof errorResponse.repopulateFields === "object");
|
2799
|
+
return hydratable.serverData(errorResponse.repopulateFields);
|
2800
|
+
}
|
2801
|
+
if (defaultValuesProp)
|
2802
|
+
return hydratable.serverData(defaultValuesProp);
|
2803
|
+
return hydratable.serverData(defaultValuesFromLoader);
|
2804
|
+
};
|
2805
|
+
const useHasActiveFormSubmit = ({
|
2806
|
+
fetcher
|
2807
|
+
}) => {
|
2808
|
+
const transition = useTransition();
|
2809
|
+
const hasActiveSubmission = fetcher ? fetcher.state === "submitting" : !!transition.submission;
|
2810
|
+
return hasActiveSubmission;
|
2811
|
+
};
|
2812
|
+
const useFieldTouched = (field, { formId }) => useFormAtom(fieldTouchedAtom({ formId, field }));
|
2813
|
+
const useFieldError = (name, context) => {
|
2814
|
+
const fieldErrors = useFieldErrorsForForm(context);
|
2815
|
+
const [state, set2] = useFormAtom(fieldErrorAtom({ formId: context.formId, field: name }));
|
2816
|
+
return [
|
2817
|
+
fieldErrors.map((fieldErrors2) => fieldErrors2 == null ? void 0 : fieldErrors2[name]).hydrateTo(state),
|
2818
|
+
set2
|
2819
|
+
];
|
2820
|
+
};
|
2821
|
+
const useFieldDefaultValue = (name, context) => {
|
2822
|
+
const defaultValues = useDefaultValuesForForm(context);
|
2823
|
+
const { defaultValues: state } = useFormAtomValue(formPropsAtom(context.formId));
|
2824
|
+
return defaultValues.map((val) => get_1(val, name)).hydrateTo(get_1(state, name));
|
2825
|
+
};
|
2826
|
+
const useClearError = ({ formId }) => {
|
2827
|
+
const updateError = useFormUpdateAtom(setFieldErrorAtom(formId));
|
2828
|
+
return useCallback((name) => updateError({ field: name, error: void 0 }), [updateError]);
|
2829
|
+
};
|
2830
|
+
const useSetTouched = ({ formId }) => {
|
2831
|
+
const setTouched = useFormUpdateAtom(setTouchedAtom(formId));
|
2832
|
+
return useCallback((name, touched) => setTouched({ field: name, touched }), [setTouched]);
|
2833
|
+
};
|
2834
|
+
const controlledFieldsAtom = formAtomFamily({});
|
2835
|
+
const refCountAtom = fieldAtomFamily(() => atom(0));
|
2836
|
+
const fieldValueAtom = fieldAtomFamily(() => atom(void 0));
|
2837
|
+
const fieldValueHydratedAtom = fieldAtomFamily(() => atom(false));
|
2838
|
+
const valueUpdatePromiseAtom = fieldAtomFamily(() => atom(void 0));
|
2839
|
+
const resolveValueUpdateAtom = fieldAtomFamily(() => atom(void 0));
|
2840
|
+
const registerAtom = atom(null, (get2, set2, { formId, field }) => {
|
2841
|
+
set2(refCountAtom({ formId, field }), (prev) => prev + 1);
|
2842
|
+
const newRefCount = get2(refCountAtom({ formId, field }));
|
2843
|
+
if (newRefCount === 1) {
|
2844
|
+
set2(controlledFieldsAtom(formId), (prev) => __spreadProps(__spreadValues({}, prev), {
|
2845
|
+
[field]: fieldValueAtom({ formId, field })
|
2846
|
+
}));
|
2847
|
+
}
|
2848
|
+
});
|
2849
|
+
const unregisterAtom = atom(null, (get2, set2, { formId, field }) => {
|
2850
|
+
set2(refCountAtom({ formId, field }), (prev) => prev - 1);
|
2851
|
+
const newRefCount = get2(refCountAtom({ formId, field }));
|
2852
|
+
if (newRefCount === 0) {
|
2853
|
+
set2(controlledFieldsAtom(formId), (prev) => omit_1(prev, field));
|
2854
|
+
fieldValueAtom.remove({ formId, field });
|
2855
|
+
resolveValueUpdateAtom.remove({ formId, field });
|
2856
|
+
fieldValueHydratedAtom.remove({ formId, field });
|
2857
|
+
}
|
2858
|
+
});
|
2859
|
+
const setControlledFieldValueAtom = atom(null, (_get, set2, {
|
2860
|
+
formId,
|
2861
|
+
field,
|
2862
|
+
value
|
2863
|
+
}) => {
|
2864
|
+
set2(fieldValueAtom({ formId, field }), value);
|
2865
|
+
const resolveAtom = resolveValueUpdateAtom({ formId, field });
|
2866
|
+
const promiseAtom = valueUpdatePromiseAtom({ formId, field });
|
2867
|
+
const promise = new Promise((resolve) => set2(resolveAtom, () => {
|
2868
|
+
resolve();
|
2869
|
+
set2(resolveAtom, void 0);
|
2870
|
+
set2(promiseAtom, void 0);
|
2871
|
+
}));
|
2872
|
+
set2(promiseAtom, promise);
|
2873
|
+
});
|
2874
|
+
const useControlledFieldValue = (context, field) => {
|
2875
|
+
const fieldAtom = fieldValueAtom({ formId: context.formId, field });
|
2876
|
+
const [value, setValue] = useFormAtom(fieldAtom);
|
2877
|
+
const defaultValue = useFieldDefaultValue(field, context);
|
2878
|
+
const isHydrated = useFormAtomValue(isHydratedAtom(context.formId));
|
2879
|
+
const [isFieldHydrated, setIsFieldHydrated] = useFormAtom(fieldValueHydratedAtom({ formId: context.formId, field }));
|
2880
|
+
useEffect(() => {
|
2881
|
+
if (isHydrated && !isFieldHydrated) {
|
2882
|
+
setValue(defaultValue);
|
2883
|
+
setIsFieldHydrated(true);
|
2884
|
+
}
|
2885
|
+
}, [
|
2886
|
+
defaultValue,
|
2887
|
+
field,
|
2888
|
+
context.formId,
|
2889
|
+
isFieldHydrated,
|
2890
|
+
isHydrated,
|
2891
|
+
setIsFieldHydrated,
|
2892
|
+
setValue
|
2893
|
+
]);
|
2894
|
+
return isFieldHydrated ? value : defaultValue;
|
2895
|
+
};
|
2896
|
+
const useControllableValue = (context, field) => {
|
2897
|
+
const resolveUpdate = useFormAtomValue(resolveValueUpdateAtom({ formId: context.formId, field }));
|
2898
|
+
useEffect(() => {
|
2899
|
+
resolveUpdate == null ? void 0 : resolveUpdate();
|
2900
|
+
}, [resolveUpdate]);
|
2901
|
+
const register = useFormUpdateAtom(registerAtom);
|
2902
|
+
const unregister = useFormUpdateAtom(unregisterAtom);
|
2903
|
+
useEffect(() => {
|
2904
|
+
register({ formId: context.formId, field });
|
2905
|
+
return () => unregister({ formId: context.formId, field });
|
2906
|
+
}, [context.formId, field, register, unregister]);
|
2907
|
+
const setControlledFieldValue = useFormUpdateAtom(setControlledFieldValueAtom);
|
2908
|
+
const setValue = useCallback((value2) => setControlledFieldValue({ formId: context.formId, field, value: value2 }), [field, context.formId, setControlledFieldValue]);
|
2909
|
+
const value = useControlledFieldValue(context, field);
|
2910
|
+
return [value, setValue];
|
2911
|
+
};
|
2912
|
+
const useUpdateControllableValue = (formId) => {
|
2913
|
+
const setControlledFieldValue = useFormUpdateAtom(setControlledFieldValueAtom);
|
2914
|
+
return useCallback((field, value) => setControlledFieldValue({ formId, field, value }), [formId, setControlledFieldValue]);
|
2915
|
+
};
|
2916
|
+
const useAwaitValue = (formId) => {
|
2917
|
+
return useAtomCallback(useCallback(async (get2, _set, field) => {
|
2918
|
+
await get2(valueUpdatePromiseAtom({ formId, field }));
|
2919
|
+
}, [formId]));
|
2920
|
+
};
|
2921
|
+
const useIsSubmitting = (formId) => {
|
2922
|
+
const formContext = useInternalFormContext(formId, "useIsSubmitting");
|
2923
|
+
return useFormAtomValue(isSubmittingAtom(formContext.formId));
|
2924
|
+
};
|
2925
|
+
const useIsValid = (formId) => {
|
2926
|
+
const formContext = useInternalFormContext(formId, "useIsValid");
|
2927
|
+
return useFormAtomValue(isValidAtom(formContext.formId));
|
2928
|
+
};
|
2929
|
+
const useField = (name, options) => {
|
2930
|
+
const { formId: providedFormId, handleReceiveFocus } = options != null ? options : {};
|
2931
|
+
const formContext = useInternalFormContext(providedFormId, "useField");
|
2932
|
+
const defaultValue = useFieldDefaultValue(name, formContext);
|
2933
|
+
const [touched, setTouched] = useFieldTouched(name, formContext);
|
2934
|
+
const [error, setError] = useFieldError(name, formContext);
|
2935
|
+
const hasBeenSubmitted = useFormAtomValue(hasBeenSubmittedAtom(formContext.formId));
|
2936
|
+
const { validateField, registerReceiveFocus } = useFormAtomValue(formPropsAtom(formContext.formId));
|
2937
|
+
useEffect(() => {
|
2938
|
+
if (handleReceiveFocus)
|
2939
|
+
return registerReceiveFocus(name, handleReceiveFocus);
|
2940
|
+
}, [handleReceiveFocus, name, registerReceiveFocus]);
|
2941
|
+
const field = useMemo(() => {
|
2942
|
+
const helpers = {
|
2943
|
+
error,
|
2944
|
+
clearError: () => setError(void 0),
|
2945
|
+
validate: () => {
|
2946
|
+
validateField(name);
|
2947
|
+
},
|
2948
|
+
defaultValue,
|
2949
|
+
touched,
|
2950
|
+
setTouched
|
2951
|
+
};
|
2952
|
+
const getInputProps = createGetInputProps(__spreadProps(__spreadValues({}, helpers), {
|
2953
|
+
name,
|
2954
|
+
hasBeenSubmitted,
|
2955
|
+
validationBehavior: options == null ? void 0 : options.validationBehavior
|
2956
|
+
}));
|
2957
|
+
return __spreadProps(__spreadValues({}, helpers), {
|
2958
|
+
getInputProps
|
2959
|
+
});
|
2960
|
+
}, [
|
2961
|
+
error,
|
2962
|
+
defaultValue,
|
2963
|
+
touched,
|
2964
|
+
setTouched,
|
2965
|
+
name,
|
2966
|
+
hasBeenSubmitted,
|
2967
|
+
options == null ? void 0 : options.validationBehavior,
|
2968
|
+
setError,
|
2969
|
+
validateField
|
2970
|
+
]);
|
2971
|
+
return field;
|
2972
|
+
};
|
2973
|
+
const useControlField = (name, formId) => {
|
2974
|
+
const context = useInternalFormContext(formId, "useControlField");
|
2975
|
+
const [value, setValue] = useControllableValue(context, name);
|
2976
|
+
return [value, setValue];
|
2977
|
+
};
|
2978
|
+
const useUpdateControlledField = (formId) => {
|
2979
|
+
const context = useInternalFormContext(formId, "useControlField");
|
2980
|
+
return useUpdateControllableValue(context.formId);
|
2981
|
+
};
|
2982
|
+
function validationError(error, repopulateFields, init) {
|
2983
|
+
return json({
|
2984
|
+
fieldErrors: error.fieldErrors,
|
2985
|
+
subaction: error.subaction,
|
2986
|
+
repopulateFields,
|
2987
|
+
formId: error.formId
|
2988
|
+
}, __spreadValues({ status: 422 }, init));
|
2989
|
+
}
|
2990
|
+
const setFormDefaults = (formId, defaultValues) => ({
|
2991
|
+
[formDefaultValuesKey(formId)]: defaultValues
|
2992
|
+
});
|
2993
|
+
function baseFindIndex$1(array, predicate, fromIndex, fromRight) {
|
2994
|
+
var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
|
2995
|
+
while (fromRight ? index-- : ++index < length) {
|
2996
|
+
if (predicate(array[index], index, array)) {
|
2997
|
+
return index;
|
2998
|
+
}
|
2999
|
+
}
|
3000
|
+
return -1;
|
3001
|
+
}
|
3002
|
+
var _baseFindIndex = baseFindIndex$1;
|
3003
|
+
function baseIsNaN$1(value) {
|
3004
|
+
return value !== value;
|
3005
|
+
}
|
3006
|
+
var _baseIsNaN = baseIsNaN$1;
|
3007
|
+
function strictIndexOf$1(array, value, fromIndex) {
|
3008
|
+
var index = fromIndex - 1, length = array.length;
|
3009
|
+
while (++index < length) {
|
3010
|
+
if (array[index] === value) {
|
3011
|
+
return index;
|
3012
|
+
}
|
3013
|
+
}
|
3014
|
+
return -1;
|
3015
|
+
}
|
3016
|
+
var _strictIndexOf = strictIndexOf$1;
|
3017
|
+
var baseFindIndex = _baseFindIndex, baseIsNaN = _baseIsNaN, strictIndexOf = _strictIndexOf;
|
3018
|
+
function baseIndexOf$1(array, value, fromIndex) {
|
3019
|
+
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
|
3020
|
+
}
|
3021
|
+
var _baseIndexOf = baseIndexOf$1;
|
3022
|
+
var baseIndexOf = _baseIndexOf;
|
3023
|
+
function arrayIncludes$1(array, value) {
|
3024
|
+
var length = array == null ? 0 : array.length;
|
3025
|
+
return !!length && baseIndexOf(array, value, 0) > -1;
|
3026
|
+
}
|
3027
|
+
var _arrayIncludes = arrayIncludes$1;
|
3028
|
+
function arrayIncludesWith$1(array, value, comparator) {
|
3029
|
+
var index = -1, length = array == null ? 0 : array.length;
|
3030
|
+
while (++index < length) {
|
3031
|
+
if (comparator(value, array[index])) {
|
3032
|
+
return true;
|
3033
|
+
}
|
3034
|
+
}
|
3035
|
+
return false;
|
3036
|
+
}
|
3037
|
+
var _arrayIncludesWith = arrayIncludesWith$1;
|
3038
|
+
function noop$1() {
|
3039
|
+
}
|
3040
|
+
var noop_1 = noop$1;
|
3041
|
+
var Set$1 = _Set, noop = noop_1, setToArray$1 = _setToArray;
|
3042
|
+
var INFINITY = 1 / 0;
|
3043
|
+
var createSet$1 = !(Set$1 && 1 / setToArray$1(new Set$1([, -0]))[1] == INFINITY) ? noop : function(values) {
|
3044
|
+
return new Set$1(values);
|
3045
|
+
};
|
3046
|
+
var _createSet = createSet$1;
|
3047
|
+
var SetCache = _SetCache, arrayIncludes = _arrayIncludes, arrayIncludesWith = _arrayIncludesWith, cacheHas = _cacheHas, createSet = _createSet, setToArray = _setToArray;
|
3048
|
+
var LARGE_ARRAY_SIZE = 200;
|
3049
|
+
function baseUniq$1(array, iteratee, comparator) {
|
3050
|
+
var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
|
3051
|
+
if (comparator) {
|
3052
|
+
isCommon = false;
|
3053
|
+
includes = arrayIncludesWith;
|
3054
|
+
} else if (length >= LARGE_ARRAY_SIZE) {
|
3055
|
+
var set2 = iteratee ? null : createSet(array);
|
3056
|
+
if (set2) {
|
3057
|
+
return setToArray(set2);
|
3058
|
+
}
|
3059
|
+
isCommon = false;
|
3060
|
+
includes = cacheHas;
|
3061
|
+
seen = new SetCache();
|
3062
|
+
} else {
|
3063
|
+
seen = iteratee ? [] : result;
|
3064
|
+
}
|
3065
|
+
outer:
|
3066
|
+
while (++index < length) {
|
3067
|
+
var value = array[index], computed = iteratee ? iteratee(value) : value;
|
3068
|
+
value = comparator || value !== 0 ? value : 0;
|
3069
|
+
if (isCommon && computed === computed) {
|
3070
|
+
var seenIndex = seen.length;
|
3071
|
+
while (seenIndex--) {
|
3072
|
+
if (seen[seenIndex] === computed) {
|
3073
|
+
continue outer;
|
3074
|
+
}
|
3075
|
+
}
|
3076
|
+
if (iteratee) {
|
3077
|
+
seen.push(computed);
|
3078
|
+
}
|
3079
|
+
result.push(value);
|
3080
|
+
} else if (!includes(seen, computed, comparator)) {
|
3081
|
+
if (seen !== result) {
|
3082
|
+
seen.push(computed);
|
3083
|
+
}
|
3084
|
+
result.push(value);
|
3085
|
+
}
|
3086
|
+
}
|
3087
|
+
return result;
|
3088
|
+
}
|
3089
|
+
var _baseUniq = baseUniq$1;
|
3090
|
+
var baseUniq = _baseUniq;
|
3091
|
+
function uniq(array) {
|
3092
|
+
return array && array.length ? baseUniq(array) : [];
|
3093
|
+
}
|
3094
|
+
var uniq_1 = uniq;
|
3095
|
+
class MultiValueMap {
|
3096
|
+
constructor() {
|
3097
|
+
this.dict = /* @__PURE__ */ new Map();
|
3098
|
+
this.add = (key, value) => {
|
3099
|
+
if (this.dict.has(key)) {
|
3100
|
+
this.dict.get(key).push(value);
|
3101
|
+
} else {
|
3102
|
+
this.dict.set(key, [value]);
|
3103
|
+
}
|
3104
|
+
};
|
3105
|
+
this.delete = (key) => {
|
3106
|
+
this.dict.delete(key);
|
3107
|
+
};
|
3108
|
+
this.remove = (key, value) => {
|
3109
|
+
if (!this.dict.has(key))
|
3110
|
+
return;
|
3111
|
+
const array = this.dict.get(key);
|
3112
|
+
const index = array.indexOf(value);
|
3113
|
+
if (index !== -1)
|
3114
|
+
array.splice(index, 1);
|
3115
|
+
if (array.length === 0)
|
3116
|
+
this.dict.delete(key);
|
3117
|
+
};
|
3118
|
+
this.getAll = (key) => {
|
3119
|
+
var _a;
|
3120
|
+
return (_a = this.dict.get(key)) != null ? _a : [];
|
3121
|
+
};
|
3122
|
+
this.entries = () => this.dict.entries();
|
3123
|
+
this.values = () => this.dict.values();
|
3124
|
+
this.has = (key) => this.dict.has(key);
|
3125
|
+
}
|
3126
|
+
}
|
3127
|
+
const useMultiValueMap = () => {
|
3128
|
+
const ref = useRef(null);
|
3129
|
+
return useCallback(() => {
|
3130
|
+
if (ref.current)
|
3131
|
+
return ref.current;
|
3132
|
+
ref.current = new MultiValueMap();
|
3133
|
+
return ref.current;
|
3134
|
+
}, []);
|
3135
|
+
};
|
3136
|
+
const resetAtom = atomFamily((formId) => atom(null, (get2, set2) => {
|
3137
|
+
set2(fieldErrorsAtom(formId), {});
|
3138
|
+
set2(touchedFieldsAtom(formId), {});
|
3139
|
+
set2(hasBeenSubmittedAtom(formId), false);
|
3140
|
+
const { defaultValues } = get2(formPropsAtom(formId));
|
3141
|
+
const controlledFields = get2(controlledFieldsAtom(formId));
|
3142
|
+
Object.entries(controlledFields).forEach(([name, atom2]) => set2(atom2, get_1(defaultValues, name)));
|
3143
|
+
}));
|
3144
|
+
function useSubmitComplete(isSubmitting, callback) {
|
3145
|
+
const isPending = useRef(false);
|
3146
|
+
useEffect(() => {
|
3147
|
+
if (isSubmitting) {
|
3148
|
+
isPending.current = true;
|
3149
|
+
}
|
3150
|
+
if (!isSubmitting && isPending.current) {
|
3151
|
+
isPending.current = false;
|
3152
|
+
callback();
|
3153
|
+
}
|
3154
|
+
});
|
3155
|
+
}
|
3156
|
+
const mergeRefs = (refs) => {
|
3157
|
+
return (value) => {
|
3158
|
+
refs.filter(Boolean).forEach((ref) => {
|
3159
|
+
if (typeof ref === "function") {
|
3160
|
+
ref(value);
|
3161
|
+
} else if (ref != null) {
|
3162
|
+
ref.current = value;
|
3163
|
+
}
|
3164
|
+
});
|
3165
|
+
};
|
3166
|
+
};
|
3167
|
+
const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
3168
|
+
const useDeepEqualsMemo = (item) => {
|
3169
|
+
const ref = useRef(item);
|
3170
|
+
const areEqual = ref.current === item || isEqual_1(ref.current, item);
|
3171
|
+
useEffect(() => {
|
3172
|
+
if (!areEqual) {
|
3173
|
+
ref.current = item;
|
3174
|
+
}
|
3175
|
+
});
|
3176
|
+
return areEqual ? ref.current : item;
|
3177
|
+
};
|
3178
|
+
const getDataFromForm = (el) => new FormData(el);
|
3179
|
+
function nonNull(value) {
|
3180
|
+
return value !== null;
|
3181
|
+
}
|
3182
|
+
const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) => {
|
3183
|
+
var _a;
|
3184
|
+
const namesInOrder = [...formElement.elements].map((el) => {
|
3185
|
+
const input = el instanceof RadioNodeList ? el[0] : el;
|
3186
|
+
if (input instanceof HTMLInputElement)
|
3187
|
+
return input.name;
|
3188
|
+
return null;
|
3189
|
+
}).filter(nonNull).filter((name) => name in fieldErrors);
|
3190
|
+
const uniqueNamesInOrder = uniq_1(namesInOrder);
|
3191
|
+
for (const fieldName of uniqueNamesInOrder) {
|
3192
|
+
if (customFocusHandlers.has(fieldName)) {
|
3193
|
+
customFocusHandlers.getAll(fieldName).forEach((handler) => {
|
3194
|
+
handler();
|
3195
|
+
});
|
3196
|
+
break;
|
3197
|
+
}
|
3198
|
+
const elem = formElement.elements.namedItem(fieldName);
|
3199
|
+
if (!elem)
|
3200
|
+
continue;
|
3201
|
+
if (elem instanceof RadioNodeList) {
|
3202
|
+
const selectedRadio = (_a = [...elem].filter((item) => item instanceof HTMLInputElement).find((item) => item.value === elem.value)) != null ? _a : elem[0];
|
3203
|
+
if (selectedRadio && selectedRadio instanceof HTMLInputElement) {
|
3204
|
+
selectedRadio.focus();
|
3205
|
+
break;
|
3206
|
+
}
|
3207
|
+
}
|
3208
|
+
if (elem instanceof HTMLInputElement) {
|
3209
|
+
if (elem.type === "hidden") {
|
3210
|
+
continue;
|
3211
|
+
}
|
3212
|
+
elem.focus();
|
3213
|
+
break;
|
3214
|
+
}
|
3215
|
+
}
|
3216
|
+
};
|
3217
|
+
const useFormId = (providedId) => {
|
3218
|
+
const [symbolId] = useState(() => Symbol("remix-validated-form-id"));
|
3219
|
+
return providedId != null ? providedId : symbolId;
|
3220
|
+
};
|
3221
|
+
const FormResetter = ({
|
3222
|
+
resetAfterSubmit,
|
3223
|
+
formRef
|
3224
|
+
}) => {
|
3225
|
+
const isSubmitting = useIsSubmitting();
|
3226
|
+
const isValid = useIsValid();
|
3227
|
+
useSubmitComplete(isSubmitting, () => {
|
3228
|
+
var _a;
|
3229
|
+
if (isValid && resetAfterSubmit) {
|
3230
|
+
(_a = formRef.current) == null ? void 0 : _a.reset();
|
3231
|
+
}
|
3232
|
+
});
|
3233
|
+
return null;
|
3234
|
+
};
|
3235
|
+
function formEventProxy(event) {
|
3236
|
+
let defaultPrevented = false;
|
3237
|
+
return new Proxy(event, {
|
3238
|
+
get: (target, prop) => {
|
3239
|
+
if (prop === "preventDefault") {
|
3240
|
+
return () => {
|
3241
|
+
defaultPrevented = true;
|
3242
|
+
};
|
3243
|
+
}
|
3244
|
+
if (prop === "defaultPrevented") {
|
3245
|
+
return defaultPrevented;
|
3246
|
+
}
|
3247
|
+
return target[prop];
|
3248
|
+
}
|
3249
|
+
});
|
3250
|
+
}
|
3251
|
+
function ValidatedForm(_a) {
|
3252
|
+
var _b = _a, {
|
3253
|
+
validator,
|
3254
|
+
onSubmit,
|
3255
|
+
children,
|
3256
|
+
fetcher,
|
3257
|
+
action,
|
3258
|
+
defaultValues: unMemoizedDefaults,
|
3259
|
+
formRef: formRefProp,
|
3260
|
+
onReset,
|
3261
|
+
subaction,
|
3262
|
+
resetAfterSubmit = false,
|
3263
|
+
disableFocusOnError,
|
3264
|
+
method,
|
3265
|
+
replace,
|
3266
|
+
id
|
3267
|
+
} = _b, rest = __objRest(_b, [
|
3268
|
+
"validator",
|
3269
|
+
"onSubmit",
|
3270
|
+
"children",
|
3271
|
+
"fetcher",
|
3272
|
+
"action",
|
3273
|
+
"defaultValues",
|
3274
|
+
"formRef",
|
3275
|
+
"onReset",
|
3276
|
+
"subaction",
|
3277
|
+
"resetAfterSubmit",
|
3278
|
+
"disableFocusOnError",
|
3279
|
+
"method",
|
3280
|
+
"replace",
|
3281
|
+
"id"
|
3282
|
+
]);
|
3283
|
+
var _a2;
|
3284
|
+
const formId = useFormId(id);
|
3285
|
+
const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);
|
3286
|
+
const contextValue = useMemo(() => ({
|
3287
|
+
formId,
|
3288
|
+
action,
|
3289
|
+
subaction,
|
3290
|
+
defaultValuesProp: providedDefaultValues,
|
3291
|
+
fetcher
|
3292
|
+
}), [action, fetcher, formId, providedDefaultValues, subaction]);
|
3293
|
+
const backendError = useErrorResponseForForm(contextValue);
|
3294
|
+
const backendDefaultValues = useDefaultValuesFromLoader(contextValue);
|
3295
|
+
const hasActiveSubmission = useHasActiveFormSubmit(contextValue);
|
3296
|
+
const formRef = useRef(null);
|
3297
|
+
const Form$1 = (_a2 = fetcher == null ? void 0 : fetcher.Form) != null ? _a2 : Form;
|
3298
|
+
const submit = useSubmit();
|
3299
|
+
const setFieldErrors = useFormUpdateAtom(fieldErrorsAtom(formId));
|
3300
|
+
const setFieldError = useFormUpdateAtom(setFieldErrorAtom(formId));
|
3301
|
+
const reset = useFormUpdateAtom(resetAtom(formId));
|
3302
|
+
const startSubmit = useFormUpdateAtom(startSubmitAtom(formId));
|
3303
|
+
const endSubmit = useFormUpdateAtom(endSubmitAtom(formId));
|
3304
|
+
const syncFormProps = useFormUpdateAtom(formPropsAtom(formId));
|
3305
|
+
const setHydrated = useFormUpdateAtom(isHydratedAtom(formId));
|
3306
|
+
const setFormElementInState = useFormUpdateAtom(formElementAtom(formId));
|
3307
|
+
useEffect(() => {
|
3308
|
+
setHydrated(true);
|
3309
|
+
return () => cleanupFormState(formId);
|
3310
|
+
}, [formId, setHydrated]);
|
3311
|
+
const awaitValue = useAwaitValue(formId);
|
3312
|
+
const validateField = useCallback(async (field) => {
|
3313
|
+
invariant(formRef.current);
|
3314
|
+
await awaitValue(field);
|
3315
|
+
const { error } = await validator.validateField(getDataFromForm(formRef.current), field);
|
3316
|
+
if (error) {
|
3317
|
+
setFieldError({ field, error });
|
3318
|
+
return error;
|
3319
|
+
} else {
|
3320
|
+
setFieldError({ field, error: void 0 });
|
3321
|
+
return null;
|
3322
|
+
}
|
3323
|
+
}, [awaitValue, setFieldError, validator]);
|
3324
|
+
const customFocusHandlers = useMultiValueMap();
|
3325
|
+
const registerReceiveFocus = useCallback((fieldName, handler) => {
|
3326
|
+
customFocusHandlers().add(fieldName, handler);
|
3327
|
+
return () => {
|
3328
|
+
customFocusHandlers().remove(fieldName, handler);
|
3329
|
+
};
|
3330
|
+
}, [customFocusHandlers]);
|
3331
|
+
useIsomorphicLayoutEffect(() => {
|
3332
|
+
var _a3;
|
3333
|
+
syncFormProps({
|
3334
|
+
action,
|
3335
|
+
defaultValues: (_a3 = providedDefaultValues != null ? providedDefaultValues : backendDefaultValues) != null ? _a3 : {},
|
3336
|
+
subaction,
|
3337
|
+
validateField,
|
3338
|
+
registerReceiveFocus
|
3339
|
+
});
|
3340
|
+
}, [
|
3341
|
+
action,
|
3342
|
+
providedDefaultValues,
|
3343
|
+
registerReceiveFocus,
|
3344
|
+
subaction,
|
3345
|
+
syncFormProps,
|
3346
|
+
validateField,
|
3347
|
+
backendDefaultValues
|
3348
|
+
]);
|
3349
|
+
useEffect(() => {
|
3350
|
+
var _a3;
|
3351
|
+
setFieldErrors((_a3 = backendError == null ? void 0 : backendError.fieldErrors) != null ? _a3 : {});
|
3352
|
+
}, [backendError == null ? void 0 : backendError.fieldErrors, setFieldErrors, setFieldError]);
|
3353
|
+
useSubmitComplete(hasActiveSubmission, () => {
|
3354
|
+
endSubmit();
|
3355
|
+
});
|
3356
|
+
let clickedButtonRef = React.useRef();
|
3357
|
+
useEffect(() => {
|
3358
|
+
let form = formRef.current;
|
3359
|
+
if (!form)
|
3360
|
+
return;
|
3361
|
+
function handleClick(event) {
|
3362
|
+
if (!(event.target instanceof HTMLElement))
|
3363
|
+
return;
|
3364
|
+
let submitButton = event.target.closest("button,input[type=submit]");
|
3365
|
+
if (submitButton && submitButton.form === form && submitButton.type === "submit") {
|
3366
|
+
clickedButtonRef.current = submitButton;
|
3367
|
+
}
|
3368
|
+
}
|
3369
|
+
window.addEventListener("click", handleClick, { capture: true });
|
3370
|
+
return () => {
|
3371
|
+
window.removeEventListener("click", handleClick, { capture: true });
|
3372
|
+
};
|
3373
|
+
}, []);
|
3374
|
+
const handleSubmit = async (e) => {
|
3375
|
+
startSubmit();
|
3376
|
+
const result = await validator.validate(getDataFromForm(e.currentTarget));
|
3377
|
+
if (result.error) {
|
3378
|
+
endSubmit();
|
3379
|
+
setFieldErrors(result.error.fieldErrors);
|
3380
|
+
if (!disableFocusOnError) {
|
3381
|
+
focusFirstInvalidInput(result.error.fieldErrors, customFocusHandlers(), formRef.current);
|
3382
|
+
}
|
3383
|
+
} else {
|
3384
|
+
const eventProxy = formEventProxy(e);
|
3385
|
+
await (onSubmit == null ? void 0 : onSubmit(result.data, eventProxy));
|
3386
|
+
if (eventProxy.defaultPrevented) {
|
3387
|
+
endSubmit();
|
3388
|
+
return;
|
3389
|
+
}
|
3390
|
+
if (fetcher)
|
3391
|
+
fetcher.submit(clickedButtonRef.current || formRef.current);
|
3392
|
+
else
|
3393
|
+
submit(clickedButtonRef.current || formRef.current, {
|
3394
|
+
method,
|
3395
|
+
replace
|
3396
|
+
});
|
3397
|
+
clickedButtonRef.current = null;
|
3398
|
+
}
|
3399
|
+
};
|
3400
|
+
return /* @__PURE__ */ React.createElement(Form$1, __spreadProps(__spreadValues({
|
3401
|
+
ref: mergeRefs([formRef, formRefProp, setFormElementInState])
|
3402
|
+
}, rest), {
|
3403
|
+
id,
|
3404
|
+
action,
|
3405
|
+
method,
|
3406
|
+
replace,
|
3407
|
+
onSubmit: (e) => {
|
3408
|
+
e.preventDefault();
|
3409
|
+
handleSubmit(e);
|
3410
|
+
},
|
3411
|
+
onReset: (event) => {
|
3412
|
+
onReset == null ? void 0 : onReset(event);
|
3413
|
+
if (event.defaultPrevented)
|
3414
|
+
return;
|
3415
|
+
reset();
|
3416
|
+
}
|
3417
|
+
}), /* @__PURE__ */ React.createElement(InternalFormContext.Provider, {
|
3418
|
+
value: contextValue
|
3419
|
+
}, /* @__PURE__ */ React.createElement(FormResetter, {
|
3420
|
+
formRef,
|
3421
|
+
resetAfterSubmit
|
3422
|
+
}), subaction && /* @__PURE__ */ React.createElement("input", {
|
3423
|
+
type: "hidden",
|
3424
|
+
value: subaction,
|
3425
|
+
name: "subaction"
|
3426
|
+
}), id && /* @__PURE__ */ React.createElement("input", {
|
3427
|
+
type: "hidden",
|
3428
|
+
value: id,
|
3429
|
+
name: FORM_ID_FIELD
|
3430
|
+
}), children));
|
3431
|
+
}
|
3432
|
+
var baseSet = _baseSet;
|
3433
|
+
function set(object, path, value) {
|
3434
|
+
return object == null ? object : baseSet(object, path, value);
|
3435
|
+
}
|
3436
|
+
var set_1 = set;
|
3437
|
+
const objectFromPathEntries = (entries) => {
|
3438
|
+
const map = new MultiValueMap();
|
3439
|
+
entries.forEach(([key, value]) => map.add(key, value));
|
3440
|
+
return [...map.entries()].reduce((acc, [key, value]) => set_1(acc, key, value.length === 1 ? value[0] : value), {});
|
3441
|
+
};
|
3442
|
+
const preprocessFormData = (data) => {
|
3443
|
+
if ("entries" in data && typeof data.entries === "function")
|
3444
|
+
return objectFromPathEntries([...data.entries()]);
|
3445
|
+
return objectFromPathEntries(Object.entries(data));
|
3446
|
+
};
|
3447
|
+
function createValidator(validator) {
|
3448
|
+
return {
|
3449
|
+
validate: async (value) => {
|
3450
|
+
const data = preprocessFormData(value);
|
3451
|
+
const result = await validator.validate(data);
|
3452
|
+
if (result.error) {
|
3453
|
+
return {
|
3454
|
+
data: void 0,
|
3455
|
+
error: {
|
3456
|
+
fieldErrors: result.error,
|
3457
|
+
subaction: data.subaction,
|
3458
|
+
formId: data[FORM_ID_FIELD]
|
3459
|
+
},
|
3460
|
+
submittedData: data,
|
3461
|
+
formId: data[FORM_ID_FIELD]
|
3462
|
+
};
|
3463
|
+
}
|
3464
|
+
return {
|
3465
|
+
data: result.data,
|
3466
|
+
error: void 0,
|
3467
|
+
submittedData: data,
|
3468
|
+
formId: data[FORM_ID_FIELD]
|
3469
|
+
};
|
3470
|
+
},
|
3471
|
+
validateField: (data, field) => validator.validateField(preprocessFormData(data), field)
|
3472
|
+
};
|
3473
|
+
}
|
3474
|
+
const useFormState = (formId) => {
|
3475
|
+
const formContext = useInternalFormContext(formId, "useIsValid");
|
3476
|
+
const formProps = useFormAtomValue(formPropsAtom(formContext.formId));
|
3477
|
+
const isSubmitting = useFormAtomValue(isSubmittingAtom(formContext.formId));
|
3478
|
+
const hasBeenSubmitted = useFormAtomValue(hasBeenSubmittedAtom(formContext.formId));
|
3479
|
+
const touchedFields = useFormAtomValue(touchedFieldsAtom(formContext.formId));
|
3480
|
+
const isValid = useFormAtomValue(isValidAtom(formContext.formId));
|
3481
|
+
const defaultValuesToUse = useDefaultValuesForForm(formContext);
|
3482
|
+
const hydratedDefaultValues = defaultValuesToUse.hydrateTo(formProps.defaultValues);
|
3483
|
+
const fieldErrorsFromState = useFormAtomValue(fieldErrorsAtom(formContext.formId));
|
3484
|
+
const fieldErrorsToUse = useFieldErrorsForForm(formContext);
|
3485
|
+
const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);
|
3486
|
+
return useMemo(() => __spreadProps(__spreadValues({}, formProps), {
|
3487
|
+
defaultValues: hydratedDefaultValues,
|
3488
|
+
fieldErrors: hydratedFieldErrors != null ? hydratedFieldErrors : {},
|
3489
|
+
hasBeenSubmitted,
|
3490
|
+
isSubmitting,
|
3491
|
+
touchedFields,
|
3492
|
+
isValid
|
3493
|
+
}), [
|
3494
|
+
formProps,
|
3495
|
+
hasBeenSubmitted,
|
3496
|
+
hydratedDefaultValues,
|
3497
|
+
hydratedFieldErrors,
|
3498
|
+
isSubmitting,
|
3499
|
+
isValid,
|
3500
|
+
touchedFields
|
3501
|
+
]);
|
3502
|
+
};
|
3503
|
+
const useFormHelpers = (formId) => {
|
3504
|
+
const formContext = useInternalFormContext(formId, "useFormHelpers");
|
3505
|
+
const setTouched = useSetTouched(formContext);
|
3506
|
+
const { validateField } = useFormAtomValue(formPropsAtom(formContext.formId));
|
3507
|
+
const clearError = useClearError(formContext);
|
3508
|
+
return useMemo(() => ({
|
3509
|
+
setTouched,
|
3510
|
+
validateField,
|
3511
|
+
clearError
|
3512
|
+
}), [clearError, setTouched, validateField]);
|
3513
|
+
};
|
3514
|
+
const useFormContext = (formId) => {
|
3515
|
+
const context = useInternalFormContext(formId, "useFormContext");
|
3516
|
+
const state = useFormState(formId);
|
3517
|
+
const {
|
3518
|
+
clearError: internalClearError,
|
3519
|
+
setTouched,
|
3520
|
+
validateField
|
3521
|
+
} = useFormHelpers(formId);
|
3522
|
+
const { registerReceiveFocus } = useFormAtomValue(formPropsAtom(context.formId));
|
3523
|
+
const clearError = useCallback((...names) => {
|
3524
|
+
names.forEach((name) => {
|
3525
|
+
internalClearError(name);
|
3526
|
+
});
|
3527
|
+
}, [internalClearError]);
|
3528
|
+
return __spreadProps(__spreadValues({}, state), {
|
3529
|
+
setFieldTouched: setTouched,
|
3530
|
+
validateField,
|
3531
|
+
clearError,
|
3532
|
+
registerReceiveFocus
|
3533
|
+
});
|
3534
|
+
};
|
3535
|
+
export { ValidatedForm, createValidator, setFormDefaults, useControlField, useField, useFormContext, useIsSubmitting, useIsValid, useUpdateControlledField, validationError };
|