@lucas-barake/effect-form-react 0.11.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,14 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- 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"));
16
+ var Predicate = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Predicate"));
14
17
  var AST = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/SchemaAST"));
15
18
  var _react = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
16
19
  var React = _react;
@@ -35,22 +38,22 @@ function _interopRequireWildcard(e, t) {
35
38
  return f;
36
39
  })(e, t);
37
40
  }
41
+ const isFieldBundle = x => Predicate.isTagged(x, "FieldBundle");
38
42
  const ArrayItemContext = /*#__PURE__*/(0, _react.createContext)(null);
39
43
  const AutoSubmitContext = /*#__PURE__*/(0, _react.createContext)(null);
40
- const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
44
+ const makeFieldComponent = (fieldKey, fieldDef, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
41
45
  const FieldComponent = extraProps => {
42
46
  const arrayCtx = (0, _react.useContext)(ArrayItemContext);
43
47
  const autoSubmitOnBlur = (0, _react.useContext)(AutoSubmitContext);
44
48
  const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
45
49
  const {
46
- crossFieldErrorAtom,
50
+ errorAtom,
47
51
  touchedAtom,
48
52
  valueAtom
49
53
  } = React.useMemo(() => getOrCreateFieldAtoms(fieldPath), [fieldPath]);
50
54
  const [value, setValue] = (0, _atomReact.useAtom)(valueAtom);
51
55
  const [isTouched, setTouched] = (0, _atomReact.useAtom)(touchedAtom);
52
- const crossFieldError = (0, _atomReact.useAtomValue)(crossFieldErrorAtom);
53
- const setCrossFieldErrors = (0, _atomReact.useAtomSet)(crossFieldErrorsAtom);
56
+ const storedError = (0, _atomReact.useAtomValue)(errorAtom);
54
57
  const submitCount = (0, _atomReact.useAtomValue)(submitCountAtom);
55
58
  const validationAtom = React.useMemo(() => getOrCreateValidationAtom(fieldPath, fieldDef.schema), [fieldPath]);
56
59
  const validationResult = (0, _atomReact.useAtomValue)(validationAtom);
@@ -63,12 +66,12 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
63
66
  return;
64
67
  }
65
68
  prevValueRef.current = value;
66
- const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched;
69
+ const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched || parsedMode.validation === "onSubmit" && submitCount > 0;
67
70
  if (shouldValidate) {
68
71
  validate(value);
69
72
  }
70
- }, [value, isTouched, validate]);
71
- const perFieldError = React.useMemo(() => {
73
+ }, [value, isTouched, submitCount, validate]);
74
+ const livePerFieldError = React.useMemo(() => {
72
75
  if (validationResult._tag === "Failure") {
73
76
  const parseError = Cause.failureOption(validationResult.cause);
74
77
  if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
@@ -77,22 +80,25 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
77
80
  }
78
81
  return Option.none();
79
82
  }, [validationResult]);
80
- const validationError = Option.isSome(perFieldError) ? perFieldError : crossFieldError;
81
- const onChange = React.useCallback(newValue => {
82
- setValue(newValue);
83
- setCrossFieldErrors(prev => {
84
- const next = new Map();
85
- for (const [errorPath, message] of prev) {
86
- if (!(0, _Path.isPathUnderRoot)(errorPath, fieldPath)) {
87
- next.set(errorPath, message);
88
- }
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();
89
94
  }
90
- return next.size !== prev.size ? next : prev;
91
- });
92
- if (parsedMode.validation === "onChange") {
93
- validate(newValue);
95
+ return Option.some(storedError.value.message);
94
96
  }
95
- }, [fieldPath, setValue, setCrossFieldErrors, validate]);
97
+ return Option.none();
98
+ }, [livePerFieldError, storedError, validationResult, isValidating]);
99
+ const onChange = React.useCallback(newValue => {
100
+ setValue(newValue);
101
+ }, [setValue]);
96
102
  const onBlur = React.useCallback(() => {
97
103
  setTouched(true);
98
104
  if (parsedMode.validation === "onBlur") {
@@ -102,8 +108,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
102
108
  }, [setTouched, validate, value, autoSubmitOnBlur]);
103
109
  const dirtyFields = (0, _atomReact.useAtomValue)(dirtyFieldsAtom);
104
110
  const isDirty = React.useMemo(() => (0, _Path.isPathOrParentDirty)(dirtyFields, fieldPath), [dirtyFields, fieldPath]);
105
- const isValidating = validationResult.waiting;
106
- const shouldShowError = isTouched || submitCount > 0;
111
+ const shouldShowError = parsedMode.validation === "onChange" ? isDirty || submitCount > 0 : parsedMode.validation === "onBlur" ? isTouched || submitCount > 0 : submitCount > 0;
107
112
  const fieldState = React.useMemo(() => ({
108
113
  value,
109
114
  onChange,
@@ -120,7 +125,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
120
125
  };
121
126
  return React.memo(FieldComponent);
122
127
  };
123
- 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) => {
124
129
  const isStructSchema = AST.isTypeLiteral(def.itemSchema.ast);
125
130
  const ArrayWrapper = ({
126
131
  children
@@ -198,14 +203,13 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
198
203
  };
199
204
  const itemDef = _effectForm.Field.makeField(itemKey, itemSchema);
200
205
  const itemComponent = componentMap[itemKey];
201
- 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);
202
207
  }
203
208
  }
