@native-form/core 0.1.0 → 0.1.1

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.
Files changed (100) hide show
  1. package/dist/index.cjs +2073 -0
  2. package/dist/index.d.cts +495 -0
  3. package/dist/index.d.ts +495 -9
  4. package/dist/index.js +2030 -7
  5. package/package.json +5 -3
  6. package/dist/Discovery.d.ts +0 -2
  7. package/dist/Discovery.d.ts.map +0 -1
  8. package/dist/Discovery.js +0 -2
  9. package/dist/Discovery.js.map +0 -1
  10. package/dist/FieldErrorRenderer.d.ts +0 -2
  11. package/dist/FieldErrorRenderer.d.ts.map +0 -1
  12. package/dist/FieldErrorRenderer.js +0 -2
  13. package/dist/FieldErrorRenderer.js.map +0 -1
  14. package/dist/FieldNode.d.ts +0 -2
  15. package/dist/FieldNode.d.ts.map +0 -1
  16. package/dist/FieldNode.js +0 -2
  17. package/dist/FieldNode.js.map +0 -1
  18. package/dist/FieldRegistry.d.ts +0 -2
  19. package/dist/FieldRegistry.d.ts.map +0 -1
  20. package/dist/FieldRegistry.js +0 -2
  21. package/dist/FieldRegistry.js.map +0 -1
  22. package/dist/FieldState.d.ts +0 -2
  23. package/dist/FieldState.d.ts.map +0 -1
  24. package/dist/FieldState.js +0 -2
  25. package/dist/FieldState.js.map +0 -1
  26. package/dist/Path.d.ts +0 -78
  27. package/dist/Path.d.ts.map +0 -1
  28. package/dist/Path.js +0 -219
  29. package/dist/Path.js.map +0 -1
  30. package/dist/Runtime.d.ts +0 -2
  31. package/dist/Runtime.d.ts.map +0 -1
  32. package/dist/Runtime.js +0 -2
  33. package/dist/Runtime.js.map +0 -1
  34. package/dist/RuntimeMutationPolicy.d.ts +0 -2
  35. package/dist/RuntimeMutationPolicy.d.ts.map +0 -1
  36. package/dist/RuntimeMutationPolicy.js +0 -2
  37. package/dist/RuntimeMutationPolicy.js.map +0 -1
  38. package/dist/Serializer.d.ts +0 -2
  39. package/dist/Serializer.d.ts.map +0 -1
  40. package/dist/Serializer.js +0 -2
  41. package/dist/Serializer.js.map +0 -1
  42. package/dist/Validation.d.ts +0 -2
  43. package/dist/Validation.d.ts.map +0 -1
  44. package/dist/Validation.js +0 -2
  45. package/dist/Validation.js.map +0 -1
  46. package/dist/ValidationPipeline.d.ts +0 -2
  47. package/dist/ValidationPipeline.d.ts.map +0 -1
  48. package/dist/ValidationPipeline.js +0 -2
  49. package/dist/ValidationPipeline.js.map +0 -1
  50. package/dist/discovery/Discovery.d.ts +0 -5
  51. package/dist/discovery/Discovery.d.ts.map +0 -1
  52. package/dist/discovery/Discovery.js +0 -63
  53. package/dist/discovery/Discovery.js.map +0 -1
  54. package/dist/errors/FieldErrorRenderer.d.ts +0 -17
  55. package/dist/errors/FieldErrorRenderer.d.ts.map +0 -1
  56. package/dist/errors/FieldErrorRenderer.js +0 -115
  57. package/dist/errors/FieldErrorRenderer.js.map +0 -1
  58. package/dist/field/FieldNode.d.ts +0 -38
  59. package/dist/field/FieldNode.d.ts.map +0 -1
  60. package/dist/field/FieldNode.js +0 -154
  61. package/dist/field/FieldNode.js.map +0 -1
  62. package/dist/field/FieldRegistry.d.ts +0 -19
  63. package/dist/field/FieldRegistry.d.ts.map +0 -1
  64. package/dist/field/FieldRegistry.js +0 -46
  65. package/dist/field/FieldRegistry.js.map +0 -1
  66. package/dist/field/FieldState.d.ts +0 -13
  67. package/dist/field/FieldState.d.ts.map +0 -1
  68. package/dist/field/FieldState.js +0 -2
  69. package/dist/field/FieldState.js.map +0 -1
  70. package/dist/index.d.ts.map +0 -1
  71. package/dist/index.js.map +0 -1
  72. package/dist/runtime/Runtime.d.ts +0 -137
  73. package/dist/runtime/Runtime.d.ts.map +0 -1
  74. package/dist/runtime/Runtime.js +0 -1374
  75. package/dist/runtime/Runtime.js.map +0 -1
  76. package/dist/runtime/RuntimeMutationPolicy.d.ts +0 -3
  77. package/dist/runtime/RuntimeMutationPolicy.d.ts.map +0 -1
  78. package/dist/runtime/RuntimeMutationPolicy.js +0 -34
  79. package/dist/runtime/RuntimeMutationPolicy.js.map +0 -1
  80. package/dist/serialization/Serializer.d.ts +0 -52
  81. package/dist/serialization/Serializer.d.ts.map +0 -1
  82. package/dist/serialization/Serializer.js +0 -115
  83. package/dist/serialization/Serializer.js.map +0 -1
  84. package/dist/shared/types.d.ts +0 -66
  85. package/dist/shared/types.d.ts.map +0 -1
  86. package/dist/shared/types.js +0 -2
  87. package/dist/shared/types.js.map +0 -1
  88. package/dist/tsdoc-metadata.json +0 -11
  89. package/dist/types.d.ts +0 -2
  90. package/dist/types.d.ts.map +0 -1
  91. package/dist/types.js +0 -2
  92. package/dist/types.js.map +0 -1
  93. package/dist/validation/Validation.d.ts +0 -61
  94. package/dist/validation/Validation.d.ts.map +0 -1
  95. package/dist/validation/Validation.js +0 -34
  96. package/dist/validation/Validation.js.map +0 -1
  97. package/dist/validation/ValidationPipeline.d.ts +0 -61
  98. package/dist/validation/ValidationPipeline.d.ts.map +0 -1
  99. package/dist/validation/ValidationPipeline.js +0 -73
  100. package/dist/validation/ValidationPipeline.js.map +0 -1
