mobx-formkit 1.0.0 → 1.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.
@@ -0,0 +1,294 @@
1
+ import { autorun, values, toJS } from 'mobx';
2
+
3
+ const HOOK_KEY = "__MOBX_FORMKIT_DEVTOOLS_HOOK__";
4
+ const FIELD_PROPS = [
5
+ "key",
6
+ "id",
7
+ "name",
8
+ "path",
9
+ "type",
10
+ "bindings",
11
+ "options",
12
+ "default",
13
+ "initial",
14
+ "value",
15
+ "label",
16
+ "placeholder",
17
+ "autoFocus",
18
+ "related",
19
+ "rules",
20
+ "extra",
21
+ "checked",
22
+ "validators",
23
+ "validatedWith",
24
+ "clearing",
25
+ "resetting",
26
+ "hasError",
27
+ "isValid",
28
+ "isDirty",
29
+ "isPristine",
30
+ "isDefault",
31
+ "isEmpty",
32
+ "disabled",
33
+ "deleted",
34
+ "touched",
35
+ "focused",
36
+ "blurred",
37
+ "changed",
38
+ "error",
39
+ "size",
40
+ "submitted",
41
+ "validated",
42
+ "submitting",
43
+ "validating",
44
+ ];
45
+ const FORM_PROPS = [
46
+ "name",
47
+ "size",
48
+ "submitted",
49
+ "validated",
50
+ "submitting",
51
+ "validating",
52
+ "clearing",
53
+ "resetting",
54
+ "hasError",
55
+ "isValid",
56
+ "isDirty",
57
+ "isPristine",
58
+ "isDefault",
59
+ "isEmpty",
60
+ "disabled",
61
+ "deleted",
62
+ "touched",
63
+ "focused",
64
+ "blurred",
65
+ "changed",
66
+ "error",
67
+ ];
68
+ const FIELD_HELPER_PROPS = [
69
+ "error",
70
+ "label",
71
+ "placeholder",
72
+ "default",
73
+ "initial",
74
+ "type",
75
+ "disabled",
76
+ "checked",
77
+ "related",
78
+ "rules",
79
+ "options",
80
+ "extra",
81
+ "bindings",
82
+ "validators",
83
+ "validatedWith",
84
+ ];
85
+ /**
86
+ * Recursively convert a value into a plain, structured-clone-safe shape:
87
+ * observable structures become plain objects/arrays and functions become
88
+ * name strings (functions cannot cross the postMessage boundary).
89
+ */
90
+ const serialize = (value, depth = 0) => {
91
+ if (depth > 8)
92
+ return undefined;
93
+ if (typeof value === "function") {
94
+ return `[Function${value.name ? `: ${value.name}` : ""}]`;
95
+ }
96
+ if (value == null)
97
+ return value;
98
+ const plain = toJS(value);
99
+ if (Array.isArray(plain)) {
100
+ return plain.map((item) => serialize(item, depth + 1));
101
+ }
102
+ if (typeof plain === "object") {
103
+ const out = {};
104
+ for (const key of Object.keys(plain)) {
105
+ out[key] = serialize(plain[key], depth + 1);
106
+ }
107
+ return out;
108
+ }
109
+ return plain;
110
+ };
111
+ const isArrayMap = (target) => Boolean(target && typeof target === "object" && target._isArrayMap);
112
+ const pairsOf = (target) => {
113
+ if (isArrayMap(target))
114
+ return Array.from(target.entries());
115
+ if (Array.isArray(target))
116
+ return target.map((value, index) => [String(index), value]);
117
+ const entries = values(target);
118
+ if (Array.isArray(entries))
119
+ return entries.map((value, index) => [String(index), value]);
120
+ return Object.entries(target);
121
+ };
122
+ const pick = (source, props) => {
123
+ const out = {};
124
+ for (const prop of props) {
125
+ const value = source && typeof source === "object" ? source[prop] : undefined;
126
+ if (value !== undefined)
127
+ out[prop] = serialize(value);
128
+ }
129
+ return out;
130
+ };
131
+ const serializeField = (field, key) => {
132
+ const out = pick(field, FIELD_PROPS);
133
+ if (key !== undefined && out.name === undefined)
134
+ out.name = key;
135
+ if (key !== undefined && out.path === undefined)
136
+ out.path = key;
137
+ if (isArrayMap(field)) {
138
+ out.fields = pairsOf(field).map(([childKey, entry]) => serializeField(entry, childKey));
139
+ }
140
+ return out;
141
+ };
142
+ const fieldKey = (field, index) => field.key ?? field.path ?? field.name ?? `field-${index}`;
143
+ const collectProp = (fields, prop) => {
144
+ const out = {};
145
+ fields.forEach((field, index) => {
146
+ const key = fieldKey(field, index);
147
+ out[key] = field.fields && field.fields.length
148
+ ? collectProp(field.fields, prop)
149
+ : field[prop];
150
+ });
151
+ return out;
152
+ };
153
+ const collectHelpers = (form, fields) => {
154
+ const out = {};
155
+ for (const prop of FIELD_HELPER_PROPS) {
156
+ out[prop] = collectProp(fields, prop);
157
+ }
158
+ out.hooks = serialize(form.$hooks);
159
+ out.handlers = serialize(form.$handlers);
160
+ return out;
161
+ };
162
+ const collectBooleanOptions = (form) => {
163
+ const out = {};
164
+ const options = form?.state?.options?.options;
165
+ if (!options || typeof options !== "object")
166
+ return out;
167
+ for (const key of Object.keys(options)) {
168
+ const value = options[key];
169
+ if (typeof value === "boolean")
170
+ out[key] = value;
171
+ }
172
+ return out;
173
+ };
174
+ const serializeForm = (key, form) => {
175
+ const out = { key, ...pick(form, FORM_PROPS) };
176
+ out.fields = pairsOf(form.fields).map(([fieldKey, field]) => serializeField(field, fieldKey));
177
+ out.helpers = collectHelpers(form, out.fields);
178
+ out.options = collectBooleanOptions(form);
179
+ return out;
180
+ };
181
+ const createHook = () => {
182
+ const registry = new Map();
183
+ const listeners = new Set();
184
+ const disposers = new Map();
185
+ const caches = new Map();
186
+ const dirty = new Set();
187
+ let connected = false;
188
+ let flushTimer = null;
189
+ const emit = (event) => {
190
+ for (const listener of listeners)
191
+ listener(event);
192
+ };
193
+ const flush = () => {
194
+ flushTimer = null;
195
+ const keys = [...dirty];
196
+ dirty.clear();
197
+ for (const key of keys) {
198
+ const snapshot = caches.get(key);
199
+ if (snapshot)
200
+ emit({ type: "snapshot", payload: snapshot });
201
+ }
202
+ };
203
+ const scheduleFlush = (key) => {
204
+ dirty.add(key);
205
+ if (flushTimer == null)
206
+ flushTimer = setTimeout(flush, 0);
207
+ };
208
+ const dispose = (key) => {
209
+ disposers.get(key)?.();
210
+ disposers.delete(key);
211
+ dirty.delete(key);
212
+ caches.delete(key);
213
+ };
214
+ const setup = (key) => {
215
+ dispose(key);
216
+ if (!connected)
217
+ return;
218
+ const form = registry.get(key);
219
+ if (!form)
220
+ return;
221
+ disposers.set(key, autorun(() => {
222
+ // Reading observables inside serializeForm makes the autorun re-run
223
+ // on every field/form change; the result is cached and emitted once
224
+ // (batched) by flush.
225
+ caches.set(key, serializeForm(key, form));
226
+ scheduleFlush(key);
227
+ }));
228
+ };
229
+ return {
230
+ get connected() {
231
+ return connected;
232
+ },
233
+ registry,
234
+ emit,
235
+ subscribe(listener) {
236
+ listeners.add(listener);
237
+ return () => {
238
+ listeners.delete(listener);
239
+ };
240
+ },
241
+ register(key, form) {
242
+ registry.set(key, form);
243
+ emit({ type: "register", key, form });
244
+ setup(key);
245
+ },
246
+ unregister(key) {
247
+ if (!registry.has(key))
248
+ return;
249
+ dispose(key);
250
+ registry.delete(key);
251
+ emit({ type: "unregister", key });
252
+ },
253
+ connect() {
254
+ if (connected)
255
+ return;
256
+ connected = true;
257
+ for (const key of registry.keys())
258
+ setup(key);
259
+ emit({ type: "connected", connected: true });
260
+ },
261
+ disconnect() {
262
+ if (!connected)
263
+ return;
264
+ connected = false;
265
+ for (const key of [...disposers.keys()])
266
+ dispose(key);
267
+ emit({ type: "connected", connected: false });
268
+ },
269
+ requestSnapshot() {
270
+ for (const [key, form] of registry) {
271
+ emit({ type: "snapshot", payload: caches.get(key) ?? serializeForm(key, form) });
272
+ }
273
+ },
274
+ };
275
+ };
276
+ const globalRef = globalThis;
277
+ const getHook = () => globalRef[HOOK_KEY];
278
+ const installHook = () => {
279
+ if (!globalRef[HOOK_KEY]) {
280
+ globalRef[HOOK_KEY] = createHook();
281
+ }
282
+ return globalRef[HOOK_KEY];
283
+ };
284
+ const registerForm = (key, form) => installHook().register(key, form);
285
+ const unregisterForm = (key) => installHook().unregister(key);
286
+ const hook = installHook();
287
+ hook.subscribe((event) => {
288
+ if (event.type === "form:new" && !hook.registry.has(event.key)) {
289
+ hook.register(event.key || event.form?.name || `form-${hook.registry.size + 1}`, event.form);
290
+ }
291
+ });
292
+
293
+ export { getHook, installHook, registerForm, unregisterForm };
294
+ //# sourceMappingURL=devtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools.js","sources":["../../../src/devtools.ts"],"sourcesContent":[null],"names":[],"mappings":";;AA4FA,MAAM,QAAQ,GAAG,gCAAgC;AAEjD,MAAM,WAAW,GAAG;IAClB,KAAK;IACL,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,aAAa;IACb,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,SAAS;IACT,YAAY;IACZ,eAAe;IACf,UAAU;IACV,WAAW;IACX,UAAU;IACV,SAAS;IACT,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;CACJ;AAEV,MAAM,UAAU,GAAG;IACjB,MAAM;IACN,MAAM;IACN,WAAW;IACX,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,WAAW;IACX,UAAU;IACV,SAAS;IACT,SAAS;IACT,YAAY;IACZ,WAAW;IACX,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;CACC;AAEV,MAAM,kBAAkB,GAAG;IACzB,OAAO;IACP,OAAO;IACP,aAAa;IACb,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,UAAU;IACV,YAAY;IACZ,eAAe;CACP;AAEV;;;;AAIG;AACH,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,KAAA,GAAgB,CAAC,KAAS;IACvD,IAAI,KAAK,GAAG,CAAC;AAAE,QAAA,OAAO,SAAS;AAC/B,IAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,QAAA,OAAO,YAAY,KAAK,CAAC,IAAI,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE,GAAG;IAC3D;IACA,IAAI,KAAK,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK;AAC/B,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,GAAG,GAAwB,EAAE;QACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;QAC7C;AACA,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,OAAO,KAAK;AACd,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,MAAW,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC;AAEvG,MAAM,OAAO,GAAG,CAAC,MAAW,KAAqB;IAC/C,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAE,MAAc,CAAC,OAAO,EAAE,CAAC;AACpE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,KAAa,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACnG,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,KAAa,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACrG,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,MAAW,EAAE,KAAwB,KAAI;IACrD,MAAM,GAAG,GAAwB,EAAE;AACnC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS;QAC7E,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;IACvD;AACA,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,GAAY,KAAkC;IAChF,MAAM,GAAG,GAAiC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC;IAClE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;AAAE,QAAA,GAAG,CAAC,IAAI,GAAG,GAAG;IAC/D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;AAAE,QAAA,GAAG,CAAC,IAAI,GAAG,GAAG;AAC/D,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;QACrB,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAgB,KAAK,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxG;AACA,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAmC,EAAE,KAAa,KACjE,KAAa,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE;AAEpE,MAAM,WAAW,GAAG,CAAC,MAAsC,EAAE,IAAY,KAAyB;IAChG,MAAM,GAAG,GAAwB,EAAE;IACnC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;QAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;cACpC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI;AAChC,cAAG,KAAa,CAAC,IAAI,CAAC;AAC1B,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,IAAS,EAAE,MAAsC,KAAyB;IAChG,MAAM,GAAG,GAAwB,EAAE;AACnC,IAAA,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;QACrC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;IACvC;IACA,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AACxC,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,IAAS,KAA6B;IACnE,MAAM,GAAG,GAA4B,EAAE;IACvC,MAAM,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;AAC7C,IAAA,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;AAAE,QAAA,OAAO,GAAG;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;IAClD;AACA,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,IAAS,KAA6B;AACxE,IAAA,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAA6B;AACzE,IAAA,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAgB,KAAK,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5G,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;AAC9C,IAAA,GAAG,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACzC,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,MAAM,UAAU,GAAG,MAA0B;AAC3C,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe;AACvC,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyC;AAClE,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB;AAC/C,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC;AACzD,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU;IAC/B,IAAI,SAAS,GAAG,KAAK;IACrB,IAAI,UAAU,GAAyC,IAAI;AAE3D,IAAA,MAAM,IAAI,GAAgC,CAAC,KAAK,KAAI;QAClD,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,CAAC;IAED,MAAM,KAAK,GAAG,MAAK;QACjB,UAAU,GAAG,IAAI;AACjB,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,KAAK,EAAE;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,QAAQ;gBAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC7D;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,GAAW,KAAI;AACpC,QAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACd,IAAI,UAAU,IAAI,IAAI;AAAE,YAAA,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,GAAW,KAAI;AAC9B,QAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AACtB,QAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;AACrB,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACjB,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,IAAA,CAAC;AAED,IAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;QAC5B,OAAO,CAAC,GAAG,CAAC;AACZ,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,SAAS,CAAC,GAAG,CACX,GAAG,EACH,OAAO,CAAC,MAAK;;;;AAIX,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACzC,aAAa,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,CACH;AACH,IAAA,CAAC;IAED,OAAO;AACL,QAAA,IAAI,SAAS,GAAA;AACX,YAAA,OAAO,SAAS;QAClB,CAAC;QACD,QAAQ;QACR,IAAI;AACJ,QAAA,SAAS,CAAC,QAAQ,EAAA;AAChB,YAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvB,YAAA,OAAO,MAAK;AACV,gBAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5B,YAAA,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAA;AAChB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;YACvB,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC;QACZ,CAAC;AACD,QAAA,UAAU,CAAC,GAAG,EAAA;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE;YACxB,OAAO,CAAC,GAAG,CAAC;AACZ,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,GAAA;AACL,YAAA,IAAI,SAAS;gBAAE;YACf,SAAS,GAAG,IAAI;AAChB,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC;YAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,UAAU,GAAA;AACR,YAAA,IAAI,CAAC,SAAS;gBAAE;YAChB,SAAS,GAAG,KAAK;YACjB,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC;YACrD,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,eAAe,GAAA;YACb,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE;gBAClC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAClF;QACF,CAAC;KACF;AACH,CAAC;AAED,MAAM,SAAS,GAAG,UAAiB;AAE5B,MAAM,OAAO,GAAG,MAAuC,SAAS,CAAC,QAAQ;AAEzE,MAAM,WAAW,GAAG,MAA0B;AACnD,IAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AACxB,QAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,EAAE;IACpC;AACA,IAAA,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B;MAEa,YAAY,GAAG,CAAC,GAAW,EAAE,IAAS,KAAK,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI;AAEjF,MAAM,cAAc,GAAG,CAAC,GAAW,KAAK,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG;AAE3E,MAAM,IAAI,GAAG,WAAW,EAAE;AAE1B,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvB,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA,KAAA,EAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA,CAAE,EAAE,KAAK,CAAC,IAAI,CAAC;IAC9F;AACF,CAAC,CAAC;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mobx-formkit",
3
3
  "license": "MIT",