204
209
  const properties = {
205
210
  Item: ItemWrapper,
206
211
  ...itemFieldComponents
207
212
  };
208
- // Proxy enables <Form.items.Item> and <Form.items.name> syntax
209
213
  return new Proxy(ArrayWrapper, {
210
214
  get(target, prop) {
211
215
  if (prop in properties) {
@@ -215,48 +219,45 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
215
219
  }
216
220
  });
217
221
  };
218
- 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) => {
219
223
  const components = {};
220
224
  for (const [key, def] of Object.entries(fields)) {
221
225
  if (_effectForm.Field.isArrayFieldDef(def)) {
222
226
  const arrayComponentMap = componentMap[key];
223
- 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);
224
228
  } else if (_effectForm.Field.isFieldDef(def)) {
225
- const fieldComponent = componentMap[key];
226
- components[key] = makeFieldComponent(key, def, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
229
+ const componentOrBundle = componentMap[key];
230
+ const fieldComponent = isFieldBundle(componentOrBundle) ? componentOrBundle.component : componentOrBundle;
231
+ components[key] = makeFieldComponent(key, def, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
227
232
  }
228
233
  }
229
234
  return components;
230
235
  };
231
236
  /**
232
- * Builds a React form from a FormBuilder.
237
+ * Creates a React form from a FormBuilder.
233
238
  *
234
239
  * @example
235
240
  * ```tsx
236
241
  * import { FormBuilder } from "@lucas-barake/effect-form"
237
242
  * import { FormReact } from "@lucas-barake/effect-form-react"
238
243
  * import { useAtomValue, useAtomSet } from "@effect-atom/atom-react"
239
- * import * as Atom from "@effect-atom/atom/Atom"
240
244
  * import * as Schema from "effect/Schema"
241
- * import * as Layer from "effect/Layer"
242
- *
243
- * const runtime = Atom.runtime(Layer.empty)
244
245
  *
245
- * const loginForm = FormBuilder.empty
246
+ * const loginFormBuilder = FormBuilder.empty
246
247
  * .addField("email", Schema.String)
247
248
  * .addField("password", Schema.String)
248
249
  *
249
- * const form = FormReact.build(loginForm, {
250
- * runtime,
250
+ * // Runtime is optional for forms without service requirements
251
+ * const loginForm = FormReact.make(loginFormBuilder, {
251
252
  * fields: { email: TextInput, password: PasswordInput },
252
- * onSubmit: (values) => Effect.log(`Login: ${values.email}`),
253
+ * onSubmit: (_, { decoded }) => Effect.log(`Login: ${decoded.email}`),
253
254
  * })
254
255
  *
255
256
  * // Subscribe to atoms anywhere in the tree
256
257
  * function SubmitButton() {
257
- * const isDirty = useAtomValue(form.isDirty)
258
- * const submit = useAtomValue(form.submit)
259
- * const callSubmit = useAtomSet(form.submit)
258
+ * const isDirty = useAtomValue(loginForm.isDirty)
259
+ * const submit = useAtomValue(loginForm.submit)
260
+ * const callSubmit = useAtomSet(loginForm.submit)
260
261
  * return (
261
262
  * <button onClick={() => callSubmit()} disabled={!isDirty || submit.waiting}>
262
263
  * {submit.waiting ? "Validating..." : "Login"}
@@ -264,26 +265,27 @@ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCoun
264
265
  * )
265
266
  * }
266
267
  *
267
- * function LoginDialog({ onClose }) {
268
+ * function LoginPage() {
268
269
  * return (
269
- * <form.Initialize defaultValues={{ email: "", password: "" }}>
270
- * <form.email />
271
- * <form.password />
270
+ * <loginForm.Initialize defaultValues={{ email: "", password: "" }}>
271
+ * <loginForm.email />
272
+ * <loginForm.password />
272
273
  * <SubmitButton />
273
- * </form.Initialize>
274
+ * </loginForm.Initialize>
274
275
  * )
275
276
  * }
276
277
  * ```
277
278
  *
278
279
  * @category Constructors
279
280
  */
280
- const build = (self, options) => {
281
+ const make = (self, options) => {
281
282
  const {
282
283
  fields: components,
283
284
  mode,
284
285
  onSubmit,
285
- runtime
286
+ runtime: providedRuntime
286
287
  } = options;
288
+ const runtime = providedRuntime ?? Atom.runtime(Layer.empty);
287
289
  const parsedMode = _effectForm.Mode.parse(mode);
288
290
  const {
289
291
  fields
@@ -295,18 +297,21 @@ const build = (self, options) => {
295
297
  });
296
298
  const {
297
299
  combinedSchema,
298
- crossFieldErrorsAtom,
299
300
  dirtyFieldsAtom,
301
+ errorsAtom,
300
302
  fieldRefs,
301
303
  getFieldAtom,
302
304
  getOrCreateFieldAtoms,
303
305
  getOrCreateValidationAtom,
304
306
  hasChangedSinceSubmitAtom,
305
307
  isDirtyAtom,
308
+ keepAliveActiveAtom,
306
309
  lastSubmittedValuesAtom,
310
+ mountAtom,
307
311
  operations,
308
312
  resetAtom,
309
313
  revertToLastSubmitAtom,
314
+ rootErrorAtom,
310
315
  setValue,
311
316
  setValuesAtom,
312
317
  stateAtom,
@@ -324,49 +329,102 @@ const build = (self, options) => {
324
329
  const callSubmit = (0, _atomReact.useAtomSet)(submitAtom);
325
330
  const isInitializedRef = React.useRef(false);
326
331
  React.useEffect(() => {
327
- 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
+ }
328
339
  isInitializedRef.current = true;
329
340
  // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only
330
- }, []);
341
+ }, [registry]);
331
342
  const debouncedAutoSubmit = (0, _useDebounced.useDebounced)(() => {
332
343
  const stateOption = registry.get(stateAtom);
333
344
  if (Option.isNone(stateOption)) return;
334
345
  callSubmit(undefined);
335
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);
336
360
  (0, _atomReact.useAtomSubscribe)(stateAtom, React.useCallback(() => {
337
361
  if (!isInitializedRef.current) return;
338
- 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 {
339
374
  debouncedAutoSubmit();
340
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
+ }
341
391
  }, [debouncedAutoSubmit]), {
342
392
  immediate: false
343
393
  });
344
394
  const onBlurAutoSubmit = React.useCallback(() => {
345
- if (parsedMode.autoSubmit && parsedMode.validation === "onBlur") {
346
- const stateOption = registry.get(stateAtom);
347
- if (Option.isNone(stateOption)) return;
348
- callSubmit(undefined);
349
- }
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);
350
404
  }, [registry, callSubmit]);
351
405
  if (Option.isNone(state)) return null;
352
406
  return (0, _jsxRuntime.jsx)(AutoSubmitContext.Provider, {
353
407
  value: onBlurAutoSubmit,
354
- children: (0, _jsxRuntime.jsx)("form", {
355
- onSubmit: e => {
356
- e.preventDefault();
357
- e.stopPropagation();
358
- },
359
- children: children
360
- })
408
+ children: children
361
409
  });
362
410
  };
363
- 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
+ };
364
421
  return {
365
422
  values: valuesAtom,
366
423
  isDirty: isDirtyAtom,
367
424
  hasChangedSinceSubmit: hasChangedSinceSubmitAtom,
368
425
  lastSubmittedValues: lastSubmittedValuesAtom,
369
426
  submitCount: submitCountAtom,
427
+ rootError: rootErrorAtom,
370
428
  schema: combinedSchema,
371
429
  fields: fieldRefs,
372
430
  Initialize: InitializeComponent,
@@ -376,37 +434,102 @@ const build = (self, options) => {
376
434
  setValues: setValuesAtom,
377
435
  setValue,
378
436
  getFieldAtom,
437
+ mount: mountAtom,
438
+ KeepAlive,
379
439
  ...fieldComponents
380
440
  };
381
441
  };
