@lucas-barake/effect-form-react 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Lucas Barake
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @lucas-barake/effect-form-react
2
+
3
+ React bindings for Effect-powered forms with type-safe validation.
4
+
5
+ See [main documentation](https://github.com/lucas-barake/effect-form) for usage.
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.build = void 0;
7
+ var _jsxRuntime = /*#__PURE__*/require("react/jsx-runtime");
8
+ var _atomReact = /*#__PURE__*/require("@effect-atom/atom-react");
9
+ var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
10
+ var _effectForm = /*#__PURE__*/require("@lucas-barake/effect-form");
11
+ var _path = /*#__PURE__*/require("@lucas-barake/effect-form/internal/path");
12
+ var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
13
+ var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
14
+ var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
15
+ var AST = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/SchemaAST"));
16
+ var _react = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
17
+ var React = _react;
18
+ var _useDebounced = /*#__PURE__*/require("./internal/use-debounced.js");
19
+ function _interopRequireWildcard(e, t) {
20
+ if ("function" == typeof WeakMap) var r = new WeakMap(),
21
+ n = new WeakMap();
22
+ return (_interopRequireWildcard = function (e, t) {
23
+ if (!t && e && e.__esModule) return e;
24
+ var o,
25
+ i,
26
+ f = {
27
+ __proto__: null,
28
+ default: e
29
+ };
30
+ if (null === e || "object" != typeof e && "function" != typeof e) return f;
31
+ if (o = t ? n : r) {
32
+ if (o.has(e)) return o.get(e);
33
+ o.set(e, f);
34
+ }
35
+ for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
36
+ return f;
37
+ })(e, t);
38
+ }
39
+ /**
40
+ * @since 1.0.0
41
+ */
42
+
43
+ const ArrayItemContext = /*#__PURE__*/(0, _react.createContext)(null);
44
+ const AutoSubmitContext = /*#__PURE__*/(0, _react.createContext)(null);
45
+ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
46
+ const FieldComponent = React.memo(() => {
47
+ const arrayCtx = (0, _react.useContext)(ArrayItemContext);
48
+ const autoSubmitOnBlur = (0, _react.useContext)(AutoSubmitContext);
49
+ const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
50
+ const {
51
+ crossFieldErrorAtom,
52
+ touchedAtom,
53
+ valueAtom
54
+ } = React.useMemo(() => getOrCreateFieldAtoms(fieldPath), [fieldPath]);
55
+ const [value, setValue] = (0, _atomReact.useAtom)(valueAtom);
56
+ const [isTouched, setTouched] = (0, _atomReact.useAtom)(touchedAtom);
57
+ const crossFieldError = (0, _atomReact.useAtomValue)(crossFieldErrorAtom);
58
+ const setCrossFieldErrors = (0, _atomReact.useAtomSet)(crossFieldErrorsAtom);
59
+ const submitCount = (0, _atomReact.useAtomValue)(submitCountAtom);
60
+ const validationAtom = React.useMemo(() => getOrCreateValidationAtom(fieldPath, fieldDef.schema), [fieldPath]);
61
+ const validationResult = (0, _atomReact.useAtomValue)(validationAtom);
62
+ const validateImmediate = (0, _atomReact.useAtomSet)(validationAtom);
63
+ const shouldDebounceValidation = parsedMode.validation === "onChange" && parsedMode.debounce !== null && !parsedMode.autoSubmit;
64
+ const validate = (0, _useDebounced.useDebounced)(validateImmediate, shouldDebounceValidation ? parsedMode.debounce : null);
65
+ const prevValueRef = React.useRef(value);
66
+ React.useEffect(() => {
67
+ if (prevValueRef.current === value) {
68
+ return;
69
+ }
70
+ prevValueRef.current = value;
71
+ const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched;
72
+ if (shouldValidate) {
73
+ validate(value);
74
+ }
75
+ }, [value, isTouched, validate]);
76
+ const perFieldError = React.useMemo(() => {
77
+ if (validationResult._tag === "Failure") {
78
+ const parseError = Cause.failureOption(validationResult.cause);
79
+ if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
80
+ return _effectForm.Validation.extractFirstError(parseError.value);
81
+ }
82
+ }
83
+ return Option.none();
84
+ }, [validationResult]);
85
+ const validationError = Option.isSome(perFieldError) ? perFieldError : crossFieldError;
86
+ const onChange = React.useCallback(newValue => {
87
+ setValue(newValue);
88
+ setCrossFieldErrors(prev => {
89
+ if (prev.has(fieldPath)) {
90
+ const next = new Map(prev);
91
+ next.delete(fieldPath);
92
+ return next;
93
+ }
94
+ return prev;
95
+ });
96
+ if (parsedMode.validation === "onChange") {
97
+ validate(newValue);
98
+ }
99
+ }, [fieldPath, setValue, setCrossFieldErrors, validate]);
100
+ const onBlur = React.useCallback(() => {
101
+ setTouched(true);
102
+ if (parsedMode.validation === "onBlur") {
103
+ validate(value);
104
+ }
105
+ autoSubmitOnBlur?.();
106
+ }, [setTouched, validate, value, autoSubmitOnBlur]);
107
+ const dirtyFields = (0, _atomReact.useAtomValue)(dirtyFieldsAtom);
108
+ const isDirty = React.useMemo(() => (0, _path.isPathOrParentDirty)(dirtyFields, fieldPath), [dirtyFields, fieldPath]);
109
+ const isValidating = validationResult.waiting;
110
+ const shouldShowError = isTouched || submitCount > 0;
111
+ return (0, _jsxRuntime.jsx)(Component, {
112
+ value: value,
113
+ onChange: onChange,
114
+ onBlur: onBlur,
115
+ error: shouldShowError ? validationError : Option.none(),
116
+ isTouched: isTouched,
117
+ isValidating: isValidating,
118
+ isDirty: isDirty
119
+ });
120
+ });
121
+ return FieldComponent;
122
+ };
123
+ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
124
+ const isStructSchema = AST.isTypeLiteral(def.itemSchema.ast);
125
+ const ArrayWrapper = ({
126
+ children
127
+ }) => {
128
+ const arrayCtx = (0, _react.useContext)(ArrayItemContext);
129
+ const [formStateOption, setFormState] = (0, _atomReact.useAtom)(stateAtom);
130
+ const formState = Option.getOrThrow(formStateOption);
131
+ const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
132
+ const items = React.useMemo(() => (0, _path.getNestedValue)(formState.values, fieldPath) ?? [], [formState.values, fieldPath]);
133
+ const append = React.useCallback(value => {
134
+ setFormState(prev => {
135
+ if (Option.isNone(prev)) return prev;
136
+ return Option.some(operations.appendArrayItem(prev.value, fieldPath, def.itemSchema, value));
137
+ });
138
+ }, [fieldPath, setFormState]);
139
+ const remove = React.useCallback(index => {
140
+ setFormState(prev => {
141
+ if (Option.isNone(prev)) return prev;
142
+ return Option.some(operations.removeArrayItem(prev.value, fieldPath, index));
143
+ });
144
+ }, [fieldPath, setFormState]);
145
+ const swap = React.useCallback((indexA, indexB) => {
146
+ setFormState(prev => {
147
+ if (Option.isNone(prev)) return prev;
148
+ return Option.some(operations.swapArrayItems(prev.value, fieldPath, indexA, indexB));
149
+ });
150
+ }, [fieldPath, setFormState]);
151
+ const move = React.useCallback((from, to) => {
152
+ setFormState(prev => {
153
+ if (Option.isNone(prev)) return prev;
154
+ return Option.some(operations.moveArrayItem(prev.value, fieldPath, from, to));
155
+ });
156
+ }, [fieldPath, setFormState]);
157
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
158
+ children: children({
159
+ items,
160
+ append,
161
+ remove,
162
+ swap,
163
+ move
164
+ })
165
+ });
166
+ };
167
+ const ItemWrapper = ({
168
+ children,
169
+ index
170
+ }) => {
171
+ const arrayCtx = (0, _react.useContext)(ArrayItemContext);
172
+ const setFormState = (0, _atomReact.useAtomSet)(stateAtom);
173
+ const parentPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
174
+ const itemPath = `${parentPath}[${index}]`;
175
+ const remove = React.useCallback(() => {
176
+ setFormState(prev => {
177
+ if (Option.isNone(prev)) return prev;
178
+ return Option.some(operations.removeArrayItem(prev.value, parentPath, index));
179
+ });
180
+ }, [parentPath, index, setFormState]);
181
+ return (0, _jsxRuntime.jsx)(ArrayItemContext.Provider, {
182
+ value: {
183
+ index,
184
+ parentPath: itemPath
185
+ },
186
+ children: typeof children === "function" ? children({
187
+ remove
188
+ }) : children
189
+ });
190
+ };
191
+ const itemFieldComponents = {};
192
+ if (isStructSchema) {
193
+ const ast = def.itemSchema.ast;
194
+ for (const prop of ast.propertySignatures) {
195
+ const itemKey = prop.name;
196
+ const itemSchema = {
197
+ ast: prop.type
198
+ };
199
+ const itemDef = _effectForm.Form.makeField(itemKey, itemSchema);
200
+ const itemComponent = componentMap[itemKey];
201
+ itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, itemComponent);
202
+ }
203
+ }
204
+ const properties = {
205
+ Item: ItemWrapper,
206
+ ...itemFieldComponents
207
+ };
208
+ return new Proxy(ArrayWrapper, {
209
+ get(target, prop) {
210
+ if (prop in properties) {
211
+ return properties[prop];
212
+ }
213
+ return Reflect.get(target, prop);
214
+ }
215
+ });
216
+ };
217
+ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
218
+ const components = {};
219
+ for (const [key, def] of Object.entries(fields)) {
220
+ if (_effectForm.Form.isArrayFieldDef(def)) {
221
+ const arrayComponentMap = componentMap[key];
222
+ components[key] = makeArrayFieldComponent(key, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
223
+ } else if (_effectForm.Form.isFieldDef(def)) {
224
+ const fieldComponent = componentMap[key];
225
+ components[key] = makeFieldComponent(key, def, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
226
+ }
227
+ }
228
+ return components;
229
+ };
230
+ /**
231
+ * Builds a React form from a FormBuilder.
232
+ *
233
+ * @example
234
+ * ```tsx
235
+ * import { Form } from "@lucas-barake/effect-form"
236
+ * import { FormReact } from "@lucas-barake/effect-form-react"
237
+ * import * as Atom from "@effect-atom/atom/Atom"
238
+ * import * as Schema from "effect/Schema"
239
+ * import * as Effect from "effect/Effect"
240
+ * import * as Layer from "effect/Layer"
241
+ *
242
+ * const runtime = Atom.runtime(Layer.empty)
243
+ *
244
+ * const loginForm = Form.empty
245
+ * .addField("email", Schema.String)
246
+ * .addField("password", Schema.String)
247
+ *
248
+ * const form = FormReact.build(loginForm, {
249
+ * runtime,
250
+ * fields: { email: TextInput, password: PasswordInput },
251
+ * })
252
+ *
253
+ * function LoginDialog({ onClose }) {
254
+ * const handleSubmit = form.submit((values) =>
255
+ * Effect.gen(function* () {
256
+ * yield* saveUser(values)
257
+ * onClose()
258
+ * })
259
+ * )
260
+ *
261
+ * return (
262
+ * <form.Form defaultValues={{ email: "", password: "" }} onSubmit={handleSubmit}>
263
+ * <form.email />
264
+ * <form.password />
265
+ * <form.Subscribe>
266
+ * {({ isDirty, submit }) => (
267
+ * <button onClick={submit} disabled={!isDirty}>Login</button>
268
+ * )}
269
+ * </form.Subscribe>
270
+ * </form.Form>
271
+ * )
272
+ * }
273
+ * ```
274
+ *
275
+ * @since 1.0.0
276
+ * @category Constructors
277
+ */
278
+ const build = (self, options) => {
279
+ const {
280
+ fields: components,
281
+ mode,
282
+ runtime
283
+ } = options;
284
+ const parsedMode = _effectForm.Mode.parse(mode);
285
+ const {
286
+ fields
287
+ } = self;
288
+ const formAtoms = _effectForm.FormAtoms.make({
289
+ formBuilder: self,
290
+ runtime
291
+ });
292
+ const {
293
+ combinedSchema,
294
+ crossFieldErrorsAtom,
295
+ decodeAndSubmit,
296
+ dirtyFieldsAtom,
297
+ fieldRefs,
298
+ getOrCreateFieldAtoms,
299
+ getOrCreateValidationAtom,
300
+ isDirtyAtom,
301
+ onSubmitAtom,
302
+ operations,
303
+ resetValidationAtoms,
304
+ stateAtom,
305
+ submitCountAtom
306
+ } = formAtoms;
307
+ const FormComponent = ({
308
+ children,
309
+ defaultValues,
310
+ onSubmit
311
+ }) => {
312
+ const registry = React.useContext(_atomReact.RegistryContext);
313
+ const state = (0, _atomReact.useAtomValue)(stateAtom);
314
+ const setFormState = (0, _atomReact.useAtomSet)(stateAtom);
315
+ const setOnSubmit = (0, _atomReact.useAtomSet)(onSubmitAtom);
316
+ const callDecodeAndSubmit = (0, _atomReact.useAtomSet)(decodeAndSubmit);
317
+ React.useEffect(() => {
318
+ setOnSubmit(onSubmit);
319
+ }, [onSubmit, setOnSubmit]);
320
+ React.useEffect(() => {
321
+ setFormState(Option.some(operations.createInitialState(defaultValues)));
322
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only
323
+ }, []);
324
+ const debouncedAutoSubmit = (0, _useDebounced.useDebounced)(() => {
325
+ const stateOption = registry.get(stateAtom);
326
+ if (Option.isNone(stateOption)) return;
327
+ callDecodeAndSubmit(stateOption.value.values);
328
+ }, parsedMode.autoSubmit && parsedMode.validation === "onChange" ? parsedMode.debounce : null);
329
+ (0, _atomReact.useAtomSubscribe)(stateAtom, React.useCallback(() => {
330
+ if (parsedMode.autoSubmit && parsedMode.validation === "onChange") {
331
+ debouncedAutoSubmit();
332
+ }
333
+ }, [debouncedAutoSubmit]), {
334
+ immediate: false
335
+ });
336
+ const onBlurAutoSubmit = React.useCallback(() => {
337
+ if (parsedMode.autoSubmit && parsedMode.validation === "onBlur") {
338
+ const stateOption = registry.get(stateAtom);
339
+ if (Option.isNone(stateOption)) return;
340
+ callDecodeAndSubmit(stateOption.value.values);
341
+ }
342
+ }, [registry, callDecodeAndSubmit]);
343
+ if (Option.isNone(state)) return null;
344
+ return (0, _jsxRuntime.jsx)(AutoSubmitContext.Provider, {
345
+ value: onBlurAutoSubmit,
346
+ children: (0, _jsxRuntime.jsx)("form", {
347
+ onSubmit: e => {
348
+ e.preventDefault();
349
+ e.stopPropagation();
350
+ },
351
+ children: children
352
+ })
353
+ });
354
+ };
355
+ const useFormHook = () => {
356
+ const registry = React.useContext(_atomReact.RegistryContext);
357
+ const formValues = Option.getOrThrow((0, _atomReact.useAtomValue)(stateAtom)).values;
358
+ const setFormState = (0, _atomReact.useAtomSet)(stateAtom);
359
+ const setCrossFieldErrors = (0, _atomReact.useAtomSet)(crossFieldErrorsAtom);
360
+ const [decodeAndSubmitResult, callDecodeAndSubmit] = (0, _atomReact.useAtom)(decodeAndSubmit);
361
+ const isDirty = (0, _atomReact.useAtomValue)(isDirtyAtom);
362
+ React.useEffect(() => {
363
+ if (decodeAndSubmitResult._tag === "Failure") {
364
+ const parseError = Cause.failureOption(decodeAndSubmitResult.cause);
365
+ if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
366
+ const issues = ParseResult.ArrayFormatter.formatErrorSync(parseError.value);
367
+ const fieldErrors = new Map();
368
+ for (const issue of issues) {
369
+ if (issue.path.length > 0) {
370
+ const fieldPath = (0, _path.schemaPathToFieldPath)(issue.path);
371
+ if (!fieldErrors.has(fieldPath)) {
372
+ fieldErrors.set(fieldPath, issue.message);
373
+ }
374
+ }
375
+ }
376
+ if (fieldErrors.size > 0) {
377
+ setCrossFieldErrors(fieldErrors);
378
+ }
379
+ }
380
+ }
381
+ }, [decodeAndSubmitResult, setCrossFieldErrors]);
382
+ const submit = React.useCallback(() => {
383
+ const stateOption = registry.get(stateAtom);
384
+ if (Option.isNone(stateOption)) return;
385
+ setCrossFieldErrors(new Map());
386
+ setFormState(prev => {
387
+ if (Option.isNone(prev)) return prev;
388
+ return Option.some(operations.createSubmitState(prev.value));
389
+ });
390
+ callDecodeAndSubmit(stateOption.value.values);
391
+ }, [setFormState, callDecodeAndSubmit, setCrossFieldErrors, registry]);
392
+ const reset = React.useCallback(() => {
393
+ setFormState(prev => {
394
+ if (Option.isNone(prev)) return prev;
395
+ return Option.some(operations.createResetState(prev.value));
396
+ });
397
+ setCrossFieldErrors(new Map());
398
+ resetValidationAtoms(registry);
399
+ callDecodeAndSubmit(Atom.Reset);
400
+ }, [setFormState, setCrossFieldErrors, callDecodeAndSubmit, registry]);
401
+ const setValue = React.useCallback((field, update) => {
402
+ const path = field.key;
403
+ setFormState(prev => {
404
+ if (Option.isNone(prev)) return prev;
405
+ const state = prev.value;
406
+ const currentValue = (0, _path.getNestedValue)(state.values, path);
407
+ const newValue = typeof update === "function" ? update(currentValue) : update;
408
+ return Option.some(operations.setFieldValue(state, path, newValue));
409
+ });
410
+ setCrossFieldErrors(prev => {
411
+ let changed = false;
412
+ const next = new Map(prev);
413
+ for (const errorPath of prev.keys()) {
414
+ if (errorPath === path || errorPath.startsWith(path + ".") || errorPath.startsWith(path + "[")) {
415
+ next.delete(errorPath);
416
+ changed = true;
417
+ }
418
+ }
419
+ return changed ? next : prev;
420
+ });
421
+ }, [setFormState, setCrossFieldErrors]);
422
+ const setValues = React.useCallback(values => {
423
+ setFormState(prev => {
424
+ if (Option.isNone(prev)) return prev;
425
+ return Option.some(operations.setFormValues(prev.value, values));
426
+ });
427
+ setCrossFieldErrors(new Map());
428
+ }, [setFormState, setCrossFieldErrors]);
429
+ return {
430
+ submit,
431
+ reset,
432
+ isDirty,
433
+ submitResult: decodeAndSubmitResult,
434
+ values: formValues,
435
+ setValue,
436
+ setValues
437
+ };
438
+ };
439
+ const SubscribeComponent = ({
440
+ children
441
+ }) => {
442
+ const {
443
+ isDirty,
444
+ reset,
445
+ setValue,
446
+ setValues,
447
+ submit,
448
+ submitResult,
449
+ values
450
+ } = useFormHook();
451
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
452
+ children: children({
453
+ values,
454
+ isDirty,
455
+ submitResult,
456
+ submit,
457
+ reset,
458
+ setValue,
459
+ setValues
460
+ })
461
+ });
462
+ };
463
+ const submitHelper = fn => runtime.fn()(fn);
464
+ const fieldComponents = makeFieldComponents(fields, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, components);
465
+ return {
466
+ atom: stateAtom,
467
+ schema: combinedSchema,
468
+ fields: fieldRefs,
469
+ Form: FormComponent,
470
+ Subscribe: SubscribeComponent,
471
+ useForm: useFormHook,
472
+ submit: submitHelper,
473
+ ...fieldComponents
474
+ };
475
+ };
476
+ exports.build = build;
477
+ //# sourceMappingURL=FormReact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormReact.js","names":["_atomReact","require","Atom","_interopRequireWildcard","_effectForm","_path","Cause","Option","ParseResult","AST","_react","React","_useDebounced","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ArrayItemContext","createContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","crossFieldErrorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","memo","arrayCtx","useContext","autoSubmitOnBlur","fieldPath","parentPath","crossFieldErrorAtom","touchedAtom","valueAtom","useMemo","value","setValue","useAtom","isTouched","setTouched","crossFieldError","useAtomValue","setCrossFieldErrors","useAtomSet","submitCount","validationAtom","schema","validationResult","validateImmediate","shouldDebounceValidation","validation","debounce","autoSubmit","validate","useDebounced","prevValueRef","useRef","useEffect","current","shouldValidate","perFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","Validation","extractFirstError","none","validationError","onChange","useCallback","newValue","prev","next","Map","delete","onBlur","dirtyFields","isDirty","isPathOrParentDirty","isValidating","waiting","shouldShowError","_jsxRuntime","jsx","error","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","getNestedValue","values","append","isNone","some","appendArrayItem","remove","index","removeArrayItem","swap","indexA","indexB","swapArrayItems","move","from","to","moveArrayItem","Fragment","ItemWrapper","itemPath","Provider","itemFieldComponents","prop","propertySignatures","itemKey","name","type","itemDef","Form","makeField","itemComponent","properties","Item","Proxy","target","Reflect","makeFieldComponents","fields","components","key","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","fieldComponent","build","self","options","mode","runtime","Mode","parse","formAtoms","FormAtoms","make","formBuilder","combinedSchema","decodeAndSubmit","fieldRefs","isDirtyAtom","onSubmitAtom","resetValidationAtoms","FormComponent","defaultValues","onSubmit","registry","RegistryContext","state","setOnSubmit","callDecodeAndSubmit","createInitialState","debouncedAutoSubmit","stateOption","useAtomSubscribe","immediate","onBlurAutoSubmit","preventDefault","stopPropagation","useFormHook","formValues","decodeAndSubmitResult","issues","ArrayFormatter","formatErrorSync","fieldErrors","issue","path","length","schemaPathToFieldPath","message","size","submit","createSubmitState","reset","createResetState","Reset","field","update","currentValue","setFieldValue","changed","errorPath","keys","startsWith","setValues","setFormValues","submitResult","SubscribeComponent","submitHelper","fn","fieldComponents","atom","Subscribe","useForm","exports"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDebounced = void 0;
7
+ var React = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
8
+ function _interopRequireWildcard(e, t) {
9
+ if ("function" == typeof WeakMap) var r = new WeakMap(),
10
+ n = new WeakMap();
11
+ return (_interopRequireWildcard = function (e, t) {
12
+ if (!t && e && e.__esModule) return e;
13
+ var o,
14
+ i,
15
+ f = {
16
+ __proto__: null,
17
+ default: e
18
+ };
19
+ if (null === e || "object" != typeof e && "function" != typeof e) return f;
20
+ if (o = t ? n : r) {
21
+ if (o.has(e)) return o.get(e);
22
+ o.set(e, f);
23
+ }
24
+ for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
25
+ return f;
26
+ })(e, t);
27
+ }
28
+ /**
29
+ * Internal debounce hook for form validation.
30
+ *
31
+ * @internal
32
+ */
33
+
34
+ /**
35
+ * Hook that debounces a callback function.
36
+ *
37
+ * @internal
38
+ */
39
+ const useDebounced = (fn, delayMs) => {
40
+ const timeoutRef = React.useRef(null);
41
+ const fnRef = React.useRef(fn);
42
+ React.useEffect(() => {
43
+ fnRef.current = fn;
44
+ });
45
+ React.useEffect(() => {
46
+ return () => {
47
+ if (timeoutRef.current !== null) {
48
+ clearTimeout(timeoutRef.current);
49
+ }
50
+ };
51
+ }, []);
52
+ return React.useMemo(() => (...args) => {
53
+ if (delayMs === null || delayMs === 0) {
54
+ fnRef.current(...args);
55
+ return;
56
+ }
57
+ if (timeoutRef.current !== null) {
58
+ clearTimeout(timeoutRef.current);
59
+ }
60
+ timeoutRef.current = setTimeout(() => {
61
+ fnRef.current(...args);
62
+ timeoutRef.current = null;
63
+ }, delayMs);
64
+ }, [delayMs]);
65
+ };
66
+ exports.useDebounced = useDebounced;
67
+ //# sourceMappingURL=use-debounced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-debounced.js","names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useDebounced","fn","delayMs","timeoutRef","useRef","fnRef","useEffect","current","clearTimeout","useMemo","args","setTimeout","exports"],"sources":["../../../src/internal/use-debounced.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,KAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAA8B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AAL9B;;;;;;AAOA;;;;;AAKO,MAAMkB,YAAY,GAAGA,CAC1BC,EAAK,EACLC,OAAsB,KACjB;EACL,MAAMC,UAAU,GAAGzB,KAAK,CAAC0B,MAAM,CAAuC,IAAI,CAAC;EAC3E,MAAMC,KAAK,GAAG3B,KAAK,CAAC0B,MAAM,CAACH,EAAE,CAAC;EAE9BvB,KAAK,CAAC4B,SAAS,CAAC,MAAK;IACnBD,KAAK,CAACE,OAAO,GAAGN,EAAE;EACpB,CAAC,CAAC;EAEFvB,KAAK,CAAC4B,SAAS,CAAC,MAAK;IACnB,OAAO,MAAK;MACV,IAAIH,UAAU,CAACI,OAAO,KAAK,IAAI,EAAE;QAC/BC,YAAY,CAACL,UAAU,CAACI,OAAO,CAAC;MAClC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO7B,KAAK,CAAC+B,OAAO,CAClB,MACG,CAAC,GAAGC,IAAmB,KAAI;IAC1B,IAAIR,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,CAAC,EAAE;MACrCG,KAAK,CAACE,OAAO,CAAC,GAAGG,IAAI,CAAC;MACtB;IACF;IACA,IAAIP,UAAU,CAACI,OAAO,KAAK,IAAI,EAAE;MAC/BC,YAAY,CAACL,UAAU,CAACI,OAAO,CAAC;IAClC;IACAJ,UAAU,CAACI,OAAO,GAAGI,UAAU,CAAC,MAAK;MACnCN,KAAK,CAACE,OAAO,CAAC,GAAGG,IAAI,CAAC;MACtBP,UAAU,CAACI,OAAO,GAAG,IAAI;IAC3B,CAAC,EAAEL,OAAO,CAAC;EACb,CAAO,EACT,CAACA,OAAO,CAAC,CACV;AACH,CAAC;AAAAU,OAAA,CAAAZ,YAAA,GAAAA,YAAA","ignoreList":[]}