@lucas-barake/effect-form 0.2.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["Predicate","_interopRequireWildcard","require","Schema","_Field","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FieldTypeId","exports","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","field","newSelf","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","isArrayFieldDef","Array","itemSchema","isFieldDef","schema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Form.js","names":["Predicate","_interopRequireWildcard","require","Schema","_Field","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FieldTypeId","exports","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","field","newSelf","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","isArrayFieldDef","Array","itemSchema","isFieldDef","schema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,SAAA,gBAAAC,uBAAA,cAAAC,OAAA;AACA,IAAAC,MAAA,gBAAAF,uBAAA,cAAAC,OAAA;AAUA,IAAAE,MAAA,gBAAAF,OAAA;AAAwD,SAAAD,wBAAAI,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAN,uBAAA,YAAAA,CAAAI,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;AAExD;;;;;;;AAOO,MAAMkB,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAkBE,MAAM,CAACC,GAAG,CAAC,iCAAiC,CAAC;AAqBvF;;;;;;;AAOO,MAAMC,YAAY,GAAOC,GAAW,KAAgB;EACzD,CAACL,WAAW,GAAGA,WAAW;EAC1BM,EAAE,EAAEC,SAAgB;EACpBF;CACD,CAAC;AAEF;AACA;AACA;AAEA;;;;;;AAAAJ,OAAA,CAAAG,YAAA,GAAAA,YAAA;AAMO,MAAMI,MAAM,GAAAP,OAAA,CAAAO,MAAA,gBAAkBN,MAAM,CAACC,GAAG,CAAC,gCAAgC,CAAC;AA8IjF,MAAMM,gBAAgB,GAAG;EACvB,CAACD,MAAM,GAAGA,MAAM;EAChBE,QAAQA,CAENC,KAAkB;IAElB,MAAMC,OAAO,GAAGf,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC;IAC/CG,OAAO,CAACE,MAAM,GAAG;MAAE,GAAG,IAAI,CAACA,MAAM;MAAE,CAACH,KAAK,CAACN,GAAG,GAAGM;IAAK,CAAE;IACvDC,OAAO,CAACG,WAAW,GAAG,IAAI,CAACA,WAAW;IACtC,OAAOH,OAAO;EAChB,CAAC;EACDI,KAAKA,CAEHC,KAAgC;IAEhC,MAAML,OAAO,GAAGf,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC;IAC/CG,OAAO,CAACE,MAAM,GAAG;MAAE,GAAG,IAAI,CAACA,MAAM;MAAE,GAAGG,KAAK,CAACH;IAAM,CAAE;IACpDF,OAAO,CAACG,WAAW,GAAG,CAAC,GAAG,IAAI,CAACA,WAAW,EAAE,GAAGE,KAAK,CAACF,WAAW,CAAC;IACjE,OAAOH,OAAO;EAChB,CAAC;EACDM,MAAMA,CAEJC,SAAsE;IAEtE,MAAMP,OAAO,GAAGf,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC;IAC/CG,OAAO,CAACE,MAAM,GAAG,IAAI,CAACA,MAAM;IAC5BF,OAAO,CAACG,WAAW,GAAG,CACpB,GAAG,IAAI,CAACA,WAAW,EACnB;MAAEK,IAAI,EAAE,MAAe;MAAEC,EAAE,EAAGC,MAAe,IAAKH,SAAS,CAACG,MAAoC;IAAC,CAAE,CACpG;IACD,OAAOV,OAAO;EAChB,CAAC;EACDW,YAAYA,CAEVJ,SAAgG;IAEhG,MAAMP,OAAO,GAAGf,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC;IAC/CG,OAAO,CAACE,MAAM,GAAG,IAAI,CAACA,MAAM;IAC5BF,OAAO,CAACG,WAAW,GAAG,CACpB,GAAG,IAAI,CAACA,WAAW,EACnB;MAAEK,IAAI,EAAE,OAAgB;MAAEC,EAAE,EAAGC,MAAe,IAAKH,SAAS,CAACG,MAAoC;IAAC,CAAE,CACrG;IACD,OAAOV,OAAO;EAChB;CACD;AAED;;;;;;;;;;;;;;;;;;;AAmBO,MAAMY,aAAa,GAAIC,CAAU,IAAiCjD,SAAS,CAACkD,WAAW,CAACD,CAAC,EAAEjB,MAAM,CAAC;AAEzG;;;;;;;;;;;;;;;;;;;;;;;;AAwBA;AAAAP,OAAA,CAAAuB,aAAA,GAAAA,aAAA;AACO,MAAMG,KAAK,GAAA1B,OAAA,CAAA0B,KAAA,gBAA2B,CAAC,MAAK;EACjD,MAAMC,IAAI,gBAAG/B,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC;EAC5CmB,IAAI,CAACd,MAAM,GAAG,EAAE;EAChBc,IAAI,CAACb,WAAW,GAAG,EAAE;EACrB,OAAOa,IAAI;AACb,CAAC,EAAC,CAAE;AAEJ;;;;;;AAMO,MAAMC,WAAW,GACtBD,IAA6B,IAC+C;EAC5E,MAAME,YAAY,GAAsC,EAAE;EAC1D,KAAK,MAAM,CAACzB,GAAG,EAAE0B,GAAG,CAAC,IAAIlC,MAAM,CAACmC,OAAO,CAACJ,IAAI,CAACd,MAAM,CAAC,EAAE;IACpD,IAAI,IAAAlC,MAAA,CAAAqD,eAAe,EAACF,GAAG,CAAC,EAAE;MACxBD,YAAY,CAACzB,GAAG,CAAC,GAAG1B,MAAM,CAACuD,KAAK,CAACH,GAAG,CAACI,UAAU,CAAC;IAClD,CAAC,MAAM,IAAI,IAAAvD,MAAA,CAAAwD,UAAU,EAACL,GAAG,CAAC,EAAE;MAC1BD,YAAY,CAACzB,GAAG,CAAC,GAAG0B,GAAG,CAACM,MAAM;IAChC;EACF;EAEA,IAAIA,MAAM,GAAiC1D,MAAM,CAAC2D,MAAM,CAACR,YAAY,CAAC;EAEtE,KAAK,MAAMS,UAAU,IAAIX,IAAI,CAACb,WAAW,EAAE;IACzC,IAAIwB,UAAU,CAACnB,IAAI,KAAK,MAAM,EAAE;MAC9BiB,MAAM,GAAGA,MAAM,CAACG,IAAI,CAAC7D,MAAM,CAAC8D,MAAM,CAACF,UAAU,CAAClB,EAAE,CAAC,CAAC;IACpD,CAAC,MAAM;MACLgB,MAAM,GAAGA,MAAM,CAACG,IAAI,CAAC7D,MAAM,CAAC+D,YAAY,CAACH,UAAU,CAAClB,EAAE,CAAC,CAAC;IAC1D;EACF;EAEA,OAAOgB,MAIN;AACH,CAAC;AAAApC,OAAA,CAAA4B,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -6,11 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.make = void 0;
7
7
  var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
8
8
  var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
9
- var Equal = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Equal"));
10
9
  var _Function = /*#__PURE__*/require("effect/Function");
11
10
  var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
12
11
  var Schema = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Schema"));
13
- var Utils = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Utils"));
14
12
  var Field = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Field.js"));
15
13
  var Form = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Form.js"));
16
14
  var _dirty = /*#__PURE__*/require("./internal/dirty.js");
@@ -85,18 +83,21 @@ const make = config => {
85
83
  const dirtyFieldsAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields).pipe(Atom.setIdleTTL(0));
86
84
  const isDirtyAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields.size > 0).pipe(Atom.setIdleTTL(0));
87
85
  const submitCountAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).submitCount).pipe(Atom.setIdleTTL(0));
