@lucas-barake/effect-form-react 0.12.0 → 0.13.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.
@@ -3,12 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.makeField = exports.forField = exports.build = void 0;
6
+ exports.makeField = exports.make = exports.forField = void 0;
7
7
  var _jsxRuntime = /*#__PURE__*/require("react/jsx-runtime");
8
8
  var _atomReact = /*#__PURE__*/require("@effect-atom/atom-react");
9
+ var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
9
10
  var _effectForm = /*#__PURE__*/require("@lucas-barake/effect-form");
10
11
  var _Path = /*#__PURE__*/require("@lucas-barake/effect-form/Path");
11
12
  var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
13
+ var Layer = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Layer"));
12
14
  var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
13
15
  var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
14
16
  var Predicate = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Predicate"));
@@ -39,20 +41,19 @@ function _interopRequireWildcard(e, t) {
39
41
  const isFieldBundle = x => Predicate.isTagged(x, "FieldBundle");
40
42
  const ArrayItemContext = /*#__PURE__*/(0, _react.createContext)(null);
41
43
  const AutoSubmitContext = /*#__PURE__*/(0, _react.createContext)(null);
42
- const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
44
+ const makeFieldComponent = (fieldKey, fieldDef, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
43
45
  const FieldComponent = extraProps => {
44
46
  const arrayCtx = (0, _react.useContext)(ArrayItemContext);
45
47
  const autoSubmitOnBlur = (0, _react.useContext)(AutoSubmitContext);
46
48
  const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
47
49
  const {
48
- crossFieldErrorAtom,
50
+ errorAtom,
49
51
  touchedAtom,
50
52
  valueAtom
51
53
  } = React.useMemo(() => getOrCreateFieldAtoms(fieldPath), [fieldPath]);
52
54
  const [value, setValue] = (0, _atomReact.useAtom)(valueAtom);
53
55
  const [isTouched, setTouched] = (0, _atomReact.useAtom)(touchedAtom);
54
- const crossFieldError = (0, _atomReact.useAtomValue)(crossFieldErrorAtom);
55
- const setCrossFieldErrors = (0, _atomReact.useAtomSet)(crossFieldErrorsAtom);
56
+ const storedError = (0, _atomReact.useAtomValue)(errorAtom);
56
57
  const submitCount = (0, _atomReact.useAtomValue)(submitCountAtom);
57
58
  const validationAtom = React.useMemo(() => getOrCreateValidationAtom(fieldPath, fieldDef.schema), [fieldPath]);
58
59
  const validationResult = (0, _atomReact.useAtomValue)(validationAtom);
@@ -65,12 +66,12 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
65
66
  return;
66
67
  }
67
68
  prevValueRef.current = value;
68
- const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched;
69
+ const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched || parsedMode.validation === "onSubmit" && submitCount > 0;
69
70
  if (shouldValidate) {
70
71
  validate(value);
71
72
  }
72
- }, [value, isTouched, validate]);
73
- const perFieldError = React.useMemo(() => {
73
+ }, [value, isTouched, submitCount, validate]);
74
+ const livePerFieldError = React.useMemo(() => {
74
75
  if (validationResult._tag === "Failure") {
75
76
  const parseError = Cause.failureOption(validationResult.cause);
76
77
  if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
@@ -79,22 +80,25 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
79
80
  }
80
81
  return Option.none();
81
82
  }, [validationResult]);
