@xyo-network/react-form-group 2.81.9 → 2.82.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.
Files changed (222) hide show
  1. package/dist/browser/FormGroup.d.cts +4 -4
  2. package/dist/browser/FormGroup.d.mts +4 -4
  3. package/dist/browser/FormGroup.d.ts +4 -4
  4. package/dist/browser/context/Context.d.cts +1 -1
  5. package/dist/browser/context/Context.d.mts +1 -1
  6. package/dist/browser/context/Context.d.ts +1 -1
  7. package/dist/browser/context/Provider.d.cts +1 -1
  8. package/dist/browser/context/Provider.d.cts.map +1 -1
  9. package/dist/browser/context/Provider.d.mts +1 -1
  10. package/dist/browser/context/Provider.d.mts.map +1 -1
  11. package/dist/browser/context/Provider.d.ts +1 -1
  12. package/dist/browser/context/Provider.d.ts.map +1 -1
  13. package/dist/browser/context/State.d.cts +1 -1
  14. package/dist/browser/context/State.d.mts +1 -1
  15. package/dist/browser/context/State.d.ts +1 -1
  16. package/dist/browser/context/index.d.cts +4 -4
  17. package/dist/browser/context/index.d.cts.map +1 -1
  18. package/dist/browser/context/index.d.mts +4 -4
  19. package/dist/browser/context/index.d.mts.map +1 -1
  20. package/dist/browser/context/index.d.ts +4 -4
  21. package/dist/browser/context/index.d.ts.map +1 -1
  22. package/dist/browser/context/use.d.cts +1 -1
  23. package/dist/browser/context/use.d.cts.map +1 -1
  24. package/dist/browser/context/use.d.mts +1 -1
  25. package/dist/browser/context/use.d.mts.map +1 -1
  26. package/dist/browser/context/use.d.ts +1 -1
  27. package/dist/browser/context/use.d.ts.map +1 -1
  28. package/dist/browser/control/AbstractControl.d.cts +1 -1
  29. package/dist/browser/control/AbstractControl.d.mts +1 -1
  30. package/dist/browser/control/AbstractControl.d.ts +1 -1
  31. package/dist/browser/control/FormControl.d.cts +1 -1
  32. package/dist/browser/control/FormControl.d.mts +1 -1
  33. package/dist/browser/control/FormControl.d.ts +1 -1
  34. package/dist/browser/control/FormControlBase.d.cts +4 -4
  35. package/dist/browser/control/FormControlBase.d.cts.map +1 -1
  36. package/dist/browser/control/FormControlBase.d.mts +4 -4
  37. package/dist/browser/control/FormControlBase.d.mts.map +1 -1
  38. package/dist/browser/control/FormControlBase.d.ts +4 -4
  39. package/dist/browser/control/FormControlBase.d.ts.map +1 -1
  40. package/dist/browser/control/accessor/ControlValueAccessor.d.cts +1 -1
  41. package/dist/browser/control/accessor/ControlValueAccessor.d.mts +1 -1
  42. package/dist/browser/control/accessor/ControlValueAccessor.d.ts +1 -1
  43. package/dist/browser/control/accessor/ControlValueAccessorBase.d.cts +2 -2
  44. package/dist/browser/control/accessor/ControlValueAccessorBase.d.cts.map +1 -1
  45. package/dist/browser/control/accessor/ControlValueAccessorBase.d.mts +2 -2
  46. package/dist/browser/control/accessor/ControlValueAccessorBase.d.mts.map +1 -1
  47. package/dist/browser/control/accessor/ControlValueAccessorBase.d.ts +2 -2
  48. package/dist/browser/control/accessor/ControlValueAccessorBase.d.ts.map +1 -1
  49. package/dist/browser/control/accessor/index.d.cts +4 -4
  50. package/dist/browser/control/accessor/index.d.mts +4 -4
  51. package/dist/browser/control/accessor/index.d.ts +4 -4
  52. package/dist/browser/control/index.d.cts +4 -4
  53. package/dist/browser/control/index.d.mts +4 -4
  54. package/dist/browser/control/index.d.ts +4 -4
  55. package/dist/browser/index.cjs +183 -122
  56. package/dist/browser/index.cjs.map +1 -1
  57. package/dist/browser/index.d.cts +5 -5
  58. package/dist/browser/index.d.mts +5 -5
  59. package/dist/browser/index.d.ts +5 -5
  60. package/dist/browser/{index.js → index.mjs} +176 -123
  61. package/dist/browser/index.mjs.map +1 -0
  62. package/dist/browser/storage/ArchivistFormGroupStorage.d.cts +1 -1
  63. package/dist/browser/storage/ArchivistFormGroupStorage.d.mts +1 -1
  64. package/dist/browser/storage/ArchivistFormGroupStorage.d.ts +1 -1
  65. package/dist/browser/storage/index.d.cts +2 -2
  66. package/dist/browser/storage/index.d.mts +2 -2
  67. package/dist/browser/storage/index.d.ts +2 -2
  68. package/dist/neutral/FormGroup.d.cts +4 -4
  69. package/dist/neutral/FormGroup.d.mts +4 -4
  70. package/dist/neutral/FormGroup.d.ts +4 -4
  71. package/dist/neutral/context/Context.d.cts +1 -1
  72. package/dist/neutral/context/Context.d.mts +1 -1
  73. package/dist/neutral/context/Context.d.ts +1 -1
  74. package/dist/neutral/context/Provider.d.cts +1 -1
  75. package/dist/neutral/context/Provider.d.cts.map +1 -1
  76. package/dist/neutral/context/Provider.d.mts +1 -1
  77. package/dist/neutral/context/Provider.d.mts.map +1 -1
  78. package/dist/neutral/context/Provider.d.ts +1 -1
  79. package/dist/neutral/context/Provider.d.ts.map +1 -1
  80. package/dist/neutral/context/State.d.cts +1 -1
  81. package/dist/neutral/context/State.d.mts +1 -1
  82. package/dist/neutral/context/State.d.ts +1 -1
  83. package/dist/neutral/context/index.d.cts +4 -4
  84. package/dist/neutral/context/index.d.cts.map +1 -1
  85. package/dist/neutral/context/index.d.mts +4 -4
  86. package/dist/neutral/context/index.d.mts.map +1 -1
  87. package/dist/neutral/context/index.d.ts +4 -4
  88. package/dist/neutral/context/index.d.ts.map +1 -1
  89. package/dist/neutral/context/use.d.cts +1 -1
  90. package/dist/neutral/context/use.d.cts.map +1 -1
  91. package/dist/neutral/context/use.d.mts +1 -1
  92. package/dist/neutral/context/use.d.mts.map +1 -1
  93. package/dist/neutral/context/use.d.ts +1 -1
  94. package/dist/neutral/context/use.d.ts.map +1 -1
  95. package/dist/neutral/control/AbstractControl.d.cts +1 -1
  96. package/dist/neutral/control/AbstractControl.d.mts +1 -1
  97. package/dist/neutral/control/AbstractControl.d.ts +1 -1
  98. package/dist/neutral/control/FormControl.d.cts +1 -1
  99. package/dist/neutral/control/FormControl.d.mts +1 -1
  100. package/dist/neutral/control/FormControl.d.ts +1 -1
  101. package/dist/neutral/control/FormControlBase.d.cts +4 -4
  102. package/dist/neutral/control/FormControlBase.d.cts.map +1 -1
  103. package/dist/neutral/control/FormControlBase.d.mts +4 -4
  104. package/dist/neutral/control/FormControlBase.d.mts.map +1 -1
  105. package/dist/neutral/control/FormControlBase.d.ts +4 -4
  106. package/dist/neutral/control/FormControlBase.d.ts.map +1 -1
  107. package/dist/neutral/control/accessor/ControlValueAccessor.d.cts +1 -1
  108. package/dist/neutral/control/accessor/ControlValueAccessor.d.mts +1 -1
  109. package/dist/neutral/control/accessor/ControlValueAccessor.d.ts +1 -1
  110. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.cts +2 -2
  111. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.cts.map +1 -1
  112. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.mts +2 -2
  113. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.mts.map +1 -1
  114. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.ts +2 -2
  115. package/dist/neutral/control/accessor/ControlValueAccessorBase.d.ts.map +1 -1
  116. package/dist/neutral/control/accessor/index.d.cts +4 -4
  117. package/dist/neutral/control/accessor/index.d.mts +4 -4
  118. package/dist/neutral/control/accessor/index.d.ts +4 -4
  119. package/dist/neutral/control/index.d.cts +4 -4
  120. package/dist/neutral/control/index.d.mts +4 -4
  121. package/dist/neutral/control/index.d.ts +4 -4
  122. package/dist/neutral/index.cjs +183 -122
  123. package/dist/neutral/index.cjs.map +1 -1
  124. package/dist/neutral/index.d.cts +5 -5
  125. package/dist/neutral/index.d.mts +5 -5
  126. package/dist/neutral/index.d.ts +5 -5
  127. package/dist/neutral/{index.js → index.mjs} +176 -123
  128. package/dist/neutral/index.mjs.map +1 -0
  129. package/dist/neutral/storage/ArchivistFormGroupStorage.d.cts +1 -1
  130. package/dist/neutral/storage/ArchivistFormGroupStorage.d.mts +1 -1
  131. package/dist/neutral/storage/ArchivistFormGroupStorage.d.ts +1 -1
  132. package/dist/neutral/storage/index.d.cts +2 -2
  133. package/dist/neutral/storage/index.d.mts +2 -2
  134. package/dist/neutral/storage/index.d.ts +2 -2
  135. package/dist/node/FormGroup.d.cts +4 -4
  136. package/dist/node/FormGroup.d.mts +4 -4
  137. package/dist/node/FormGroup.d.ts +4 -4
  138. package/dist/node/context/Context.d.cts +1 -1
  139. package/dist/node/context/Context.d.mts +1 -1
  140. package/dist/node/context/Context.d.ts +1 -1
  141. package/dist/node/context/Provider.d.cts +1 -1
  142. package/dist/node/context/Provider.d.cts.map +1 -1
  143. package/dist/node/context/Provider.d.mts +1 -1
  144. package/dist/node/context/Provider.d.mts.map +1 -1
  145. package/dist/node/context/Provider.d.ts +1 -1
  146. package/dist/node/context/Provider.d.ts.map +1 -1
  147. package/dist/node/context/State.d.cts +1 -1
  148. package/dist/node/context/State.d.mts +1 -1
  149. package/dist/node/context/State.d.ts +1 -1
  150. package/dist/node/context/index.d.cts +4 -4
  151. package/dist/node/context/index.d.cts.map +1 -1
  152. package/dist/node/context/index.d.mts +4 -4
  153. package/dist/node/context/index.d.mts.map +1 -1
  154. package/dist/node/context/index.d.ts +4 -4
  155. package/dist/node/context/index.d.ts.map +1 -1
  156. package/dist/node/context/use.d.cts +1 -1
  157. package/dist/node/context/use.d.cts.map +1 -1
  158. package/dist/node/context/use.d.mts +1 -1
  159. package/dist/node/context/use.d.mts.map +1 -1
  160. package/dist/node/context/use.d.ts +1 -1
  161. package/dist/node/context/use.d.ts.map +1 -1
  162. package/dist/node/control/AbstractControl.d.cts +1 -1
  163. package/dist/node/control/AbstractControl.d.mts +1 -1
  164. package/dist/node/control/AbstractControl.d.ts +1 -1
  165. package/dist/node/control/FormControl.d.cts +1 -1
  166. package/dist/node/control/FormControl.d.mts +1 -1
  167. package/dist/node/control/FormControl.d.ts +1 -1
  168. package/dist/node/control/FormControlBase.d.cts +4 -4
  169. package/dist/node/control/FormControlBase.d.cts.map +1 -1
  170. package/dist/node/control/FormControlBase.d.mts +4 -4
  171. package/dist/node/control/FormControlBase.d.mts.map +1 -1
  172. package/dist/node/control/FormControlBase.d.ts +4 -4
  173. package/dist/node/control/FormControlBase.d.ts.map +1 -1
  174. package/dist/node/control/accessor/ControlValueAccessor.d.cts +1 -1
  175. package/dist/node/control/accessor/ControlValueAccessor.d.mts +1 -1
  176. package/dist/node/control/accessor/ControlValueAccessor.d.ts +1 -1
  177. package/dist/node/control/accessor/ControlValueAccessorBase.d.cts +2 -2
  178. package/dist/node/control/accessor/ControlValueAccessorBase.d.cts.map +1 -1
  179. package/dist/node/control/accessor/ControlValueAccessorBase.d.mts +2 -2
  180. package/dist/node/control/accessor/ControlValueAccessorBase.d.mts.map +1 -1
  181. package/dist/node/control/accessor/ControlValueAccessorBase.d.ts +2 -2
  182. package/dist/node/control/accessor/ControlValueAccessorBase.d.ts.map +1 -1
  183. package/dist/node/control/accessor/index.d.cts +4 -4
  184. package/dist/node/control/accessor/index.d.mts +4 -4
  185. package/dist/node/control/accessor/index.d.ts +4 -4
  186. package/dist/node/control/index.d.cts +4 -4
  187. package/dist/node/control/index.d.mts +4 -4
  188. package/dist/node/control/index.d.ts +4 -4
  189. package/dist/node/index.cjs +183 -127
  190. package/dist/node/index.cjs.map +1 -1
  191. package/dist/node/index.d.cts +5 -5
  192. package/dist/node/index.d.mts +5 -5
  193. package/dist/node/index.d.ts +5 -5
  194. package/dist/node/{index.js → index.mjs} +176 -128
  195. package/dist/node/index.mjs.map +1 -0
  196. package/dist/node/storage/ArchivistFormGroupStorage.d.cts +1 -1
  197. package/dist/node/storage/ArchivistFormGroupStorage.d.mts +1 -1
  198. package/dist/node/storage/ArchivistFormGroupStorage.d.ts +1 -1
  199. package/dist/node/storage/index.d.cts +2 -2
  200. package/dist/node/storage/index.d.mts +2 -2
  201. package/dist/node/storage/index.d.ts +2 -2
  202. package/package.json +17 -17
  203. package/src/FormGroup.ts +5 -5
  204. package/src/context/Context.ts +1 -1
  205. package/src/context/Provider.tsx +4 -3
  206. package/src/context/State.ts +1 -1
  207. package/src/context/index.ts +4 -4
  208. package/src/context/{use.tsx → use.ts} +1 -1
  209. package/src/control/AbstractControl.ts +2 -2
  210. package/src/control/FormControl.ts +1 -1
  211. package/src/control/FormControlBase.ts +4 -3
  212. package/src/control/accessor/ControlValueAccessor.ts +1 -1
  213. package/src/control/accessor/ControlValueAccessorBase.ts +6 -7
  214. package/src/control/accessor/index.ts +4 -4
  215. package/src/control/index.ts +4 -4
  216. package/src/index.ts +5 -5
  217. package/src/storage/ArchivistFormGroupStorage.ts +1 -1
  218. package/src/storage/index.ts +2 -2
  219. package/src/stories/test.stories.tsx +0 -1
  220. package/dist/browser/index.js.map +0 -1
  221. package/dist/neutral/index.js.map +0 -1
  222. package/dist/node/index.js.map +0 -1
