@lucas-barake/effect-form 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Form/package.json +6 -0
- package/FormAtoms/package.json +6 -0
- package/LICENSE +21 -0
- package/Mode/package.json +6 -0
- package/README.md +5 -0
- package/Validation/package.json +6 -0
- package/dist/cjs/Form.js +299 -0
- package/dist/cjs/Form.js.map +1 -0
- package/dist/cjs/FormAtoms.js +266 -0
- package/dist/cjs/FormAtoms.js.map +1 -0
- package/dist/cjs/Mode.js +64 -0
- package/dist/cjs/Mode.js.map +1 -0
- package/dist/cjs/Validation.js +69 -0
- package/dist/cjs/Validation.js.map +1 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/dirty.js +101 -0
- package/dist/cjs/internal/dirty.js.map +1 -0
- package/dist/cjs/internal/path.js +96 -0
- package/dist/cjs/internal/path.js.map +1 -0
- package/dist/cjs/internal/weak-registry.js +52 -0
- package/dist/cjs/internal/weak-registry.js.map +1 -0
- package/dist/dts/Form.d.ts +317 -0
- package/dist/dts/Form.d.ts.map +1 -0
- package/dist/dts/FormAtoms.d.ts +145 -0
- package/dist/dts/FormAtoms.d.ts.map +1 -0
- package/dist/dts/Mode.d.ts +55 -0
- package/dist/dts/Mode.d.ts.map +1 -0
- package/dist/dts/Validation.d.ts +23 -0
- package/dist/dts/Validation.d.ts.map +1 -0
- package/dist/dts/index.d.ts +26 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/dirty.d.ts +13 -0
- package/dist/dts/internal/dirty.d.ts.map +1 -0
- package/dist/dts/internal/path.d.ts +32 -0
- package/dist/dts/internal/path.d.ts.map +1 -0
- package/dist/dts/internal/weak-registry.d.ts +7 -0
- package/dist/dts/internal/weak-registry.d.ts.map +1 -0
- package/dist/esm/Form.js +263 -0
- package/dist/esm/Form.js.map +1 -0
- package/dist/esm/FormAtoms.js +238 -0
- package/dist/esm/FormAtoms.js.map +1 -0
- package/dist/esm/Mode.js +36 -0
- package/dist/esm/Mode.js.map +1 -0
- package/dist/esm/Validation.js +40 -0
- package/dist/esm/Validation.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/dirty.js +72 -0
- package/dist/esm/internal/dirty.js.map +1 -0
- package/dist/esm/internal/path.js +86 -0
- package/dist/esm/internal/path.js.map +1 -0
- package/dist/esm/internal/weak-registry.js +45 -0
- package/dist/esm/internal/weak-registry.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +64 -0
- package/src/Form.ts +522 -0
- package/src/FormAtoms.ts +485 -0
- package/src/Mode.ts +59 -0
- package/src/Validation.ts +43 -0
- package/src/index.ts +28 -0
- package/src/internal/dirty.ts +96 -0
- package/src/internal/path.ts +93 -0
- package/src/internal/weak-registry.ts +60 -0
package/dist/cjs/Mode.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parse = void 0;
|
|
7
|
+
var Duration = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Duration"));
|
|
8
|
+
function _interopRequireWildcard(e, t) {
|
|
9
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
10
|
+
n = new WeakMap();
|
|
11
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
12
|
+
if (!t && e && e.__esModule) return e;
|
|
13
|
+
var o,
|
|
14
|
+
i,
|
|
15
|
+
f = {
|
|
16
|
+
__proto__: null,
|
|
17
|
+
default: e
|
|
18
|
+
};
|
|
19
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
20
|
+
if (o = t ? n : r) {
|
|
21
|
+
if (o.has(e)) return o.get(e);
|
|
22
|
+
o.set(e, f);
|
|
23
|
+
}
|
|
24
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
25
|
+
return f;
|
|
26
|
+
})(e, t);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Form validation mode configuration.
|
|
30
|
+
*
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Parses a FormMode into a normalized ParsedMode.
|
|
36
|
+
*
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category Parsing
|
|
39
|
+
*/
|
|
40
|
+
const parse = (mode = "onSubmit") => {
|
|
41
|
+
if (typeof mode === "string") {
|
|
42
|
+
return {
|
|
43
|
+
validation: mode,
|
|
44
|
+
debounce: null,
|
|
45
|
+
autoSubmit: false
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if ("onBlur" in mode) {
|
|
49
|
+
return {
|
|
50
|
+
validation: "onBlur",
|
|
51
|
+
debounce: null,
|
|
52
|
+
autoSubmit: true
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const debounceMs = Duration.toMillis(mode.onChange.debounce);
|
|
56
|
+
const autoSubmit = mode.onChange.autoSubmit === true;
|
|
57
|
+
return {
|
|
58
|
+
validation: "onChange",
|
|
59
|
+
debounce: debounceMs,
|
|
60
|
+
autoSubmit
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
exports.parse = parse;
|
|
64
|
+
//# sourceMappingURL=Mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mode.js","names":["Duration","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","parse","mode","validation","debounce","autoSubmit","debounceMs","toMillis","onChange","exports"],"sources":["../../src/Mode.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,QAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAA2C,SAAAD,wBAAAE,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AAL3C;;;;;;AA0CA;;;;;;AAMO,MAAMkB,KAAK,GAAGA,CAACC,IAAA,GAAiB,UAAU,KAAgB;EAC/D,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5B,OAAO;MAAEC,UAAU,EAAED,IAAI;MAAEE,QAAQ,EAAE,IAAI;MAAEC,UAAU,EAAE;IAAK,CAAE;EAChE;EACA,IAAI,QAAQ,IAAIH,IAAI,EAAE;IACpB,OAAO;MAAEC,UAAU,EAAE,QAAQ;MAAEC,QAAQ,EAAE,IAAI;MAAEC,UAAU,EAAE;IAAI,CAAE;EACnE;EACA,MAAMC,UAAU,GAAG3B,QAAQ,CAAC4B,QAAQ,CAACL,IAAI,CAACM,QAAQ,CAACJ,QAAQ,CAAC;EAC5D,MAAMC,UAAU,GAAGH,IAAI,CAACM,QAAQ,CAACH,UAAU,KAAK,IAAI;EACpD,OAAO;IAAEF,UAAU,EAAE,UAAU;IAAEC,QAAQ,EAAEE,UAAU;IAAED;EAAU,CAAE;AACrE,CAAC;AAAAI,OAAA,CAAAR,KAAA,GAAAA,KAAA","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.routeErrors = exports.extractFirstError = void 0;
|
|
7
|
+
var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
|
|
8
|
+
var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
|
|
9
|
+
var _path = /*#__PURE__*/require("./internal/path.js");
|
|
10
|
+
function _interopRequireWildcard(e, t) {
|
|
11
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
12
|
+
n = new WeakMap();
|
|
13
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
14
|
+
if (!t && e && e.__esModule) return e;
|
|
15
|
+
var o,
|
|
16
|
+
i,
|
|
17
|
+
f = {
|
|
18
|
+
__proto__: null,
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
22
|
+
if (o = t ? n : r) {
|
|
23
|
+
if (o.has(e)) return o.get(e);
|
|
24
|
+
o.set(e, f);
|
|
25
|
+
}
|
|
26
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
27
|
+
return f;
|
|
28
|
+
})(e, t);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validation utilities for form error handling.
|
|
32
|
+
*
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Extracts the first error message from a ParseError.
|
|
38
|
+
*
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category Error Handling
|
|
41
|
+
*/
|
|
42
|
+
const extractFirstError = error => {
|
|
43
|
+
const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
|
|
44
|
+
if (issues.length === 0) {
|
|
45
|
+
return Option.none();
|
|
46
|
+
}
|
|
47
|
+
return Option.some(issues[0].message);
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Routes validation errors from a ParseError to a map of field paths to error messages.
|
|
51
|
+
* Used for cross-field validation where schema errors need to be displayed on specific fields.
|
|
52
|
+
*
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @category Error Handling
|
|
55
|
+
*/
|
|
56
|
+
exports.extractFirstError = extractFirstError;
|
|
57
|
+
const routeErrors = error => {
|
|
58
|
+
const result = new Map();
|
|
59
|
+
const issues = ParseResult.ArrayFormatter.formatErrorSync(error);
|
|
60
|
+
for (const issue of issues) {
|
|
61
|
+
const fieldPath = (0, _path.schemaPathToFieldPath)(issue.path);
|
|
62
|
+
if (fieldPath && !result.has(fieldPath)) {
|
|
63
|
+
result.set(fieldPath, issue.message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
exports.routeErrors = routeErrors;
|
|
69
|
+
//# sourceMappingURL=Validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validation.js","names":["Option","_interopRequireWildcard","require","ParseResult","_path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extractFirstError","error","issues","ArrayFormatter","formatErrorSync","length","none","some","message","exports","routeErrors","result","Map","issue","fieldPath","schemaPathToFieldPath","path"],"sources":["../../src/Validation.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,MAAA,gBAAAC,uBAAA,cAAAC,OAAA;AACA,IAAAC,WAAA,gBAAAF,uBAAA,cAAAC,OAAA;AACA,IAAAE,KAAA,gBAAAF,OAAA;AAA0D,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;AAP1D;;;;;;AASA;;;;;;AAMO,MAAMkB,iBAAiB,GAAIC,KAA6B,IAA2B;EACxF,MAAMC,MAAM,GAAGvB,WAAW,CAACwB,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAChE,IAAIC,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;IACvB,OAAO7B,MAAM,CAAC8B,IAAI,EAAE;EACtB;EACA,OAAO9B,MAAM,CAAC+B,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC;AACvC,CAAC;AAED;;;;;;;AAAAC,OAAA,CAAAT,iBAAA,GAAAA,iBAAA;AAOO,MAAMU,WAAW,GAAIT,KAA6B,IAAyB;EAChF,MAAMU,MAAM,GAAG,IAAIC,GAAG,EAAkB;EACxC,MAAMV,MAAM,GAAGvB,WAAW,CAACwB,cAAc,CAACC,eAAe,CAACH,KAAK,CAAC;EAEhE,KAAK,MAAMY,KAAK,IAAIX,MAAM,EAAE;IAC1B,MAAMY,SAAS,GAAG,IAAAlC,KAAA,CAAAmC,qBAAqB,EAACF,KAAK,CAACG,IAAI,CAAC;IACnD,IAAIF,SAAS,IAAI,CAACH,MAAM,CAACnB,GAAG,CAACsB,SAAS,CAAC,EAAE;MACvCH,MAAM,CAACjB,GAAG,CAACoB,SAAS,EAAED,KAAK,CAACL,OAAO,CAAC;IACtC;EACF;EAEA,OAAOG,MAAM;AACf,CAAC;AAAAF,OAAA,CAAAC,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Validation = exports.Mode = exports.FormAtoms = exports.Form = void 0;
|
|
7
|
+
var _Form = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Form.js"));
|
|
8
|
+
exports.Form = _Form;
|
|
9
|
+
var _FormAtoms = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./FormAtoms.js"));
|
|
10
|
+
exports.FormAtoms = _FormAtoms;
|
|
11
|
+
var _Mode = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Mode.js"));
|
|
12
|
+
exports.Mode = _Mode;
|
|
13
|
+
var _Validation = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Validation.js"));
|
|
14
|
+
exports.Validation = _Validation;
|
|
15
|
+
function _interopRequireWildcard(e, t) {
|
|
16
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
17
|
+
n = new WeakMap();
|
|
18
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
19
|
+
if (!t && e && e.__esModule) return e;
|
|
20
|
+
var o,
|
|
21
|
+
i,
|
|
22
|
+
f = {
|
|
23
|
+
__proto__: null,
|
|
24
|
+
default: e
|
|
25
|
+
};
|
|
26
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
27
|
+
if (o = t ? n : r) {
|
|
28
|
+
if (o.has(e)) return o.get(e);
|
|
29
|
+
o.set(e, f);
|
|
30
|
+
}
|
|
31
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
32
|
+
return f;
|
|
33
|
+
})(e, t);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.recalculateDirtySubtree = exports.recalculateDirtyFieldsForArray = void 0;
|
|
7
|
+
var Equal = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Equal"));
|
|
8
|
+
var Utils = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Utils"));
|
|
9
|
+
var _path = /*#__PURE__*/require("./path.js");
|
|
10
|
+
function _interopRequireWildcard(e, t) {
|
|
11
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
12
|
+
n = new WeakMap();
|
|
13
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
14
|
+
if (!t && e && e.__esModule) return e;
|
|
15
|
+
var o,
|
|
16
|
+
i,
|
|
17
|
+
f = {
|
|
18
|
+
__proto__: null,
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
22
|
+
if (o = t ? n : r) {
|
|
23
|
+
if (o.has(e)) return o.get(e);
|
|
24
|
+
o.set(e, f);
|
|
25
|
+
}
|
|
26
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
27
|
+
return f;
|
|
28
|
+
})(e, t);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Internal dirty tracking algorithms.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Recalculates dirty fields for an array after mutation.
|
|
38
|
+
* Clears all paths under the array and re-evaluates each item.
|
|
39
|
+
*/
|
|
40
|
+
const recalculateDirtyFieldsForArray = (dirtyFields, initialValues, arrayPath, newItems) => {
|
|
41
|
+
const nextDirty = new Set(Array.from(dirtyFields).filter(path => path !== arrayPath && !path.startsWith(arrayPath + ".") && !path.startsWith(arrayPath + "[")));
|
|
42
|
+
const initialItems = (0, _path.getNestedValue)(initialValues, arrayPath) ?? [];
|
|
43
|
+
const loopLength = Math.max(newItems.length, initialItems.length);
|
|
44
|
+
for (let i = 0; i < loopLength; i++) {
|
|
45
|
+
const itemPath = `${arrayPath}[${i}]`;
|
|
46
|
+
const newItem = newItems[i];
|
|
47
|
+
const initialItem = initialItems[i];
|
|
48
|
+
const isEqual = Utils.structuralRegion(() => Equal.equals(newItem, initialItem));
|
|
49
|
+
if (!isEqual) {
|
|
50
|
+
nextDirty.add(itemPath);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (newItems.length !== initialItems.length) {
|
|
54
|
+
nextDirty.add(arrayPath);
|
|
55
|
+
} else {
|
|
56
|
+
nextDirty.delete(arrayPath);
|
|
57
|
+
}
|
|
58
|
+
return nextDirty;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Recalculates dirty fields for a subtree after value change.
|
|
62
|
+
* Clears the rootPath and all children, then re-evaluates recursively.
|
|
63
|
+
*
|
|
64
|
+
* @param rootPath - Empty string for full form, or a specific path for targeted update
|
|
65
|
+
*/
|
|
66
|
+
exports.recalculateDirtyFieldsForArray = recalculateDirtyFieldsForArray;
|
|
67
|
+
const recalculateDirtySubtree = (currentDirty, allInitial, allValues, rootPath = "") => {
|
|
68
|
+
const nextDirty = new Set(currentDirty);
|
|
69
|
+
if (rootPath === "") {
|
|
70
|
+
nextDirty.clear();
|
|
71
|
+
} else {
|
|
72
|
+
for (const path of nextDirty) {
|
|
73
|
+
if (path === rootPath || path.startsWith(rootPath + ".") || path.startsWith(rootPath + "[")) {
|
|
74
|
+
nextDirty.delete(path);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const targetValue = rootPath ? (0, _path.getNestedValue)(allValues, rootPath) : allValues;
|
|
79
|
+
const targetInitial = rootPath ? (0, _path.getNestedValue)(allInitial, rootPath) : allInitial;
|
|
80
|
+
const recurse = (current, initial, path) => {
|
|
81
|
+
if (Array.isArray(current)) {
|
|
82
|
+
const initialArr = initial ?? [];
|
|
83
|
+
for (let i = 0; i < Math.max(current.length, initialArr.length); i++) {
|
|
84
|
+
recurse(current[i], initialArr[i], path ? `${path}[${i}]` : `[${i}]`);
|
|
85
|
+
}
|
|
86
|
+
} else if (current !== null && typeof current === "object") {
|
|
87
|
+
const initialObj = initial ?? {};
|
|
88
|
+
const allKeys = new Set([...Object.keys(current), ...Object.keys(initialObj)]);
|
|
89
|
+
for (const key of allKeys) {
|
|
90
|
+
recurse(current[key], initialObj[key], path ? `${path}.${key}` : key);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
const isEqual = Utils.structuralRegion(() => Equal.equals(current, initial));
|
|
94
|
+
if (!isEqual && path) nextDirty.add(path);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
recurse(targetValue, targetInitial, rootPath);
|
|
98
|
+
return nextDirty;
|
|
99
|
+
};
|
|
100
|
+
exports.recalculateDirtySubtree = recalculateDirtySubtree;
|
|
101
|
+
//# sourceMappingURL=dirty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirty.js","names":["Equal","_interopRequireWildcard","require","Utils","_path","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","recalculateDirtyFieldsForArray","dirtyFields","initialValues","arrayPath","newItems","nextDirty","Set","Array","from","filter","path","startsWith","initialItems","getNestedValue","loopLength","Math","max","length","itemPath","newItem","initialItem","isEqual","structuralRegion","equals","add","delete","exports","recalculateDirtySubtree","currentDirty","allInitial","allValues","rootPath","clear","targetValue","targetInitial","recurse","current","initial","isArray","initialArr","initialObj","allKeys","keys","key"],"sources":["../../../src/internal/dirty.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setNestedValue = exports.schemaPathToFieldPath = exports.isPathOrParentDirty = exports.getNestedValue = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Internal path utilities for form field operations.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
const BRACKET_NOTATION_REGEX = /\[(\d+)\]/g;
|
|
13
|
+
/**
|
|
14
|
+
* Converts a schema path array to a dot/bracket notation string.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* schemaPathToFieldPath(["items", 0, "name"]) // "items[0].name"
|
|
18
|
+
*/
|
|
19
|
+
const schemaPathToFieldPath = path => {
|
|
20
|
+
if (path.length === 0) return "";
|
|
21
|
+
let result = String(path[0]);
|
|
22
|
+
for (let i = 1; i < path.length; i++) {
|
|
23
|
+
const segment = path[i];
|
|
24
|
+
if (typeof segment === "number") {
|
|
25
|
+
result += `[${segment}]`;
|
|
26
|
+
} else {
|
|
27
|
+
result += `.${String(segment)}`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Checks if a field path or any of its parent paths are in the dirty set.
|
|
34
|
+
*/
|
|
35
|
+
exports.schemaPathToFieldPath = schemaPathToFieldPath;
|
|
36
|
+
const isPathOrParentDirty = (dirtyFields, path) => {
|
|
37
|
+
if (dirtyFields.has(path)) return true;
|
|
38
|
+
let parent = path;
|
|
39
|
+
while (true) {
|
|
40
|
+
const lastDot = parent.lastIndexOf(".");
|
|
41
|
+
const lastBracket = parent.lastIndexOf("[");
|
|
42
|
+
const splitIndex = Math.max(lastDot, lastBracket);
|
|
43
|
+
if (splitIndex === -1) break;
|
|
44
|
+
parent = parent.substring(0, splitIndex);
|
|
45
|
+
if (dirtyFields.has(parent)) return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Gets a nested value from an object using dot/bracket notation path.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* getNestedValue({ items: [{ name: "A" }] }, "items[0].name") // "A"
|
|
54
|
+
*/
|
|
55
|
+
exports.isPathOrParentDirty = isPathOrParentDirty;
|
|
56
|
+
const getNestedValue = (obj, path) => {
|
|
57
|
+
if (path === "") return obj;
|
|
58
|
+
const parts = path.replace(BRACKET_NOTATION_REGEX, ".$1").split(".");
|
|
59
|
+
let current = obj;
|
|
60
|
+
for (const part of parts) {
|
|
61
|
+
if (current == null || typeof current !== "object") return undefined;
|
|
62
|
+
current = current[part];
|
|
63
|
+
}
|
|
64
|
+
return current;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Sets a nested value in an object immutably using dot/bracket notation path.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* setNestedValue({ items: [{ name: "A" }] }, "items[0].name", "B")
|
|
71
|
+
* // { items: [{ name: "B" }] }
|
|
72
|
+
*/
|
|
73
|
+
exports.getNestedValue = getNestedValue;
|
|
74
|
+
const setNestedValue = (obj, path, value) => {
|
|
75
|
+
if (path === "") return value;
|
|
76
|
+
const parts = path.replace(BRACKET_NOTATION_REGEX, ".$1").split(".");
|
|
77
|
+
const result = {
|
|
78
|
+
...obj
|
|
79
|
+
};
|
|
80
|
+
let current = result;
|
|
81
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
82
|
+
const part = parts[i];
|
|
83
|
+
if (Array.isArray(current[part])) {
|
|
84
|
+
current[part] = [...current[part]];
|
|
85
|
+
} else {
|
|
86
|
+
current[part] = {
|
|
87
|
+
...current[part]
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
current = current[part];
|
|
91
|
+
}
|
|
92
|
+
current[parts[parts.length - 1]] = value;
|
|
93
|
+
return result;
|
|
94
|
+
};
|
|
95
|
+
exports.setNestedValue = setNestedValue;
|
|
96
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","names":["BRACKET_NOTATION_REGEX","schemaPathToFieldPath","path","length","result","String","i","segment","exports","isPathOrParentDirty","dirtyFields","has","parent","lastDot","lastIndexOf","lastBracket","splitIndex","Math","max","substring","getNestedValue","obj","parts","replace","split","current","part","undefined","setNestedValue","value","Array","isArray"],"sources":["../../../src/internal/path.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createWeakRegistry = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Internal WeakRef-based registry for caching atoms.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Creates a WeakRef-based registry with automatic cleanup via FinalizationRegistry.
|
|
14
|
+
* Falls back to a regular Map in environments without WeakRef support.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
const createWeakRegistry = () => {
|
|
19
|
+
if (typeof WeakRef === "undefined" || typeof FinalizationRegistry === "undefined") {
|
|
20
|
+
const map = new Map();
|
|
21
|
+
return {
|
|
22
|
+
get: key => map.get(key),
|
|
23
|
+
set: (key, value) => {
|
|
24
|
+
map.set(key, value);
|
|
25
|
+
},
|
|
26
|
+
delete: key => map.delete(key),
|
|
27
|
+
clear: () => map.clear(),
|
|
28
|
+
values: () => map.values()
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const map = new Map();
|
|
32
|
+
const registry = new FinalizationRegistry(key => {
|
|
33
|
+
map.delete(key);
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
get: key => map.get(key)?.deref(),
|
|
37
|
+
set: (key, value) => {
|
|
38
|
+
map.set(key, new WeakRef(value));
|
|
39
|
+
registry.register(value, key);
|
|
40
|
+
},
|
|
41
|
+
delete: key => map.delete(key),
|
|
42
|
+
clear: () => map.clear(),
|
|
43
|
+
*values() {
|
|
44
|
+
for (const ref of map.values()) {
|
|
45
|
+
const value = ref.deref();
|
|
46
|
+
if (value !== undefined) yield value;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
exports.createWeakRegistry = createWeakRegistry;
|
|
52
|
+
//# sourceMappingURL=weak-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weak-registry.js","names":["createWeakRegistry","WeakRef","FinalizationRegistry","map","Map","get","key","set","value","delete","clear","values","registry","deref","register","ref","undefined","exports"],"sources":["../../../src/internal/weak-registry.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;;;;;AAmBA;;;;;;AAMO,MAAMA,kBAAkB,GAAGA,CAAA,KAAwC;EACxE,IAAI,OAAOC,OAAO,KAAK,WAAW,IAAI,OAAOC,oBAAoB,KAAK,WAAW,EAAE;IACjF,MAAMC,GAAG,GAAG,IAAIC,GAAG,EAAa;IAChC,OAAO;MACLC,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC;MAC1BC,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;QAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAEE,KAAK,CAAC;MACrB,CAAC;MACDC,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;MAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;MACxBC,MAAM,EAAEA,CAAA,KAAMR,GAAG,CAACQ,MAAM;KACzB;EACH;EAEA,MAAMR,GAAG,GAAG,IAAIC,GAAG,EAAsB;EACzC,MAAMQ,QAAQ,GAAG,IAAIV,oBAAoB,CAAUI,GAAG,IAAI;IACxDH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;EACjB,CAAC,CAAC;EAEF,OAAO;IACLD,GAAG,EAAGC,GAAG,IAAKH,GAAG,CAACE,GAAG,CAACC,GAAG,CAAC,EAAEO,KAAK,EAAE;IACnCN,GAAG,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAI;MAClBL,GAAG,CAACI,GAAG,CAACD,GAAG,EAAE,IAAIL,OAAO,CAACO,KAAK,CAAC,CAAC;MAChCI,QAAQ,CAACE,QAAQ,CAACN,KAAK,EAAEF,GAAG,CAAC;IAC/B,CAAC;IACDG,MAAM,EAAGH,GAAG,IAAKH,GAAG,CAACM,MAAM,CAACH,GAAG,CAAC;IAChCI,KAAK,EAAEA,CAAA,KAAMP,GAAG,CAACO,KAAK,EAAE;IACxB,CAACC,MAAMA,CAAA;MACL,KAAK,MAAMI,GAAG,IAAIZ,GAAG,CAACQ,MAAM,EAAE,EAAE;QAC9B,MAAMH,KAAK,GAAGO,GAAG,CAACF,KAAK,EAAE;QACzB,IAAIL,KAAK,KAAKQ,SAAS,EAAE,MAAMR,KAAK;MACtC;IACF;GACD;AACH,CAAC;AAAAS,OAAA,CAAAjB,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|