82
- const validationError = Option.isSome(perFieldError) ? perFieldError : crossFieldError;
83
- const onChange = React.useCallback(newValue => {
84
- setValue(newValue);
85
- setCrossFieldErrors(prev => {
86
- const next = new Map();
87
- for (const [errorPath, message] of prev) {
88
- if (!(0, _Path.isPathUnderRoot)(errorPath, fieldPath)) {
89
- next.set(errorPath, message);
90
- }
83
+ const isValidating = validationResult.waiting;
84
+ const validationError = React.useMemo(() => {
85
+ if (Option.isSome(livePerFieldError)) {
86
+ return livePerFieldError;
87
+ }
88
+ if (Option.isSome(storedError)) {
89
+ // Hide field-sourced errors when validation passes or is pending (async gap).
90
+ // Refinement errors persist until re-submit - they can't be cleared by typing.
91
+ const shouldHideStoredError = storedError.value.source === "field" && (validationResult._tag === "Success" || isValidating);
92
+ if (shouldHideStoredError) {
93
+ return Option.none();
91
94
  }
92
- return next.size !== prev.size ? next : prev;
93
- });
94
- if (parsedMode.validation === "onChange") {
95
- validate(newValue);
95
+ return Option.some(storedError.value.message);
96
96
  }
97
- }, [fieldPath, setValue, setCrossFieldErrors, validate]);
97
+ return Option.none();
98
+ }, [livePerFieldError, storedError, validationResult, isValidating]);
99
+ const onChange = React.useCallback(newValue => {
100
+ setValue(newValue);
101
+ }, [setValue]);
98
102
  const onBlur = React.useCallback(() => {
99
103
  setTouched(true);
100
104
  if (parsedMode.validation === "onBlur") {
@@ -104,8 +108,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
104
108
  }, [setTouched, validate, value, autoSubmitOnBlur]);
105
109
  const dirtyFields = (0, _atomReact.useAtomValue)(dirtyFieldsAtom);
106
110
  const isDirty = React.useMemo(() => (0, _Path.isPathOrParentDirty)(dirtyFields, fieldPath), [dirtyFields, fieldPath]);
107
- const isValidating = validationResult.waiting;
108
- const shouldShowError = isTouched || submitCount > 0;
111
+ const shouldShowError = parsedMode.validation === "onChange" ? isDirty || submitCount > 0 : parsedMode.validation === "onBlur" ? isTouched || submitCount > 0 : submitCount > 0;
109
112
  const fieldState = React.useMemo(() => ({
110
113
  value,
111
114
  onChange,
@@ -122,7 +125,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
122
125
  };
123
126
  return React.memo(FieldComponent);
124
127
  };
125
- const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
128
+ const makeArrayFieldComponent = (fieldKey, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
126
129
  const isStructSchema = AST.isTypeLiteral(def.itemSchema.ast);
127
130
  const ArrayWrapper = ({
128
131
  children
@@ -200,14 +203,13 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
200
203
  };
201
204
  const itemDef = _effectForm.Field.makeField(itemKey, itemSchema);
202
205
  const itemComponent = componentMap[itemKey];
203
- itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, itemComponent);
206
+ itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, itemComponent);
204
207
  }
205
208
  }
206
209
  const properties = {
207
210
  Item: ItemWrapper,
208
211
  ...itemFieldComponents
209
212
  };
210
- // Proxy enables <Form.items.Item> and <Form.items.name> syntax
211
213
  return new Proxy(ArrayWrapper, {
212
214
  get(target, prop) {
213
215
  if (prop in properties) {
@@ -217,49 +219,45 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
217
219
  }
218
220
  });
219
221
  };
220
- const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
222
+ const makeFieldComponents = (fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
221
223
  const components = {};
222
224
  for (const [key, def] of Object.entries(fields)) {
223
225
  if (_effectForm.Field.isArrayFieldDef(def)) {
224
226
  const arrayComponentMap = componentMap[key];
225
- components[key] = makeArrayFieldComponent(key, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
227
+ components[key] = makeArrayFieldComponent(key, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
226
228
  } else if (_effectForm.Field.isFieldDef(def)) {
227
229
  const componentOrBundle = componentMap[key];
228
230
  const fieldComponent = isFieldBundle(componentOrBundle) ? componentOrBundle.component : componentOrBundle;
229
- components[key] = makeFieldComponent(key, def, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
231
+ components[key] = makeFieldComponent(key, def, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
230
232
  }
231
233
  }
232
234
  return components;
233
235
  };
234
236
  /**
235
- * Builds a React form from a FormBuilder.
237
+ * Creates a React form from a FormBuilder.
236
238
  *
237
239
  * @example
238
240
  * ```tsx
239
241
  * import { FormBuilder } from "@lucas-barake/effect-form"
240
242
  * import { FormReact } from "@lucas-barake/effect-form-react"
241
243
  * import { useAtomValue, useAtomSet } from "@effect-atom/atom-react"
242
- * import * as Atom from "@effect-atom/atom/Atom"
243
244
  * import * as Schema from "effect/Schema"
244
- * import * as Layer from "effect/Layer"
245
245
  *
246
- * const runtime = Atom.runtime(Layer.empty)
247
- *
248
- * const loginForm = FormBuilder.empty
246
+ * const loginFormBuilder = FormBuilder.empty
249
247
  * .addField("email", Schema.String)
250
248
  * .addField("password", Schema.String)
251
249
  *
252
- * const form = FormReact.build(loginForm, {
253
- * runtime,
250
+ * // Runtime is optional for forms without service requirements
251
+ * const loginForm = FormReact.make(loginFormBuilder, {
254
252
  * fields: { email: TextInput, password: PasswordInput },
255
- * onSubmit: (values) => Effect.log(`Login: ${values.email}`),
253
+ * onSubmit: (_, { decoded }) => Effect.log(`Login: ${decoded.email}`),
256
254
  * })
257
255
  *
258
256
  * // Subscribe to atoms anywhere in the tree
259
257
  * function SubmitButton() {
260
- * const isDirty = useAtomValue(form.isDirty)
261
- * const submit = useAtomValue(form.submit)
262
- * const callSubmit = useAtomSet(form.submit)
258
+ * const isDirty = useAtomValue(loginForm.isDirty)
259
+ * const submit = useAtomValue(loginForm.submit)
260
+ * const callSubmit = useAtomSet(loginForm.submit)
263
261
  * return (
264
262
  * <button onClick={() => callSubmit()} disabled={!isDirty || submit.waiting}>
265
263
  * {submit.waiting ? "Validating..." : "Login"}
@@ -267,26 +265,27 @@ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCoun
267
265
  * )
268
266
  * }
269
267
  *
270
- * function LoginDialog({ onClose }) {
268
+ * function LoginPage() {
271
269
  * return (
272
- * <form.Initialize defaultValues={{ email: "", password: "" }}>
273
- * <form.email />
274
- * <form.password />
270
+ * <loginForm.Initialize defaultValues={{ email: "", password: "" }}>
271
+ * <loginForm.email />
272
+ * <loginForm.password />
275
273
  * <SubmitButton />
276
- * </form.Initialize>
274
+ * </loginForm.Initialize>
277
275
  * )
278
276
  * }
279
277
  * ```
280
278
  *
281
279
  * @category Constructors
282
280
  */
283
- const build = (self, options) => {
281
+ const make = (self, options) => {
284
282
  const {
285
283
  fields: components,
286
284
  mode,
287
285
  onSubmit,
288
- runtime
286
+ runtime: providedRuntime
289
287
  } = options;
288
+ const runtime = providedRuntime ?? Atom.runtime(Layer.empty);
290
289
  const parsedMode = _effectForm.Mode.parse(mode);
291
290
  const {
292
291
  fields
@@ -298,18 +297,21 @@ const build = (self, options) => {
298
297
  });
299
298
  const {
300
299
  combinedSchema,
301
- crossFieldErrorsAtom,
302
300
  dirtyFieldsAtom,
301
+ errorsAtom,
303
302
  fieldRefs,
304
303
  getFieldAtom,
305
304
  getOrCreateFieldAtoms,
306
305
  getOrCreateValidationAtom,
307
306
  hasChangedSinceSubmitAtom,
308
307
  isDirtyAtom,
308
+ keepAliveActiveAtom,
309
309
  lastSubmittedValuesAtom,
310
+ mountAtom,
310
311
  operations,
311
312
  resetAtom,
312
313
  revertToLastSubmitAtom,
314
+ rootErrorAtom,
313
315
  setValue,
314
316
  setValuesAtom,
315
317
  stateAtom,
@@ -327,49 +329,102 @@ const build = (self, options) => {
327
329
  const callSubmit = (0, _atomReact.useAtomSet)(submitAtom);
328
330
  const isInitializedRef = React.useRef(false);
329
331
  React.useEffect(() => {
330
- setFormState(Option.some(operations.createInitialState(defaultValues)));
332
+ const isKeptAlive = registry.get(keepAliveActiveAtom);
333
+ const currentState = registry.get(stateAtom);
334
+ if (!isKeptAlive) {
335
+ setFormState(Option.some(operations.createInitialState(defaultValues)));
336
+ } else if (Option.isNone(currentState)) {
337
+ setFormState(Option.some(operations.createInitialState(defaultValues)));
338
+ }
331
339
  isInitializedRef.current = true;
332
340
  // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only
333
- }, []);
341
+ }, [registry]);
334
342
  const debouncedAutoSubmit = (0, _useDebounced.useDebounced)(() => {
335
343
  const stateOption = registry.get(stateAtom);
336
344
  if (Option.isNone(stateOption)) return;
337
345
  callSubmit(undefined);
338
346
  }, parsedMode.autoSubmit && parsedMode.validation === "onChange" ? parsedMode.debounce : null);
347
+ // ─────────────────────────────────────────────────────────────────────────────
348
+ // Auto-Submit Coordination
349
+ // ─────────────────────────────────────────────────────────────────────────────
350
+ // Two-subscription model to avoid infinite loop:
351
+ // - Stream 1 reacts to value changes (reference equality), triggers or queues submit
352
+ // - Stream 2 reacts to submit completion, flushes queued changes
353
+ //
354
+ // Single subscription to stateAtom cannot distinguish value changes from submit
355
+ // metadata updates (submitCount, lastSubmittedValues).
356
+ // ─────────────────────────────────────────────────────────────────────────────
357
+ const lastValuesRef = React.useRef(null);
358
+ const pendingChangesRef = React.useRef(false);
359
+ const wasSubmittingRef = React.useRef(false);
339
360
  (0, _atomReact.useAtomSubscribe)(stateAtom, React.useCallback(() => {
340
361
  if (!isInitializedRef.current) return;
341
- if (parsedMode.autoSubmit && parsedMode.validation === "onChange") {
362
+ const state = registry.get(stateAtom);
363
+ if (Option.isNone(state)) return;
364
+ const currentValues = state.value.values;
365
+ // Reference equality filters out submit metadata changes.
366
+ // Works because setFieldValue creates new values object (immutable update).
367
+ if (currentValues === lastValuesRef.current) return;
368
+ lastValuesRef.current = currentValues;
369
+ if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
370
+ const submitResult = registry.get(submitAtom);
371
+ if (submitResult.waiting) {
372
+ pendingChangesRef.current = true;
373
+ } else {
342
374
  debouncedAutoSubmit();
343
375
  }
376
+ }, [debouncedAutoSubmit, registry]), {
377
+ immediate: false
378
+ });
379
+ (0, _atomReact.useAtomSubscribe)(submitAtom, React.useCallback(result => {
380
+ if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
381
+ const isSubmitting = result.waiting;
382
+ const wasSubmitting = wasSubmittingRef.current;
383
+ wasSubmittingRef.current = isSubmitting;
384
+ // Flush queued changes when submit completes
385
+ if (wasSubmitting && !isSubmitting) {
386
+ if (pendingChangesRef.current) {
387
+ pendingChangesRef.current = false;
388
+ debouncedAutoSubmit();
389
+ }
390
+ }
344
391
  }, [debouncedAutoSubmit]), {
345
392
  immediate: false
346
393
  });
347
394
  const onBlurAutoSubmit = React.useCallback(() => {
348
- if (parsedMode.autoSubmit && parsedMode.validation === "onBlur") {
349
- const stateOption = registry.get(stateAtom);
350
- if (Option.isNone(stateOption)) return;
351
- callSubmit(undefined);
352
- }
395
+ if (!parsedMode.autoSubmit || parsedMode.validation !== "onBlur") return;
396
+ const stateOption = registry.get(stateAtom);
397
+ if (Option.isNone(stateOption)) return;
398
+ const {
399
+ lastSubmittedValues,
400
+ values
401
+ } = stateOption.value;
402
+ if (Option.isSome(lastSubmittedValues) && values === lastSubmittedValues.value.encoded) return;
403
+ callSubmit(undefined);
353
404
  }, [registry, callSubmit]);
354
405
  if (Option.isNone(state)) return null;
355
406
  return (0, _jsxRuntime.jsx)(AutoSubmitContext.Provider, {
356
407
  value: onBlurAutoSubmit,
357
- children: (0, _jsxRuntime.jsx)("form", {
358
- onSubmit: e => {
359
- e.preventDefault();
360
- e.stopPropagation();
361
- },
362
- children: children
363
- })
408
+ children: children
364
409
  });
365
410
  };
366
- const fieldComponents = makeFieldComponents(fields, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, components);
411
+ const fieldComponents = makeFieldComponents(fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, components);
412
+ const KeepAlive = () => {
413
+ const setKeepAliveActive = (0, _atomReact.useAtomSet)(keepAliveActiveAtom);
414
+ React.useLayoutEffect(() => {
415
+ setKeepAliveActive(true);
416
+ return () => setKeepAliveActive(false);
417
+ }, [setKeepAliveActive]);
418
+ (0, _atomReact.useAtomMount)(mountAtom);
419
+ return null;
420
+ };
367
421
  return {
368
422
  values: valuesAtom,
369
423
  isDirty: isDirtyAtom,
370
424
  hasChangedSinceSubmit: hasChangedSinceSubmitAtom,
371
425
  lastSubmittedValues: lastSubmittedValuesAtom,
372
426
  submitCount: submitCountAtom,
427
+ rootError: rootErrorAtom,
373
428
  schema: combinedSchema,
374
429
  fields: fieldRefs,
375
430
  Initialize: InitializeComponent,
@@ -379,6 +434,8 @@ const build = (self, options) => {
379
434
  setValues: setValuesAtom,
380
435
  setValue,
381
436
  getFieldAtom,
437
+ mount: mountAtom,
438
+ KeepAlive,
382
439
  ...fieldComponents
383
440
  };
384
441
  };
@@ -403,7 +460,7 @@ const build = (self, options) => {
403
460
  *
404
461
  * @category Constructors
405
462
  */
406
- exports.build = build;
463
+ exports.make = make;
407
464
  const forField = _field => component => component;
408
465
  /**
409
466
  * Creates a bundled field definition + component for reusable form fields.
@@ -442,10 +499,10 @@ const forField = _field => component => component;
442
499
  * ))
443
500
  *
444
501
  * // Use in form builder
445
- * const form = FormBuilder.empty.addField(NameInput.field)
502
+ * const formBuilder = FormBuilder.empty.addField(NameInput.field)
446
503
  *
447
- * // Use in build()
448
- * const Form = FormReact.build(form, {
504
+ * // Use in make()
505
+ * const form = FormReact.make(formBuilder, {
449
506
  * runtime,
450
507
  * fields: { name: NameInput },
451
508
  * onSubmit: (_, { decoded }) => Effect.log(decoded.name),
@@ -458,17 +515,13 @@ exports.forField = forField;
458
515
  const makeField = options => {
459
516
  const field = _effectForm.Field.makeField(options.key, options.schema);
460
517
  return component => {
461
- // DX: Auto-generate a readable component name for DevTools
462
- // e.g., key "email" -> "<EmailField />"
463
518
  if (!component.displayName) {
464
519
  const displayName = `${options.key.charAt(0).toUpperCase()}${options.key.slice(1)}Field`;
465
- // Cast to 'any' because strict TS marks function names as readonly,
466
- // but React relies on mutation here.
467
520
  try {
468
521
  ;
469
522
  component.displayName = displayName;
470
523
  } catch {
471
- // Ignore errors in environments where function props are frozen
524
+ // Ignore - some environments freeze function properties
472
525
  }
473
526
  }
474
527
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"FormReact.js","names":["_atomReact","require","_effectForm","_Path","Cause","_interopRequireWildcard","Option","ParseResult","Predicate","AST","_react","React","_useDebounced","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isFieldBundle","x","isTagged","ArrayItemContext","createContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","crossFieldErrorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","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","errorPath","message","isPathUnderRoot","size","onBlur","dirtyFields","isDirty","isPathOrParentDirty","isValidating","waiting","shouldShowError","fieldState","error","_jsxRuntime","jsx","field","props","memo","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","Field","makeField","itemComponent","properties","Item","Proxy","target","Reflect","makeFieldComponents","fields","components","key","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","componentOrBundle","fieldComponent","component","build","self","options","mode","onSubmit","runtime","Mode","parse","formAtoms","FormAtoms","make","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","lastSubmittedValuesAtom","resetAtom","revertToLastSubmitAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","RegistryContext","state","callSubmit","isInitializedRef","createInitialState","debouncedAutoSubmit","stateOption","undefined","useAtomSubscribe","immediate","onBlurAutoSubmit","preventDefault","stopPropagation","fieldComponents","hasChangedSinceSubmit","lastSubmittedValues","Initialize","submit","reset","revertToLastSubmit","setValues","exports","forField","_field","displayName","charAt","toUpperCase","slice"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":";;;;;;;AAAA,IAAAA,UAAA,gBAAAC,OAAA;AAEA,IAAAC,WAAA,gBAAAD,OAAA;AAEA,IAAAE,KAAA,gBAAAF,OAAA;AACA,IAAAG,KAAA,gBAAAC,uBAAA,cAAAJ,OAAA;AAEA,IAAAK,MAAA,gBAAAD,uBAAA,cAAAJ,OAAA;AACA,IAAAM,WAAA,gBAAAF,uBAAA,cAAAJ,OAAA;AACA,IAAAO,SAAA,gBAAAH,uBAAA,cAAAJ,OAAA;AAEA,IAAAQ,GAAA,gBAAAJ,uBAAA,cAAAJ,OAAA;AACA,IAAAS,MAAA,gBAAAL,uBAAA,cAAAJ,OAAA;AAA8B,IAAAU,KAAA,GAAAD,MAAA;AAE9B,IAAAE,aAAA,gBAAAX,OAAA;AAA0D,SAAAI,wBAAAQ,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAV,uBAAA,YAAAA,CAAAQ,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;AA+C1D,MAAMkB,aAAa,GAAIC,CAAU,IAC/BzB,SAAS,CAAC0B,QAAQ,CAACD,CAAC,EAAE,aAAa,CAAC;AA+HtC,MAAME,gBAAgB,gBAAG,IAAAzB,MAAA,CAAA0B,aAAa,EAA+B,IAAI,CAAC;AAC1E,MAAMC,iBAAiB,gBAAG,IAAA3B,MAAA,CAAA0B,aAAa,EAAsB,IAAI,CAAC;AAElE,MAAME,kBAAkB,GAAGA,CACzBC,QAAgB,EAChBC,QAAmC,EACnCC,oBAA6E,EAC7EC,eAAkC,EAClCC,eAA+C,EAC/CC,UAA2B,EAC3BC,yBAG6D,EAC7DC,qBAAkE,EAClEC,SAA8C,KAC/B;EACf,MAAMC,cAAc,GAAiBC,UAAU,IAAI;IACjD,MAAMC,QAAQ,GAAG,IAAAxC,MAAA,CAAAyC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAMiB,gBAAgB,GAAG,IAAA1C,MAAA,CAAAyC,UAAU,EAACd,iBAAiB,CAAC;IACtD,MAAMgB,SAAS,GAAGH,QAAQ,GAAG,GAAGA,QAAQ,CAACI,UAAU,IAAIf,QAAQ,EAAE,GAAGA,QAAQ;IAE5E,MAAM;MAAEgB,mBAAmB;MAAEC,WAAW;MAAEC;IAAS,CAAE,GAAG9C,KAAK,CAAC+C,OAAO,CACnE,MAAMZ,qBAAqB,CAACO,SAAS,CAAC,EACtC,CAACA,SAAS,CAAC,CACZ;IAED,MAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAA5D,UAAA,CAAA6D,OAAO,EAACJ,SAAS,CAAqD;IAChG,MAAM,CAACK,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAA/D,UAAA,CAAA6D,OAAO,EAACL,WAAW,CAAC;IACpD,MAAMQ,eAAe,GAAG,IAAAhE,UAAA,CAAAiE,YAAY,EAACV,mBAAmB,CAAC;IACzD,MAAMW,mBAAmB,GAAG,IAAAlE,UAAA,CAAAmE,UAAU,EAAC1B,oBAAoB,CAAC;IAC5D,MAAM2B,WAAW,GAAG,IAAApE,UAAA,CAAAiE,YAAY,EAACvB,eAAe,CAAC;IAEjD,MAAM2B,cAAc,GAAG1D,KAAK,CAAC+C,OAAO,CAClC,MAAMb,yBAAyB,CAACQ,SAAS,EAAEb,QAAQ,CAAC8B,MAAM,CAAC,EAC3D,CAACjB,SAAS,CAAC,CACZ;IACD,MAAMkB,gBAAgB,GAAG,IAAAvE,UAAA,CAAAiE,YAAY,EAACI,cAAc,CAAC;IACrD,MAAMG,iBAAiB,GAAG,IAAAxE,UAAA,CAAAmE,UAAU,EAACE,cAAc,CAAC;IAEpD,MAAMI,wBAAwB,GAAG7B,UAAU,CAAC8B,UAAU,KAAK,UAAU,IAChE9B,UAAU,CAAC+B,QAAQ,KAAK,IAAI,IAC5B,CAAC/B,UAAU,CAACgC,UAAU;IAC3B,MAAMC,QAAQ,GAAG,IAAAjE,aAAA,CAAAkE,YAAY,EAACN,iBAAiB,EAAEC,wBAAwB,GAAG7B,UAAU,CAAC+B,QAAQ,GAAG,IAAI,CAAC;IAEvG,MAAMI,YAAY,GAAGpE,KAAK,CAACqE,MAAM,CAACrB,KAAK,CAAC;IACxChD,KAAK,CAACsE,SAAS,CAAC,MAAK;MACnB,IAAIF,YAAY,CAACG,OAAO,KAAKvB,KAAK,EAAE;QAClC;MACF;MACAoB,YAAY,CAACG,OAAO,GAAGvB,KAAK;MAE5B,MAAMwB,cAAc,GAAGvC,UAAU,CAAC8B,UAAU,KAAK,UAAU,IACrD9B,UAAU,CAAC8B,UAAU,KAAK,QAAQ,IAAIZ,SAAU;MAEtD,IAAIqB,cAAc,EAAE;QAClBN,QAAQ,CAAClB,KAAK,CAAC;MACjB;IACF,CAAC,EAAE,CAACA,KAAK,EAAEG,SAAS,EAAEe,QAAQ,CAAC,CAAC;IAEhC,MAAMO,aAAa,GAA0BzE,KAAK,CAAC+C,OAAO,CAAC,MAAK;MAC9D,IAAIa,gBAAgB,CAACc,IAAI,KAAK,SAAS,EAAE;QACvC,MAAMC,UAAU,GAAGlF,KAAK,CAACmF,aAAa,CAAChB,gBAAgB,CAACiB,KAAK,CAAC;QAC9D,IAAIlF,MAAM,CAACmF,MAAM,CAACH,UAAU,CAAC,IAAI/E,WAAW,CAACmF,YAAY,CAACJ,UAAU,CAAC3B,KAAK,CAAC,EAAE;UAC3E,OAAOzD,WAAA,CAAAyF,UAAU,CAACC,iBAAiB,CAACN,UAAU,CAAC3B,KAAK,CAAC;QACvD;MACF;MACA,OAAOrD,MAAM,CAACuF,IAAI,EAAE;IACtB,CAAC,EAAE,CAACtB,gBAAgB,CAAC,CAAC;IAEtB,MAAMuB,eAAe,GAAGxF,MAAM,CAACmF,MAAM,CAACL,aAAa,CAAC,GAAGA,aAAa,GAAGpB,eAAe;IAEtF,MAAM+B,QAAQ,GAAGpF,KAAK,CAACqF,WAAW,CAC/BC,QAAkC,IAAI;MACrCrC,QAAQ,CAACqC,QAAQ,CAAC;MAClB/B,mBAAmB,CAAEgC,IAAI,IAAI;QAC3B,MAAMC,IAAI,GAAG,IAAIC,GAAG,EAAkB;QACtC,KAAK,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,IAAIJ,IAAI,EAAE;UACvC,IAAI,CAAC,IAAA/F,KAAA,CAAAoG,eAAe,EAACF,SAAS,EAAEhD,SAAS,CAAC,EAAE;YAC1C8C,IAAI,CAACzE,GAAG,CAAC2E,SAAS,EAAEC,OAAO,CAAC;UAC9B;QACF;QACA,OAAOH,IAAI,CAACK,IAAI,KAAKN,IAAI,CAACM,IAAI,GAAGL,IAAI,GAAGD,IAAI;MAC9C,CAAC,CAAC;MACF,IAAItD,UAAU,CAAC8B,UAAU,KAAK,UAAU,EAAE;QACxCG,QAAQ,CAACoB,QAAQ,CAAC;MACpB;IACF,CAAC,EACD,CAAC5C,SAAS,EAAEO,QAAQ,EAAEM,mBAAmB,EAAEW,QAAQ,CAAC,CACrD;IAED,MAAM4B,MAAM,GAAG9F,KAAK,CAACqF,WAAW,CAAC,MAAK;MACpCjC,UAAU,CAAC,IAAI,CAAC;MAChB,IAAInB,UAAU,CAAC8B,UAAU,KAAK,QAAQ,EAAE;QACtCG,QAAQ,CAAClB,KAAK,CAAC;MACjB;MACAP,gBAAgB,GAAE,CAAE;IACtB,CAAC,EAAE,CAACW,UAAU,EAAEc,QAAQ,EAAElB,KAAK,EAAEP,gBAAgB,CAAC,CAAC;IAEnD,MAAMsD,WAAW,GAAG,IAAA1G,UAAA,CAAAiE,YAAY,EAACtB,eAAe,CAAC;IACjD,MAAMgE,OAAO,GAAGhG,KAAK,CAAC+C,OAAO,CAC3B,MAAM,IAAAvD,KAAA,CAAAyG,mBAAmB,EAACF,WAAW,EAAErD,SAAS,CAAC,EACjD,CAACqD,WAAW,EAAErD,SAAS,CAAC,CACzB;IACD,MAAMwD,YAAY,GAAGtC,gBAAgB,CAACuC,OAAO;IAC7C,MAAMC,eAAe,GAAGjD,SAAS,IAAIM,WAAW,GAAG,CAAC;IAEpD,MAAM4C,UAAU,GAAkBrG,KAAK,CAAC+C,OAAO,CAAC,OAAO;MACrDC,KAAK;MACLoC,QAAQ;MACRU,MAAM;MACNQ,KAAK,EAAEF,eAAe,GAAGjB,eAAe,GAAGxF,MAAM,CAACuF,IAAI,EAAU;MAChE/B,SAAS;MACT+C,YAAY;MACZF;KACD,CAAC,EAAE,CAAChD,KAAK,EAAEoC,QAAQ,EAAEU,MAAM,EAAEM,eAAe,EAAEjB,eAAe,EAAEhC,SAAS,EAAE+C,YAAY,EAAEF,OAAO,CAAC,CAAC;IAElG,OAAO,IAAAO,WAAA,CAAAC,GAAA,EAACpE,SAAS;MAACqE,KAAK,EAAEJ,UAAU;MAAEK,KAAK,EAAEpE;IAAU,EAAI;EAC5D,CAAC;EAED,OAAOtC,KAAK,CAAC2G,IAAI,CAACtE,cAAc,CAAgB;AAClD,CAAC;AAED,MAAMuE,uBAAuB,GAAGA,CAC9BhF,QAAgB,EAChBiF,GAAmC,EACnCC,SAA8G,EAC9GhF,oBAA6E,EAC7EC,eAAkC,EAClCC,eAA+C,EAC/CC,UAA2B,EAC3BC,yBAG6D,EAC7DC,qBAAkE,EAClE4E,UAAyC,EACzCC,YAAsC,KACP;EAC/B,MAAMC,cAAc,GAAGnH,GAAG,CAACoH,aAAa,CAACL,GAAG,CAACM,UAAU,CAACC,GAAG,CAAC;EAE5D,MAAMC,YAAY,GAEbA,CAAC;IAAEC;EAAQ,CAAE,KAAI;IACpB,MAAM/E,QAAQ,GAAG,IAAAxC,MAAA,CAAAyC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAM,CAAC+F,eAAe,EAAEC,YAAY,CAAC,GAAG,IAAAnI,UAAA,CAAA6D,OAAO,EAAC4D,SAAS,CAAC;IAC1D,MAAMW,SAAS,GAAG9H,MAAM,CAAC+H,UAAU,CAACH,eAAe,CAAC;IAEpD,MAAM7E,SAAS,GAAGH,QAAQ,GAAG,GAAGA,QAAQ,CAACI,UAAU,IAAIf,QAAQ,EAAE,GAAGA,QAAQ;IAC5E,MAAM+F,KAAK,GAAG3H,KAAK,CAAC+C,OAAO,CACzB,MAAO,IAAAvD,KAAA,CAAAoI,cAAc,EAACH,SAAS,CAACI,MAAM,EAAEnF,SAAS,CAAC,IAAI,EAA8C,EACpG,CAAC+E,SAAS,CAACI,MAAM,EAAEnF,SAAS,CAAC,CAC9B;IAED,MAAMoF,MAAM,GAAG9H,KAAK,CAACqF,WAAW,CAC7BrC,KAAgC,IAAI;MACnCwE,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAI5F,MAAM,CAACoI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO5F,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAACkB,eAAe,CAAC1C,IAAI,CAACvC,KAAK,EAAEN,SAAS,EAAEmE,GAAG,CAACM,UAAU,EAAEnE,KAAK,CAAC,CAAC;MAC9F,CAAC,CAAC;IACJ,CAAC,EACD,CAACN,SAAS,EAAE8E,YAAY,CAAC,CAC1B;IAED,MAAMU,MAAM,GAAGlI,KAAK,CAACqF,WAAW,CAC7B8C,KAAa,IAAI;MAChBX,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAI5F,MAAM,CAACoI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO5F,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAACqB,eAAe,CAAC7C,IAAI,CAACvC,KAAK,EAAEN,SAAS,EAAEyF,KAAK,CAAC,CAAC;MAC9E,CAAC,CAAC;IACJ,CAAC,EACD,CAACzF,SAAS,EAAE8E,YAAY,CAAC,CAC1B;IAED,MAAMa,IAAI,GAAGrI,KAAK,CAACqF,WAAW,CAC5B,CAACiD,MAAc,EAAEC,MAAc,KAAI;MACjCf,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAI5F,MAAM,CAACoI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO5F,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAACyB,cAAc,CAACjD,IAAI,CAACvC,KAAK,EAAEN,SAAS,EAAE4F,MAAM,EAAEC,MAAM,CAAC,CAAC;MACtF,CAAC,CAAC;IACJ,CAAC,EACD,CAAC7F,SAAS,EAAE8E,YAAY,CAAC,CAC1B;IAED,MAAMiB,IAAI,GAAGzI,KAAK,CAACqF,WAAW,CAC5B,CAACqD,IAAY,EAAEC,EAAU,KAAI;MAC3BnB,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAI5F,MAAM,CAACoI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO5F,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAAC6B,aAAa,CAACrD,IAAI,CAACvC,KAAK,EAAEN,SAAS,EAAEgG,IAAI,EAAEC,EAAE,CAAC,CAAC;MAC/E,CAAC,CAAC;IACJ,CAAC,EACD,CAACjG,SAAS,EAAE8E,YAAY,CAAC,CAC1B;IAED,OAAO,IAAAjB,WAAA,CAAAC,GAAA,EAAAD,WAAA,CAAAsC,QAAA;MAAAvB,QAAA,EAAGA,QAAQ,CAAC;QAAEK,KAAK;QAAEG,MAAM;QAAEI,MAAM;QAAEG,IAAI;QAAEI;MAAI,CAAE;IAAC,EAAI;EAC/D,CAAC;EAED,MAAMK,WAAW,GAGZA,CAAC;IAAExB,QAAQ;IAAEa;EAAK,CAAE,KAAI;IAC3B,MAAM5F,QAAQ,GAAG,IAAAxC,MAAA,CAAAyC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAMgG,YAAY,GAAG,IAAAnI,UAAA,CAAAmE,UAAU,EAACsD,SAAS,CAAC;IAE1C,MAAMnE,UAAU,GAAGJ,QAAQ,GAAG,GAAGA,QAAQ,CAACI,UAAU,IAAIf,QAAQ,EAAE,GAAGA,QAAQ;IAC7E,MAAMmH,QAAQ,GAAG,GAAGpG,UAAU,IAAIwF,KAAK,GAAG;IAE1C,MAAMD,MAAM,GAAGlI,KAAK,CAACqF,WAAW,CAAC,MAAK;MACpCmC,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAI5F,MAAM,CAACoI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO5F,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAACqB,eAAe,CAAC7C,IAAI,CAACvC,KAAK,EAAEL,UAAU,EAAEwF,KAAK,CAAC,CAAC;MAC/E,CAAC,CAAC;IACJ,CAAC,EAAE,CAACxF,UAAU,EAAEwF,KAAK,EAAEX,YAAY,CAAC,CAAC;IAErC,OACE,IAAAjB,WAAA,CAAAC,GAAA,EAAChF,gBAAgB,CAACwH,QAAQ;MAAChG,KAAK,EAAE;QAAEmF,KAAK;QAAExF,UAAU,EAAEoG;MAAQ,CAAE;MAAAzB,QAAA,EAC9D,OAAOA,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAAC;QAAEY;MAAM,CAAE,CAAC,GAAGZ;IAAQ,EACvC;EAEhC,CAAC;EAED,MAAM2B,mBAAmB,GAA6B,EAAE;EAExD,IAAIhC,cAAc,EAAE;IAClB,MAAMG,GAAG,GAAGP,GAAG,CAACM,UAAU,CAACC,GAAsB;IACjD,KAAK,MAAM8B,IAAI,IAAI9B,GAAG,CAAC+B,kBAAkB,EAAE;MACzC,MAAMC,OAAO,GAAGF,IAAI,CAACG,IAAc;MACnC,MAAMlC,UAAU,GAAG;QAAEC,GAAG,EAAE8B,IAAI,CAACI;MAAI,CAAuB;MAC1D,MAAMC,OAAO,GAAGhK,WAAA,CAAAiK,KAAK,CAACC,SAAS,CAACL,OAAO,EAAEjC,UAAU,CAAC;MACpD,MAAMuC,aAAa,GAAI1C,YAAwE,CAACoC,OAAO,CAAC;MACxGH,mBAAmB,CAACG,OAAO,CAAC,GAAGzH,kBAAkB,CAC/CyH,OAAO,EACPG,OAAO,EACPzH,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrBuH,aAAa,CACd;IACH;EACF;EAEA,MAAMC,UAAU,GAA4B;IAC1CC,IAAI,EAAEd,WAAW;IACjB,GAAGG;GACJ;EAED;EACA,OAAO,IAAIY,KAAK,CAACxC,YAAY,EAAE;IAC7BvG,GAAGA,CAACgJ,MAAM,EAAEZ,IAAI;MACd,IAAIA,IAAI,IAAIS,UAAU,EAAE;QACtB,OAAOA,UAAU,CAACT,IAAc,CAAC;MACnC;MACA,OAAOa,OAAO,CAACjJ,GAAG,CAACgJ,MAAM,EAAEZ,IAAI,CAAC;IAClC;GACD,CAAgC;AACnC,CAAC;AAED,MAAMc,mBAAmB,GAAGA,CAI1BC,MAAe,EACfnD,SAGC,EACDhF,oBAA6E,EAC7EC,eAAkC,EAClCC,eAA+C,EAC/CC,UAA2B,EAC3BC,yBAG6D,EAC7DC,qBAAkE,EAClE4E,UAA6C,EAC7CC,YAAgB,KACgB;EAChC,MAAMkD,UAAU,GAAwB,EAAE;EAE1C,KAAK,MAAM,CAACC,GAAG,EAAEtD,GAAG,CAAC,IAAI3F,MAAM,CAACkJ,OAAO,CAACH,MAAM,CAAC,EAAE;IAC/C,IAAI1K,WAAA,CAAAiK,KAAK,CAACa,eAAe,CAACxD,GAAG,CAAC,EAAE;MAC9B,MAAMyD,iBAAiB,GAAItD,YAAoC,CAACmD,GAAG,CAAC;MACpED,UAAU,CAACC,GAAG,CAAC,GAAGvD,uBAAuB,CACvCuD,GAAG,EACHtD,GAAqD,EACrDC,SAAS,EACThF,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrB4E,UAAU,EACVuD,iBAAiB,CAClB;IACH,CAAC,MAAM,IAAI/K,WAAA,CAAAiK,KAAK,CAACe,UAAU,CAAC1D,GAAG,CAAC,EAAE;MAChC,MAAM2D,iBAAiB,GAAIxD,YAAwC,CAACmD,GAAG,CAAC;MACxE,MAAMM,cAAc,GAAGpJ,aAAa,CAACmJ,iBAAiB,CAAC,GACnDA,iBAAiB,CAACE,SAAS,GAC3BF,iBAA4D;MAChEN,UAAU,CAACC,GAAG,CAAC,GAAGxI,kBAAkB,CAClCwI,GAAG,EACHtD,GAAG,EACH/E,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrBsI,cAAc,CACf;IACH;EACF;EAEA,OAAOP,UAA0C;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAMS,KAAK,GAAGA,CASnBC,IAAyC,EACzCC,OAYC,KAC8C;EAC/C,MAAM;IAAEZ,MAAM,EAAEC,UAAU;IAAEY,IAAI;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGH,OAAO;EAC/D,MAAM5I,UAAU,GAAG1C,WAAA,CAAA0L,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;EACnC,MAAM;IAAEb;EAAM,CAAE,GAAGW,IAAI;EAEvB,MAAMO,SAAS,GAAsD5L,WAAA,CAAA6L,SAAS,CAACC,IAAI,CAAC;IAClFC,WAAW,EAAEV,IAAI;IACjBI,OAAO;IACPD;GACD,CAAC;EAEF,MAAM;IACJQ,cAAc;IACdzJ,oBAAoB;IACpBE,eAAe;IACfwJ,SAAS;IACTC,YAAY;IACZtJ,qBAAqB;IACrBD,yBAAyB;IACzBwJ,yBAAyB;IACzBC,WAAW;IACXC,uBAAuB;IACvB7E,UAAU;IACV8E,SAAS;IACTC,sBAAsB;IACtB7I,QAAQ;IACR8I,aAAa;IACbjF,SAAS;IACTkF,UAAU;IACVjK,eAAe;IACfkK;EAAU,CACX,GAAGd,SAAS;EAEb,MAAMe,mBAAmB,GAGpBA,CAAC;IAAE5E,QAAQ;IAAE6E;EAAa,CAAE,KAAI;IACnC,MAAMC,QAAQ,GAAGpM,KAAK,CAACwC,UAAU,CAACnD,UAAA,CAAAgN,eAAe,CAAC;IAClD,MAAMC,KAAK,GAAG,IAAAjN,UAAA,CAAAiE,YAAY,EAACwD,SAAS,CAAC;IACrC,MAAMU,YAAY,GAAG,IAAAnI,UAAA,CAAAmE,UAAU,EAACsD,SAAS,CAAC;IAC1C,MAAMyF,UAAU,GAAG,IAAAlN,UAAA,CAAAmE,UAAU,EAACwI,UAAU,CAAC;IACzC,MAAMQ,gBAAgB,GAAGxM,KAAK,CAACqE,MAAM,CAAC,KAAK,CAAC;IAE5CrE,KAAK,CAACsE,SAAS,CAAC,MAAK;MACnBkD,YAAY,CAAC7H,MAAM,CAACqI,IAAI,CAACjB,UAAU,CAAC0F,kBAAkB,CAACN,aAAa,CAAC,CAAC,CAAC;MACvEK,gBAAgB,CAACjI,OAAO,GAAG,IAAI;MAC/B;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMmI,mBAAmB,GAAG,IAAAzM,aAAA,CAAAkE,YAAY,EAAC,MAAK;MAC5C,MAAMwI,WAAW,GAAGP,QAAQ,CAACtL,GAAG,CAACgG,SAAS,CAAC;MAC3C,IAAInH,MAAM,CAACoI,MAAM,CAAC4E,WAAW,CAAC,EAAE;MAChCJ,UAAU,CAACK,SAAuB,CAAC;IACrC,CAAC,EAAE3K,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,UAAU,GAAG9B,UAAU,CAAC+B,QAAQ,GAAG,IAAI,CAAC;IAE9F,IAAA3E,UAAA,CAAAwN,gBAAgB,EACd/F,SAAS,EACT9G,KAAK,CAACqF,WAAW,CAAC,MAAK;MACrB,IAAI,CAACmH,gBAAgB,CAACjI,OAAO,EAAE;MAC/B,IAAItC,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,UAAU,EAAE;QACjE2I,mBAAmB,EAAE;MACvB;IACF,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC,EACzB;MAAEI,SAAS,EAAE;IAAK,CAAE,CACrB;IAED,MAAMC,gBAAgB,GAAG/M,KAAK,CAACqF,WAAW,CAAC,MAAK;MAC9C,IAAIpD,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,QAAQ,EAAE;QAC/D,MAAM4I,WAAW,GAAGP,QAAQ,CAACtL,GAAG,CAACgG,SAAS,CAAC;QAC3C,IAAInH,MAAM,CAACoI,MAAM,CAAC4E,WAAW,CAAC,EAAE;QAChCJ,UAAU,CAACK,SAAuB,CAAC;MACrC;IACF,CAAC,EAAE,CAACR,QAAQ,EAAEG,UAAU,CAAC,CAAC;IAE1B,IAAI5M,MAAM,CAACoI,MAAM,CAACuE,KAAK,CAAC,EAAE,OAAO,IAAI;IAErC,OACE,IAAA/F,WAAA,CAAAC,GAAA,EAAC9E,iBAAiB,CAACsH,QAAQ;MAAChG,KAAK,EAAE+J,gBAAgB;MAAAzF,QAAA,EACjD,IAAAf,WAAA,CAAAC,GAAA;QACEuE,QAAQ,EAAG7K,CAAC,IAAI;UACdA,CAAC,CAAC8M,cAAc,EAAE;UAClB9M,CAAC,CAAC+M,eAAe,EAAE;QACrB,CAAC;QAAA3F,QAAA,EAEAA;MAAQ;IACJ,EACoB;EAEjC,CAAC;EAED,MAAM4F,eAAe,GAAGlD,mBAAmB,CACzCC,MAAM,EACNnD,SAAS,EACThF,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrB4E,UAAU,EACVmD,UAAU,CACX;EAED,OAAO;IACLrC,MAAM,EAAEoE,UAAU;IAClBjG,OAAO,EAAE2F,WAAW;IACpBwB,qBAAqB,EAAEzB,yBAAyB;IAChD0B,mBAAmB,EAAExB,uBAAuB;IAC5CnI,WAAW,EAAE1B,eAAe;IAC5B4B,MAAM,EAAE4H,cAAc;IACtBtB,MAAM,EAAEuB,SAAS;IACjB6B,UAAU,EAAEnB,mBAAmB;IAC/BoB,MAAM,EAAEtB,UAAU;IAClBuB,KAAK,EAAE1B,SAAS;IAChB2B,kBAAkB,EAAE1B,sBAAsB;IAC1C2B,SAAS,EAAE1B,aAAa;IACxB9I,QAAQ;IACRwI,YAAY;IACZ,GAAGyB;GAC2C;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;AAAAQ,OAAA,CAAA/C,KAAA,GAAAA,KAAA;AAqBO,MAAMgD,QAAQ,GACnBC,MAA4B,IAI7BlD,SAAS,IAAKA,SAAS;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAgD,OAAA,CAAAC,QAAA,GAAAA,QAAA;AAiDO,MAAMlE,SAAS,GAAmDoB,OAGxE,IAE2B;EAC1B,MAAMpE,KAAK,GAAGlH,WAAA,CAAAiK,KAAK,CAACC,SAAS,CAACoB,OAAO,CAACV,GAAG,EAAEU,OAAO,CAAClH,MAAM,CAAC;EAC1D,OAAQ+G,SAAS,IAAI;IACnB;IACA;IACA,IAAI,CAACA,SAAS,CAACmD,WAAW,EAAE;MAC1B,MAAMA,WAAW,GAAG,GAAGhD,OAAO,CAACV,GAAG,CAAC2D,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGlD,OAAO,CAACV,GAAG,CAAC6D,KAAK,CAAC,CAAC,CAAC,OAAO;MACxF;MACA;MACA,IAAI;QACF;QAAEtD,SAAiB,CAACmD,WAAW,GAAGA,WAAW;MAC/C,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;IACA,OAAO;MACLnJ,IAAI,EAAE,aAAa;MACnB+B,KAAK;MACLiE;KACD;EACH,CAAC;AACH,CAAC;AAAAgD,OAAA,CAAAjE,SAAA,GAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"file":"FormReact.js","names":["_atomReact","require","Atom","_interopRequireWildcard","_effectForm","_Path","Cause","Layer","Option","ParseResult","Predicate","AST","_react","React","_useDebounced","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isFieldBundle","x","isTagged","ArrayItemContext","createContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","errorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","useContext","autoSubmitOnBlur","fieldPath","parentPath","errorAtom","touchedAtom","valueAtom","useMemo","value","setValue","useAtom","isTouched","setTouched","storedError","useAtomValue","submitCount","validationAtom","schema","validationResult","validateImmediate","useAtomSet","shouldDebounceValidation","validation","debounce","autoSubmit","validate","useDebounced","prevValueRef","useRef","useEffect","current","shouldValidate","livePerFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","Validation","extractFirstError","none","isValidating","waiting","validationError","shouldHideStoredError","source","some","message","onChange","useCallback","newValue","onBlur","dirtyFields","isDirty","isPathOrParentDirty","shouldShowError","fieldState","error","_jsxRuntime","jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","getNestedValue","values","append","prev","isNone","appendArrayItem","remove","index","removeArrayItem","swap","indexA","indexB","swapArrayItems","move","from","to","moveArrayItem","Fragment","ItemWrapper","itemPath","Provider","itemFieldComponents","prop","propertySignatures","itemKey","name","type","itemDef","Field","makeField","itemComponent","properties","Item","Proxy","target","Reflect","makeFieldComponents","fields","components","key","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","componentOrBundle","fieldComponent","component","make","self","options","mode","onSubmit","runtime","providedRuntime","empty","Mode","parse","formAtoms","FormAtoms","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","keepAliveActiveAtom","lastSubmittedValuesAtom","mountAtom","resetAtom","revertToLastSubmitAtom","rootErrorAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","RegistryContext","state","callSubmit","isInitializedRef","isKeptAlive","currentState","createInitialState","debouncedAutoSubmit","stateOption","undefined","lastValuesRef","pendingChangesRef","wasSubmittingRef","useAtomSubscribe","currentValues","submitResult","immediate","result","isSubmitting","wasSubmitting","onBlurAutoSubmit","lastSubmittedValues","encoded","fieldComponents","KeepAlive","setKeepAliveActive","useLayoutEffect","useAtomMount","hasChangedSinceSubmit","rootError","Initialize","submit","reset","revertToLastSubmit","setValues","mount","exports","forField","_field","displayName","charAt","toUpperCase","slice"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type * as Atom from "@effect-atom/atom/Atom";
1
+ import * as Atom from "@effect-atom/atom/Atom";
2
2
  import { Field, FormAtoms, Mode } from "@lucas-barake/effect-form";
3
3
  import type * as FormBuilder from "@lucas-barake/effect-form/FormBuilder";
4
4
  import type * as Effect from "effect/Effect";
@@ -107,6 +107,8 @@ export type BuiltForm<TFields extends Field.FieldsRecord, R, A = void, E = never
107
107
  readonly setValues: Atom.Writable<void, Field.EncodedFromFields<TFields>>;
108
108
  readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>;
109
109
  readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>;
110
+ readonly mount: Atom.Atom<void>;
111
+ readonly KeepAlive: React.FC;
110
112
  } & FieldComponents<TFields, CM>;
111
113
  type FieldComponents<TFields extends Field.FieldsRecord, CM extends FieldComponentMap<TFields>> = {
112
114
  readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, any> ? React.FC<ExtractExtraProps<CM[K]>> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? ArrayFieldComponent<S, ExtractArrayItemExtraProps<CM[K], S>> : never;
@@ -131,34 +133,30 @@ type ArrayFieldComponent<S extends Schema.Schema.Any, ExtraPropsMap> = React.FC<
131
133
  } ? EP : Record<string, never>>;
132
134
  } : unknown);
133
135
  /**
134
- * Builds a React form from a FormBuilder.
136
+ * Creates a React form from a FormBuilder.
135
137
  *
136
138
  * @example
137
139
  * ```tsx
138
140
  * import { FormBuilder } from "@lucas-barake/effect-form"
139
141
  * import { FormReact } from "@lucas-barake/effect-form-react"
140
142
  * import { useAtomValue, useAtomSet } from "@effect-atom/atom-react"
141
- * import * as Atom from "@effect-atom/atom/Atom"
142
143
  * import * as Schema from "effect/Schema"
143
- * import * as Layer from "effect/Layer"
144
144
  *
145
- * const runtime = Atom.runtime(Layer.empty)
146
- *
147
- * const loginForm = FormBuilder.empty
145
+ * const loginFormBuilder = FormBuilder.empty
148
146
  * .addField("email", Schema.String)
149
147
  * .addField("password", Schema.String)
150
148
  *
151
- * const form = FormReact.build(loginForm, {
152
- * runtime,
149
+ * // Runtime is optional for forms without service requirements
150
+ * const loginForm = FormReact.make(loginFormBuilder, {
153
151
  * fields: { email: TextInput, password: PasswordInput },
154
- * onSubmit: (values) => Effect.log(`Login: ${values.email}`),
152
+ * onSubmit: (_, { decoded }) => Effect.log(`Login: ${decoded.email}`),
155
153
  * })
156
154
  *
157
155
  * // Subscribe to atoms anywhere in the tree
158
156
  * function SubmitButton() {
159
- * const isDirty = useAtomValue(form.isDirty)
160
- * const submit = useAtomValue(form.submit)
161
- * const callSubmit = useAtomSet(form.submit)
157
+ * const isDirty = useAtomValue(loginForm.isDirty)
158
+ * const submit = useAtomValue(loginForm.submit)
159
+ * const callSubmit = useAtomSet(loginForm.submit)
162
160
  * return (
163
161
  * <button onClick={() => callSubmit()} disabled={!isDirty || submit.waiting}>
164
162
  * {submit.waiting ? "Validating..." : "Login"}
@@ -166,29 +164,41 @@ type ArrayFieldComponent<S extends Schema.Schema.Any, ExtraPropsMap> = React.FC<
166
164
  * )
167
165
  * }
168
166
  *
169
- * function LoginDialog({ onClose }) {
167
+ * function LoginPage() {
170
168
  * return (
171
- * <form.Initialize defaultValues={{ email: "", password: "" }}>
172
- * <form.email />
173
- * <form.password />
169
+ * <loginForm.Initialize defaultValues={{ email: "", password: "" }}>
170
+ * <loginForm.email />
171
+ * <loginForm.password />
174
172
  * <SubmitButton />
175
- * </form.Initialize>
173
+ * </loginForm.Initialize>
176
174
  * )
177
175
  * }
178
176
  * ```
179
177
  *
180
178
  * @category Constructors
181
179
  */
182
- export declare const build: <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = void, ER = never, CM extends FieldComponentMap<TFields> = FieldComponentMap<TFields>>(self: FormBuilder.FormBuilder<TFields, R>, options: {
183
- readonly runtime: Atom.AtomRuntime<R, ER>;
184
- readonly fields: CM;
185
- readonly mode?: SubmitArgs extends void ? Mode.FormMode : Mode.FormModeWithoutAutoSubmit;
186
- readonly onSubmit: (args: SubmitArgs, ctx: {
187
- readonly decoded: Field.DecodedFromFields<TFields>;
188
- readonly encoded: Field.EncodedFromFields<TFields>;
189
- readonly get: Atom.FnContext;
190
- }) => A | Effect.Effect<A, E, R>;
191
- }) => BuiltForm<TFields, R, A, E, SubmitArgs, CM>;
180
+ export declare const make: {
181
+ <TFields extends Field.FieldsRecord, A, E, SubmitArgs = void, CM extends FieldComponentMap<TFields> = FieldComponentMap<TFields>>(self: FormBuilder.FormBuilder<TFields, never>, options: {
182
+ readonly runtime?: Atom.AtomRuntime<never, never>;
183
+ readonly fields: CM;
184
+ readonly mode?: SubmitArgs extends void ? Mode.FormMode : Mode.FormModeWithoutAutoSubmit;
185
+ readonly onSubmit: (args: SubmitArgs, ctx: {
186
+ readonly decoded: Field.DecodedFromFields<TFields>;
187
+ readonly encoded: Field.EncodedFromFields<TFields>;
188
+ readonly get: Atom.FnContext;
189
+ }) => A | Effect.Effect<A, E, never>;
190
+ }): BuiltForm<TFields, never, A, E, SubmitArgs, CM>;
191
+ <TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = void, ER = never, CM extends FieldComponentMap<TFields> = FieldComponentMap<TFields>>(self: FormBuilder.FormBuilder<TFields, R>, options: {
192
+ readonly runtime: Atom.AtomRuntime<R, ER>;
193
+ readonly fields: CM;
194
+ readonly mode?: SubmitArgs extends void ? Mode.FormMode : Mode.FormModeWithoutAutoSubmit;
195
+ readonly onSubmit: (args: SubmitArgs, ctx: {
196
+ readonly decoded: Field.DecodedFromFields<TFields>;
197
+ readonly encoded: Field.EncodedFromFields<TFields>;
198
+ readonly get: Atom.FnContext;
199
+ }) => A | Effect.Effect<A, E, R>;
200
+ }): BuiltForm<TFields, R, A, E, SubmitArgs, CM>;
201
+ };
192
202
  /**
193
203
  * A curried helper that infers the schema type from a field definition.
194
204
  * Provides ergonomic type inference when defining field components.
@@ -248,10 +258,10 @@ export declare const forField: <K extends string, S extends Schema.Schema.Any>(_
248
258
  * ))
249
259
  *
250
260
  * // Use in form builder
251
- * const form = FormBuilder.empty.addField(NameInput.field)
261
+ * const formBuilder = FormBuilder.empty.addField(NameInput.field)
252
262
  *
253
- * // Use in build()
254
- * const Form = FormReact.build(form, {
263
+ * // Use in make()
264
+ * const form = FormReact.make(formBuilder, {
255
265
  * runtime,
256
266
  * fields: { name: NameInput },
257
267
  * onSubmit: (_, { decoded }) => Effect.log(decoded.name),