382
442
  /**
383
- * A curried helper that infers the schema type from a field definition or field reference.
443
+ * A curried helper that infers the schema type from a field definition.
384
444
  * Provides ergonomic type inference when defining field components.
385
445
  *
386
446
  * @example
387
447
  * ```tsx
388
- * import { FormReact } from "@lucas-barake/effect-form-react"
448
+ * import { Field, FormReact } from "@lucas-barake/effect-form-react"
389
449
  *
390
- * // Using a FieldRef from the built form
391
- * const TextInput = FormReact.forField(form.fields.email)(({ field }) => (
392
- * <input value={field.value} onChange={e => field.onChange(e.target.value)} />
393
- * ))
394
- *
395
- * // Using a FieldDef (for reusable fields)
396
450
  * const EmailField = Field.makeField("email", Schema.String)
397
451
  * const TextInput = FormReact.forField(EmailField)(({ field }) => (
398
452
  * <input value={field.value} onChange={e => field.onChange(e.target.value)} />
399
453
  * ))
400
454
  *
401
455
  * // With extra props - just specify the props type
402
- * const TextInput = FormReact.forField(form.fields.email)<{ placeholder?: string }>(({ field, props }) => (
456
+ * const TextInput = FormReact.forField(EmailField)<{ placeholder?: string }>(({ field, props }) => (
403
457
  * <input value={field.value} placeholder={props.placeholder} ... />
404
458
  * ))
405
459
  * ```
406
460
  *
407
461
  * @category Constructors
408
462
  */