@@ -1,115 +0,0 @@
1
- export class FieldErrorRenderer {
2
- static nextErrorId = 0;
3
- errorIds = new WeakMap();
4
- errorElements = new WeakMap();
5
- applyErrors(fields, errors) {
6
- for (const field of fields) {
7
- this.applyFieldError(field, errors[field.name]);
8
- }
9
- }
10
- normalizeFields(fields) {
11
- for (const field of fields) {
12
- this.normalizeField(field);
13
- }
14
- }
15
- applyFieldError(field, message) {
16
- const element = field.element;
17
- try {
18
- element.setCustomValidity(message ?? "");
19
- }
20
- catch (_e) {
21
- // Some controls in tests may not support setCustomValidity.
22
- }
23
- if (!message) {
24
- this.removeErrorElements(this.findExistingErrorElements(element));
25
- this.errorElements.delete(element);
26
- return;
27
- }
28
- let errorElement = this.getPrimaryErrorElement(element);
29
- if (!errorElement) {
30
- errorElement = this.createErrorElement(field);
31
- element.insertAdjacentElement("afterend", errorElement);
32
- }
33
- errorElement.textContent = message;
34
- this.errorElements.set(element, errorElement);
35
- }
36
- normalizeField(field) {
37
- const element = field.element;
38
- const existing = this.findExistingErrorElements(element);
39
- if (existing.length === 0) {
40
- this.errorElements.delete(element);
41
- return;
42
- }
43
- const keep = existing[0];
44
- this.removeErrorElements(existing.slice(1));
45
- this.decorateErrorElement(field, keep);
46
- this.errorElements.set(element, keep);
47
- }
48
- getPrimaryErrorElement(element) {
49
- const stored = this.errorElements.get(element);
50
- if (stored?.isConnected) {
51
- const existing = this.findExistingErrorElements(element);
52
- if (existing.length > 1) {
53
- this.removeErrorElements(existing.slice(1));
54
- }
55
- return existing[0] ?? stored;
56
- }
57
- const existing = this.findExistingErrorElements(element);
58
- if (existing.length === 0) {
59
- return undefined;
60
- }
61
- const keep = existing[0];
62
- this.removeErrorElements(existing.slice(1));
63
- this.errorElements.set(element, keep);
64
- return keep;
65
- }
66
- findExistingErrorElements(element) {
67
- const results = [];
68
- let node = element.nextElementSibling;
69
- while (node) {
70
- if (node instanceof HTMLElement) {
71
- const id = node.id ?? "";
72
- const aria = node.getAttribute("aria-live");
73
- const isRuntimeLabel = node.dataset.nativeFormError === "true" ||
74
- id.startsWith("native-form-error-") ||
75
- aria === "polite";
76
- if (isRuntimeLabel) {
77
- results.push(node);
78
- node = node.nextElementSibling;
79
- continue;
80
- }
81
- }
82
- break;
83
- }
84
- return results;
85
- }
86
- removeErrorElements(elements) {
87
- for (const element of elements) {
88
- element.remove();
89
- }
90
- }
91
- createErrorElement(field) {
92
- const error = document.createElement("div");
93
- this.decorateErrorElement(field, error);
94
- error.style.color = "red";
95
- error.style.fontSize = "0.875rem";
96
- error.style.marginTop = "0.25rem";
97
- return error;
98
- }
99
- decorateErrorElement(field, element) {
100
- element.id = this.getOrCreateErrorId(field.element);
101
- element.dataset.nativeFormError = "true";
102
- element.setAttribute("data-for", field.name);
103
- element.setAttribute("aria-live", "polite");
104
- }
105
- getOrCreateErrorId(element) {
106
- const existing = this.errorIds.get(element);
107
- if (existing) {
108
- return existing;
109
- }
110
- const created = `native-form-error-${FieldErrorRenderer.nextErrorId++}`;
111
- this.errorIds.set(element, created);
112
- return created;
113
- }
114
- }
115
- //# sourceMappingURL=FieldErrorRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldErrorRenderer.js","sourceRoot":"","sources":["../../src/errors/FieldErrorRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { NativeFormElement, NativeFormValue } from "../shared/types";
2
- import { FieldState } from "./FieldState";
3
- /** @public */
4
- export declare class FieldNode {
5
- readonly element: NativeFormElement;
6
- constructor(element: NativeFormElement);
7
- private dirty;
8
- private touched;
9
- private mounted;
10
- private initialValue;
11
- private stateValue;
12
- private error?;
13
- private validating;
14
- get name(): string;
15
- get tag(): string;
16
- get type(): string;
17
- get value(): unknown;
18
- focus(): void;
19
- blur(): void;
20
- get isDirty(): boolean;
21
- get isTouched(): boolean;
22
- get isMounted(): boolean;
23
- get isValidating(): boolean;
24
- setValidating(validating: boolean): void;
25
- register(initialValue?: NativeFormValue): void;
26
- unregister(): void;
27
- getState(): FieldState;
28
- updateValue(value?: NativeFormValue): void;
29
- markTouched(): void;
30
- setError(message: string | undefined): void;
31
- reset(value: NativeFormValue | undefined): void;
32
- handleInput(value?: NativeFormValue): void;
33
- handleChange(value?: NativeFormValue): void;
34
- handleBlur(): void;
35
- handleReset(value?: NativeFormValue): void;
36
- handleSubmit(): void;
37
- }
38
- //# sourceMappingURL=FieldNode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldNode.d.ts","sourceRoot":"","sources":["../../src/field/FieldNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,cAAc;AACd,qBAAa,SAAS;aACQ,OAAO,EAAE,iBAAiB;gBAA1B,OAAO,EAAE,iBAAiB;IACtD,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAE3B,IAAI,IAAI,WAEP;IAED,IAAI,GAAG,WAEN;IAED,IAAI,IAAI,WAUP;IAED,IAAI,KAAK,IAAI,OAAO,CA6BnB;IAED,KAAK;IAIL,IAAI;IAIJ,IAAI,OAAO,YAEV;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,YAAY,YAEf;IAED,aAAa,CAAC,UAAU,EAAE,OAAO;IAKjC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe;IAUvC,UAAU;IAIV,QAAQ,IAAI,UAAU;IAatB,WAAW,CAAC,KAAK,CAAC,EAAE,eAAe;IAMnC,WAAW;IAIX,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAIpC,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS;IAWxC,WAAW,CAAC,KAAK,CAAC,EAAE,eAAe;IAKnC,YAAY,CAAC,KAAK,CAAC,EAAE,eAAe;IAKpC,UAAU;IAKV,WAAW,CAAC,KAAK,CAAC,EAAE,eAAe;IAQnC,YAAY;CAGb"}
@@ -1,154 +0,0 @@
1
- /** @public */
2
- export class FieldNode {
3
- element;
4
- constructor(element) {
5
- this.element = element;
6
- }
7
- dirty = false;
8
- touched = false;
9
- mounted = true;
10
- initialValue = undefined;
11
- stateValue = undefined;
12
- error;
13
- validating = false;
14
- get name() {
15
- return this.element.name;
16
- }
17
- get tag() {
18
- return this.element.tagName.toLowerCase();
19
- }
20
- get type() {
21
- if (this.element instanceof HTMLInputElement) {
22
- return this.element.type;
23
- }
24
- if (this.element instanceof HTMLSelectElement) {
25
- return this.element.multiple ? "select-multiple" : "select";
26
- }
27
- return "textarea";
28
- }
29
- get value() {
30
- if (this.element instanceof HTMLInputElement) {
31
- switch (this.element.type) {
32
- case "checkbox":
33
- return this.element.checked;
34
- case "radio":
35
- return this.element.checked ? this.element.value : undefined;
36
- case "number":
37
- return this.element.value === ""
38
- ? undefined
39
- : this.element.valueAsNumber;
40
- case "file":
41
- return this.element.files;
42
- default:
43
- return this.element.value;
44
- }
45
- }
46
- if (this.element instanceof HTMLSelectElement) {
47
- return this.element.multiple
48
- ? Array.from(this.element.selectedOptions).map((o) => o.value)
49
- : this.element.value;
50
- }
51
- return this.element.value;
52
- }
53
- focus() {
54
- this.element.focus();
55
- }
56
- blur() {
57
- this.element.blur();
58
- }
59
- get isDirty() {
60
- return this.dirty;
61
- }
62
- get isTouched() {
63
- return this.touched;
64
- }
65
- get isMounted() {
66
- return this.mounted;
67
- }
68
- get isValidating() {
69
- return this.validating;
70
- }
71
- setValidating(validating) {
72
- this.validating = validating;
73
- }
74
- // --- New state API (replaces FieldStateStore) ---
75
- register(initialValue) {
76
- this.mounted = true;
77
- this.initialValue = initialValue;
78
- this.stateValue = initialValue;
79
- this.dirty = false;
80
- this.touched = false;
81
- this.error = undefined;
82
- this.validating = false;
83
- }
84
- unregister() {
85
- this.mounted = false;
86
- }
87
- getState() {
88
- return {
89
- name: this.name,
90
- dirty: this.dirty,
91
- touched: this.touched,
92
- mounted: this.mounted,
93
- initialValue: this.initialValue,
94
- value: this.stateValue,
95
- error: this.error,
96
- validating: this.validating,
97
- };
98
- }
99
- updateValue(value) {
100
- const next = value === undefined ? this.value : value;
101
- this.stateValue = next;
102
- this.dirty = !isEqualValue(this.initialValue, next);
103
- }
104
- markTouched() {
105
- this.touched = true;
106
- }
107
- setError(message) {
108
- this.error = message;
109
- }
110
- reset(value) {
111
- this.initialValue = value;
112
- this.stateValue = value;
113
- this.dirty = false;
114
- this.touched = false;
115
- this.error = undefined;
116
- this.validating = false;
117
- }
118
- // --- Lifecycle helpers ---
119
- // Called when the browser emits input on the control
120
- handleInput(value) {
121
- this.updateValue(value);
122
- }
123
- // Called when the browser emits change on the control
124
- handleChange(value) {
125
- this.updateValue(value);
126
- }
127
- // Called when the control is blurred
128
- handleBlur() {
129
- this.markTouched();
130
- }
131
- // Called when the form is reset
132
- handleReset(value) {
133
- const initial = value ?? this.initialValue ?? this.value;
134
- this.reset(initial);
135
- this.setError(undefined);
136
- }
137
- // Called when the form is submitted (mark touched)
138
- handleSubmit() {
139
- this.markTouched();
140
- }
141
- }
142
- function isEqualValue(left, right) {
143
- if (Array.isArray(left) || Array.isArray(right)) {
144
- if (!Array.isArray(left) || !Array.isArray(right)) {
145
- return false;
146
- }
147
- if (left.length !== right.length) {
148
- return false;
149
- }
150
- return left.every((value, index) => value === right[index]);
151
- }
152
- return left === right;
153
- }
154
- //# sourceMappingURL=FieldNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldNode.js","sourceRoot":"","sources":["../../src/field/FieldNode.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { FieldNode } from "./FieldNode";
2
- export declare class FieldRegistry {
3
- private readonly fields;
4
- onChange?: (event: {
5
- type: "mount" | "unmount";
6
- field: FieldNode;
7
- }) => void;
8
- register(field: FieldNode): void;
9
- unregister(name: string): void;
10
- get(name: string): FieldNode | undefined;
11
- has(name: string): boolean;
12
- values(): FieldNode[];
13
- keys(): string[];
14
- entries(): [string, FieldNode][];
15
- clear(): void;
16
- get size(): number;
17
- getAll(): FieldNode[];
18
- }
19
- //# sourceMappingURL=FieldRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldRegistry.d.ts","sourceRoot":"","sources":["../../src/field/FieldRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,KAAK,IAAI,CAAC;IAE5E,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,IAAI,SAAS,EAAE;IAIrB,IAAI,IAAI,MAAM,EAAE;IAIhB,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IAIhC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,IAAI,SAAS,EAAE;CAGtB"}
@@ -1,46 +0,0 @@
1
- export class FieldRegistry {
2
- fields = new Map();
3
- // Optional change callback used by Runtime to observe mount/unmount events.
4
- onChange;
5
- register(field) {
6
- this.fields.set(field.name, field);
7
- this.onChange?.({ type: "mount", field });
8
- }
9
- unregister(name) {
10
- const field = this.fields.get(name);
11
- if (field) {
12
- field.unregister();
13
- this.onChange?.({ type: "unmount", field });
14
- }
15
- this.fields.delete(name);
16
- }
17
- get(name) {
18
- return this.fields.get(name);
19
- }
20
- has(name) {
21
- return this.fields.has(name);
22
- }
23
- values() {
24
- return [...this.fields.values()];
25
- }
26
- keys() {
27
- return Array.from(this.fields.keys());
28
- }
29
- entries() {
30
- return Array.from(this.fields.entries());
31
- }
32
- clear() {
33
- for (const field of this.fields.values()) {
34
- field.unregister();
35
- this.onChange?.({ type: "unmount", field });
36
- }
37
- this.fields.clear();
38
- }
39
- get size() {
40
- return this.fields.size;
41
- }
42
- getAll() {
43
- return Array.from(this.fields.values());
44
- }
45
- }
46
- //# sourceMappingURL=FieldRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldRegistry.js","sourceRoot":"","sources":["../../src/field/FieldRegistry.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACP,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACvD,4EAA4E;IAC5E,QAAQ,CAAoE;IAE5E,QAAQ,CAAC,KAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF"}
@@ -1,13 +0,0 @@
1
- import { NativeFormValue } from "../shared/types";
2
- /** @public */
3
- export interface FieldState {
4
- name: string;
5
- dirty: boolean;
6
- touched: boolean;
7
- mounted: boolean;
8
- initialValue: NativeFormValue | undefined;
9
- value: NativeFormValue | undefined;
10
- error?: string;
11
- validating?: boolean;
12
- }
13
- //# sourceMappingURL=FieldState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldState.d.ts","sourceRoot":"","sources":["../../src/field/FieldState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,OAAO,CAAC;IAEf,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,OAAO,CAAC;IAEjB,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAE1C,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IAEnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=FieldState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FieldState.js","sourceRoot":"","sources":["../../src/field/FieldState.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,sBAAsB,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,OAAO,EACP,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,SAAS,EACT,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,SAAS,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAEX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,OAAO,GAIR,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EAGb,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,SAAS,EACT,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,wBAAwB,GAMzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,GAWhB,MAAM,cAAc,CAAC"}
@@ -1,137 +0,0 @@
1
- import { FieldState } from "../field/FieldState";
2
- import { SerializeFieldsOptions } from "../serialization/Serializer";
3
- import { ValidationPipeline } from "../validation/ValidationPipeline";
4
- import { NativeFormFlatValues, NativeFormValue, NativeFormValues, RuntimeListener, SerializationMode, ValidationMode } from "../shared/types";
5
- import { AsyncFieldValidator, SchemaLike, ValidationResult, Validator } from "../validation/Validation";
6
- /** @public */
7
- export interface RuntimeOptions<TValues extends NativeFormValues = NativeFormValues> {
8
- mode?: ValidationMode;
9
- serializationMode?: SerializationMode;
10
- serializeFieldsOptions?: SerializeFieldsOptions;
11
- nesting?: "flat" | "nested";
12
- /**
13
- * When true, preserves serialized values of fields that are removed from the DOM,
14
- * merging them into subsequent serializations and final submit.
15
- * @defaultValue false
16
- */
17
- preserveUnmountedValues?: boolean;
18
- schema?: SchemaLike<TValues>;
19
- validator?: Validator<TValues>;
20
- pipeline?: ValidationPipeline<TValues>;
21
- debounceMs?: number;
22
- asyncValidators?: Record<string, AsyncFieldValidator>;
23
- onSubmit?: (values: TValues, event?: SubmitEvent) => void | Promise<void>;
24
- onInvalid?: (errors: Record<string, string>, values: NativeFormValues, event?: SubmitEvent) => void;
25
- }
26
- /** @public */
27
- export interface RuntimeFormState {
28
- dirty: boolean;
29
- touched: boolean;
30
- valid: boolean;
31
- submitting: boolean;
32
- validating: boolean;
33
- errors: Record<string, string>;
34
- fields: FieldState[];
35
- values: NativeFormFlatValues;
36
- }
37
- /** @public */
38
- export interface RuntimePublicApi<TValues extends NativeFormValues = NativeFormValues> {
39
- readonly fields: FieldState[];
40
- readonly serializationMode: SerializationMode;
41
- /**
42
- * Preserved values from fields that have been unmounted from the DOM
43
- * when `preserveUnmountedValues: true` is configured.
44
- */
45
- readonly preservedValues: Record<string, NativeFormValue>;
46
- mount(form: HTMLFormElement): void;
47
- unmount(): void;
48
- serialize(): NativeFormFlatValues;
49
- serializeFields(options?: SerializeFieldsOptions): NativeFormValues;
50
- validate(): Promise<ValidationResult<TValues>>;
51
- validateFields(fieldNames: readonly string[]): Promise<ValidationResult<TValues>>;
52
- submit(event?: SubmitEvent): Promise<ValidationResult<TValues>>;
53
- subscribe(listener: RuntimeListener): () => void;
54
- unsubscribe(listener: RuntimeListener): void;
55
- getFieldValue(name: string): NativeFormValue | undefined;
56
- getFieldState(name: string): FieldState | undefined;
57
- getFieldStates(): FieldState[];
58
- getFormState(): RuntimeFormState;
59
- setOptions(options: Partial<RuntimeOptions<TValues>>): void;
60
- removeArrayItem(arrayName: string, index: number): void;
61
- swapArrayItems(arrayName: string, indexA: number, indexB: number): void;
62
- moveArrayItem(arrayName: string, fromIndex: number, toIndex: number): void;
63
- insertArrayItem(arrayName: string, index: number): void;
64
- }
65
- /** @public */
66
- export declare class Runtime<TValues extends NativeFormValues = NativeFormValues> implements RuntimePublicApi<TValues> {
67
- private readonly options;
68
- private readonly registry;
69
- private readonly discovery;
70
- private readonly serializer;
71
- private readonly fieldErrorRenderer;
72
- private form?;
73
- private readonly listeners;
74
- private observer?;
75
- private validationController?;
76
- private readonly debounceTimers;
77
- private readonly fieldValidationControllers;
78
- private submitting;
79
- private validating;
80
- private errors;
81
- private preservedValuesStore;
82
- private isSyncingFields;
83
- private pipeline;
84
- constructor(options?: RuntimeOptions<TValues>);
85
- mount(form: HTMLFormElement): void;
86
- unmount(): void;
87
- private clearDebounceTimers;
88
- private abortAllValidations;
89
- private getAsyncValidator;
90
- serialize(): NativeFormFlatValues;
91
- serializeFields(options?: SerializeFieldsOptions): NativeFormValues;
92
- get fields(): FieldState[];
93
- get serializationMode(): SerializationMode;
94
- get preservedValues(): Record<string, NativeFormValue>;
95
- private extractCurrentValues;
96
- subscribe(listener: RuntimeListener): () => void;
97
- unsubscribe(listener: RuntimeListener): void;
98
- private notify;
99
- private emitFieldEvent;
100
- private emitValidationEvent;
101
- private emitFormEvent;
102
- submit(event?: SubmitEvent): Promise<ValidationResult<TValues>>;
103
- validate(): Promise<ValidationResult<TValues>>;
104
- validateFields(fieldNames: readonly string[]): Promise<ValidationResult<TValues>>;
105
- private handleSubmit;
106
- private processSubmitFlow;
107
- private runValidation;
108
- private handleFieldUpdate;
109
- private processInputFlow;
110
- private processChangeFlow;
111
- private processUpdateFlow;
112
- private prepareFieldFlow;
113
- private triggerFieldValidation;
114
- private executeFieldValidation;
115
- private handleFieldBlur;
116
- private runFieldValidation;
117
- private handleReset;
118
- private processResetFlow;
119
- getFieldState(name: string): FieldState | undefined;
120
- getFieldStates(): FieldState[];
121
- setOptions(options: Partial<RuntimeOptions<TValues>>): void;
122
- removeArrayItem(arrayName: string, index: number): void;
123
- swapArrayItems(arrayName: string, indexA: number, indexB: number): void;
124
- moveArrayItem(arrayName: string, fromIndex: number, toIndex: number): void;
125
- insertArrayItem(arrayName: string, index: number): void;
126
- getFormState(): RuntimeFormState;
127
- private ensureField;
128
- getFieldValue(name: string): NativeFormValue | undefined;
129
- private getValidationFields;
130
- private toValidationField;
131
- private syncFields;
132
- private handleMutation;
133
- private applyFieldValidationResult;
134
- private applyValidationResult;
135
- private applyNativeErrors;
136
- }
137
- //# sourceMappingURL=Runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"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"}