86
+ const lastSubmittedValuesAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).lastSubmittedValues).pipe(Atom.setIdleTTL(0));
87
+ const changedSinceSubmitFieldsAtom = Atom.readable(get => {
88
+ const state = Option.getOrThrow(get(stateAtom));
89
+ return Option.match(state.lastSubmittedValues, {
90
+ onNone: () => new Set(),
91
+ onSome: lastSubmitted => (0, _dirty.recalculateDirtySubtree)(new Set(), lastSubmitted, state.values, "")
92
+ });
93
+ }).pipe(Atom.setIdleTTL(0));
94
+ const hasChangedSinceSubmitAtom = Atom.readable(get => {
95
+ const state = Option.getOrThrow(get(stateAtom));
96
+ if (Option.isNone(state.lastSubmittedValues)) return false;
97
+ if (state.values === state.lastSubmittedValues.value) return false;
98
+ return get(changedSinceSubmitFieldsAtom).size > 0;
99
+ }).pipe(Atom.setIdleTTL(0));
88
100
  const onSubmitAtom = Atom.make(null).pipe(Atom.setIdleTTL(0));
89
- const updateDirtyFields = (state, fieldPath, newValue) => {
90
- const initialValue = (0, _path.getNestedValue)(state.initialValues, fieldPath);
91
- const isEqual = Utils.structuralRegion(() => Equal.equals(newValue, initialValue));
92
- const newDirtyFields = new Set(state.dirtyFields);
93
- if (!isEqual) {
94
- newDirtyFields.add(fieldPath);
95
- } else {
96
- newDirtyFields.delete(fieldPath);
97
- }
98
- return newDirtyFields;
99
- };
100
101
  const validationAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
101
102
  const fieldAtomsRegistry = (0, _weakRegistry.createWeakRegistry)();
