@lucas-barake/effect-form-react 0.11.0 → 0.12.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/dist/cjs/FormReact.js +81 -11
- package/dist/cjs/FormReact.js.map +1 -1
- package/dist/dts/FormReact.d.ts +71 -16
- package/dist/dts/FormReact.d.ts.map +1 -1
- package/dist/esm/FormReact.js +79 -10
- package/dist/esm/FormReact.js.map +1 -1
- package/package.json +2 -2
- package/src/FormReact.tsx +114 -25
package/dist/cjs/FormReact.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.forField = exports.build = void 0;
|
|
6
|
+
exports.makeField = exports.forField = exports.build = void 0;
|
|
7
7
|
var _jsxRuntime = /*#__PURE__*/require("react/jsx-runtime");
|
|
8
8
|
var _atomReact = /*#__PURE__*/require("@effect-atom/atom-react");
|
|
9
9
|
var _effectForm = /*#__PURE__*/require("@lucas-barake/effect-form");
|
|
@@ -11,6 +11,7 @@ var _Path = /*#__PURE__*/require("@lucas-barake/effect-form/Path");
|
|
|
11
11
|
var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
|
|
12
12
|
var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
|
|
13
13
|
var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
|
|
14
|
+
var Predicate = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Predicate"));
|
|
14
15
|
var AST = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/SchemaAST"));
|
|
15
16
|
var _react = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
|
|
16
17
|
var React = _react;
|
|
@@ -35,6 +36,7 @@ function _interopRequireWildcard(e, t) {
|
|
|
35
36
|
return f;
|
|
36
37
|
})(e, t);
|
|
37
38
|
}
|
|
39
|
+
const isFieldBundle = x => Predicate.isTagged(x, "FieldBundle");
|
|
38
40
|
const ArrayItemContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
39
41
|
const AutoSubmitContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
40
42
|
const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
|
|
@@ -222,7 +224,8 @@ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCoun
|
|
|
222
224
|
const arrayComponentMap = componentMap[key];
|
|
223
225
|
components[key] = makeArrayFieldComponent(key, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
|
|
224
226
|
} else if (_effectForm.Field.isFieldDef(def)) {
|
|
225
|
-
const
|
|
227
|
+
const componentOrBundle = componentMap[key];
|
|
228
|
+
const fieldComponent = isFieldBundle(componentOrBundle) ? componentOrBundle.component : componentOrBundle;
|
|
226
229
|
components[key] = makeFieldComponent(key, def, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
|
|
227
230
|
}
|
|
228
231
|
}
|
|
@@ -380,26 +383,20 @@ const build = (self, options) => {
|
|
|
380
383
|
};
|
|
381
384
|
};
|
|
382
385
|
/**
|
|
383
|
-
* A curried helper that infers the schema type from a field definition
|
|
386
|
+
* A curried helper that infers the schema type from a field definition.
|
|
384
387
|
* Provides ergonomic type inference when defining field components.
|
|
385
388
|
*
|
|
386
389
|
* @example
|
|
387
390
|
* ```tsx
|
|
388
|
-
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
389
|
-
*
|
|
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
|
-
* ))
|
|
391
|
+
* import { Field, FormReact } from "@lucas-barake/effect-form-react"
|
|
394
392
|
*
|
|
395
|
-
* // Using a FieldDef (for reusable fields)
|
|
396
393
|
* const EmailField = Field.makeField("email", Schema.String)
|
|
397
394
|
* const TextInput = FormReact.forField(EmailField)(({ field }) => (
|
|
398
395
|
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
399
396
|
* ))
|
|
400
397
|
*
|
|
401
398
|
* // With extra props - just specify the props type
|
|
402
|
-
* const TextInput = FormReact.forField(
|
|
399
|
+
* const TextInput = FormReact.forField(EmailField)<{ placeholder?: string }>(({ field, props }) => (
|
|
403
400
|
* <input value={field.value} placeholder={props.placeholder} ... />
|
|
404
401
|
* ))
|
|
405
402
|
* ```
|
|
@@ -408,5 +405,78 @@ const build = (self, options) => {
|
|
|
408
405
|
*/
|
|
409
406
|
exports.build = build;
|
|
410
407
|
const forField = _field => component => component;
|
|
408
|
+
/**
|
|
409
|
+
* Creates a bundled field definition + component for reusable form fields.
|
|
410
|
+
* Reduces boilerplate when you need both a field and its component together.
|
|
411
|
+
*
|
|
412
|
+
* Uses a curried API for better type inference - the schema type is captured
|
|
413
|
+
* first, so you only need to specify the extra props type (if any).
|
|
414
|
+
*
|
|
415
|
+
* @example
|
|
416
|
+
* ```tsx
|
|
417
|
+
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
418
|
+
* import * as Schema from "effect/Schema"
|
|
419
|
+
*
|
|
420
|
+
* // Define field + component in one place (no extra props)
|
|
421
|
+
* const NameInput = FormReact.makeField({
|
|
422
|
+
* key: "name",
|
|
423
|
+
* schema: Schema.String.pipe(Schema.nonEmptyString()),
|
|
424
|
+
* })(({ field }) => (
|
|
425
|
+
* <input
|
|
426
|
+
* value={field.value}
|
|
427
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
428
|
+
* onBlur={field.onBlur}
|
|
429
|
+
* />
|
|
430
|
+
* ))
|
|
431
|
+
*
|
|
432
|
+
* // With extra props - specify only the props type
|
|
433
|
+
* const EmailInput = FormReact.makeField({
|
|
434
|
+
* key: "email",
|
|
435
|
+
* schema: Schema.String,
|
|
436
|
+
* })<{ placeholder: string }>(({ field, props }) => (
|
|
437
|
+
* <input
|
|
438
|
+
* value={field.value}
|
|
439
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
440
|
+
* placeholder={props.placeholder}
|
|
441
|
+
* />
|
|
442
|
+
* ))
|
|
443
|
+
*
|
|
444
|
+
* // Use in form builder
|
|
445
|
+
* const form = FormBuilder.empty.addField(NameInput.field)
|
|
446
|
+
*
|
|
447
|
+
* // Use in build()
|
|
448
|
+
* const Form = FormReact.build(form, {
|
|
449
|
+
* runtime,
|
|
450
|
+
* fields: { name: NameInput },
|
|
451
|
+
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|
|
452
|
+
* })
|
|
453
|
+
* ```
|
|
454
|
+
*
|
|
455
|
+
* @category Constructors
|
|
456
|
+
*/
|
|
411
457
|
exports.forField = forField;
|
|
458
|
+
const makeField = options => {
|
|
459
|
+
const field = _effectForm.Field.makeField(options.key, options.schema);
|
|
460
|
+
return component => {
|
|
461
|
+
// DX: Auto-generate a readable component name for DevTools
|
|
462
|
+
// e.g., key "email" -> "<EmailField />"
|
|
463
|
+
if (!component.displayName) {
|
|
464
|
+
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
|
+
try {
|
|
468
|
+
;
|
|
469
|
+
component.displayName = displayName;
|
|
470
|
+
} catch {
|
|
471
|
+
// Ignore errors in environments where function props are frozen
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return {
|
|
475
|
+
_tag: "FieldBundle",
|
|
476
|
+
field,
|
|
477
|
+
component
|
|
478
|
+
};
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
exports.makeField = makeField;
|
|
412
482
|
//# 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":";;;;;;;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;AAEA,IAAAO,GAAA,gBAAAH,uBAAA,cAAAJ,OAAA;AACA,IAAAQ,MAAA,gBAAAJ,uBAAA,cAAAJ,OAAA;AAA8B,IAAAS,KAAA,GAAAD,MAAA;AAE9B,IAAAE,aAAA,gBAAAV,OAAA;AAA0D,SAAAI,wBAAAO,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAT,uBAAA,YAAAA,CAAAO,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;AA0J1D,MAAMkB,gBAAgB,gBAAG,IAAAtB,MAAA,CAAAuB,aAAa,EAA+B,IAAI,CAAC;AAC1E,MAAMC,iBAAiB,gBAAG,IAAAxB,MAAA,CAAAuB,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,IAAArC,MAAA,CAAAsC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAMiB,gBAAgB,GAAG,IAAAvC,MAAA,CAAAsC,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,GAAG3C,KAAK,CAAC4C,OAAO,CACnE,MAAMZ,qBAAqB,CAACO,SAAS,CAAC,EACtC,CAACA,SAAS,CAAC,CACZ;IAED,MAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAxD,UAAA,CAAAyD,OAAO,EAACJ,SAAS,CAAqD;IAChG,MAAM,CAACK,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAA3D,UAAA,CAAAyD,OAAO,EAACL,WAAW,CAAC;IACpD,MAAMQ,eAAe,GAAG,IAAA5D,UAAA,CAAA6D,YAAY,EAACV,mBAAmB,CAAC;IACzD,MAAMW,mBAAmB,GAAG,IAAA9D,UAAA,CAAA+D,UAAU,EAAC1B,oBAAoB,CAAC;IAC5D,MAAM2B,WAAW,GAAG,IAAAhE,UAAA,CAAA6D,YAAY,EAACvB,eAAe,CAAC;IAEjD,MAAM2B,cAAc,GAAGvD,KAAK,CAAC4C,OAAO,CAClC,MAAMb,yBAAyB,CAACQ,SAAS,EAAEb,QAAQ,CAAC8B,MAAM,CAAC,EAC3D,CAACjB,SAAS,CAAC,CACZ;IACD,MAAMkB,gBAAgB,GAAG,IAAAnE,UAAA,CAAA6D,YAAY,EAACI,cAAc,CAAC;IACrD,MAAMG,iBAAiB,GAAG,IAAApE,UAAA,CAAA+D,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,IAAA9D,aAAA,CAAA+D,YAAY,EAACN,iBAAiB,EAAEC,wBAAwB,GAAG7B,UAAU,CAAC+B,QAAQ,GAAG,IAAI,CAAC;IAEvG,MAAMI,YAAY,GAAGjE,KAAK,CAACkE,MAAM,CAACrB,KAAK,CAAC;IACxC7C,KAAK,CAACmE,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,GAA0BtE,KAAK,CAAC4C,OAAO,CAAC,MAAK;MAC9D,IAAIa,gBAAgB,CAACc,IAAI,KAAK,SAAS,EAAE;QACvC,MAAMC,UAAU,GAAG9E,KAAK,CAAC+E,aAAa,CAAChB,gBAAgB,CAACiB,KAAK,CAAC;QAC9D,IAAI9E,MAAM,CAAC+E,MAAM,CAACH,UAAU,CAAC,IAAI3E,WAAW,CAAC+E,YAAY,CAACJ,UAAU,CAAC3B,KAAK,CAAC,EAAE;UAC3E,OAAOrD,WAAA,CAAAqF,UAAU,CAACC,iBAAiB,CAACN,UAAU,CAAC3B,KAAK,CAAC;QACvD;MACF;MACA,OAAOjD,MAAM,CAACmF,IAAI,EAAE;IACtB,CAAC,EAAE,CAACtB,gBAAgB,CAAC,CAAC;IAEtB,MAAMuB,eAAe,GAAGpF,MAAM,CAAC+E,MAAM,CAACL,aAAa,CAAC,GAAGA,aAAa,GAAGpB,eAAe;IAEtF,MAAM+B,QAAQ,GAAGjF,KAAK,CAACkF,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,IAAA3F,KAAA,CAAAgG,eAAe,EAACF,SAAS,EAAEhD,SAAS,CAAC,EAAE;YAC1C8C,IAAI,CAACtE,GAAG,CAACwE,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,GAAG3F,KAAK,CAACkF,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,IAAAtG,UAAA,CAAA6D,YAAY,EAACtB,eAAe,CAAC;IACjD,MAAMgE,OAAO,GAAG7F,KAAK,CAAC4C,OAAO,CAC3B,MAAM,IAAAnD,KAAA,CAAAqG,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,GAAkBlG,KAAK,CAAC4C,OAAO,CAAC,OAAO;MACrDC,KAAK;MACLoC,QAAQ;MACRU,MAAM;MACNQ,KAAK,EAAEF,eAAe,GAAGjB,eAAe,GAAGpF,MAAM,CAACmF,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,OAAOnC,KAAK,CAACwG,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,GAAGhH,GAAG,CAACiH,aAAa,CAACL,GAAG,CAACM,UAAU,CAACC,GAAG,CAAC;EAE5D,MAAMC,YAAY,GAEbA,CAAC;IAAEC;EAAQ,CAAE,KAAI;IACpB,MAAM/E,QAAQ,GAAG,IAAArC,MAAA,CAAAsC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAM,CAAC+F,eAAe,EAAEC,YAAY,CAAC,GAAG,IAAA/H,UAAA,CAAAyD,OAAO,EAAC4D,SAAS,CAAC;IAC1D,MAAMW,SAAS,GAAG1H,MAAM,CAAC2H,UAAU,CAACH,eAAe,CAAC;IAEpD,MAAM7E,SAAS,GAAGH,QAAQ,GAAG,GAAGA,QAAQ,CAACI,UAAU,IAAIf,QAAQ,EAAE,GAAGA,QAAQ;IAC5E,MAAM+F,KAAK,GAAGxH,KAAK,CAAC4C,OAAO,CACzB,MAAO,IAAAnD,KAAA,CAAAgI,cAAc,EAACH,SAAS,CAACI,MAAM,EAAEnF,SAAS,CAAC,IAAI,EAA8C,EACpG,CAAC+E,SAAS,CAACI,MAAM,EAAEnF,SAAS,CAAC,CAC9B;IAED,MAAMoF,MAAM,GAAG3H,KAAK,CAACkF,WAAW,CAC7BrC,KAAgC,IAAI;MACnCwE,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAIxF,MAAM,CAACgI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAOxF,MAAM,CAACiI,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,GAAG/H,KAAK,CAACkF,WAAW,CAC7B8C,KAAa,IAAI;MAChBX,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAIxF,MAAM,CAACgI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAOxF,MAAM,CAACiI,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,GAAGlI,KAAK,CAACkF,WAAW,CAC5B,CAACiD,MAAc,EAAEC,MAAc,KAAI;MACjCf,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAIxF,MAAM,CAACgI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAOxF,MAAM,CAACiI,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,GAAGtI,KAAK,CAACkF,WAAW,CAC5B,CAACqD,IAAY,EAAEC,EAAU,KAAI;MAC3BnB,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAIxF,MAAM,CAACgI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAOxF,MAAM,CAACiI,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,IAAArC,MAAA,CAAAsC,UAAU,EAAChB,gBAAgB,CAAC;IAC7C,MAAMgG,YAAY,GAAG,IAAA/H,UAAA,CAAA+D,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,GAAG/H,KAAK,CAACkF,WAAW,CAAC,MAAK;MACpCmC,YAAY,CAAEjC,IAAI,IAAI;QACpB,IAAIxF,MAAM,CAACgI,MAAM,CAACxC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAOxF,MAAM,CAACiI,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,GAAG5J,WAAA,CAAA6J,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;IAC7BpG,GAAGA,CAAC6I,MAAM,EAAEZ,IAAI;MACd,IAAIA,IAAI,IAAIS,UAAU,EAAE;QACtB,OAAOA,UAAU,CAACT,IAAc,CAAC;MACnC;MACA,OAAOa,OAAO,CAAC9I,GAAG,CAAC6I,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,IAAIxF,MAAM,CAAC+I,OAAO,CAACH,MAAM,CAAC,EAAE;IAC/C,IAAItK,WAAA,CAAA6J,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,IAAI3K,WAAA,CAAA6J,KAAK,CAACe,UAAU,CAAC1D,GAAG,CAAC,EAAE;MAChC,MAAM2D,cAAc,GAAIxD,YAAwE,CAACmD,GAAG,CAAC;MACrGD,UAAU,CAACC,GAAG,CAAC,GAAGxI,kBAAkB,CAClCwI,GAAG,EACHtD,GAAG,EACH/E,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrBqI,cAAc,CACf;IACH;EACF;EAEA,OAAON,UAA0C;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAMO,KAAK,GAAGA,CASnBC,IAAyC,EACzCC,OAYC,KAC8C;EAC/C,MAAM;IAAEV,MAAM,EAAEC,UAAU;IAAEU,IAAI;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGH,OAAO;EAC/D,MAAM1I,UAAU,GAAGtC,WAAA,CAAAoL,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;EACnC,MAAM;IAAEX;EAAM,CAAE,GAAGS,IAAI;EAEvB,MAAMO,SAAS,GAAsDtL,WAAA,CAAAuL,SAAS,CAACC,IAAI,CAAC;IAClFC,WAAW,EAAEV,IAAI;IACjBI,OAAO;IACPD;GACD,CAAC;EAEF,MAAM;IACJQ,cAAc;IACdvJ,oBAAoB;IACpBE,eAAe;IACfsJ,SAAS;IACTC,YAAY;IACZpJ,qBAAqB;IACrBD,yBAAyB;IACzBsJ,yBAAyB;IACzBC,WAAW;IACXC,uBAAuB;IACvB3E,UAAU;IACV4E,SAAS;IACTC,sBAAsB;IACtB3I,QAAQ;IACR4I,aAAa;IACb/E,SAAS;IACTgF,UAAU;IACV/J,eAAe;IACfgK;EAAU,CACX,GAAGd,SAAS;EAEb,MAAMe,mBAAmB,GAGpBA,CAAC;IAAE1E,QAAQ;IAAE2E;EAAa,CAAE,KAAI;IACnC,MAAMC,QAAQ,GAAG/L,KAAK,CAACqC,UAAU,CAAC/C,UAAA,CAAA0M,eAAe,CAAC;IAClD,MAAMC,KAAK,GAAG,IAAA3M,UAAA,CAAA6D,YAAY,EAACwD,SAAS,CAAC;IACrC,MAAMU,YAAY,GAAG,IAAA/H,UAAA,CAAA+D,UAAU,EAACsD,SAAS,CAAC;IAC1C,MAAMuF,UAAU,GAAG,IAAA5M,UAAA,CAAA+D,UAAU,EAACsI,UAAU,CAAC;IACzC,MAAMQ,gBAAgB,GAAGnM,KAAK,CAACkE,MAAM,CAAC,KAAK,CAAC;IAE5ClE,KAAK,CAACmE,SAAS,CAAC,MAAK;MACnBkD,YAAY,CAACzH,MAAM,CAACiI,IAAI,CAACjB,UAAU,CAACwF,kBAAkB,CAACN,aAAa,CAAC,CAAC,CAAC;MACvEK,gBAAgB,CAAC/H,OAAO,GAAG,IAAI;MAC/B;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMiI,mBAAmB,GAAG,IAAApM,aAAA,CAAA+D,YAAY,EAAC,MAAK;MAC5C,MAAMsI,WAAW,GAAGP,QAAQ,CAACjL,GAAG,CAAC6F,SAAS,CAAC;MAC3C,IAAI/G,MAAM,CAACgI,MAAM,CAAC0E,WAAW,CAAC,EAAE;MAChCJ,UAAU,CAACK,SAAuB,CAAC;IACrC,CAAC,EAAEzK,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,UAAU,GAAG9B,UAAU,CAAC+B,QAAQ,GAAG,IAAI,CAAC;IAE9F,IAAAvE,UAAA,CAAAkN,gBAAgB,EACd7F,SAAS,EACT3G,KAAK,CAACkF,WAAW,CAAC,MAAK;MACrB,IAAI,CAACiH,gBAAgB,CAAC/H,OAAO,EAAE;MAC/B,IAAItC,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,UAAU,EAAE;QACjEyI,mBAAmB,EAAE;MACvB;IACF,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC,EACzB;MAAEI,SAAS,EAAE;IAAK,CAAE,CACrB;IAED,MAAMC,gBAAgB,GAAG1M,KAAK,CAACkF,WAAW,CAAC,MAAK;MAC9C,IAAIpD,UAAU,CAACgC,UAAU,IAAIhC,UAAU,CAAC8B,UAAU,KAAK,QAAQ,EAAE;QAC/D,MAAM0I,WAAW,GAAGP,QAAQ,CAACjL,GAAG,CAAC6F,SAAS,CAAC;QAC3C,IAAI/G,MAAM,CAACgI,MAAM,CAAC0E,WAAW,CAAC,EAAE;QAChCJ,UAAU,CAACK,SAAuB,CAAC;MACrC;IACF,CAAC,EAAE,CAACR,QAAQ,EAAEG,UAAU,CAAC,CAAC;IAE1B,IAAItM,MAAM,CAACgI,MAAM,CAACqE,KAAK,CAAC,EAAE,OAAO,IAAI;IAErC,OACE,IAAA7F,WAAA,CAAAC,GAAA,EAAC9E,iBAAiB,CAACsH,QAAQ;MAAChG,KAAK,EAAE6J,gBAAgB;MAAAvF,QAAA,EACjD,IAAAf,WAAA,CAAAC,GAAA;QACEqE,QAAQ,EAAGxK,CAAC,IAAI;UACdA,CAAC,CAACyM,cAAc,EAAE;UAClBzM,CAAC,CAAC0M,eAAe,EAAE;QACrB,CAAC;QAAAzF,QAAA,EAEAA;MAAQ;IACJ,EACoB;EAEjC,CAAC;EAED,MAAM0F,eAAe,GAAGhD,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,EAAEkE,UAAU;IAClB/F,OAAO,EAAEyF,WAAW;IACpBwB,qBAAqB,EAAEzB,yBAAyB;IAChD0B,mBAAmB,EAAExB,uBAAuB;IAC5CjI,WAAW,EAAE1B,eAAe;IAC5B4B,MAAM,EAAE0H,cAAc;IACtBpB,MAAM,EAAEqB,SAAS;IACjB6B,UAAU,EAAEnB,mBAAmB;IAC/BoB,MAAM,EAAEtB,UAAU;IAClBuB,KAAK,EAAE1B,SAAS;IAChB2B,kBAAkB,EAAE1B,sBAAsB;IAC1C2B,SAAS,EAAE1B,aAAa;IACxB5I,QAAQ;IACRsI,YAAY;IACZ,GAAGyB;GAC2C;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAQ,OAAA,CAAA/C,KAAA,GAAAA,KAAA;AA2BO,MAAMgD,QAAQ,GAYhBC,MAAe,IAAMC,SAAkB,IAAKA,SAAgB;AAAAH,OAAA,CAAAC,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
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":"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","ignoreList":[]}
|
package/dist/dts/FormReact.d.ts
CHANGED
|
@@ -30,12 +30,23 @@ export interface FieldComponentProps<S extends Schema.Schema.Any, P extends Reco
|
|
|
30
30
|
readonly field: FieldState<S>;
|
|
31
31
|
readonly props: P;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* A bundled field definition + component for reusable form fields.
|
|
35
|
+
* Created with `FormReact.makeField`.
|
|
36
|
+
*
|
|
37
|
+
* @category Models
|
|
38
|
+
*/
|
|
39
|
+
export interface FieldBundle<K extends string, S extends Schema.Schema.Any, P extends Record<string, unknown> = Record<string, never>> {
|
|
40
|
+
readonly _tag: "FieldBundle";
|
|
41
|
+
readonly field: Field.FieldDef<K, S>;
|
|
42
|
+
readonly component: React.FC<FieldComponentProps<S, P>>;
|
|
43
|
+
}
|
|
33
44
|
/**
|
|
34
45
|
* Extracts the extra props type from a field component.
|
|
35
46
|
*
|
|
36
47
|
* @category Type-level utilities
|
|
37
48
|
*/
|
|
38
|
-
export type ExtractExtraProps<C> = C extends React.FC<FieldComponentProps<any, infer P>> ? P : Record<string, never>;
|
|
49
|
+
export type ExtractExtraProps<C> = C extends React.FC<FieldComponentProps<any, infer P>> ? P : C extends FieldBundle<any, any, infer P> ? P : Record<string, never>;
|
|
39
50
|
/**
|
|
40
51
|
* Extracts field component map for array item schemas.
|
|
41
52
|
* - For Struct schemas: returns a map of field names to components
|
|
@@ -52,7 +63,7 @@ export type ArrayItemComponentMap<S extends Schema.Schema.Any> = S extends Schem
|
|
|
52
63
|
* @category Models
|
|
53
64
|
*/
|
|
54
65
|
export type FieldComponentMap<TFields extends Field.FieldsRecord> = {
|
|
55
|
-
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S> ? React.FC<FieldComponentProps<S, any>> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? ArrayItemComponentMap<S> : never;
|
|
66
|
+
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S> ? React.FC<FieldComponentProps<S, any>> | FieldBundle<any, S, any> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? ArrayItemComponentMap<S> : never;
|
|
56
67
|
};
|
|
57
68
|
/**
|
|
58
69
|
* Maps field names to their type-safe Field references for setValue operations.
|
|
@@ -95,7 +106,7 @@ export type BuiltForm<TFields extends Field.FieldsRecord, R, A = void, E = never
|
|
|
95
106
|
readonly revertToLastSubmit: Atom.Writable<void, void>;
|
|
96
107
|
readonly setValues: Atom.Writable<void, Field.EncodedFromFields<TFields>>;
|
|
97
108
|
readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>;
|
|
98
|
-
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<S
|
|
109
|
+
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>;
|
|
99
110
|
} & FieldComponents<TFields, CM>;
|
|
100
111
|
type FieldComponents<TFields extends Field.FieldsRecord, CM extends FieldComponentMap<TFields>> = {
|
|
101
112
|
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;
|
|
@@ -179,35 +190,79 @@ export declare const build: <TFields extends Field.FieldsRecord, R, A, E, Submit
|
|
|
179
190
|
}) => A | Effect.Effect<A, E, R>;
|
|
180
191
|
}) => BuiltForm<TFields, R, A, E, SubmitArgs, CM>;
|
|
181
192
|
/**
|
|
182
|
-
* A curried helper that infers the schema type from a field definition
|
|
193
|
+
* A curried helper that infers the schema type from a field definition.
|
|
183
194
|
* Provides ergonomic type inference when defining field components.
|
|
184
195
|
*
|
|
185
196
|
* @example
|
|
186
197
|
* ```tsx
|
|
187
|
-
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
198
|
+
* import { Field, FormReact } from "@lucas-barake/effect-form-react"
|
|
188
199
|
*
|
|
189
|
-
* // Using a FieldRef from the built form
|
|
190
|
-
* const TextInput = FormReact.forField(form.fields.email)(({ field }) => (
|
|
191
|
-
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
192
|
-
* ))
|
|
193
|
-
*
|
|
194
|
-
* // Using a FieldDef (for reusable fields)
|
|
195
200
|
* const EmailField = Field.makeField("email", Schema.String)
|
|
196
201
|
* const TextInput = FormReact.forField(EmailField)(({ field }) => (
|
|
197
202
|
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
198
203
|
* ))
|
|
199
204
|
*
|
|
200
205
|
* // With extra props - just specify the props type
|
|
201
|
-
* const TextInput = FormReact.forField(
|
|
206
|
+
* const TextInput = FormReact.forField(EmailField)<{ placeholder?: string }>(({ field, props }) => (
|
|
202
207
|
* <input value={field.value} placeholder={props.placeholder} ... />
|
|
203
208
|
* ))
|
|
204
209
|
* ```
|
|
205
210
|
*
|
|
206
211
|
* @category Constructors
|
|
207
212
|
*/
|
|
208
|
-
export declare const forField:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
213
|
+
export declare const forField: <K extends string, S extends Schema.Schema.Any>(_field: Field.FieldDef<K, S>) => <P extends Record<string, unknown> = Record<string, never>>(component: React.FC<FieldComponentProps<S, P>>) => React.FC<FieldComponentProps<S, P>>;
|
|
214
|
+
/**
|
|
215
|
+
* Creates a bundled field definition + component for reusable form fields.
|
|
216
|
+
* Reduces boilerplate when you need both a field and its component together.
|
|
217
|
+
*
|
|
218
|
+
* Uses a curried API for better type inference - the schema type is captured
|
|
219
|
+
* first, so you only need to specify the extra props type (if any).
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```tsx
|
|
223
|
+
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
224
|
+
* import * as Schema from "effect/Schema"
|
|
225
|
+
*
|
|
226
|
+
* // Define field + component in one place (no extra props)
|
|
227
|
+
* const NameInput = FormReact.makeField({
|
|
228
|
+
* key: "name",
|
|
229
|
+
* schema: Schema.String.pipe(Schema.nonEmptyString()),
|
|
230
|
+
* })(({ field }) => (
|
|
231
|
+
* <input
|
|
232
|
+
* value={field.value}
|
|
233
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
234
|
+
* onBlur={field.onBlur}
|
|
235
|
+
* />
|
|
236
|
+
* ))
|
|
237
|
+
*
|
|
238
|
+
* // With extra props - specify only the props type
|
|
239
|
+
* const EmailInput = FormReact.makeField({
|
|
240
|
+
* key: "email",
|
|
241
|
+
* schema: Schema.String,
|
|
242
|
+
* })<{ placeholder: string }>(({ field, props }) => (
|
|
243
|
+
* <input
|
|
244
|
+
* value={field.value}
|
|
245
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
246
|
+
* placeholder={props.placeholder}
|
|
247
|
+
* />
|
|
248
|
+
* ))
|
|
249
|
+
*
|
|
250
|
+
* // Use in form builder
|
|
251
|
+
* const form = FormBuilder.empty.addField(NameInput.field)
|
|
252
|
+
*
|
|
253
|
+
* // Use in build()
|
|
254
|
+
* const Form = FormReact.build(form, {
|
|
255
|
+
* runtime,
|
|
256
|
+
* fields: { name: NameInput },
|
|
257
|
+
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|
|
258
|
+
* })
|
|
259
|
+
* ```
|
|
260
|
+
*
|
|
261
|
+
* @category Constructors
|
|
262
|
+
*/
|
|
263
|
+
export declare const makeField: <K extends string, S extends Schema.Schema.Any>(options: {
|
|
264
|
+
readonly key: K;
|
|
265
|
+
readonly schema: S;
|
|
266
|
+
}) => <P extends Record<string, unknown> = Record<string, never>>(component: React.FC<FieldComponentProps<S, P>>) => FieldBundle<K, S, P>;
|
|
212
267
|
export {};
|
|
213
268
|
//# sourceMappingURL=FormReact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormReact.d.ts","sourceRoot":"","sources":["../../src/FormReact.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,IAAI,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAc,MAAM,2BAA2B,CAAA;AAC9E,OAAO,KAAK,KAAK,WAAW,MAAM,uCAAuC,CAAA;AAGzE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"FormReact.d.ts","sourceRoot":"","sources":["../../src/FormReact.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/FormReact.js
CHANGED
|
@@ -5,10 +5,12 @@ import { getNestedValue, isPathOrParentDirty, isPathUnderRoot } from "@lucas-bar
|
|
|
5
5
|
import * as Cause from "effect/Cause";
|
|
6
6
|
import * as Option from "effect/Option";
|
|
7
7
|
import * as ParseResult from "effect/ParseResult";
|
|
8
|
+
import * as Predicate from "effect/Predicate";
|
|
8
9
|
import * as AST from "effect/SchemaAST";
|
|
9
10
|
import * as React from "react";
|
|
10
11
|
import { createContext, useContext } from "react";
|
|
11
12
|
import { useDebounced } from "./internal/use-debounced.js";
|
|
13
|
+
const isFieldBundle = x => Predicate.isTagged(x, "FieldBundle");
|
|
12
14
|
const ArrayItemContext = /*#__PURE__*/createContext(null);
|
|
13
15
|
const AutoSubmitContext = /*#__PURE__*/createContext(null);
|
|
14
16
|
const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
|
|
@@ -196,7 +198,8 @@ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCoun
|
|
|
196
198
|
const arrayComponentMap = componentMap[key];
|
|
197
199
|
components[key] = makeArrayFieldComponent(key, def, stateAtom, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
|
|
198
200
|
} else if (Field.isFieldDef(def)) {
|
|
199
|
-
const
|
|
201
|
+
const componentOrBundle = componentMap[key];
|
|
202
|
+
const fieldComponent = isFieldBundle(componentOrBundle) ? componentOrBundle.component : componentOrBundle;
|
|
200
203
|
components[key] = makeFieldComponent(key, def, crossFieldErrorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
|
|
201
204
|
}
|
|
202
205
|
}
|
|
@@ -354,26 +357,20 @@ export const build = (self, options) => {
|
|
|
354
357
|
};
|
|
355
358
|
};
|
|
356
359
|
/**
|
|
357
|
-
* A curried helper that infers the schema type from a field definition
|
|
360
|
+
* A curried helper that infers the schema type from a field definition.
|
|
358
361
|
* Provides ergonomic type inference when defining field components.
|
|
359
362
|
*
|
|
360
363
|
* @example
|
|
361
364
|
* ```tsx
|
|
362
|
-
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
363
|
-
*
|
|
364
|
-
* // Using a FieldRef from the built form
|
|
365
|
-
* const TextInput = FormReact.forField(form.fields.email)(({ field }) => (
|
|
366
|
-
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
367
|
-
* ))
|
|
365
|
+
* import { Field, FormReact } from "@lucas-barake/effect-form-react"
|
|
368
366
|
*
|
|
369
|
-
* // Using a FieldDef (for reusable fields)
|
|
370
367
|
* const EmailField = Field.makeField("email", Schema.String)
|
|
371
368
|
* const TextInput = FormReact.forField(EmailField)(({ field }) => (
|
|
372
369
|
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
373
370
|
* ))
|
|
374
371
|
*
|
|
375
372
|
* // With extra props - just specify the props type
|
|
376
|
-
* const TextInput = FormReact.forField(
|
|
373
|
+
* const TextInput = FormReact.forField(EmailField)<{ placeholder?: string }>(({ field, props }) => (
|
|
377
374
|
* <input value={field.value} placeholder={props.placeholder} ... />
|
|
378
375
|
* ))
|
|
379
376
|
* ```
|
|
@@ -381,4 +378,76 @@ export const build = (self, options) => {
|
|
|
381
378
|
* @category Constructors
|
|
382
379
|
*/
|
|
383
380
|
export const forField = _field => component => component;
|
|
381
|
+
/**
|
|
382
|
+
* Creates a bundled field definition + component for reusable form fields.
|
|
383
|
+
* Reduces boilerplate when you need both a field and its component together.
|
|
384
|
+
*
|
|
385
|
+
* Uses a curried API for better type inference - the schema type is captured
|
|
386
|
+
* first, so you only need to specify the extra props type (if any).
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```tsx
|
|
390
|
+
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
391
|
+
* import * as Schema from "effect/Schema"
|
|
392
|
+
*
|
|
393
|
+
* // Define field + component in one place (no extra props)
|
|
394
|
+
* const NameInput = FormReact.makeField({
|
|
395
|
+
* key: "name",
|
|
396
|
+
* schema: Schema.String.pipe(Schema.nonEmptyString()),
|
|
397
|
+
* })(({ field }) => (
|
|
398
|
+
* <input
|
|
399
|
+
* value={field.value}
|
|
400
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
401
|
+
* onBlur={field.onBlur}
|
|
402
|
+
* />
|
|
403
|
+
* ))
|
|
404
|
+
*
|
|
405
|
+
* // With extra props - specify only the props type
|
|
406
|
+
* const EmailInput = FormReact.makeField({
|
|
407
|
+
* key: "email",
|
|
408
|
+
* schema: Schema.String,
|
|
409
|
+
* })<{ placeholder: string }>(({ field, props }) => (
|
|
410
|
+
* <input
|
|
411
|
+
* value={field.value}
|
|
412
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
413
|
+
* placeholder={props.placeholder}
|
|
414
|
+
* />
|
|
415
|
+
* ))
|
|
416
|
+
*
|
|
417
|
+
* // Use in form builder
|
|
418
|
+
* const form = FormBuilder.empty.addField(NameInput.field)
|
|
419
|
+
*
|
|
420
|
+
* // Use in build()
|
|
421
|
+
* const Form = FormReact.build(form, {
|
|
422
|
+
* runtime,
|
|
423
|
+
* fields: { name: NameInput },
|
|
424
|
+
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|
|
425
|
+
* })
|
|
426
|
+
* ```
|
|
427
|
+
*
|
|
428
|
+
* @category Constructors
|
|
429
|
+
*/
|
|
430
|
+
export const makeField = options => {
|
|
431
|
+
const field = Field.makeField(options.key, options.schema);
|
|
432
|
+
return component => {
|
|
433
|
+
// DX: Auto-generate a readable component name for DevTools
|
|
434
|
+
// e.g., key "email" -> "<EmailField />"
|
|
435
|
+
if (!component.displayName) {
|
|
436
|
+
const displayName = `${options.key.charAt(0).toUpperCase()}${options.key.slice(1)}Field`;
|
|
437
|
+
// Cast to 'any' because strict TS marks function names as readonly,
|
|
438
|
+
// but React relies on mutation here.
|
|
439
|
+
try {
|
|
440
|
+
;
|
|
441
|
+
component.displayName = displayName;
|
|
442
|
+
} catch {
|
|
443
|
+
// Ignore errors in environments where function props are frozen
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return {
|
|
447
|
+
_tag: "FieldBundle",
|
|
448
|
+
field,
|
|
449
|
+
component
|
|
450
|
+
};
|
|
451
|
+
};
|
|
452
|
+
};
|
|
384
453
|
//# sourceMappingURL=FormReact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormReact.js","names":["RegistryContext","useAtom","useAtomSet","useAtomSubscribe","useAtomValue","Field","FormAtoms","Mode","Validation","getNestedValue","isPathOrParentDirty","isPathUnderRoot","Cause","Option","ParseResult","AST","React","createContext","useContext","useDebounced","ArrayItemContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","crossFieldErrorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","autoSubmitOnBlur","fieldPath","parentPath","crossFieldErrorAtom","touchedAtom","valueAtom","useMemo","value","setValue","isTouched","setTouched","crossFieldError","setCrossFieldErrors","submitCount","validationAtom","schema","validationResult","validateImmediate","shouldDebounceValidation","validation","debounce","autoSubmit","validate","prevValueRef","useRef","useEffect","current","shouldValidate","perFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","extractFirstError","none","validationError","onChange","useCallback","newValue","prev","next","Map","errorPath","message","set","size","onBlur","dirtyFields","isDirty","isValidating","waiting","shouldShowError","fieldState","error","_jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","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","makeField","itemComponent","properties","Item","Proxy","get","target","Reflect","makeFieldComponents","fields","components","key","Object","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","fieldComponent","build","self","options","mode","onSubmit","runtime","parse","formAtoms","make","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","lastSubmittedValuesAtom","resetAtom","revertToLastSubmitAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","state","callSubmit","isInitializedRef","createInitialState","debouncedAutoSubmit","stateOption","undefined","immediate","onBlurAutoSubmit","e","preventDefault","stopPropagation","fieldComponents","hasChangedSinceSubmit","lastSubmittedValues","Initialize","submit","reset","revertToLastSubmit","setValues","forField","_field","component"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,eAAe,EAAEC,OAAO,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,YAAY,QAAQ,yBAAyB;AAE9G,SAASC,KAAK,EAAEC,SAAS,EAAEC,IAAI,EAAEC,UAAU,QAAQ,2BAA2B;AAE9E,SAASC,cAAc,EAAEC,mBAAmB,EAAEC,eAAe,QAAQ,gCAAgC;AACrG,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,WAAW,MAAM,oBAAoB;AAEjD,OAAO,KAAKC,GAAG,MAAM,kBAAkB;AACvC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AACjD,SAASC,YAAY,QAAQ,6BAA6B;AA0J1D,MAAMC,gBAAgB,gBAAGH,aAAa,CAA+B,IAAI,CAAC;AAC1E,MAAMI,iBAAiB,gBAAGJ,aAAa,CAAsB,IAAI,CAAC;AAElE,MAAMK,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,GAAGhB,UAAU,CAACE,gBAAgB,CAAC;IAC7C,MAAMe,gBAAgB,GAAGjB,UAAU,CAACG,iBAAiB,CAAC;IACtD,MAAMe,SAAS,GAAGF,QAAQ,GAAG,GAAGA,QAAQ,CAACG,UAAU,IAAId,QAAQ,EAAE,GAAGA,QAAQ;IAE5E,MAAM;MAAEe,mBAAmB;MAAEC,WAAW;MAAEC;IAAS,CAAE,GAAGxB,KAAK,CAACyB,OAAO,CACnE,MAAMX,qBAAqB,CAACM,SAAS,CAAC,EACtC,CAACA,SAAS,CAAC,CACZ;IAED,MAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAG1C,OAAO,CAACuC,SAAS,CAAqD;IAChG,MAAM,CAACI,SAAS,EAAEC,UAAU,CAAC,GAAG5C,OAAO,CAACsC,WAAW,CAAC;IACpD,MAAMO,eAAe,GAAG1C,YAAY,CAACkC,mBAAmB,CAAC;IACzD,MAAMS,mBAAmB,GAAG7C,UAAU,CAACuB,oBAAoB,CAAC;IAC5D,MAAMuB,WAAW,GAAG5C,YAAY,CAACsB,eAAe,CAAC;IAEjD,MAAMuB,cAAc,GAAGjC,KAAK,CAACyB,OAAO,CAClC,MAAMZ,yBAAyB,CAACO,SAAS,EAAEZ,QAAQ,CAAC0B,MAAM,CAAC,EAC3D,CAACd,SAAS,CAAC,CACZ;IACD,MAAMe,gBAAgB,GAAG/C,YAAY,CAAC6C,cAAc,CAAC;IACrD,MAAMG,iBAAiB,GAAGlD,UAAU,CAAC+C,cAAc,CAAC;IAEpD,MAAMI,wBAAwB,GAAGzB,UAAU,CAAC0B,UAAU,KAAK,UAAU,IAChE1B,UAAU,CAAC2B,QAAQ,KAAK,IAAI,IAC5B,CAAC3B,UAAU,CAAC4B,UAAU;IAC3B,MAAMC,QAAQ,GAAGtC,YAAY,CAACiC,iBAAiB,EAAEC,wBAAwB,GAAGzB,UAAU,CAAC2B,QAAQ,GAAG,IAAI,CAAC;IAEvG,MAAMG,YAAY,GAAG1C,KAAK,CAAC2C,MAAM,CAACjB,KAAK,CAAC;IACxC1B,KAAK,CAAC4C,SAAS,CAAC,MAAK;MACnB,IAAIF,YAAY,CAACG,OAAO,KAAKnB,KAAK,EAAE;QAClC;MACF;MACAgB,YAAY,CAACG,OAAO,GAAGnB,KAAK;MAE5B,MAAMoB,cAAc,GAAGlC,UAAU,CAAC0B,UAAU,KAAK,UAAU,IACrD1B,UAAU,CAAC0B,UAAU,KAAK,QAAQ,IAAIV,SAAU;MAEtD,IAAIkB,cAAc,EAAE;QAClBL,QAAQ,CAACf,KAAK,CAAC;MACjB;IACF,CAAC,EAAE,CAACA,KAAK,EAAEE,SAAS,EAAEa,QAAQ,CAAC,CAAC;IAEhC,MAAMM,aAAa,GAA0B/C,KAAK,CAACyB,OAAO,CAAC,MAAK;MAC9D,IAAIU,gBAAgB,CAACa,IAAI,KAAK,SAAS,EAAE;QACvC,MAAMC,UAAU,GAAGrD,KAAK,CAACsD,aAAa,CAACf,gBAAgB,CAACgB,KAAK,CAAC;QAC9D,IAAItD,MAAM,CAACuD,MAAM,CAACH,UAAU,CAAC,IAAInD,WAAW,CAACuD,YAAY,CAACJ,UAAU,CAACvB,KAAK,CAAC,EAAE;UAC3E,OAAOlC,UAAU,CAAC8D,iBAAiB,CAACL,UAAU,CAACvB,KAAK,CAAC;QACvD;MACF;MACA,OAAO7B,MAAM,CAAC0D,IAAI,EAAE;IACtB,CAAC,EAAE,CAACpB,gBAAgB,CAAC,CAAC;IAEtB,MAAMqB,eAAe,GAAG3D,MAAM,CAACuD,MAAM,CAACL,aAAa,CAAC,GAAGA,aAAa,GAAGjB,eAAe;IAEtF,MAAM2B,QAAQ,GAAGzD,KAAK,CAAC0D,WAAW,CAC/BC,QAAkC,IAAI;MACrChC,QAAQ,CAACgC,QAAQ,CAAC;MAClB5B,mBAAmB,CAAE6B,IAAI,IAAI;QAC3B,MAAMC,IAAI,GAAG,IAAIC,GAAG,EAAkB;QACtC,KAAK,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,IAAIJ,IAAI,EAAE;UACvC,IAAI,CAACjE,eAAe,CAACoE,SAAS,EAAE3C,SAAS,CAAC,EAAE;YAC1CyC,IAAI,CAACI,GAAG,CAACF,SAAS,EAAEC,OAAO,CAAC;UAC9B;QACF;QACA,OAAOH,IAAI,CAACK,IAAI,KAAKN,IAAI,CAACM,IAAI,GAAGL,IAAI,GAAGD,IAAI;MAC9C,CAAC,CAAC;MACF,IAAIhD,UAAU,CAAC0B,UAAU,KAAK,UAAU,EAAE;QACxCG,QAAQ,CAACkB,QAAQ,CAAC;MACpB;IACF,CAAC,EACD,CAACvC,SAAS,EAAEO,QAAQ,EAAEI,mBAAmB,EAAEU,QAAQ,CAAC,CACrD;IAED,MAAM0B,MAAM,GAAGnE,KAAK,CAAC0D,WAAW,CAAC,MAAK;MACpC7B,UAAU,CAAC,IAAI,CAAC;MAChB,IAAIjB,UAAU,CAAC0B,UAAU,KAAK,QAAQ,EAAE;QACtCG,QAAQ,CAACf,KAAK,CAAC;MACjB;MACAP,gBAAgB,GAAE,CAAE;IACtB,CAAC,EAAE,CAACU,UAAU,EAAEY,QAAQ,EAAEf,KAAK,EAAEP,gBAAgB,CAAC,CAAC;IAEnD,MAAMiD,WAAW,GAAGhF,YAAY,CAACuB,eAAe,CAAC;IACjD,MAAM0D,OAAO,GAAGrE,KAAK,CAACyB,OAAO,CAC3B,MAAM/B,mBAAmB,CAAC0E,WAAW,EAAEhD,SAAS,CAAC,EACjD,CAACgD,WAAW,EAAEhD,SAAS,CAAC,CACzB;IACD,MAAMkD,YAAY,GAAGnC,gBAAgB,CAACoC,OAAO;IAC7C,MAAMC,eAAe,GAAG5C,SAAS,IAAII,WAAW,GAAG,CAAC;IAEpD,MAAMyC,UAAU,GAAkBzE,KAAK,CAACyB,OAAO,CAAC,OAAO;MACrDC,KAAK;MACL+B,QAAQ;MACRU,MAAM;MACNO,KAAK,EAAEF,eAAe,GAAGhB,eAAe,GAAG3D,MAAM,CAAC0D,IAAI,EAAU;MAChE3B,SAAS;MACT0C,YAAY;MACZD;KACD,CAAC,EAAE,CAAC3C,KAAK,EAAE+B,QAAQ,EAAEU,MAAM,EAAEK,eAAe,EAAEhB,eAAe,EAAE5B,SAAS,EAAE0C,YAAY,EAAED,OAAO,CAAC,CAAC;IAElG,OAAOM,IAAA,CAAC5D,SAAS;MAAC6D,KAAK,EAAEH,UAAU;MAAEI,KAAK,EAAE5D;IAAU,EAAI;EAC5D,CAAC;EAED,OAAOjB,KAAK,CAAC8E,IAAI,CAAC9D,cAAc,CAAgB;AAClD,CAAC;AAED,MAAM+D,uBAAuB,GAAGA,CAC9BxE,QAAgB,EAChByE,GAAmC,EACnCC,SAA8G,EAC9GxE,oBAA6E,EAC7EC,eAAkC,EAClCC,eAA+C,EAC/CC,UAA2B,EAC3BC,yBAG6D,EAC7DC,qBAAkE,EAClEoE,UAAyC,EACzCC,YAAsC,KACP;EAC/B,MAAMC,cAAc,GAAGrF,GAAG,CAACsF,aAAa,CAACL,GAAG,CAACM,UAAU,CAACC,GAAG,CAAC;EAE5D,MAAMC,YAAY,GAEbA,CAAC;IAAEC;EAAQ,CAAE,KAAI;IACpB,MAAMvE,QAAQ,GAAGhB,UAAU,CAACE,gBAAgB,CAAC;IAC7C,MAAM,CAACsF,eAAe,EAAEC,YAAY,CAAC,GAAG1G,OAAO,CAACgG,SAAS,CAAC;IAC1D,MAAMW,SAAS,GAAG/F,MAAM,CAACgG,UAAU,CAACH,eAAe,CAAC;IAEpD,MAAMtE,SAAS,GAAGF,QAAQ,GAAG,GAAGA,QAAQ,CAACG,UAAU,IAAId,QAAQ,EAAE,GAAGA,QAAQ;IAC5E,MAAMuF,KAAK,GAAG9F,KAAK,CAACyB,OAAO,CACzB,MAAOhC,cAAc,CAACmG,SAAS,CAACG,MAAM,EAAE3E,SAAS,CAAC,IAAI,EAA8C,EACpG,CAACwE,SAAS,CAACG,MAAM,EAAE3E,SAAS,CAAC,CAC9B;IAED,MAAM4E,MAAM,GAAGhG,KAAK,CAAC0D,WAAW,CAC7BhC,KAAgC,IAAI;MACnCiE,YAAY,CAAE/B,IAAI,IAAI;QACpB,IAAI/D,MAAM,CAACoG,MAAM,CAACrC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO/D,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAACiB,eAAe,CAACvC,IAAI,CAAClC,KAAK,EAAEN,SAAS,EAAE4D,GAAG,CAACM,UAAU,EAAE5D,KAAK,CAAC,CAAC;MAC9F,CAAC,CAAC;IACJ,CAAC,EACD,CAACN,SAAS,EAAEuE,YAAY,CAAC,CAC1B;IAED,MAAMS,MAAM,GAAGpG,KAAK,CAAC0D,WAAW,CAC7B2C,KAAa,IAAI;MAChBV,YAAY,CAAE/B,IAAI,IAAI;QACpB,IAAI/D,MAAM,CAACoG,MAAM,CAACrC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO/D,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAACoB,eAAe,CAAC1C,IAAI,CAAClC,KAAK,EAAEN,SAAS,EAAEiF,KAAK,CAAC,CAAC;MAC9E,CAAC,CAAC;IACJ,CAAC,EACD,CAACjF,SAAS,EAAEuE,YAAY,CAAC,CAC1B;IAED,MAAMY,IAAI,GAAGvG,KAAK,CAAC0D,WAAW,CAC5B,CAAC8C,MAAc,EAAEC,MAAc,KAAI;MACjCd,YAAY,CAAE/B,IAAI,IAAI;QACpB,IAAI/D,MAAM,CAACoG,MAAM,CAACrC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO/D,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAACwB,cAAc,CAAC9C,IAAI,CAAClC,KAAK,EAAEN,SAAS,EAAEoF,MAAM,EAAEC,MAAM,CAAC,CAAC;MACtF,CAAC,CAAC;IACJ,CAAC,EACD,CAACrF,SAAS,EAAEuE,YAAY,CAAC,CAC1B;IAED,MAAMgB,IAAI,GAAG3G,KAAK,CAAC0D,WAAW,CAC5B,CAACkD,IAAY,EAAEC,EAAU,KAAI;MAC3BlB,YAAY,CAAE/B,IAAI,IAAI;QACpB,IAAI/D,MAAM,CAACoG,MAAM,CAACrC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO/D,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAAC4B,aAAa,CAAClD,IAAI,CAAClC,KAAK,EAAEN,SAAS,EAAEwF,IAAI,EAAEC,EAAE,CAAC,CAAC;MAC/E,CAAC,CAAC;IACJ,CAAC,EACD,CAACzF,SAAS,EAAEuE,YAAY,CAAC,CAC1B;IAED,OAAOhB,IAAA,CAAAoC,SAAA;MAAAtB,QAAA,EAAGA,QAAQ,CAAC;QAAEK,KAAK;QAAEE,MAAM;QAAEI,MAAM;QAAEG,IAAI;QAAEI;MAAI,CAAE;IAAC,EAAI;EAC/D,CAAC;EAED,MAAMK,WAAW,GAGZA,CAAC;IAAEvB,QAAQ;IAAEY;EAAK,CAAE,KAAI;IAC3B,MAAMnF,QAAQ,GAAGhB,UAAU,CAACE,gBAAgB,CAAC;IAC7C,MAAMuF,YAAY,GAAGzG,UAAU,CAAC+F,SAAS,CAAC;IAE1C,MAAM5D,UAAU,GAAGH,QAAQ,GAAG,GAAGA,QAAQ,CAACG,UAAU,IAAId,QAAQ,EAAE,GAAGA,QAAQ;IAC7E,MAAM0G,QAAQ,GAAG,GAAG5F,UAAU,IAAIgF,KAAK,GAAG;IAE1C,MAAMD,MAAM,GAAGpG,KAAK,CAAC0D,WAAW,CAAC,MAAK;MACpCiC,YAAY,CAAE/B,IAAI,IAAI;QACpB,IAAI/D,MAAM,CAACoG,MAAM,CAACrC,IAAI,CAAC,EAAE,OAAOA,IAAI;QACpC,OAAO/D,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAACoB,eAAe,CAAC1C,IAAI,CAAClC,KAAK,EAAEL,UAAU,EAAEgF,KAAK,CAAC,CAAC;MAC/E,CAAC,CAAC;IACJ,CAAC,EAAE,CAAChF,UAAU,EAAEgF,KAAK,EAAEV,YAAY,CAAC,CAAC;IAErC,OACEhB,IAAA,CAACvE,gBAAgB,CAAC8G,QAAQ;MAACxF,KAAK,EAAE;QAAE2E,KAAK;QAAEhF,UAAU,EAAE4F;MAAQ,CAAE;MAAAxB,QAAA,EAC9D,OAAOA,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAAC;QAAEW;MAAM,CAAE,CAAC,GAAGX;IAAQ,EACvC;EAEhC,CAAC;EAED,MAAM0B,mBAAmB,GAA6B,EAAE;EAExD,IAAI/B,cAAc,EAAE;IAClB,MAAMG,GAAG,GAAGP,GAAG,CAACM,UAAU,CAACC,GAAsB;IACjD,KAAK,MAAM6B,IAAI,IAAI7B,GAAG,CAAC8B,kBAAkB,EAAE;MACzC,MAAMC,OAAO,GAAGF,IAAI,CAACG,IAAc;MACnC,MAAMjC,UAAU,GAAG;QAAEC,GAAG,EAAE6B,IAAI,CAACI;MAAI,CAAuB;MAC1D,MAAMC,OAAO,GAAGpI,KAAK,CAACqI,SAAS,CAACJ,OAAO,EAAEhC,UAAU,CAAC;MACpD,MAAMqC,aAAa,GAAIxC,YAAwE,CAACmC,OAAO,CAAC;MACxGH,mBAAmB,CAACG,OAAO,CAAC,GAAGhH,kBAAkB,CAC/CgH,OAAO,EACPG,OAAO,EACPhH,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrB6G,aAAa,CACd;IACH;EACF;EAEA,MAAMC,UAAU,GAA4B;IAC1CC,IAAI,EAAEb,WAAW;IACjB,GAAGG;GACJ;EAED;EACA,OAAO,IAAIW,KAAK,CAACtC,YAAY,EAAE;IAC7BuC,GAAGA,CAACC,MAAM,EAAEZ,IAAI;MACd,IAAIA,IAAI,IAAIQ,UAAU,EAAE;QACtB,OAAOA,UAAU,CAACR,IAAc,CAAC;MACnC;MACA,OAAOa,OAAO,CAACF,GAAG,CAACC,MAAM,EAAEZ,IAAI,CAAC;IAClC;GACD,CAAgC;AACnC,CAAC;AAED,MAAMc,mBAAmB,GAAGA,CAI1BC,MAAe,EACflD,SAGC,EACDxE,oBAA6E,EAC7EC,eAAkC,EAClCC,eAA+C,EAC/CC,UAA2B,EAC3BC,yBAG6D,EAC7DC,qBAAkE,EAClEoE,UAA6C,EAC7CC,YAAgB,KACgB;EAChC,MAAMiD,UAAU,GAAwB,EAAE;EAE1C,KAAK,MAAM,CAACC,GAAG,EAAErD,GAAG,CAAC,IAAIsD,MAAM,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;IAC/C,IAAI9I,KAAK,CAACmJ,eAAe,CAACxD,GAAG,CAAC,EAAE;MAC9B,MAAMyD,iBAAiB,GAAItD,YAAoC,CAACkD,GAAG,CAAC;MACpED,UAAU,CAACC,GAAG,CAAC,GAAGtD,uBAAuB,CACvCsD,GAAG,EACHrD,GAAqD,EACrDC,SAAS,EACTxE,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrBoE,UAAU,EACVuD,iBAAiB,CAClB;IACH,CAAC,MAAM,IAAIpJ,KAAK,CAACqJ,UAAU,CAAC1D,GAAG,CAAC,EAAE;MAChC,MAAM2D,cAAc,GAAIxD,YAAwE,CAACkD,GAAG,CAAC;MACrGD,UAAU,CAACC,GAAG,CAAC,GAAG/H,kBAAkB,CAClC+H,GAAG,EACHrD,GAAG,EACHvE,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrB6H,cAAc,CACf;IACH;EACF;EAEA,OAAOP,UAA0C;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,OAAO,MAAMQ,KAAK,GAAGA,CASnBC,IAAyC,EACzCC,OAYC,KAC8C;EAC/C,MAAM;IAAEX,MAAM,EAAEC,UAAU;IAAEW,IAAI;IAAEC,QAAQ;IAAEC;EAAO,CAAE,GAAGH,OAAO;EAC/D,MAAMlI,UAAU,GAAGrB,IAAI,CAAC2J,KAAK,CAACH,IAAI,CAAC;EACnC,MAAM;IAAEZ;EAAM,CAAE,GAAGU,IAAI;EAEvB,MAAMM,SAAS,GAAsD7J,SAAS,CAAC8J,IAAI,CAAC;IAClFC,WAAW,EAAER,IAAI;IACjBI,OAAO;IACPD;GACD,CAAC;EAEF,MAAM;IACJM,cAAc;IACd7I,oBAAoB;IACpBE,eAAe;IACf4I,SAAS;IACTC,YAAY;IACZ1I,qBAAqB;IACrBD,yBAAyB;IACzB4I,yBAAyB;IACzBC,WAAW;IACXC,uBAAuB;IACvBzE,UAAU;IACV0E,SAAS;IACTC,sBAAsB;IACtBlI,QAAQ;IACRmI,aAAa;IACb7E,SAAS;IACT8E,UAAU;IACVrJ,eAAe;IACfsJ;EAAU,CACX,GAAGb,SAAS;EAEb,MAAMc,mBAAmB,GAGpBA,CAAC;IAAExE,QAAQ;IAAEyE;EAAa,CAAE,KAAI;IACnC,MAAMC,QAAQ,GAAGnK,KAAK,CAACE,UAAU,CAAClB,eAAe,CAAC;IAClD,MAAMoL,KAAK,GAAGhL,YAAY,CAAC6F,SAAS,CAAC;IACrC,MAAMU,YAAY,GAAGzG,UAAU,CAAC+F,SAAS,CAAC;IAC1C,MAAMoF,UAAU,GAAGnL,UAAU,CAAC6K,UAAU,CAAC;IACzC,MAAMO,gBAAgB,GAAGtK,KAAK,CAAC2C,MAAM,CAAC,KAAK,CAAC;IAE5C3C,KAAK,CAAC4C,SAAS,CAAC,MAAK;MACnB+C,YAAY,CAAC9F,MAAM,CAACqG,IAAI,CAAChB,UAAU,CAACqF,kBAAkB,CAACL,aAAa,CAAC,CAAC,CAAC;MACvEI,gBAAgB,CAACzH,OAAO,GAAG,IAAI;MAC/B;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM2H,mBAAmB,GAAGrK,YAAY,CAAC,MAAK;MAC5C,MAAMsK,WAAW,GAAGN,QAAQ,CAACpC,GAAG,CAAC9C,SAAS,CAAC;MAC3C,IAAIpF,MAAM,CAACoG,MAAM,CAACwE,WAAW,CAAC,EAAE;MAChCJ,UAAU,CAACK,SAAuB,CAAC;IACrC,CAAC,EAAE9J,UAAU,CAAC4B,UAAU,IAAI5B,UAAU,CAAC0B,UAAU,KAAK,UAAU,GAAG1B,UAAU,CAAC2B,QAAQ,GAAG,IAAI,CAAC;IAE9FpD,gBAAgB,CACd8F,SAAS,EACTjF,KAAK,CAAC0D,WAAW,CAAC,MAAK;MACrB,IAAI,CAAC4G,gBAAgB,CAACzH,OAAO,EAAE;MAC/B,IAAIjC,UAAU,CAAC4B,UAAU,IAAI5B,UAAU,CAAC0B,UAAU,KAAK,UAAU,EAAE;QACjEkI,mBAAmB,EAAE;MACvB;IACF,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC,EACzB;MAAEG,SAAS,EAAE;IAAK,CAAE,CACrB;IAED,MAAMC,gBAAgB,GAAG5K,KAAK,CAAC0D,WAAW,CAAC,MAAK;MAC9C,IAAI9C,UAAU,CAAC4B,UAAU,IAAI5B,UAAU,CAAC0B,UAAU,KAAK,QAAQ,EAAE;QAC/D,MAAMmI,WAAW,GAAGN,QAAQ,CAACpC,GAAG,CAAC9C,SAAS,CAAC;QAC3C,IAAIpF,MAAM,CAACoG,MAAM,CAACwE,WAAW,CAAC,EAAE;QAChCJ,UAAU,CAACK,SAAuB,CAAC;MACrC;IACF,CAAC,EAAE,CAACP,QAAQ,EAAEE,UAAU,CAAC,CAAC;IAE1B,IAAIxK,MAAM,CAACoG,MAAM,CAACmE,KAAK,CAAC,EAAE,OAAO,IAAI;IAErC,OACEzF,IAAA,CAACtE,iBAAiB,CAAC6G,QAAQ;MAACxF,KAAK,EAAEkJ,gBAAgB;MAAAnF,QAAA,EACjDd,IAAA;QACEqE,QAAQ,EAAG6B,CAAC,IAAI;UACdA,CAAC,CAACC,cAAc,EAAE;UAClBD,CAAC,CAACE,eAAe,EAAE;QACrB,CAAC;QAAAtF,QAAA,EAEAA;MAAQ;IACJ,EACoB;EAEjC,CAAC;EAED,MAAMuF,eAAe,GAAG9C,mBAAmB,CACzCC,MAAM,EACNlD,SAAS,EACTxE,oBAAoB,EACpBC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,yBAAyB,EACzBC,qBAAqB,EACrBoE,UAAU,EACVkD,UAAU,CACX;EAED,OAAO;IACLrC,MAAM,EAAEiE,UAAU;IAClB3F,OAAO,EAAEqF,WAAW;IACpBuB,qBAAqB,EAAExB,yBAAyB;IAChDyB,mBAAmB,EAAEvB,uBAAuB;IAC5C3H,WAAW,EAAEtB,eAAe;IAC5BwB,MAAM,EAAEoH,cAAc;IACtBnB,MAAM,EAAEoB,SAAS;IACjB4B,UAAU,EAAElB,mBAAmB;IAC/BmB,MAAM,EAAErB,UAAU;IAClBsB,KAAK,EAAEzB,SAAS;IAChB0B,kBAAkB,EAAEzB,sBAAsB;IAC1C0B,SAAS,EAAEzB,aAAa;IACxBnI,QAAQ;IACR6H,YAAY;IACZ,GAAGwB;GAC2C;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMQ,QAAQ,GAYhBC,MAAe,IAAMC,SAAkB,IAAKA,SAAgB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormReact.js","names":["RegistryContext","useAtom","useAtomSet","useAtomSubscribe","useAtomValue","Field","FormAtoms","Mode","Validation","getNestedValue","isPathOrParentDirty","isPathUnderRoot","Cause","Option","ParseResult","Predicate","AST","React","createContext","useContext","useDebounced","isFieldBundle","x","isTagged","ArrayItemContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","crossFieldErrorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","autoSubmitOnBlur","fieldPath","parentPath","crossFieldErrorAtom","touchedAtom","valueAtom","useMemo","value","setValue","isTouched","setTouched","crossFieldError","setCrossFieldErrors","submitCount","validationAtom","schema","validationResult","validateImmediate","shouldDebounceValidation","validation","debounce","autoSubmit","validate","prevValueRef","useRef","useEffect","current","shouldValidate","perFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","extractFirstError","none","validationError","onChange","useCallback","newValue","prev","next","Map","errorPath","message","set","size","onBlur","dirtyFields","isDirty","isValidating","waiting","shouldShowError","fieldState","error","_jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","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","makeField","itemComponent","properties","Item","Proxy","get","target","Reflect","makeFieldComponents","fields","components","key","Object","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","componentOrBundle","fieldComponent","component","build","self","options","mode","onSubmit","runtime","parse","formAtoms","make","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","lastSubmittedValuesAtom","resetAtom","revertToLastSubmitAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","state","callSubmit","isInitializedRef","createInitialState","debouncedAutoSubmit","stateOption","undefined","immediate","onBlurAutoSubmit","e","preventDefault","stopPropagation","fieldComponents","hasChangedSinceSubmit","lastSubmittedValues","Initialize","submit","reset","revertToLastSubmit","setValues","forField","_field","displayName","charAt","toUpperCase","slice"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucas-barake/effect-form-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "React bindings for @lucas-barake/effect-form",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"author": "Lucas Barake",
|
|
12
12
|
"homepage": "https://github.com/lucas-barake/effect-form",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@lucas-barake/effect-form": "^0.
|
|
14
|
+
"@lucas-barake/effect-form": "^0.11.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@effect-atom/atom": "^0.4.8",
|
package/src/FormReact.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import * as Cause from "effect/Cause"
|
|
|
7
7
|
import type * as Effect from "effect/Effect"
|
|
8
8
|
import * as Option from "effect/Option"
|
|
9
9
|
import * as ParseResult from "effect/ParseResult"
|
|
10
|
+
import * as Predicate from "effect/Predicate"
|
|
10
11
|
import type * as Schema from "effect/Schema"
|
|
11
12
|
import * as AST from "effect/SchemaAST"
|
|
12
13
|
import * as React from "react"
|
|
@@ -42,12 +43,32 @@ export interface FieldComponentProps<
|
|
|
42
43
|
readonly props: P
|
|
43
44
|
}
|
|
44
45
|
|
|
46
|
+
/**
|
|
47
|
+
* A bundled field definition + component for reusable form fields.
|
|
48
|
+
* Created with `FormReact.makeField`.
|
|
49
|
+
*
|
|
50
|
+
* @category Models
|
|
51
|
+
*/
|
|
52
|
+
export interface FieldBundle<
|
|
53
|
+
K extends string,
|
|
54
|
+
S extends Schema.Schema.Any,
|
|
55
|
+
P extends Record<string, unknown> = Record<string, never>,
|
|
56
|
+
> {
|
|
57
|
+
readonly _tag: "FieldBundle"
|
|
58
|
+
readonly field: Field.FieldDef<K, S>
|
|
59
|
+
readonly component: React.FC<FieldComponentProps<S, P>>
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const isFieldBundle = (x: unknown): x is FieldBundle<string, Schema.Schema.Any, Record<string, unknown>> =>
|
|
63
|
+
Predicate.isTagged(x, "FieldBundle")
|
|
64
|
+
|
|
45
65
|
/**
|
|
46
66
|
* Extracts the extra props type from a field component.
|
|
47
67
|
*
|
|
48
68
|
* @category Type-level utilities
|
|
49
69
|
*/
|
|
50
70
|
export type ExtractExtraProps<C> = C extends React.FC<FieldComponentProps<any, infer P>> ? P
|
|
71
|
+
: C extends FieldBundle<any, any, infer P> ? P
|
|
51
72
|
: Record<string, never>
|
|
52
73
|
|
|
53
74
|
/**
|
|
@@ -69,7 +90,8 @@ export type ArrayItemComponentMap<S extends Schema.Schema.Any> = S extends Schem
|
|
|
69
90
|
* @category Models
|
|
70
91
|
*/
|
|
71
92
|
export type FieldComponentMap<TFields extends Field.FieldsRecord> = {
|
|
72
|
-
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S>
|
|
93
|
+
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, infer S>
|
|
94
|
+
? React.FC<FieldComponentProps<S, any>> | FieldBundle<any, S, any>
|
|
73
95
|
: TFields[K] extends Field.ArrayFieldDef<any, infer S> ? ArrayItemComponentMap<S>
|
|
74
96
|
: never
|
|
75
97
|
}
|
|
@@ -128,7 +150,7 @@ export type BuiltForm<
|
|
|
128
150
|
readonly revertToLastSubmit: Atom.Writable<void, void>
|
|
129
151
|
readonly setValues: Atom.Writable<void, Field.EncodedFromFields<TFields>>
|
|
130
152
|
readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>
|
|
131
|
-
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<S
|
|
153
|
+
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>
|
|
132
154
|
} & FieldComponents<TFields, CM>
|
|
133
155
|
|
|
134
156
|
type FieldComponents<TFields extends Field.FieldsRecord, CM extends FieldComponentMap<TFields>> = {
|
|
@@ -465,7 +487,10 @@ const makeFieldComponents = <
|
|
|
465
487
|
arrayComponentMap,
|
|
466
488
|
)
|
|
467
489
|
} else if (Field.isFieldDef(def)) {
|
|
468
|
-
const
|
|
490
|
+
const componentOrBundle = (componentMap as Record<string, unknown>)[key]
|
|
491
|
+
const fieldComponent = isFieldBundle(componentOrBundle)
|
|
492
|
+
? componentOrBundle.component
|
|
493
|
+
: componentOrBundle as React.FC<FieldComponentProps<any, any>>
|
|
469
494
|
components[key] = makeFieldComponent(
|
|
470
495
|
key,
|
|
471
496
|
def,
|
|
@@ -678,42 +703,106 @@ export const build = <
|
|
|
678
703
|
}
|
|
679
704
|
|
|
680
705
|
/**
|
|
681
|
-
* A curried helper that infers the schema type from a field definition
|
|
706
|
+
* A curried helper that infers the schema type from a field definition.
|
|
682
707
|
* Provides ergonomic type inference when defining field components.
|
|
683
708
|
*
|
|
684
709
|
* @example
|
|
685
710
|
* ```tsx
|
|
686
|
-
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
711
|
+
* import { Field, FormReact } from "@lucas-barake/effect-form-react"
|
|
687
712
|
*
|
|
688
|
-
* // Using a FieldRef from the built form
|
|
689
|
-
* const TextInput = FormReact.forField(form.fields.email)(({ field }) => (
|
|
690
|
-
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
691
|
-
* ))
|
|
692
|
-
*
|
|
693
|
-
* // Using a FieldDef (for reusable fields)
|
|
694
713
|
* const EmailField = Field.makeField("email", Schema.String)
|
|
695
714
|
* const TextInput = FormReact.forField(EmailField)(({ field }) => (
|
|
696
715
|
* <input value={field.value} onChange={e => field.onChange(e.target.value)} />
|
|
697
716
|
* ))
|
|
698
717
|
*
|
|
699
718
|
* // With extra props - just specify the props type
|
|
700
|
-
* const TextInput = FormReact.forField(
|
|
719
|
+
* const TextInput = FormReact.forField(EmailField)<{ placeholder?: string }>(({ field, props }) => (
|
|
701
720
|
* <input value={field.value} placeholder={props.placeholder} ... />
|
|
702
721
|
* ))
|
|
703
722
|
* ```
|
|
704
723
|
*
|
|
705
724
|
* @category Constructors
|
|
706
725
|
*/
|
|
707
|
-
export const forField
|
|
708
|
-
<S
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
726
|
+
export const forField = <K extends string, S extends Schema.Schema.Any>(
|
|
727
|
+
_field: Field.FieldDef<K, S>,
|
|
728
|
+
): <P extends Record<string, unknown> = Record<string, never>>(
|
|
729
|
+
component: React.FC<FieldComponentProps<S, P>>,
|
|
730
|
+
) => React.FC<FieldComponentProps<S, P>> =>
|
|
731
|
+
(component) => component
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Creates a bundled field definition + component for reusable form fields.
|
|
735
|
+
* Reduces boilerplate when you need both a field and its component together.
|
|
736
|
+
*
|
|
737
|
+
* Uses a curried API for better type inference - the schema type is captured
|
|
738
|
+
* first, so you only need to specify the extra props type (if any).
|
|
739
|
+
*
|
|
740
|
+
* @example
|
|
741
|
+
* ```tsx
|
|
742
|
+
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
743
|
+
* import * as Schema from "effect/Schema"
|
|
744
|
+
*
|
|
745
|
+
* // Define field + component in one place (no extra props)
|
|
746
|
+
* const NameInput = FormReact.makeField({
|
|
747
|
+
* key: "name",
|
|
748
|
+
* schema: Schema.String.pipe(Schema.nonEmptyString()),
|
|
749
|
+
* })(({ field }) => (
|
|
750
|
+
* <input
|
|
751
|
+
* value={field.value}
|
|
752
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
753
|
+
* onBlur={field.onBlur}
|
|
754
|
+
* />
|
|
755
|
+
* ))
|
|
756
|
+
*
|
|
757
|
+
* // With extra props - specify only the props type
|
|
758
|
+
* const EmailInput = FormReact.makeField({
|
|
759
|
+
* key: "email",
|
|
760
|
+
* schema: Schema.String,
|
|
761
|
+
* })<{ placeholder: string }>(({ field, props }) => (
|
|
762
|
+
* <input
|
|
763
|
+
* value={field.value}
|
|
764
|
+
* onChange={(e) => field.onChange(e.target.value)}
|
|
765
|
+
* placeholder={props.placeholder}
|
|
766
|
+
* />
|
|
767
|
+
* ))
|
|
768
|
+
*
|
|
769
|
+
* // Use in form builder
|
|
770
|
+
* const form = FormBuilder.empty.addField(NameInput.field)
|
|
771
|
+
*
|
|
772
|
+
* // Use in build()
|
|
773
|
+
* const Form = FormReact.build(form, {
|
|
774
|
+
* runtime,
|
|
775
|
+
* fields: { name: NameInput },
|
|
776
|
+
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|
|
777
|
+
* })
|
|
778
|
+
* ```
|
|
779
|
+
*
|
|
780
|
+
* @category Constructors
|
|
781
|
+
*/
|
|
782
|
+
export const makeField = <K extends string, S extends Schema.Schema.Any>(options: {
|
|
783
|
+
readonly key: K
|
|
784
|
+
readonly schema: S
|
|
785
|
+
}): <P extends Record<string, unknown> = Record<string, never>>(
|
|
786
|
+
component: React.FC<FieldComponentProps<S, P>>
|
|
787
|
+
) => FieldBundle<K, S, P> => {
|
|
788
|
+
const field = Field.makeField(options.key, options.schema)
|
|
789
|
+
return (component) => {
|
|
790
|
+
// DX: Auto-generate a readable component name for DevTools
|
|
791
|
+
// e.g., key "email" -> "<EmailField />"
|
|
792
|
+
if (!component.displayName) {
|
|
793
|
+
const displayName = `${options.key.charAt(0).toUpperCase()}${options.key.slice(1)}Field`
|
|
794
|
+
// Cast to 'any' because strict TS marks function names as readonly,
|
|
795
|
+
// but React relies on mutation here.
|
|
796
|
+
try {
|
|
797
|
+
;(component as any).displayName = displayName
|
|
798
|
+
} catch {
|
|
799
|
+
// Ignore errors in environments where function props are frozen
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
return {
|
|
803
|
+
_tag: "FieldBundle",
|
|
804
|
+
field,
|
|
805
|
+
component,
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
}
|