409
- exports.build = build;
463
+ exports.make = make;
410
464
  const forField = _field => component => component;
465
+ /**
466
+ * Creates a bundled field definition + component for reusable form fields.
467
+ * Reduces boilerplate when you need both a field and its component together.
468
+ *
469
+ * Uses a curried API for better type inference - the schema type is captured
470
+ * first, so you only need to specify the extra props type (if any).
471
+ *
472
+ * @example
473
+ * ```tsx
474
+ * import { FormReact } from "@lucas-barake/effect-form-react"
475
+ * import * as Schema from "effect/Schema"
476
+ *
477
+ * // Define field + component in one place (no extra props)
478
+ * const NameInput = FormReact.makeField({
479
+ * key: "name",
480
+ * schema: Schema.String.pipe(Schema.nonEmptyString()),
481
+ * })(({ field }) => (
482
+ * <input
483
+ * value={field.value}
484
+ * onChange={(e) => field.onChange(e.target.value)}
485
+ * onBlur={field.onBlur}
486
+ * />
487
+ * ))
488
+ *
489
+ * // With extra props - specify only the props type
490
+ * const EmailInput = FormReact.makeField({
491
+ * key: "email",
492
+ * schema: Schema.String,
493
+ * })<{ placeholder: string }>(({ field, props }) => (
494
+ * <input
495
+ * value={field.value}
496
+ * onChange={(e) => field.onChange(e.target.value)}
497
+ * placeholder={props.placeholder}
498
+ * />
499
+ * ))
500
+ *
501
+ * // Use in form builder
502
+ * const formBuilder = FormBuilder.empty.addField(NameInput.field)
503
+ *
504
+ * // Use in make()
505
+ * const form = FormReact.make(formBuilder, {
506
+ * runtime,
507
+ * fields: { name: NameInput },
508
+ * onSubmit: (_, { decoded }) => Effect.log(decoded.name),
509
+ * })
510
+ * ```
511
+ *
512
+ * @category Constructors
513
+ */
411
514
  exports.forField = forField;
515
+ const makeField = options => {
516
+ const field = _effectForm.Field.makeField(options.key, options.schema);
517
+ return component => {
518
+ if (!component.displayName) {
519
+ const displayName = `${options.key.charAt(0).toUpperCase()}${options.key.slice(1)}Field`;
520
+ try {
521
+ ;
522
+ component.displayName = displayName;
523
+ } catch {
524
+ // Ignore - some environments freeze function properties
525
+ }
526
+ }
527
+ return {
528
+ _tag: "FieldBundle",
529
+ field,
530
+ component
531
+ };
532
+ };
533
+ };
534
+ exports.makeField = makeField;
412
535
  //# sourceMappingURL=FormReact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormReact.js","names":["_atomReact","require","_effectForm","_Path","Cause","_interopRequireWildcard","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","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","fieldComponent","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","component"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","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":[]}