4
- "version": "1.0.0",
4
+ "version": "1.1.0",
5
5
  "author": "Claudio Savino <claudio.savino@me.com> (https://twitter.com/foxhound87)",
6
6
  "description": "Reactive MobX Form State Management",
7
7
  "homepage": "https://github.com/foxhound87/mobx-formkit#readme",
@@ -17,6 +17,9 @@
17
17
  "lib/composer": [
18
18
  "./lib/composer.d.ts"
19
19
  ],
20
+ "devtools": [
21
+ "./lib/devtools.d.ts"
22
+ ],
20
23
  "validators/*": [
21
24
  "./lib/validators/*.d.ts"
22
25
  ],
@@ -39,6 +42,11 @@
39
42
  "import": "./lib/esm/composer.js",
40
43
  "require": "./lib/composer.js"
41
44
  },
45
+ "./devtools": {
46
+ "types": "./lib/devtools.d.ts",
47
+ "import": "./lib/esm/devtools.js",
48
+ "require": "./lib/devtools.js"
49
+ },
42
50
  "./validators/*": {
43
51
  "types": "./lib/validators/*.d.ts",
44
52
  "import": "./lib/esm/validators/*.js",
package/src/Form.ts CHANGED
@@ -70,6 +70,8 @@ export default class Form<F extends Record<string, any> = Record<string, any>> e
70
70
  runInAction(() => (this.$hooks = hooks));
71
71
  runInAction(() => (this.$handlers = handlers));
72
72
 
73
+ (globalThis as any).__MOBX_FORMKIT_DEVTOOLS_HOOK__?.emit?.({ type: "form:new", key: this.name, form: this });
74
+
73
75
  // load data from initializers methods
74
76
  const initial = each(
75
77
  {