@@ -1,9 +1,12 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/context/Context.ts
2
5
  import { createContextEx } from "@xyo-network/react-shared";
3
6
  var FormGroupBaseContext = createContextEx();
4
7
 
5
8
  // src/context/Provider.tsx
6
- import { useMemo } from "react";
9
+ import React, { useMemo } from "react";
7
10
 
8
11
  // src/FormGroup.ts
9
12
  import { forget as forget3 } from "@xylabs/forget";
@@ -14,104 +17,110 @@ import { forget as forget2 } from "@xylabs/forget";
14
17
  // src/control/accessor/ControlValueAccessorBase.ts
15
18
  import { forget } from "@xylabs/forget";
16
19
  import { BaseEmitter } from "@xyo-network/module-abstract";
17
- var DefaultSetOptions = { disableEmit: false };
18
- var ControlValueAccessorBase = class extends BaseEmitter {
20
+ var DefaultSetOptions = {
21
+ disableEmit: false
22
+ };
23
+ var _ControlValueAccessorBase = class _ControlValueAccessorBase extends BaseEmitter {
24
+ config;
25
+ _error;
26
+ _previousValue;
27
+ _serializeSettings;
28
+ _touched;
29
+ _value;
19
30
  constructor(config) {
20
31
  super({});
21
32
  this.config = config;
33
+ this._error = "";
34
+ this._previousValue = void 0;
35
+ this._serializeSettings = {
36
+ sensitive: false,
37
+ serializable: false
38
+ };
39
+ this._touched = false;
40
+ this._value = void 0;
41
+ this.onChange = (_) => {
42
+ };
43
+ this.onErrorChange = () => {
44
+ };
45
+ this.onTouched = (_isTouched) => {
46
+ };
22
47
  }
23
- _error = "";
24
- _previousValue = void 0;
25
- _serializeSettings = { sensitive: false, serializable: false };
26
- _touched = false;
27
- _value = void 0;
28
48
  /**
29
- * The error message for the control.
30
- */
49
+ * The error message for the control.
50
+ */
31
51
  get error() {
32
52
  return this._error;
33
53
  }
34
54
  /**
35
- * The "previous value" of the input element.
36
- */
55
+ * The "previous value" of the input element.
56
+ */
37
57
  get previousValue() {
38
58
  return this._previousValue;
39
59
  }
40
60
  /**
41
- * The serialize settings of the input element.
42
- */
61
+ * The serialize settings of the input element.
62
+ */
43
63
  get serializeSettings() {
44
64
  return this._serializeSettings;
45
65
  }
46
66
  /**
47
- * The "touched" state of the input element.
48
- */
67
+ * The "touched" state of the input element.
68
+ */
49
69
  get touched() {
50
70
  return this._touched;
51
71
  }
52
72
  /**
53
- * The current value of the input element.
54
- */
73
+ * The current value of the input element.
74
+ */
55
75
  get value() {
56
76
  return this._value;
57
77
  }
78
+ onChange;
79
+ onErrorChange;
80
+ onTouched;
58
81
  /**
59
- * The registered callback function called when a change or input event occurs on the input
60
- * element.
61
- */
62
- onChange = (_) => {
63
- };
64
- /**
65
- * Registers a function called when the control error changes.
66
- */
67
- onErrorChange = () => {
68
- };
69
- /**
70
- * The registered callback function called when a blur event occurs on the input element.
71
- */
72
- onTouched = (_isTouched) => {
73
- };
74
- /**
75
- * Registers a function called when the control value changes.
76
- * @param {(_value:ValidControlValue)=>void} fn
77
- * @returns void
78
- */
82
+ * Registers a function called when the control value changes.
83
+ * @param {(_value:ValidControlValue)=>void} fn
84
+ * @returns void
85
+ */
79
86
  registerOnChange(fn) {
80
87
  this.onChange = fn;
81
88
  }
82
89
  /**
83
- * Registers a function called when the control error changes.
84
- * @param {(error:string)=>void} fn
85
- */
90
+ * Registers a function called when the control error changes.
91
+ * @param {(error:string)=>void} fn
92
+ */
86
93
  registerOnErrorChange(fn) {
87
94
  this.onErrorChange = fn;
88
95
  }
89
96
  /**
90
- * Registers a function called when the control is touched.
91
- * @param {(isTouched:boolean)=>void} fn
92
- * @returns void
93
- */
97
+ * Registers a function called when the control is touched.
98
+ * @param {(isTouched:boolean)=>void} fn
99
+ * @returns void
100
+ */
94
101
  registerOnTouched(fn) {
95
102
  this.onTouched = fn;
96
103
  }
97
104
  /**
98
- * Sets the "touched" state of the input element.
99
- * @param {boolean} isTouched
100
- */
105
+ * Sets the "touched" state of the input element.
106
+ * @param {boolean} isTouched
107
+ */
101
108
  setTouched(isTouched) {
102
109
  if (this.touched !== isTouched) {
103
110
  this._touched = isTouched;
104
111
  this.onTouched(isTouched);
105
112
  if (this.config.disableEvents) return;
106
- const emit = async () => await this.emit("touchChanged", { touched: isTouched });
113
+ const emit = /* @__PURE__ */ __name(async () => await this.emit("touchChanged", {
114
+ touched: isTouched
115
+ }), "emit");
107
116
  forget(emit());
108
117
  }
109
118
  }
110
119
  /**
111
- * Sets the "value" property on the input element.
112
- * @param {ValidControlValue} value
113
- * @returns void
114
- */
120
+ * Sets the "value" property on the input element.
121
+ * @param {ValidControlValue} value
122
+ * @returns void
123
+ */
115
124
  setValue(value, options = DefaultSetOptions) {
116
125
  this._previousValue = this._value;
117
126
  const normalizedValue = value == null ? "" : value;
@@ -119,39 +128,45 @@ var ControlValueAccessorBase = class extends BaseEmitter {
119
128
  this._value = normalizedValue;
120
129
  this.onChange(normalizedValue);
121
130
  if (this.config.disableEvents || options.disableEmit) return;
122
- const emit = async () => await this.emit("valueChanged", { value: normalizedValue });
131
+ const emit = /* @__PURE__ */ __name(async () => await this.emit("valueChanged", {
132
+ value: normalizedValue
133
+ }), "emit");
123
134
  forget(emit());
124
135
  }
125
136
  }
126
137
  /**
127
- * Set the error message for the control.
128
- * @param {string} error
129
- */
138
+ * Set the error message for the control.
139
+ * @param {string} error
140
+ */
130
141
  setError(error) {
131
142
  if (this.error !== error) {
132
143
  this._error = error;
133
144
  this.onErrorChange(error);
134
145
  if (this.config.disableEvents) return;
135
- const emit = async () => await this.emit("errorChanged", { error });
146
+ const emit = /* @__PURE__ */ __name(async () => await this.emit("errorChanged", {
147
+ error
148
+ }), "emit");
136
149
  forget(emit());
137
150
  }
138
151
  }
139
152
  /**
140
- * Sets the "previous value" of the input element.
141
- * @param {ValidControlValue} value
142
- * @returns void
143
- */
153
+ * Sets the "previous value" of the input element.
154
+ * @param {ValidControlValue} value
155
+ * @returns void
156
+ */
144
157
  setPreviousValue(value) {
145
158
  this._previousValue = value;
146
159
  }
147
160
  /**
148
- * Sets the serialize settings of the input element.
149
- * @param {ControlSerializeSettings} settings
150
- */
161
+ * Sets the serialize settings of the input element.
162
+ * @param {ControlSerializeSettings} settings
163
+ */
151
164
  setSerializeSettings(settings) {
152
165
  this._serializeSettings = settings;
153
166
  }
154
167
  };
168
+ __name(_ControlValueAccessorBase, "ControlValueAccessorBase");
169
+ var ControlValueAccessorBase = _ControlValueAccessorBase;
155
170
 
156
171
  // src/control/accessor/FormControlStatus.ts
157
172
  var VALID = "VALID";
@@ -160,70 +175,70 @@ var PENDING = "PENDING";
160
175
  var DISABLED = "DISABLED";
161
176
 
162
177
  // src/control/AbstractControl.ts
163
- var AbstractControl = class extends ControlValueAccessorBase {
178
+ var _AbstractControl = class _AbstractControl extends ControlValueAccessorBase {
164
179
  _status = void 0;
165
180
  constructor() {
166
181
  super({});
167
182
  }
168
183
  /**
169
- * A control is `disabled` when its `status` is `DISABLED`.
170
- *
171
- * Disabled controls are exempt from validation checks and
172
- * are not included in the aggregate value of their ancestor
173
- * controls.
174
- *
175
- * @returns True if the control is disabled, false otherwise.
176
- */
184
+ * A control is `disabled` when its `status` is `DISABLED`.
185
+ *
186
+ * Disabled controls are exempt from validation checks and
187
+ * are not included in the aggregate value of their ancestor
188
+ * controls.
189
+ *
190
+ * @returns True if the control is disabled, false otherwise.
191
+ */
177
192
  /** @deprecated - disabled functionality not implemented */
178
193
  get disabled() {
179
194
  return this.status === DISABLED;
180
195
  }
181
196
  /**
182
- * A control is `enabled` as long as its `status` is not `DISABLED`.
183
- *
184
- * @returns True if the control has any status other than 'DISABLED',
185
- * false if the status is 'DISABLED'.
186
- */
197
+ * A control is `enabled` as long as its `status` is not `DISABLED`.
198
+ *
199
+ * @returns True if the control has any status other than 'DISABLED',
200
+ * false if the status is 'DISABLED'.
201
+ */
187
202
  get enabled() {
188
203
  return this.status !== DISABLED;
189
204
  }
190
205
  /**
191
- * A control is `invalid` when its `status` is `INVALID`.
192
-
193
- *
194
- * @returns True if this control has failed one or more of its validation checks,
195
- * false otherwise.
196
- */
206
+ * A control is `invalid` when its `status` is `INVALID`.
207
+
208
+ *
209
+ * @returns True if this control has failed one or more of its validation checks,
210
+ * false otherwise.
211
+ */
197
212
  get invalid() {
198
213
  return this.status === INVALID;
199
214
  }
200
215
  /**
201
- * A control is `pending` when its `status` is `PENDING`.
202
- *
203
- * @returns True if this control is in the process of conducting a validation check,
204
- * false otherwise.
205
- */
216
+ * A control is `pending` when its `status` is `PENDING`.
217
+ *
218
+ * @returns True if this control is in the process of conducting a validation check,
219
+ * false otherwise.
220
+ */
206
221
  get pending() {
207
222
  return this.status == PENDING;
208
223
  }
209
224
  /**
210
- * The raw value of the control.
211
- */
225
+ * The raw value of the control.
226
+ */
212
227
  get rawValue() {
213
228
  return this.value;
214
229
  }
215
230
  /**
216
- * The current status of the control.
217
- */
231
+ * The current status of the control.
232
+ */
218
233
  get status() {
219
234
  return this._status;
220
235
  }
221
236
  /**
222
- * A control is `valid` when its `status` is `VALID`.
223
- *
224
- * @returns True if the control has passed all of its validation tests,
225
- * false otherwise.
226
- */
237
+ * A control is `valid` when its `status` is `VALID`.
238
+ *
239
+ * @returns True if the control has passed all of its validation tests,
240
+ * false otherwise.
241
+ */
227
242
  get valid() {
228
243
  return this.status === VALID;
229
244
  }
@@ -234,21 +249,28 @@ var AbstractControl = class extends ControlValueAccessorBase {
234
249
  setStatus(status) {
235
250
  if (this._status === status) return;
236
251
  this._status = status;
237
- const emit = async () => await this.emit("statusChanged", { status });
252
+ const emit = /* @__PURE__ */ __name(async () => await this.emit("statusChanged", {
253
+ status
254
+ }), "emit");
238
255
  forget2(emit());
239
256
  }
240
257
  validate() {
241
258
  return true;
242
259
  }
243
260
  };
261
+ __name(_AbstractControl, "AbstractControl");
262
+ var AbstractControl = _AbstractControl;
244
263
 
245
264
  // src/control/FormControlBase.ts
246
265
  var AllowAllRegex = /^.*$/s;
247
- var FormControlBase = class extends AbstractControl {
266
+ var _FormControlBase = class _FormControlBase extends AbstractControl {
248
267
  /**
249
- * The current and previous cursor position of the input element.
250
- */
251
- cursorPosition = { current: void 0, previous: void 0 };
268
+ * The current and previous cursor position of the input element.
269
+ */
270
+ cursorPosition = {
271
+ current: void 0,
272
+ previous: void 0
273
+ };
252
274
  invalidMessage = "Invalid input";
253
275
  pattern = AllowAllRegex;
254
276
  patternStrict = AllowAllRegex;
@@ -264,8 +286,8 @@ var FormControlBase = class extends AbstractControl {
264
286
  get rawValue() {
265
287
  return this.unmask && this.value ? this.unmask(this.value) : this.value;
266
288
  }
267
- onCursorChange = () => {
268
- };
289
+ onCursorChange = /* @__PURE__ */ __name(() => {
290
+ }, "onCursorChange");
269
291
  setValue(value = "", setOptions) {
270
292
  var _a, _b;
271
293
  if (this.unmask && this.pattern) {
@@ -297,17 +319,24 @@ var FormControlBase = class extends AbstractControl {
297
319
  this._name = name;
298
320
  }
299
321
  };
322
+ __name(_FormControlBase, "FormControlBase");
323
+ var FormControlBase = _FormControlBase;
300
324
 
301
325
  // src/FormGroup.ts
302
- var FormGroup = class extends AbstractControl {
326
+ var _FormGroup = class _FormGroup extends AbstractControl {
327
+ fgParams;
328
+ _controls;
329
+ serializeListeners;
330
+ serializedSensitiveState;
331
+ serializedState;
303
332
  constructor(fgParams) {
304
333
  super();
305
334
  this.fgParams = fgParams;
335
+ this._controls = {};
336
+ this.serializeListeners = {};
337
+ this.serializedSensitiveState = {};
338
+ this.serializedState = {};
306
339
  }
307
- _controls = {};
308
- serializeListeners = {};
309
- serializedSensitiveState = {};
310
- serializedState = {};
311
340
  get errorSummary() {
312
341
  const errorSummary = {
313
342
  errorMessage: "",
@@ -417,7 +446,7 @@ var FormGroup = class extends AbstractControl {
417
446
  if (!shouldSerialize && (storage || sensitiveStorage)) console.warn("storage medium set but serialize is not enabled");
418
447
  if (shouldSerialize && control.serializeSettings.serializable) {
419
448
  this.setStateValueFromStorage(name, control);
420
- const listener = ({ value }) => {
449
+ const listener = /* @__PURE__ */ __name(({ value }) => {
421
450
  if (control.serializeSettings.serializable) {
422
451
  const targetStorage = control.serializeSettings.sensitive ? sensitiveStorage : storage;
423
452
  const targetState = control.serializeSettings.sensitive ? this.serializedSensitiveState : this.serializedState;
@@ -426,48 +455,63 @@ var FormGroup = class extends AbstractControl {
426
455
  payloadWithTimestamp.timestamp = Date.now();
427
456
  this.serializeValues(targetStorage, targetState);
428
457
  }
429
- };
458
+ }, "listener");
430
459
  control.on("valueChanged", listener);
431
460
  this.serializeListeners[name] = listener;
432
461
  }
433
462
  }
434
463
  serializeValues(storage, values) {
435
464
  if (storage && values) {
436
- const write = async () => await storage.insert(values);
437
- const clear = async () => await storage.clear();
465
+ const write = /* @__PURE__ */ __name(async () => await storage.insert(values), "write");
466
+ const clear = /* @__PURE__ */ __name(async () => await storage.clear(), "clear");
438
467
  forget3(clear());
439
468
  forget3(write());
440
469
  }
441
470
  }
442
471
  setStateValueFromStorage(name, control) {
443
- const read = async () => {
472
+ const read = /* @__PURE__ */ __name(async () => {
444
473
  const savedValue = await this.getSerializedValue(name, control.serializeSettings.sensitive);
445
474
  if (savedValue) {
446
475
  const targetState = control.serializeSettings.sensitive ? this.serializedSensitiveState : this.serializedState;
447
476
  targetState[name] = savedValue;
448
- control.setValue(savedValue, { disableEmit: true });
477
+ control.setValue(savedValue, {
478
+ disableEmit: true
479
+ });
449
480
  }
450
- };
481
+ }, "read");
451
482
  forget3(read());
452
483
  }
453
484
  };
485
+ __name(_FormGroup, "FormGroup");
486
+ var FormGroup = _FormGroup;
454
487
 
455
488
  // src/context/Provider.tsx
456
- import { jsx } from "react/jsx-runtime";
457
- var FormGroupPayloadProvider = ({ children, params, ...props }) => {
489
+ var FormGroupPayloadProvider = /* @__PURE__ */ __name(({ children, params, ...props }) => {
458
490
  const formGroup = useMemo(() => {
459
491
  const formGroup2 = new FormGroup(params);
460
492
  return formGroup2;
461
- }, [params]);
462
- return /* @__PURE__ */ jsx(FormGroupBaseContext.Provider, { value: { formGroup, provided: true }, ...props, children });
463
- };
493
+ }, [
494
+ params
495
+ ]);
496
+ return (
497
+ // eslint-disable-next-line @eslint-react/no-unstable-context-value
498
+ /* @__PURE__ */ React.createElement(FormGroupBaseContext.Provider, {
499
+ value: {
500
+ formGroup,
501
+ provided: true
502
+ },
503
+ ...props
504
+ }, children)
505
+ );
506
+ }, "FormGroupPayloadProvider");
464
507
 
465
- // src/context/use.tsx
508
+ // src/context/use.ts
466
509
  import { useContextEx } from "@xyo-network/react-shared";
467
- var useFormGroup = (required = false) => useContextEx(FormGroupBaseContext, "FormGroup", required);
510
+ var useFormGroup = /* @__PURE__ */ __name((required = false) => useContextEx(FormGroupBaseContext, "FormGroup", required), "useFormGroup");
468
511
 
469
512
  // src/storage/ArchivistFormGroupStorage.ts
470
- var ArchivistFormGroupStorage = class {
513
+ var _ArchivistFormGroupStorage = class _ArchivistFormGroupStorage {
514
+ archivist;
471
515
  constructor(archivist) {
472
516
  this.archivist = archivist;
473
517
  }
@@ -482,9 +526,13 @@ var ArchivistFormGroupStorage = class {
482
526
  }
483
527
  async insert(value) {
484
528
  var _a, _b;
485
- await ((_b = (_a = this.archivist).insert) == null ? void 0 : _b.call(_a, [value]));
529
+ await ((_b = (_a = this.archivist).insert) == null ? void 0 : _b.call(_a, [
530
+ value
531
+ ]));
486
532
  }
487
533
  };
534
+ __name(_ArchivistFormGroupStorage, "ArchivistFormGroupStorage");
535
+ var ArchivistFormGroupStorage = _ArchivistFormGroupStorage;
488
536
  export {
489
537
  AbstractControl,
490
538
  ArchivistFormGroupStorage,
@@ -500,4 +548,4 @@ export {
500
548
  VALID,
501
549
  useFormGroup
502
550
  };
503
- //# sourceMappingURL=index.js.map
551
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/Context.ts","../../src/context/Provider.tsx","../../src/FormGroup.ts","../../src/control/AbstractControl.ts","../../src/control/accessor/ControlValueAccessorBase.ts","../../src/control/accessor/FormControlStatus.ts","../../src/control/FormControlBase.ts","../../src/context/use.ts","../../src/storage/ArchivistFormGroupStorage.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { FormGroupContextWithPayloadState } from './State.ts'\n\nexport const FormGroupBaseContext = createContextEx<FormGroupContextWithPayloadState>()\n","import { Payload } from '@xyo-network/payload-model'\nimport React, { PropsWithChildren, useMemo } from 'react'\n\nimport { FormGroup, FormGroupParams } from '../FormGroup.ts'\nimport { FormGroupBaseContext } from './Context.ts'\n\nexport interface FormGroupPayloadProviderProps<TStorage extends Payload = Payload> extends PropsWithChildren {\n params?: FormGroupParams<TStorage>\n}\n\n/**\n * Provides a FormGroup to child components.\n */\nexport const FormGroupPayloadProvider = ({ children, params, ...props }: FormGroupPayloadProviderProps) => {\n const formGroup = useMemo(() => {\n const formGroup = new FormGroup<Payload, Payload>(params)\n return formGroup\n }, [params])\n\n return (\n // eslint-disable-next-line @eslint-react/no-unstable-context-value\n <FormGroupBaseContext.Provider value={{ formGroup, provided: true }} {...props}>\n {children}\n </FormGroupBaseContext.Provider>\n )\n}\n","import { forget } from '@xylabs/forget'\nimport { EventListener } from '@xyo-network/module-events'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { AbstractControl, ControlValueAccessorBaseEvents } from './control/index.ts'\nimport { ErrorSummary } from './InputError.ts'\nimport { FormGroupStorage } from './storage/index.ts'\n\nexport type PayloadWithTimestamp = Payload<{ timestamp?: number }>\n\nexport type KeyOfString<T> = keyof T extends string ? keyof T : never\n\ntype FormGroupErrors<TValue> = Record<KeyOfString<TValue>, string>\n\nexport type FormGroupParams<TStorageValue extends Payload = Payload> = {\n serialize?: boolean\n storage?: {\n sensitive?: FormGroupStorage<TStorageValue>\n storage?: FormGroupStorage<TStorageValue>\n }\n ttlStorage?: number\n}\n\ntype ValueChangeEventListener = EventListener<ControlValueAccessorBaseEvents['valueChanged']>\n\n/**\n * Organize form controls in a group.\n *\n * NOTE: This is a work in progress and only supports top level controls. Nested controls are not supported.\n */\nexport class FormGroup<\n TValue extends PayloadWithTimestamp = PayloadWithTimestamp,\n TStorageValue extends PayloadWithTimestamp = PayloadWithTimestamp,\n> extends AbstractControl {\n private _controls = {} as Record<KeyOfString<TValue>, AbstractControl>\n\n private serializeListeners: Record<string, ValueChangeEventListener> = {}\n\n private serializedSensitiveState = {} as Record<KeyOfString<TStorageValue>, string>\n private serializedState = {} as Record<KeyOfString<TStorageValue>, string>\n\n constructor(private fgParams?: FormGroupParams<TStorageValue>) {\n super()\n }\n\n get errorSummary() {\n const errorSummary: ErrorSummary = {\n errorMessage: '',\n invalidFields: [],\n }\n for (const [key, value] of Object.entries(this.errors)) {\n if (value) {\n errorSummary.errorMessage = `${errorSummary.errorMessage}, ${value}`\n errorSummary.invalidFields.push(key)\n }\n }\n\n return errorSummary\n }\n\n get errors(): FormGroupErrors<TValue> {\n const value = {} as FormGroupErrors<TValue>\n for (const key in this._controls) {\n const castKey = key as KeyOfString<TValue>\n value[castKey] = this._controls[castKey].error\n }\n return value\n }\n\n get nonSensitiveStorage() {\n return this.fgParams?.storage?.storage\n }\n\n get sensitiveStorage() {\n return this.fgParams?.storage?.sensitive\n }\n\n override get touched() {\n return Object.values<AbstractControl>(this._controls).some(control => control.touched)\n }\n\n override get valid() {\n return Object.values<AbstractControl>(this._controls).every(control => control.valid)\n }\n\n get values(): TValue {\n const value = {} as TValue\n for (const key in this._controls) {\n const castKey = key as KeyOfString<TValue>\n value[castKey] = this._controls[castKey].rawValue as TValue[KeyOfString<TValue>]\n }\n return value\n }\n\n getControl(name: string) {\n return this._controls[name as KeyOfString<TValue>]\n }\n\n async getSerializedValue(name: string, sensitive = false): Promise<string | undefined> {\n const storage = sensitive ? this.sensitiveStorage : this.nonSensitiveStorage\n if (storage) {\n if (!storage) {\n console.warn(`Cannot return value for ${name}. No storage set`)\n return\n }\n\n const savedState = await storage.get()\n if (savedState && name in savedState) {\n const savedValue = savedState[name as keyof typeof savedState] as string\n\n // casting to PayloadWithTimestamp to check for timestamp\n const savedStateWithTimestamp = savedState as unknown as PayloadWithTimestamp\n if (savedStateWithTimestamp.timestamp && this.fgParams?.ttlStorage) {\n const expirationDate = savedStateWithTimestamp.timestamp + (this.fgParams?.ttlStorage ?? 0)\n const now = Date.now()\n return now > expirationDate ? undefined : savedValue\n }\n return savedValue\n }\n }\n }\n\n registerControl(name: string, control: AbstractControl) {\n if (this._controls[name as KeyOfString<TValue>]) console.error(`Replacing Control with name ${name} since it already exists!`)\n this._controls[name as KeyOfString<TValue>] = control\n this.serializeControlValue(name, control)\n }\n\n resetControls() {\n for (const key in this._controls) {\n this.unregisterControl(key)\n }\n }\n\n resetValues() {\n for (const control of Object.values<AbstractControl>(this._controls)) {\n control.setValue('')\n }\n }\n\n unregisterControl(name: string) {\n const control = this._controls[name as KeyOfString<TValue>]\n\n if (control) {\n const listener = this.serializeListeners[name]\n control.off('valueChanged', listener)\n delete this.serializeListeners[name]\n delete this._controls[name as KeyOfString<TValue>]\n }\n }\n\n validateFields(requiredFields?: string[] | undefined) {\n const castRequiredFields = requiredFields as KeyOfString<TValue>[]\n for (const key in this._controls) {\n const castKey = key as KeyOfString<TValue>\n if (castRequiredFields === undefined || castRequiredFields.includes(castKey)) {\n const control = this._controls[castKey]\n control.validate()\n }\n }\n }\n\n private serializeControlValue(name: string, control: AbstractControl) {\n const shouldSerialize = this.fgParams?.serialize\n const sensitiveStorage = this.sensitiveStorage\n const storage = this.nonSensitiveStorage\n\n if (!shouldSerialize && (storage || sensitiveStorage)) console.warn('storage medium set but serialize is not enabled')\n\n if (shouldSerialize && control.serializeSettings.serializable) {\n this.setStateValueFromStorage(name, control)\n\n const listener: ValueChangeEventListener = ({ value }) => {\n // detect if control wants to be serialized\n if (control.serializeSettings.serializable) {\n // detect control's preferred storage\n const targetStorage = control.serializeSettings.sensitive ? sensitiveStorage : storage\n\n // detect control's preferred state\n const targetState = control.serializeSettings.sensitive ? this.serializedSensitiveState : this.serializedState\n\n // set the value\n targetState[name as KeyOfString<TStorageValue>] = value ?? ''\n\n // add a timestamp\n const payloadWithTimestamp = targetState as PayloadWithTimestamp\n payloadWithTimestamp.timestamp = Date.now()\n\n // serialize the value\n this.serializeValues(targetStorage, targetState as TStorageValue)\n }\n }\n\n // listen for value changes\n control.on('valueChanged', listener)\n\n // store the listener for later removal\n this.serializeListeners[name] = listener\n }\n }\n\n private serializeValues(storage?: FormGroupStorage<TStorageValue>, values?: TStorageValue) {\n if (storage && values) {\n const write = async () => await storage.insert(values)\n const clear = async () => await storage.clear()\n\n forget(clear())\n forget(write())\n }\n }\n\n private setStateValueFromStorage(name: string, control: AbstractControl) {\n const read = async () => {\n const savedValue = await this.getSerializedValue(name, control.serializeSettings.sensitive)\n\n if (savedValue) {\n const targetState = control.serializeSettings.sensitive ? this.serializedSensitiveState : this.serializedState\n targetState[name as KeyOfString<TStorageValue>] = savedValue\n\n control.setValue(savedValue, { disableEmit: true })\n }\n }\n\n forget(read())\n }\n}\n","import { forget } from '@xylabs/forget'\n\nimport {\n ControlValueAccessorBase,\n ControlValueAccessorBaseEvents,\n DISABLED,\n FormControlStatus,\n INVALID,\n PENDING,\n VALID,\n ValidControlValue,\n} from './accessor/index.ts'\n\nexport type AbstractControlEvents<TValue> = ControlValueAccessorBaseEvents<TValue> & {\n statusChanged: { status: FormControlStatus }\n}\n\n/**\n * This is the base class for `Control` classes (i.e. FormControl),\n *\n * It provides some of the shared behavior that all controls and groups of controls have, like\n * running validators, calculating status, and resetting state. It also defines the properties\n * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be\n * instantiated directly.\n *\n * NOTE: Heavily borrowed from Angular's AbstractControl:\n * https://github.com/angular/angular/blob/5dcdbfcba934a930468aec140a7183b034466bdf/packages/forms/src/model/abstract_model.ts\n */\nexport class AbstractControl<TValue extends ValidControlValue = ValidControlValue> extends ControlValueAccessorBase<\n TValue,\n AbstractControlEvents<TValue>\n> {\n private _status: FormControlStatus | undefined = undefined\n\n constructor() {\n super({})\n }\n\n /**\n * A control is `disabled` when its `status` is `DISABLED`.\n *\n * Disabled controls are exempt from validation checks and\n * are not included in the aggregate value of their ancestor\n * controls.\n *\n * @returns True if the control is disabled, false otherwise.\n */\n /** @deprecated - disabled functionality not implemented */\n get disabled(): boolean {\n return this.status === DISABLED\n }\n\n /**\n * A control is `enabled` as long as its `status` is not `DISABLED`.\n *\n * @returns True if the control has any status other than 'DISABLED',\n * false if the status is 'DISABLED'.\n */\n get enabled(): boolean {\n return this.status !== DISABLED\n }\n\n /**\n * A control is `invalid` when its `status` is `INVALID`.\n\n *\n * @returns True if this control has failed one or more of its validation checks,\n * false otherwise.\n */\n get invalid(): boolean {\n return this.status === INVALID\n }\n\n /**\n * A control is `pending` when its `status` is `PENDING`.\n *\n * @returns True if this control is in the process of conducting a validation check,\n * false otherwise.\n */\n get pending(): boolean {\n return this.status == PENDING\n }\n\n /**\n * The raw value of the control.\n */\n get rawValue(): TValue {\n return this.value\n }\n\n /**\n * The current status of the control.\n */\n get status() {\n return this._status\n }\n\n /**\n * A control is `valid` when its `status` is `VALID`.\n *\n * @returns True if the control has passed all of its validation tests,\n * false otherwise.\n */\n get valid(): boolean {\n return this.status === VALID\n }\n\n setErrorAndValidity(error: string, status: FormControlStatus) {\n this.setError(error)\n this.setStatus(status)\n }\n\n setStatus(status: FormControlStatus) {\n if (this._status === status) return\n\n this._status = status\n\n const emit = async () => await this.emit('statusChanged', { status })\n forget(emit())\n }\n\n validate(): boolean {\n return true\n }\n}\n","import { forget } from '@xylabs/forget'\nimport { BaseParams } from '@xylabs/object'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\n\nimport { ControlSerializeSettings, ControlValueAccessor, SetOptions } from './ControlValueAccessor.ts'\nimport { ValidControlValue } from './ValidControlValue.ts'\n\nexport type ControlValueAccessorBaseConfig = {\n disableEvents?: boolean\n}\n\nexport const DefaultSetOptions: SetOptions = { disableEmit: false }\n\nexport type ControlValueAccessorBaseEvents<TValue = ValidControlValue> = {\n errorChanged: { error: string }\n touchChanged: { touched: boolean }\n valueChanged: { value: TValue }\n}\n\n/**\n * The base class for control value accessors interface\n */\nexport class ControlValueAccessorBase<\n TValue = ValidControlValue,\n TEventData extends ControlValueAccessorBaseEvents<TValue> = ControlValueAccessorBaseEvents<TValue>,\n>\n extends BaseEmitter<BaseParams, TEventData>\n implements ControlValueAccessor<TValue> {\n private _error: string = ''\n\n private _previousValue = undefined as TValue\n\n private _serializeSettings: ControlSerializeSettings = { sensitive: false, serializable: false }\n\n private _touched: boolean = false\n\n private _value = undefined as TValue\n\n constructor(private config: ControlValueAccessorBaseConfig) {\n super({})\n }\n\n /**\n * The error message for the control.\n */\n get error() {\n return this._error\n }\n\n /**\n * The \"previous value\" of the input element.\n */\n get previousValue() {\n return this._previousValue\n }\n\n /**\n * The serialize settings of the input element.\n */\n get serializeSettings() {\n return this._serializeSettings\n }\n\n /**\n * The \"touched\" state of the input element.\n */\n get touched() {\n return this._touched\n }\n\n /**\n * The current value of the input element.\n */\n get value() {\n return this._value\n }\n\n /**\n * The registered callback function called when a change or input event occurs on the input\n * element.\n */\n onChange = (_: TValue) => {}\n\n /**\n * Registers a function called when the control error changes.\n */\n onErrorChange: (error: string) => void = () => {}\n\n /**\n * The registered callback function called when a blur event occurs on the input element.\n */\n onTouched = (_isTouched: boolean) => {}\n\n /**\n * Registers a function called when the control value changes.\n * @param {(_value:ValidControlValue)=>void} fn\n * @returns void\n */\n registerOnChange(fn: (_value: TValue) => void): void {\n this.onChange = fn\n }\n\n /**\n * Registers a function called when the control error changes.\n * @param {(error:string)=>void} fn\n */\n registerOnErrorChange(fn: (error: string) => void) {\n this.onErrorChange = fn\n }\n\n /**\n * Registers a function called when the control is touched.\n * @param {(isTouched:boolean)=>void} fn\n * @returns void\n */\n registerOnTouched(fn: (isTouched: boolean) => void): void {\n this.onTouched = fn\n }\n\n /**\n * Sets the \"touched\" state of the input element.\n * @param {boolean} isTouched\n */\n setTouched(isTouched: boolean) {\n if (this.touched !== isTouched) {\n this._touched = isTouched\n this.onTouched(isTouched)\n\n if (this.config.disableEvents) return\n const emit = async () => await this.emit('touchChanged', { touched: isTouched })\n forget(emit())\n }\n }\n\n /**\n * Sets the \"value\" property on the input element.\n * @param {ValidControlValue} value\n * @returns void\n */\n setValue(value: TValue, options = DefaultSetOptions): void {\n this._previousValue = this._value\n\n const normalizedValue = value == null ? ('' as TValue) : value\n\n if (this.value !== normalizedValue) {\n this._value = normalizedValue\n this.onChange(normalizedValue)\n\n if (this.config.disableEvents || options.disableEmit) return\n const emit = async () => await this.emit('valueChanged', { value: normalizedValue })\n forget(emit())\n }\n }\n\n /**\n * Set the error message for the control.\n * @param {string} error\n */\n protected setError(error: string) {\n if (this.error !== error) {\n this._error = error\n this.onErrorChange(error)\n\n if (this.config.disableEvents) return\n const emit = async () => await this.emit('errorChanged', { error })\n forget(emit())\n }\n }\n\n /**\n * Sets the \"previous value\" of the input element.\n * @param {ValidControlValue} value\n * @returns void\n */\n protected setPreviousValue(value: TValue): void {\n this._previousValue = value\n }\n\n /**\n * Sets the serialize settings of the input element.\n * @param {ControlSerializeSettings} settings\n */\n protected setSerializeSettings(settings: ControlSerializeSettings) {\n this._serializeSettings = settings\n }\n}\n","/**\n * Reports that a control is valid, meaning that no errors exist in the input value.\n */\nexport const VALID = 'VALID' as const\n\n/**\n * Reports that a control is invalid, meaning that an error exists in the input value.\n */\nexport const INVALID = 'INVALID' as const\n\n/**\n * Reports that a control is pending, meaning that async validation is occurring and\n * errors are not yet available for the input value.\n */\nexport const PENDING = 'PENDING' as const\n\n/**\n * Reports that a control is disabled, meaning that the control is exempt from ancestor\n * calculations of validity or value.\n */\nexport const DISABLED = 'DISABLED' as const\n\n/**\n * A control can have several different statuses. Each\n * possible status is returned as a string literal.\n *\n * * **VALID**: Reports that a control is valid, meaning that no errors exist in the input\n * value.\n * * **INVALID**: Reports that a control is invalid, meaning that an error exists in the input\n * value.\n * * **PENDING**: Reports that a control is pending, meaning that async validation is\n * occurring and errors are not yet available for the input value.\n * * **DISABLED**: Reports that a control is\n * disabled, meaning that the control is exempt from ancestor calculations of validity or value.\n */\nexport type FormControlStatus = typeof VALID | typeof INVALID | typeof PENDING | typeof DISABLED\n","import { EmptyObject } from '@xylabs/object'\n\nimport { AbstractControl } from './AbstractControl.ts'\nimport { SetOptions } from './accessor/index.ts'\nimport { CursorPosition, FormControl } from './FormControl.ts'\n\nconst AllowAllRegex = /^.*$/s\n\n/**\n * A base class for form controls and their validation.\n */\nexport abstract class FormControlBase<TProps extends EmptyObject = EmptyObject> extends AbstractControl implements FormControl {\n /**\n * The current and previous cursor position of the input element.\n */\n cursorPosition: CursorPosition = { current: undefined, previous: undefined }\n invalidMessage = 'Invalid input'\n pattern = AllowAllRegex\n patternStrict = AllowAllRegex\n props = {} as TProps\n required = false\n\n private _name: string | undefined = undefined\n\n constructor() {\n super()\n }\n\n get name() {\n return this._name\n }\n\n override get rawValue() {\n return this.unmask && this.value ? this.unmask(this.value) : this.value\n }\n\n blurError?(value: string): void | undefined\n changeError?(value: string): void\n getCursorPosition?(): number | undefined\n mask?(value: string): string\n onCursorChange: (cursor: number | undefined) => void = () => {}\n\n override setValue(value: string = '', setOptions: SetOptions) {\n // check for pattern validation\n if (this.unmask && this.pattern) {\n const unmasked = this.unmask(value)\n const match = unmasked.match(this.pattern)\n // set the new value before checking for errors\n super.setValue(this.mask ? this.mask(unmasked) : unmasked, setOptions)\n if (match) {\n // if the value matches the pattern, update the cursor position\n if (this.getCursorPosition) {\n const newCursor = this.getCursorPosition()\n this.onCursorChange(newCursor)\n }\n } else {\n // if no match, set the error and return to the previous value\n this.setValue(this.previousValue, setOptions)\n this.onCursorChange?.(this.cursorPosition.previous)\n }\n } else {\n // if no mask or pattern, just set the value\n super.setValue(value, setOptions)\n }\n // check for changeError validation after pattern validation\n this.changeError?.(value)\n }\n\n unmask?(value: string): string\n\n // For FormControls, validate is the same as running one of the error checking functions\n override validate(): boolean {\n const normalizedValue = this.value ?? ''\n // prefer the blurError function since validation assumes the user is done typing\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.blurError ? this.blurError(normalizedValue) : this.changeError?.(normalizedValue)\n return !this.error\n }\n\n protected setName(name: string | undefined) {\n this._name = name\n }\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { FormGroupBaseContext } from './Context.ts'\n\nexport const useFormGroup = (required = false) => useContextEx(FormGroupBaseContext, 'FormGroup', required)\n","import { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { FormGroupStorage } from './FormGroupStorage.ts'\n\nexport class ArchivistFormGroupStorage implements FormGroupStorage {\n constructor(private archivist: ArchivistInstance) {}\n\n async clear() {\n await this.archivist.clear?.()\n }\n\n async get() {\n const all = await this.archivist.all?.()\n return all.at(-1)\n }\n\n async insert(value: Payload) {\n await this.archivist.insert?.([value])\n }\n}\n"],"mappings":"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","names":["createContextEx","FormGroupBaseContext","React","useMemo","forget","forget","forget","BaseEmitter","DefaultSetOptions","disableEmit","ControlValueAccessorBase","BaseEmitter","_error","_previousValue","_serializeSettings","_touched","_value","constructor","config","undefined","sensitive","serializable","onChange","_","onErrorChange","onTouched","_isTouched","error","previousValue","serializeSettings","touched","value","registerOnChange","fn","registerOnErrorChange","registerOnTouched","setTouched","isTouched","disableEvents","emit","forget","setValue","options","normalizedValue","setError","setPreviousValue","setSerializeSettings","settings","VALID","INVALID","PENDING","DISABLED","AbstractControl","ControlValueAccessorBase","_status","undefined","constructor","disabled","status","DISABLED","enabled","invalid","INVALID","pending","PENDING","rawValue","value","valid","VALID","setErrorAndValidity","error","setError","setStatus","emit","forget","validate","AllowAllRegex","FormControlBase","AbstractControl","cursorPosition","current","undefined","previous","invalidMessage","pattern","patternStrict","props","required","_name","constructor","name","rawValue","unmask","value","onCursorChange","setValue","setOptions","unmasked","match","mask","getCursorPosition","newCursor","previousValue","changeError","validate","normalizedValue","blurError","error","setName","FormGroup","AbstractControl","_controls","serializeListeners","serializedSensitiveState","serializedState","constructor","fgParams","errorSummary","errorMessage","invalidFields","key","value","Object","entries","errors","push","castKey","error","nonSensitiveStorage","storage","sensitiveStorage","sensitive","touched","values","some","control","valid","every","rawValue","getControl","name","getSerializedValue","console","warn","savedState","get","savedValue","savedStateWithTimestamp","timestamp","ttlStorage","expirationDate","now","Date","undefined","registerControl","serializeControlValue","resetControls","unregisterControl","resetValues","setValue","listener","off","validateFields","requiredFields","castRequiredFields","includes","validate","shouldSerialize","serialize","serializeSettings","serializable","setStateValueFromStorage","targetStorage","targetState","payloadWithTimestamp","serializeValues","on","write","insert","clear","forget","read","disableEmit","FormGroupPayloadProvider","children","params","props","formGroup","useMemo","FormGroup","FormGroupBaseContext","Provider","value","provided","useContextEx","useFormGroup","required","useContextEx","FormGroupBaseContext","ArchivistFormGroupStorage","constructor","archivist","clear","get","all","at","insert","value"]}
@@ -1,6 +1,6 @@
1
1
  import { ArchivistInstance } from '@xyo-network/archivist-model';
2
2
  import { Payload } from '@xyo-network/payload-model';
3
- import { FormGroupStorage } from './FormGroupStorage.js';
3
+ import { FormGroupStorage } from './FormGroupStorage.ts';
4
4
  export declare class ArchivistFormGroupStorage implements FormGroupStorage {
5
5
  private archivist;
6
6
  constructor(archivist: ArchivistInstance);
@@ -1,6 +1,6 @@
1
1
  import { ArchivistInstance } from '@xyo-network/archivist-model';
2
2
  import { Payload } from '@xyo-network/payload-model';
3
- import { FormGroupStorage } from './FormGroupStorage.js';
3
+ import { FormGroupStorage } from './FormGroupStorage.ts';
4
4
  export declare class ArchivistFormGroupStorage implements FormGroupStorage {
5
5
  private archivist;
6
6
  constructor(archivist: ArchivistInstance);
@@ -1,6 +1,6 @@
1
1
  import { ArchivistInstance } from '@xyo-network/archivist-model';
2
2
  import { Payload } from '@xyo-network/payload-model';
3
- import { FormGroupStorage } from './FormGroupStorage.js';
3
+ import { FormGroupStorage } from './FormGroupStorage.ts';
4
4
  export declare class ArchivistFormGroupStorage implements FormGroupStorage {
5
5
  private archivist;
6
6
  constructor(archivist: ArchivistInstance);
@@ -1,3 +1,3 @@
1
- export * from './ArchivistFormGroupStorage.js';
2
- export * from './FormGroupStorage.js';
1
+ export * from './ArchivistFormGroupStorage.ts';
2
+ export * from './FormGroupStorage.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ArchivistFormGroupStorage.js';
2
- export * from './FormGroupStorage.js';
1
+ export * from './ArchivistFormGroupStorage.ts';
2
+ export * from './FormGroupStorage.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ArchivistFormGroupStorage.js';
2
- export * from './FormGroupStorage.js';
1
+ export * from './ArchivistFormGroupStorage.ts';
2
+ export * from './FormGroupStorage.ts';
3
3
  //# sourceMappingURL=index.d.ts.map