102
103
  const getOrCreateValidationAtom = (fieldPath, schema) => {
@@ -111,10 +112,11 @@ const make = config => {
111
112
  if (existing) return existing;
112
113
  const valueAtom = Atom.writable(get => (0, _path.getNestedValue)(Option.getOrThrow(get(stateAtom)).values, fieldPath), (ctx, value) => {
113
114
  const currentState = Option.getOrThrow(ctx.get(stateAtom));
115
+ const newValues = (0, _path.setNestedValue)(currentState.values, fieldPath, value);
114
116
  ctx.set(stateAtom, Option.some({
115
117
  ...currentState,
116
- values: (0, _path.setNestedValue)(currentState.values, fieldPath, value),
117
- dirtyFields: updateDirtyFields(currentState, fieldPath, value)
118
+ values: newValues,
119
+ dirtyFields: (0, _dirty.recalculateDirtySubtree)(currentState.dirtyFields, currentState.initialValues, newValues, fieldPath)
118
120
  }));
119
121
  }).pipe(Atom.setIdleTTL(0));
120
122
  const initialValueAtom = Atom.readable(get => (0, _path.getNestedValue)(Option.getOrThrow(get(stateAtom)).initialValues, fieldPath)).pipe(Atom.setIdleTTL(0));
@@ -159,6 +161,7 @@ const make = config => {
159
161
  createInitialState: defaultValues => ({
160
162
  values: defaultValues,
161
163
  initialValues: defaultValues,
164
+ lastSubmittedValues: Option.none(),
162
165
  touched: Field.createTouchedRecord(fields, false),
163
166
  submitCount: 0,
164
167
  dirtyFields: new Set()
@@ -166,12 +169,14 @@ const make = config => {
166
169
  createResetState: state => ({
167
170
  values: state.initialValues,
168
171
  initialValues: state.initialValues,
172
+ lastSubmittedValues: Option.none(),
169
173
  touched: Field.createTouchedRecord(fields, false),
170
174
  submitCount: 0,
171
175
  dirtyFields: new Set()
172
176
  }),
173
177
  createSubmitState: state => ({
174
178
  ...state,
179
+ lastSubmittedValues: Option.some(state.values),
175
180
  touched: Field.createTouchedRecord(fields, true),
176
181
  submitCount: state.submitCount + 1
177
182
  }),
@@ -243,6 +248,20 @@ const make = config => {
243
248
  values: (0, _path.setNestedValue)(state.values, arrayPath, newItems),
244
249
  dirtyFields: (0, _dirty.recalculateDirtyFieldsForArray)(state.dirtyFields, state.initialValues, arrayPath, newItems)
245
250
  };
251
+ },
252
+ revertToLastSubmit: state => {
253
+ if (Option.isNone(state.lastSubmittedValues)) {
254
+ return state;
255
+ }
256
+ if (state.values === state.lastSubmittedValues.value) {
257
+ return state;
258
+ }
259
+ const newDirtyFields = (0, _dirty.recalculateDirtySubtree)(state.dirtyFields, state.initialValues, state.lastSubmittedValues.value, "");
260
+ return {
261
+ ...state,
262
+ values: state.lastSubmittedValues.value,
263
+ dirtyFields: newDirtyFields
264
+ };
246
265
  }
247
266
  };
248
267
  return {
@@ -251,6 +270,9 @@ const make = config => {
251
270
  dirtyFieldsAtom,
252
271
  isDirtyAtom,
253
272
  submitCountAtom,
273
+ lastSubmittedValuesAtom,
274
+ changedSinceSubmitFieldsAtom,
275
+ hasChangedSinceSubmitAtom,
254
276
  onSubmitAtom,
255
277
  decodeAndSubmit,
256
278
  combinedSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"FormAtoms.js","names":["Atom","_interopRequireWildcard","require","Effect","Equal","_Function","Option","Schema","Utils","Field","Form","_dirty","_path","_weakRegistry","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","pipe","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","onSubmitAtom","updateDirtyFields","state","fieldPath","newValue","initialValue","getNestedValue","initialValues","isEqual","structuralRegion","equals","newDirtyFields","Set","add","delete","validationAtomsRegistry","createWeakRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","schema","existing","validationAtom","fn","value","decodeUnknown","asVoid","getOrCreateFieldAtoms","valueAtom","writable","values","ctx","currentState","some","setNestedValue","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newValues","recalculateDirtySubtree","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","recalculateDirtyFieldsForArray","removeArrayItem","index","filter","_","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","exports"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormAtoms.js","names":["Atom","_interopRequireWildcard","require","Effect","_Function","Option","Schema","Field","Form","_dirty","_path","_weakRegistry","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","pipe","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","lastSubmittedValues","changedSinceSubmitFieldsAtom","state","match","onNone","Set","onSome","lastSubmitted","recalculateDirtySubtree","values","hasChangedSinceSubmitAtom","isNone","value","onSubmitAtom","validationAtomsRegistry","createWeakRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","getOrCreateFieldAtoms","valueAtom","writable","getNestedValue","ctx","currentState","newValues","setNestedValue","some","initialValues","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","recalculateDirtyFieldsForArray","removeArrayItem","index","filter","_","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit","exports"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type * as Effect from "effect/Effect";
5
+ import type * as Option from "effect/Option";
5
6
  import * as Schema from "effect/Schema";
6
7
  import type { ArrayFieldDef, DecodedFromFields, EncodedFromFields, FieldDef, FieldsRecord } from "./Field.js";
7
8
  /**
@@ -36,6 +37,7 @@ export type TypeId = typeof TypeId;
36
37
  export interface FormState<TFields extends FieldsRecord> {
37
38
  readonly values: EncodedFromFields<TFields>;
38
39
  readonly initialValues: EncodedFromFields<TFields>;
40
+ readonly lastSubmittedValues: Option.Option<EncodedFromFields<TFields>>;
39
41
  readonly touched: {
40
42
  readonly [K in keyof TFields]: boolean;
41
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,9 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R> {
57
57
  readonly dirtyFieldsAtom: Atom.Atom<ReadonlySet<string>>;
58
58
  readonly isDirtyAtom: Atom.Atom<boolean>;
59
59
  readonly submitCountAtom: Atom.Atom<number>;
60
+ readonly lastSubmittedValuesAtom: Atom.Atom<Option.Option<Field.EncodedFromFields<TFields>>>;
61
+ readonly changedSinceSubmitFieldsAtom: Atom.Atom<ReadonlySet<string>>;
62
+ readonly hasChangedSinceSubmitAtom: Atom.Atom<boolean>;
60
63
  readonly onSubmitAtom: Atom.Writable<Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null, Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null>;
61
64
  readonly decodeAndSubmit: Atom.AtomResultFn<Field.EncodedFromFields<TFields>, unknown, unknown>;
62
65
  readonly combinedSchema: Schema.Schema<Field.DecodedFromFields<TFields>, Field.EncodedFromFields<TFields>, R>;
@@ -75,46 +78,21 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R> {
75
78
  * @category Models
76
79
  */
77
80
  export interface FormOperations<TFields extends Field.FieldsRecord> {
78
- /**
79
- * Creates the initial form state from default values.
80
- */
81
81
  readonly createInitialState: (defaultValues: Field.EncodedFromFields<TFields>) => Form.FormState<TFields>;
82
- /**
83
- * Creates a reset state (back to initial values).
84
- */
85
82
  readonly createResetState: (state: Form.FormState<TFields>) => Form.FormState<TFields>;
86
- /**
87
- * Creates state with all fields marked as touched and submit count incremented.
88
- */
89
83
  readonly createSubmitState: (state: Form.FormState<TFields>) => Form.FormState<TFields>;
90
- /**
91
- * Updates a single field value in the state.
92
- */
93
84
  readonly setFieldValue: (state: Form.FormState<TFields>, fieldPath: string, value: unknown) => Form.FormState<TFields>;
94
- /**
95
- * Sets all form values, recalculating dirty fields.
96
- */
97
85
  readonly setFormValues: (state: Form.FormState<TFields>, values: Field.EncodedFromFields<TFields>) => Form.FormState<TFields>;
98
- /**
99
- * Sets a field as touched.
100
- */
101
86
  readonly setFieldTouched: (state: Form.FormState<TFields>, fieldPath: string, touched: boolean) => Form.FormState<TFields>;
102
- /**
103
- * Appends an item to an array field.
104
- */
105
87
  readonly appendArrayItem: (state: Form.FormState<TFields>, arrayPath: string, itemSchema: Schema.Schema.Any, value?: unknown) => Form.FormState<TFields>;
106
- /**
107
- * Removes an item from an array field.
108
- */
109
88
  readonly removeArrayItem: (state: Form.FormState<TFields>, arrayPath: string, index: number) => Form.FormState<TFields>;
110
- /**
111
- * Swaps two items in an array field.
112
- */
113
89
  readonly swapArrayItems: (state: Form.FormState<TFields>, arrayPath: string, indexA: number, indexB: number) => Form.FormState<TFields>;
90
+ readonly moveArrayItem: (state: Form.FormState<TFields>, arrayPath: string, fromIndex: number, toIndex: number) => Form.FormState<TFields>;
114
91
  /**
115
- * Moves an item in an array field.
92
+ * Reverts values to the last submitted state.
93
+ * No-op if form has never been submitted or is already in sync.
116
94
  */
117
- readonly moveArrayItem: (state: Form.FormState<TFields>, arrayPath: string, fromIndex: number, toIndex: number) => Form.FormState<TFields>;
95
+ readonly revertToLastSubmit: (state: Form.FormState<TFields>) => Form.FormState<TFields>;
118
96
  }
119
97
  /**
120
98
  * Creates the complete form atoms infrastructure.
@@ -1 +1 @@
1
- {"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FormAtoms.d.ts","sourceRoot":"","sources":["../../src/FormAtoms.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["Predicate","Schema","isArrayFieldDef","isFieldDef","FieldTypeId","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","Array","itemSchema","schema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Form.js","names":["Predicate","Schema","isArrayFieldDef","isFieldDef","FieldTypeId","Symbol","for","makeFieldRef","key","_S","undefined","TypeId","FormBuilderProto","addField","field","newSelf","Object","create","fields","refinements","merge","other","refine","predicate","_tag","fn","values","refineEffect","isFormBuilder","u","hasProperty","empty","self","buildSchema","schemaFields","def","entries","Array","itemSchema","schema","Struct","refinement","pipe","filter","filterEffect"],"sources":["../../src/Form.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -8,11 +8,9 @@
8
8
  */
9
9
  import * as Atom from "@effect-atom/atom/Atom";
10
10
  import * as Effect from "effect/Effect";
11
- import * as Equal from "effect/Equal";
12
11
  import { pipe } from "effect/Function";
13
12
  import * as Option from "effect/Option";
14
13
  import * as Schema from "effect/Schema";
15
- import * as Utils from "effect/Utils";
16
14
  import * as Field from "./Field.js";
17
15
  import * as Form from "./Form.js";
18
16
  import { recalculateDirtyFieldsForArray, recalculateDirtySubtree } from "./internal/dirty.js";
@@ -58,18 +56,21 @@ export const make = config => {
58
56
  const dirtyFieldsAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields).pipe(Atom.setIdleTTL(0));
59
57
  const isDirtyAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).dirtyFields.size > 0).pipe(Atom.setIdleTTL(0));
60
58
  const submitCountAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).submitCount).pipe(Atom.setIdleTTL(0));
59
+ const lastSubmittedValuesAtom = Atom.readable(get => Option.getOrThrow(get(stateAtom)).lastSubmittedValues).pipe(Atom.setIdleTTL(0));
60
+ const changedSinceSubmitFieldsAtom = Atom.readable(get => {
61
+ const state = Option.getOrThrow(get(stateAtom));
62
+ return Option.match(state.lastSubmittedValues, {
63
+ onNone: () => new Set(),
64
+ onSome: lastSubmitted => recalculateDirtySubtree(new Set(), lastSubmitted, state.values, "")
65
+ });
66
+ }).pipe(Atom.setIdleTTL(0));
67
+ const hasChangedSinceSubmitAtom = Atom.readable(get => {
68
+ const state = Option.getOrThrow(get(stateAtom));
69
+ if (Option.isNone(state.lastSubmittedValues)) return false;
70
+ if (state.values === state.lastSubmittedValues.value) return false;
71
+ return get(changedSinceSubmitFieldsAtom).size > 0;
72
+ }).pipe(Atom.setIdleTTL(0));
61
73
  const onSubmitAtom = Atom.make(null).pipe(Atom.setIdleTTL(0));
62
- const updateDirtyFields = (state, fieldPath, newValue) => {
63
- const initialValue = getNestedValue(state.initialValues, fieldPath);
64
- const isEqual = Utils.structuralRegion(() => Equal.equals(newValue, initialValue));
65
- const newDirtyFields = new Set(state.dirtyFields);
66
- if (!isEqual) {
67
- newDirtyFields.add(fieldPath);
68
- } else {
69
- newDirtyFields.delete(fieldPath);
70
- }
71
- return newDirtyFields;
72
- };
73
74
  const validationAtomsRegistry = createWeakRegistry();
74
75
  const fieldAtomsRegistry = createWeakRegistry();
75
76
  const getOrCreateValidationAtom = (fieldPath, schema) => {
@@ -84,10 +85,11 @@ export const make = config => {
84
85
  if (existing) return existing;
85
86
  const valueAtom = Atom.writable(get => getNestedValue(Option.getOrThrow(get(stateAtom)).values, fieldPath), (ctx, value) => {
86
87
  const currentState = Option.getOrThrow(ctx.get(stateAtom));
88
+ const newValues = setNestedValue(currentState.values, fieldPath, value);
87
89
  ctx.set(stateAtom, Option.some({
88
90
  ...currentState,
89
- values: setNestedValue(currentState.values, fieldPath, value),
90
- dirtyFields: updateDirtyFields(currentState, fieldPath, value)
91
+ values: newValues,
92
+ dirtyFields: recalculateDirtySubtree(currentState.dirtyFields, currentState.initialValues, newValues, fieldPath)
91
93
  }));
92
94
  }).pipe(Atom.setIdleTTL(0));
93
95
  const initialValueAtom = Atom.readable(get => getNestedValue(Option.getOrThrow(get(stateAtom)).initialValues, fieldPath)).pipe(Atom.setIdleTTL(0));
@@ -132,6 +134,7 @@ export const make = config => {
132
134
  createInitialState: defaultValues => ({
133
135
  values: defaultValues,
134
136
  initialValues: defaultValues,
137
+ lastSubmittedValues: Option.none(),
135
138
  touched: Field.createTouchedRecord(fields, false),
136
139
  submitCount: 0,
137
140
  dirtyFields: new Set()
@@ -139,12 +142,14 @@ export const make = config => {
139
142
  createResetState: state => ({
140
143
  values: state.initialValues,
141
144
  initialValues: state.initialValues,
145
+ lastSubmittedValues: Option.none(),
142
146
  touched: Field.createTouchedRecord(fields, false),
143
147
  submitCount: 0,
144
148
  dirtyFields: new Set()
145
149
  }),
146
150
  createSubmitState: state => ({
147
151
  ...state,
152
+ lastSubmittedValues: Option.some(state.values),
148
153
  touched: Field.createTouchedRecord(fields, true),
149
154
  submitCount: state.submitCount + 1
150
155
  }),
@@ -216,6 +221,20 @@ export const make = config => {
216
221
  values: setNestedValue(state.values, arrayPath, newItems),
217
222
  dirtyFields: recalculateDirtyFieldsForArray(state.dirtyFields, state.initialValues, arrayPath, newItems)
218
223
  };
224
+ },
225
+ revertToLastSubmit: state => {
226
+ if (Option.isNone(state.lastSubmittedValues)) {
227
+ return state;
228
+ }
229
+ if (state.values === state.lastSubmittedValues.value) {
230
+ return state;
231
+ }
232
+ const newDirtyFields = recalculateDirtySubtree(state.dirtyFields, state.initialValues, state.lastSubmittedValues.value, "");
233
+ return {
234
+ ...state,
235
+ values: state.lastSubmittedValues.value,
236
+ dirtyFields: newDirtyFields
237
+ };
219
238
  }
220
239
  };
221
240
  return {
@@ -224,6 +243,9 @@ export const make = config => {
224
243
  dirtyFieldsAtom,
225
244
  isDirtyAtom,
226
245
  submitCountAtom,
246
+ lastSubmittedValuesAtom,
247
+ changedSinceSubmitFieldsAtom,
248
+ hasChangedSinceSubmitAtom,
227
249
  onSubmitAtom,
228
250
  decodeAndSubmit,
229
251
  combinedSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"FormAtoms.js","names":["Atom","Effect","Equal","pipe","Option","Schema","Utils","Field","Form","recalculateDirtyFieldsForArray","recalculateDirtySubtree","getNestedValue","setNestedValue","createWeakRegistry","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","get","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","onSubmitAtom","updateDirtyFields","state","fieldPath","newValue","initialValue","initialValues","isEqual","structuralRegion","equals","newDirtyFields","Set","add","delete","validationAtomsRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","schema","existing","validationAtom","fn","value","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","values","ctx","currentState","some","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","Object","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newValues","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice"],"sources":["../../src/FormAtoms.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormAtoms.js","names":["Atom","Effect","pipe","Option","Schema","Field","Form","recalculateDirtyFieldsForArray","recalculateDirtySubtree","getNestedValue","setNestedValue","createWeakRegistry","make","config","formBuilder","runtime","fields","combinedSchema","buildSchema","stateAtom","none","setIdleTTL","crossFieldErrorsAtom","Map","dirtyFieldsAtom","readable","get","getOrThrow","dirtyFields","isDirtyAtom","size","submitCountAtom","submitCount","lastSubmittedValuesAtom","lastSubmittedValues","changedSinceSubmitFieldsAtom","state","match","onNone","Set","onSome","lastSubmitted","values","hasChangedSinceSubmitAtom","isNone","value","onSubmitAtom","validationAtomsRegistry","fieldAtomsRegistry","getOrCreateValidationAtom","fieldPath","schema","existing","validationAtom","fn","decodeUnknown","asVoid","set","getOrCreateFieldAtoms","valueAtom","writable","ctx","currentState","newValues","some","initialValues","initialValueAtom","touchedAtom","touched","crossFieldErrorAtom","errors","error","undefined","atoms","resetValidationAtoms","registry","Reset","clear","decodeAndSubmit","gen","decoded","onSubmit","result","suspendOnWaiting","fieldRefs","Object","fromEntries","keys","map","key","makeFieldRef","operations","createInitialState","defaultValues","createTouchedRecord","createResetState","createSubmitState","setFieldValue","newDirtyFields","setFormValues","setFieldTouched","appendArrayItem","arrayPath","itemSchema","newItem","getDefaultFromSchema","currentItems","newItems","removeArrayItem","index","filter","_","i","swapArrayItems","indexA","indexB","length","temp","moveArrayItem","fromIndex","toIndex","item","splice","revertToLastSubmit"],"sources":["../../src/FormAtoms.ts"],"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",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Type-safe form builder powered by Effect Schema",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/Form.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type * as Effect from "effect/Effect"
5
+ import type * as Option from "effect/Option"
5
6
  import * as Predicate from "effect/Predicate"
6
7
  import * as Schema from "effect/Schema"
7
8
 
@@ -83,6 +84,7 @@ export type TypeId = typeof TypeId
83
84
  export interface FormState<TFields extends FieldsRecord> {
84
85
  readonly values: EncodedFromFields<TFields>
85
86
  readonly initialValues: EncodedFromFields<TFields>
87
+ readonly lastSubmittedValues: Option.Option<EncodedFromFields<TFields>>
86
88
  readonly touched: { readonly [K in keyof TFields]: boolean }
87
89
  readonly submitCount: number
88
90
  readonly dirtyFields: ReadonlySet<string>
package/src/FormAtoms.ts CHANGED
@@ -9,12 +9,10 @@
9
9
  import * as Atom from "@effect-atom/atom/Atom"
10
10
  import type * as Registry from "@effect-atom/atom/Registry"
11
11
  import * as Effect from "effect/Effect"
12
- import * as Equal from "effect/Equal"
13
12
  import { pipe } from "effect/Function"
14
13
  import * as Option from "effect/Option"
15
14
  import type * as ParseResult from "effect/ParseResult"
16
15
  import * as Schema from "effect/Schema"
17
- import * as Utils from "effect/Utils"
18
16
  import * as Field from "./Field.js"
19
17
  import * as Form from "./Form.js"
20
18
  import { recalculateDirtyFieldsForArray, recalculateDirtySubtree } from "./internal/dirty.js"
@@ -69,6 +67,9 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R> {
69
67
  readonly dirtyFieldsAtom: Atom.Atom<ReadonlySet<string>>
70
68
  readonly isDirtyAtom: Atom.Atom<boolean>
71
69
  readonly submitCountAtom: Atom.Atom<number>
70
+ readonly lastSubmittedValuesAtom: Atom.Atom<Option.Option<Field.EncodedFromFields<TFields>>>
71
+ readonly changedSinceSubmitFieldsAtom: Atom.Atom<ReadonlySet<string>>
72
+ readonly hasChangedSinceSubmitAtom: Atom.Atom<boolean>
72
73
  readonly onSubmitAtom: Atom.Writable<
73
74
  Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null,
74
75
  Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null
@@ -102,50 +103,29 @@ export interface FormAtoms<TFields extends Field.FieldsRecord, R> {
102
103
  * @category Models
103
104
  */
104
105
  export interface FormOperations<TFields extends Field.FieldsRecord> {
105
- /**
106
- * Creates the initial form state from default values.
107
- */
108
106
  readonly createInitialState: (defaultValues: Field.EncodedFromFields<TFields>) => Form.FormState<TFields>
109
107
 
110
- /**
111
- * Creates a reset state (back to initial values).
112
- */
113
108
  readonly createResetState: (state: Form.FormState<TFields>) => Form.FormState<TFields>
114
109
 
115
- /**
116
- * Creates state with all fields marked as touched and submit count incremented.
117
- */
118
110
  readonly createSubmitState: (state: Form.FormState<TFields>) => Form.FormState<TFields>
119
111
 
120
- /**
121
- * Updates a single field value in the state.
122
- */
123
112
  readonly setFieldValue: (
124
113
  state: Form.FormState<TFields>,
125
114
  fieldPath: string,
126
115
  value: unknown,
127
116
  ) => Form.FormState<TFields>
128
117
 
129
- /**
130
- * Sets all form values, recalculating dirty fields.
131
- */
132
118
  readonly setFormValues: (
133
119
  state: Form.FormState<TFields>,
134
120
  values: Field.EncodedFromFields<TFields>,
135
121
  ) => Form.FormState<TFields>
136
122
 
137
- /**
138
- * Sets a field as touched.
139
- */
140
123
  readonly setFieldTouched: (
141
124
  state: Form.FormState<TFields>,
142
125
  fieldPath: string,
143
126
  touched: boolean,
144
127
  ) => Form.FormState<TFields>
145
128
 
146
- /**
147
- * Appends an item to an array field.
148
- */
149
129
  readonly appendArrayItem: (
150
130
  state: Form.FormState<TFields>,
151
131
  arrayPath: string,
@@ -153,18 +133,12 @@ export interface FormOperations<TFields extends Field.FieldsRecord> {
153
133
  value?: unknown,
154
134
  ) => Form.FormState<TFields>
155
135
 
156
- /**
157
- * Removes an item from an array field.
158
- */
159
136
  readonly removeArrayItem: (
160
137
  state: Form.FormState<TFields>,
161
138
  arrayPath: string,
162
139
  index: number,
163
140
  ) => Form.FormState<TFields>
164
141
 
165
- /**
166
- * Swaps two items in an array field.
167
- */
168
142
  readonly swapArrayItems: (
169
143
  state: Form.FormState<TFields>,
170
144
  arrayPath: string,
@@ -172,15 +146,18 @@ export interface FormOperations<TFields extends Field.FieldsRecord> {
172
146
  indexB: number,
173
147
  ) => Form.FormState<TFields>
174
148
 
175
- /**
176
- * Moves an item in an array field.
177
- */
178
149
  readonly moveArrayItem: (
179
150
  state: Form.FormState<TFields>,
180
151
  arrayPath: string,
181
152
  fromIndex: number,
182
153
  toIndex: number,
183
154
  ) => Form.FormState<TFields>
155
+
156
+ /**
157
+ * Reverts values to the last submitted state.
158
+ * No-op if form has never been submitted or is already in sync.
159
+ */
160
+ readonly revertToLastSubmit: (state: Form.FormState<TFields>) => Form.FormState<TFields>
184
161
  }
185
162
 
186
163
  /**
@@ -232,27 +209,29 @@ export const make = <TFields extends Field.FieldsRecord, R>(
232
209
  Atom.setIdleTTL(0),
233
210
  )
234
211
 
212
+ const lastSubmittedValuesAtom = Atom.readable(
213
+ (get) => Option.getOrThrow(get(stateAtom)).lastSubmittedValues,
214
+ ).pipe(Atom.setIdleTTL(0))
215
+
216
+ const changedSinceSubmitFieldsAtom = Atom.readable((get) => {
217
+ const state = Option.getOrThrow(get(stateAtom))
218
+ return Option.match(state.lastSubmittedValues, {
219
+ onNone: () => new Set<string>(),
220
+ onSome: (lastSubmitted) => recalculateDirtySubtree(new Set(), lastSubmitted, state.values, ""),
221
+ })
222
+ }).pipe(Atom.setIdleTTL(0))
223
+
224
+ const hasChangedSinceSubmitAtom = Atom.readable((get) => {
225
+ const state = Option.getOrThrow(get(stateAtom))
226
+ if (Option.isNone(state.lastSubmittedValues)) return false
227
+ if (state.values === state.lastSubmittedValues.value) return false
228
+ return get(changedSinceSubmitFieldsAtom).size > 0
229
+ }).pipe(Atom.setIdleTTL(0))
230
+
235
231
  const onSubmitAtom = Atom.make<Atom.AtomResultFn<Field.DecodedFromFields<TFields>, unknown, unknown> | null>(
236
232
  null,
237
233
  ).pipe(Atom.setIdleTTL(0))
238
234
 
239
- const updateDirtyFields = (
240
- state: Form.FormState<TFields>,
241
- fieldPath: string,
242
- newValue: unknown,
243
- ): ReadonlySet<string> => {
244
- const initialValue = getNestedValue(state.initialValues, fieldPath)
245
- const isEqual = Utils.structuralRegion(() => Equal.equals(newValue, initialValue))
246
-
247
- const newDirtyFields = new Set(state.dirtyFields)
248
- if (!isEqual) {
249
- newDirtyFields.add(fieldPath)
250
- } else {
251
- newDirtyFields.delete(fieldPath)
252
- }
253
- return newDirtyFields
254
- }
255
-
256
235
  const validationAtomsRegistry = createWeakRegistry<Atom.AtomResultFn<unknown, void, ParseResult.ParseError>>()
257
236
  const fieldAtomsRegistry = createWeakRegistry<FieldAtoms>()
258
237
 
@@ -282,12 +261,18 @@ export const make = <TFields extends Field.FieldsRecord, R>(
282
261
  (get) => getNestedValue(Option.getOrThrow(get(stateAtom)).values, fieldPath),
283
262
  (ctx, value) => {
284
263
  const currentState = Option.getOrThrow(ctx.get(stateAtom))
264
+ const newValues = setNestedValue(currentState.values, fieldPath, value)
285
265
  ctx.set(
286
266
  stateAtom,
287
267
  Option.some({
288
268
  ...currentState,
289
- values: setNestedValue(currentState.values, fieldPath, value),
290
- dirtyFields: updateDirtyFields(currentState, fieldPath, value),
269
+ values: newValues,
270
+ dirtyFields: recalculateDirtySubtree(
271
+ currentState.dirtyFields,
272
+ currentState.initialValues,
273
+ newValues,
274
+ fieldPath,
275
+ ),
291
276
  }),
292
277
  )
293
278
  },
@@ -351,6 +336,7 @@ export const make = <TFields extends Field.FieldsRecord, R>(
351
336
  createInitialState: (defaultValues) => ({
352
337
  values: defaultValues,
353
338
  initialValues: defaultValues,
339
+ lastSubmittedValues: Option.none(),
354
340
  touched: Field.createTouchedRecord(fields, false) as { readonly [K in keyof TFields]: boolean },
355
341
  submitCount: 0,
356
342
  dirtyFields: new Set(),
@@ -359,6 +345,7 @@ export const make = <TFields extends Field.FieldsRecord, R>(
359
345
  createResetState: (state) => ({
360
346
  values: state.initialValues,
361
347
  initialValues: state.initialValues,
348
+ lastSubmittedValues: Option.none(),
362
349
  touched: Field.createTouchedRecord(fields, false) as { readonly [K in keyof TFields]: boolean },
363
350
  submitCount: 0,
364
351
  dirtyFields: new Set(),
@@ -366,6 +353,7 @@ export const make = <TFields extends Field.FieldsRecord, R>(
366
353
 
367
354
  createSubmitState: (state) => ({
368
355
  ...state,
356
+ lastSubmittedValues: Option.some(state.values),
369
357
  touched: Field.createTouchedRecord(fields, true) as { readonly [K in keyof TFields]: boolean },
370
358
  submitCount: state.submitCount + 1,
371
359
  }),
@@ -463,6 +451,29 @@ export const make = <TFields extends Field.FieldsRecord, R>(
463
451
  dirtyFields: recalculateDirtyFieldsForArray(state.dirtyFields, state.initialValues, arrayPath, newItems),
464
452
  }
465
453
  },
454
+
455
+ revertToLastSubmit: (state) => {
456
+ if (Option.isNone(state.lastSubmittedValues)) {
457
+ return state
458
+ }
459
+
460
+ if (state.values === state.lastSubmittedValues.value) {
461
+ return state
462
+ }
463
+
464
+ const newDirtyFields = recalculateDirtySubtree(
465
+ state.dirtyFields,
466
+ state.initialValues,
467
+ state.lastSubmittedValues.value,
468
+ "",
469
+ )
470
+
471
+ return {
472
+ ...state,
473
+ values: state.lastSubmittedValues.value,
474
+ dirtyFields: newDirtyFields,
475
+ }
476
+ },
466
477
  }
467
478
 
468
479
  return {
@@ -471,6 +482,9 @@ export const make = <TFields extends Field.FieldsRecord, R>(
471
482
  dirtyFieldsAtom,
472
483
  isDirtyAtom,
473
484
  submitCountAtom,
485
+ lastSubmittedValuesAtom,
486
+ changedSinceSubmitFieldsAtom,
487
+ hasChangedSinceSubmitAtom,
474
488
  onSubmitAtom,
475
489
  decodeAndSubmit,
476
490
  combinedSchema,