react-form-manage 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,1951 @@
1
+ var lodash = require('lodash');
2
+ var minhCustomHooksRelease = require('minh-custom-hooks-release');
3
+ var react = require('react');
4
+ var reactDom = require('react-dom');
5
+ var shallow = require('zustand/react/shallow');
6
+ var immer = require('immer');
7
+ var uuid = require('uuid');
8
+ var zustand = require('zustand');
9
+ var antd = require('antd');
10
+
11
+ function _extends() {
12
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
13
+ for (var e = 1; e < arguments.length; e++) {
14
+ var t = arguments[e];
15
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
16
+ }
17
+ return n;
18
+ }, _extends.apply(null, arguments);
19
+ }
20
+ function _objectWithoutPropertiesLoose(r, e) {
21
+ if (null == r) return {};
22
+ var t = {};
23
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
24
+ if (-1 !== e.indexOf(n)) continue;
25
+ t[n] = r[n];
26
+ }
27
+ return t;
28
+ }
29
+
30
+ function getAllNoneObjStringPath(value, prevPath) {
31
+ if (typeof value === "object") {
32
+ return Object.keys(value).reduce(function (prev, cur) {
33
+ return [].concat(prev, getAllNoneObjStringPath(value[cur], lodash.join(lodash.filter([prevPath, cur], function (v) {
34
+ return !lodash.isNil(v) && v !== "";
35
+ }), ".")));
36
+ }, []);
37
+ }
38
+ return [prevPath];
39
+ }
40
+
41
+ var useFormStore = zustand.create(function (storeSet, storeGet) {
42
+ return {
43
+ forms: {},
44
+ initialValues: {},
45
+ formStates: {},
46
+ cacheData: {},
47
+ formInstances: [],
48
+ submitHistory: {},
49
+ setData: function setData(formName, name, value) {
50
+ return storeSet(immer.produce(function (state) {
51
+ var oldValues = state.forms;
52
+ lodash.set(oldValues, formName + "." + name, value);
53
+ }));
54
+ },
55
+ getCacheData: function getCacheData(formName) {
56
+ return lodash.get(storeGet(), "cacheData." + formName);
57
+ },
58
+ setCacheData: function setCacheData(formName, name, value) {
59
+ return storeSet(immer.produce(function (state) {
60
+ var oldValues = state.cacheData;
61
+ lodash.set(oldValues, formName + "." + name, value);
62
+ }));
63
+ },
64
+ clearCacheData: function clearCacheData(formName) {
65
+ return storeSet(immer.produce(function (state) {
66
+ var oldValues = state.cacheData;
67
+ if (formName) {
68
+ lodash.set(oldValues, formName, {});
69
+ } else {
70
+ lodash.set(oldValues, "", {});
71
+ }
72
+ }));
73
+ },
74
+ getFormItemValue: function getFormItemValue(formName, name) {
75
+ var _storeGet$forms;
76
+ return lodash.get((_storeGet$forms = storeGet().forms) == null ? void 0 : _storeGet$forms[formName], name);
77
+ },
78
+ getFormValues: function getFormValues(formName) {
79
+ var _storeGet$forms2;
80
+ return (_storeGet$forms2 = storeGet().forms) == null ? void 0 : _storeGet$forms2[formName];
81
+ },
82
+ clearFormValues: function clearFormValues(formName) {
83
+ return storeSet(immer.produce(function (state) {
84
+ var oldValues = state.forms;
85
+
86
+ // console.log("Clear form values", formName);
87
+
88
+ lodash.unset(oldValues, formName);
89
+
90
+ // console.log(JSON.parse(JSON.stringify(oldValues)));
91
+ }));
92
+ },
93
+ clearFormInitialValues: function clearFormInitialValues(formName) {
94
+ return storeSet(immer.produce(function (state) {
95
+ var oldValues = state.initialValues;
96
+
97
+ // console.log("Clear form initial values", formName);
98
+
99
+ lodash.unset(oldValues, formName);
100
+
101
+ // console.log(JSON.parse(JSON.stringify(oldValues)));
102
+ }));
103
+ },
104
+ clearObjKeyItem: function clearObjKeyItem(formName, name) {
105
+ return storeSet(immer.produce(function (state) {
106
+ var oldValues = state.forms;
107
+
108
+ // console.log("Clear item value", formName, name);
109
+
110
+ lodash.unset(oldValues, formName + "." + name);
111
+
112
+ // console.log(JSON.parse(JSON.stringify(oldValues)));
113
+ }));
114
+ },
115
+ clearArrItem: function clearArrItem(formName, name) {
116
+ return storeSet(immer.produce(function (state) {
117
+ var oldValues = state.forms;
118
+ console.log("Clear item array value", formName, name);
119
+ var arrPath = name.split(".").slice(0, -1).join(".");
120
+ var elPath = Number(name.split(".").slice(-1).join(""));
121
+ var getArrItem = lodash.get(oldValues, formName + "." + arrPath);
122
+ if (lodash.isNumber(elPath)) {
123
+ getArrItem.splice(elPath, 1);
124
+ }
125
+
126
+ // console.log(JSON.parse(JSON.stringify(oldValues)));
127
+ }));
128
+ },
129
+ setFormState: function setFormState(_ref) {
130
+ var formName = _ref.formName,
131
+ isInitied = _ref.isInitied,
132
+ submitState = _ref.submitState;
133
+ return storeSet(immer.produce(function (state) {
134
+ var oldValues = state.formStates;
135
+ var getFormState = lodash.get(storeGet().formStates, formName);
136
+ if (lodash.isNil(getFormState)) {
137
+ lodash.set(oldValues, formName, {
138
+ isInitied: isInitied,
139
+ submitState: submitState
140
+ });
141
+ } else {
142
+ if (!lodash.isNil(isInitied)) {
143
+ lodash.set(oldValues, formName + ".isInitied", isInitied);
144
+ }
145
+ if (!lodash.isNil(submitState)) {
146
+ lodash.set(oldValues, formName + ".submitState", submitState);
147
+ }
148
+ }
149
+ }));
150
+ },
151
+ clearFormState: function clearFormState(formName) {
152
+ return storeSet(immer.produce(function (state) {
153
+ var oldValues = state.formStates;
154
+
155
+ // console.log("Clear form state", formName);
156
+
157
+ lodash.unset(oldValues, formName);
158
+
159
+ // console.log(JSON.parse(JSON.stringify(oldValues)));
160
+ }));
161
+ },
162
+ getFormState: function getFormState(formName) {
163
+ return lodash.get(storeGet(), "formStates." + formName);
164
+ },
165
+ setFormInitData: function setFormInitData(formName, initValues) {
166
+ return storeSet(immer.produce(function (state) {
167
+ var oldValues = state.initialValues;
168
+ var listInitPath = getAllNoneObjStringPath(initValues);
169
+
170
+ // console.log({ listInitPath, initValues });
171
+
172
+ listInitPath.forEach(function (k) {
173
+ if (lodash.get(initValues, k)) {
174
+ // console.log("init form data values: ", k, get(initValues, k));
175
+ lodash.set(oldValues, formName + "." + k, lodash.get(initValues, k));
176
+ }
177
+ });
178
+ }));
179
+ },
180
+ getInitData: function getInitData(formName, name) {
181
+ return lodash.get(storeGet().initialValues, formName + "." + name);
182
+ },
183
+ setInitData: function setInitData(formName, name, value) {
184
+ return storeSet(immer.produce(function (state) {
185
+ var oldValues = state.initialValues;
186
+ // console.log("Inner init: ", `${formName}.${name}`, value);
187
+ lodash.set(oldValues, formName + "." + name, value);
188
+ }));
189
+ },
190
+ setFormInstance: function setFormInstance(_ref2) {
191
+ var formName = _ref2.formName,
192
+ resetFields = _ref2.resetFields,
193
+ submit = _ref2.submit,
194
+ submitAsync = _ref2.submitAsync,
195
+ setFieldValue = _ref2.setFieldValue,
196
+ setFieldValues = _ref2.setFieldValues,
197
+ getFieldValue = _ref2.getFieldValue,
198
+ getFieldValues = _ref2.getFieldValues,
199
+ getFieldErrors = _ref2.getFieldErrors,
200
+ setFieldFocus = _ref2.setFieldFocus;
201
+ return storeSet(immer.produce(function (state) {
202
+ var storeListeners = state.formInstances;
203
+ var findListenerIndex = storeListeners.findIndex(function (l) {
204
+ return l.formName === formName;
205
+ });
206
+ if (findListenerIndex > -1) {
207
+ if (!lodash.isNil(resetFields)) {
208
+ storeListeners[findListenerIndex].resetFields = resetFields;
209
+ }
210
+ if (!lodash.isNil(submit)) {
211
+ storeListeners[findListenerIndex].submit = submit;
212
+ }
213
+ if (!lodash.isNil(setFieldFocus)) {
214
+ storeListeners[findListenerIndex].setFieldFocus = setFieldFocus;
215
+ }
216
+ if (!lodash.isNil(submitAsync)) {
217
+ storeListeners[findListenerIndex].submitAsync = submitAsync;
218
+ }
219
+ if (!lodash.isNil(setFieldValue)) {
220
+ storeListeners[findListenerIndex].setFieldValue = setFieldValue;
221
+ }
222
+ if (!lodash.isNil(setFieldValues)) {
223
+ storeListeners[findListenerIndex].setFieldValues = setFieldValues;
224
+ }
225
+ if (!lodash.isNil(getFieldValue)) {
226
+ storeListeners[findListenerIndex].getFieldValue = getFieldValue;
227
+ }
228
+ if (!lodash.isNil(getFieldValues)) {
229
+ storeListeners[findListenerIndex].getFieldValues = getFieldValues;
230
+ }
231
+ if (!lodash.isNil(getFieldErrors)) {
232
+ storeListeners[findListenerIndex].getFieldErrors = getFieldErrors;
233
+ }
234
+ return;
235
+ }
236
+ storeListeners.push({
237
+ formName: formName,
238
+ resetFields: resetFields,
239
+ submit: submit,
240
+ submitAsync: submitAsync,
241
+ setFieldValue: setFieldValue,
242
+ setFieldValues: setFieldValues,
243
+ getFieldValue: getFieldValue,
244
+ getFieldValues: getFieldValues,
245
+ getFieldErrors: getFieldErrors,
246
+ setFieldFocus: setFieldFocus
247
+ });
248
+ }));
249
+ },
250
+ revokeFormInstance: function revokeFormInstance(_ref3) {
251
+ var formName = _ref3.formName;
252
+ return storeSet(immer.produce(function (state) {
253
+ var instances = state.formInstances;
254
+ var findInstanceIndex = instances.findIndex(function (l) {
255
+ return l.formName == formName;
256
+ });
257
+
258
+ // console.log("Find item for revoke: ", findListenerIndex, formItemId);
259
+
260
+ if (findInstanceIndex > -1) {
261
+ // const listenersInfo = cloneDeep(instances[findInstanceIndex]);
262
+
263
+ instances.splice(findInstanceIndex, 1);
264
+
265
+ // onAfterRevoke(
266
+ // listenersInfo,
267
+ // instances.filter(
268
+ // (l) =>
269
+ // l.name === listenersInfo.name &&
270
+ // l.formName === listenersInfo.formName &&
271
+ // l.formItemId !== listenersInfo.formItemId
272
+ // )
273
+ // );
274
+ }
275
+ }));
276
+ },
277
+ getCurrentSubmit: function getCurrentSubmit(formName) {
278
+ return lodash.last(lodash.get(storeGet().submitHistory, formName)) || null;
279
+ },
280
+ getSubmitHistory: function getSubmitHistory(formName) {
281
+ return lodash.get(storeGet().submitHistory, formName);
282
+ },
283
+ setSubmitHistory: function setSubmitHistory(formName, submitData) {
284
+ return storeSet(immer.produce(function (state) {
285
+ var oldValues = lodash.get(state.submitHistory, formName);
286
+ if (oldValues) {
287
+ oldValues.push(submitData);
288
+ oldValues.splice(0, oldValues.length - 3);
289
+ } else {
290
+ lodash.set(state.submitHistory, formName, [submitData]);
291
+ }
292
+ console.log("Submit history: ", formName);
293
+ }));
294
+ }
295
+ };
296
+ });
297
+ var useFormListeners = zustand.create(function (storeSet, storeGet) {
298
+ return {
299
+ listeners: [],
300
+ getListener: function getListener(formItemId) {
301
+ return storeGet().listeners.find(function (l) {
302
+ return l.formItemId === formItemId;
303
+ });
304
+ },
305
+ getListeners: function getListeners() {
306
+ return storeGet().listeners;
307
+ },
308
+ setListener: function setListener(_ref4) {
309
+ var formName = _ref4.formName,
310
+ name = _ref4.name,
311
+ onChange = _ref4.onChange,
312
+ onReset = _ref4.onReset,
313
+ isTouched = _ref4.isTouched,
314
+ isDirty = _ref4.isDirty,
315
+ formItemId = _ref4.formItemId,
316
+ internalErrors = _ref4.internalErrors,
317
+ onFocus = _ref4.onFocus,
318
+ emitFocus = _ref4.emitFocus;
319
+ return storeSet(immer.produce(function (state) {
320
+ var storeListeners = state.listeners;
321
+ var findListenerIndex = state.listeners.findIndex(function (l) {
322
+ return l.formItemId === formItemId;
323
+ });
324
+ if (findListenerIndex > -1) {
325
+ if (!lodash.isNil(formName)) {
326
+ storeListeners[findListenerIndex].formName = formName;
327
+ }
328
+ if (!lodash.isNil(name)) {
329
+ storeListeners[findListenerIndex].name = name;
330
+ }
331
+ if (!lodash.isNil(onChange)) {
332
+ storeListeners[findListenerIndex].onChange = onChange;
333
+ }
334
+ if (!lodash.isNil(onReset)) {
335
+ storeListeners[findListenerIndex].onReset = onReset;
336
+ }
337
+ if (!lodash.isNil(isTouched)) {
338
+ storeListeners[findListenerIndex].isTouched = isTouched;
339
+ }
340
+ if (!lodash.isNil(isDirty)) {
341
+ storeListeners[findListenerIndex].isDirty = isDirty;
342
+ }
343
+ if (!lodash.isNil(internalErrors)) {
344
+ storeListeners[findListenerIndex].internalErrors = internalErrors;
345
+ }
346
+ if (!lodash.isNil(onFocus)) {
347
+ storeListeners[findListenerIndex].onFocus = onFocus;
348
+ }
349
+ if (!lodash.isNil(emitFocus)) {
350
+ storeListeners[findListenerIndex].emitFocus = emitFocus;
351
+ }
352
+ return;
353
+ }
354
+ storeListeners.push({
355
+ name: name,
356
+ formName: formName,
357
+ isTouched: isTouched,
358
+ isDirty: isDirty,
359
+ formItemId: formItemId,
360
+ internalErrors: internalErrors,
361
+ onChange: onChange,
362
+ onReset: onReset
363
+ });
364
+ }));
365
+ },
366
+ revokeListener: function revokeListener(formItemId, onAfterRevoke) {
367
+ return storeSet(immer.produce(function (state) {
368
+ var storeListeners = state.listeners;
369
+ var findListenerIndex = storeListeners.findIndex(function (l) {
370
+ return l.formItemId == formItemId;
371
+ });
372
+
373
+ // console.log("Find item for revoke: ", findListenerIndex, formItemId);
374
+
375
+ if (findListenerIndex > -1) {
376
+ var listenersInfo = lodash.cloneDeep(storeListeners[findListenerIndex]);
377
+ storeListeners.splice(findListenerIndex, 1);
378
+ onAfterRevoke(listenersInfo, storeListeners.filter(function (l) {
379
+ return l.name === listenersInfo.name && l.formName === listenersInfo.formName && l.formItemId !== listenersInfo.formItemId;
380
+ }));
381
+ }
382
+ }));
383
+ }
384
+ };
385
+ });
386
+ var useFormCleanUp = zustand.create(function (storeSet) {
387
+ return {
388
+ cleanUpStack: [],
389
+ setCleanUpStack: function setCleanUpStack(_ref5) {
390
+ var name = _ref5.name,
391
+ type = _ref5.type,
392
+ itemKey = _ref5.itemKey,
393
+ formName = _ref5.formName;
394
+ return storeSet(immer.produce(function (state) {
395
+ var oldValues = state.cleanUpStack;
396
+ var cleanUpKey = uuid.v4();
397
+ oldValues.push({
398
+ name: name,
399
+ type: type,
400
+ key: cleanUpKey,
401
+ itemKey: itemKey,
402
+ formName: formName
403
+ });
404
+ }));
405
+ },
406
+ clearCleanUpStack: function clearCleanUpStack() {
407
+ return storeSet(immer.produce(function (state) {
408
+ state.cleanUpStack = [];
409
+ }));
410
+ }
411
+ };
412
+ });
413
+
414
+ var FormCleanUp = function FormCleanUp() {
415
+ var _useFormCleanUp = useFormCleanUp(shallow.useShallow(function (state) {
416
+ return {
417
+ cleanUpStack: state.cleanUpStack,
418
+ clearCleanUpStack: state.clearCleanUpStack
419
+ };
420
+ })),
421
+ cleanUpStack = _useFormCleanUp.cleanUpStack,
422
+ clearCleanUpStack = _useFormCleanUp.clearCleanUpStack;
423
+ var _useFormListeners = useFormListeners(shallow.useShallow(function (state) {
424
+ return {
425
+ revokeListener: state.revokeListener
426
+ };
427
+ })),
428
+ revokeListener = _useFormListeners.revokeListener;
429
+ var _useFormStore = useFormStore(shallow.useShallow(function (state) {
430
+ return {
431
+ clearObjKeyItem: state.clearObjKeyItem,
432
+ clearArrItem: state.clearArrItem
433
+ };
434
+ })),
435
+ clearObjKeyItem = _useFormStore.clearObjKeyItem,
436
+ clearArrItem = _useFormStore.clearArrItem;
437
+ react.useEffect(function () {
438
+ if (Array.isArray(cleanUpStack) && cleanUpStack != null && cleanUpStack.length) {
439
+ // console.log("Trigger clean up: ", cleanUpStack);
440
+ cleanUpStack.forEach(function (c) {
441
+ if (c.itemKey) {
442
+ console.log("Revoke in Clean up: ", c);
443
+ revokeListener(c.itemKey, function (listener, same) {
444
+ if (!same.length) {
445
+ console.log("Trigger after revoke: ", listener, same);
446
+ clearObjKeyItem(listener.formName, listener.name);
447
+ }
448
+ });
449
+ } else {
450
+ if (c.type === "array") {
451
+ console.log(c);
452
+ clearArrItem(c.formName, c.name);
453
+ }
454
+ }
455
+ });
456
+ clearCleanUpStack();
457
+ }
458
+ }, [cleanUpStack]);
459
+ return h(Fragment, null);
460
+ };
461
+
462
+ var _excluded$4 = ["children", "formName", "initialValues", "onFinish", "onReject", "onFinally", "FormElement"];
463
+ function _catch(body, recover) {
464
+ try {
465
+ var result = body();
466
+ } catch (e) {
467
+ return recover(e);
468
+ }
469
+ if (result && result.then) {
470
+ return result.then(void 0, recover);
471
+ }
472
+ return result;
473
+ }
474
+ var FormContext = react.createContext(null);
475
+ function Form(_ref) {
476
+ var children = _ref.children,
477
+ formName = _ref.formName,
478
+ initialValues = _ref.initialValues,
479
+ onFinish = _ref.onFinish,
480
+ onReject = _ref.onReject,
481
+ onFinally = _ref.onFinally,
482
+ FormElement = _ref.FormElement,
483
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
484
+ var _useFormStore = useFormStore(shallow.useShallow(function (state) {
485
+ var _state$formStates;
486
+ return {
487
+ setInitData: state.setFormInitData,
488
+ getFormValues: state.getFormValues,
489
+ setFormState: state.setFormState,
490
+ setFormInstance: state.setFormInstance,
491
+ revokeFormInstance: state.revokeFormInstance,
492
+ setData: state.setData,
493
+ setSubmitHistory: state.setSubmitHistory,
494
+ getFormItemValue: state.getFormItemValue,
495
+ clearFormValues: state.clearFormValues,
496
+ clearFormInitialValues: state.clearFormInitialValues,
497
+ clearFormState: state.clearFormState,
498
+ // Test, nhớ xóa sau khi xong
499
+ formStates: (_state$formStates = state.formStates) == null ? void 0 : _state$formStates[formName]
500
+ };
501
+ })),
502
+ getFormItemValue = _useFormStore.getFormItemValue,
503
+ setInitData = _useFormStore.setInitData,
504
+ setData = _useFormStore.setData,
505
+ getFormValues = _useFormStore.getFormValues,
506
+ setFormState = _useFormStore.setFormState,
507
+ setFormInstance = _useFormStore.setFormInstance,
508
+ revokeFormInstance = _useFormStore.revokeFormInstance,
509
+ setSubmitHistory = _useFormStore.setSubmitHistory,
510
+ clearFormValues = _useFormStore.clearFormValues,
511
+ clearFormInitialValues = _useFormStore.clearFormInitialValues,
512
+ clearFormState = _useFormStore.clearFormState;
513
+ var _useFormListeners = useFormListeners(shallow.useShallow(function (state) {
514
+ return {
515
+ getListeners: state.getListeners
516
+ };
517
+ })),
518
+ getListeners = _useFormListeners.getListeners;
519
+ var setFieldValue = function setFieldValue(name, value, options) {
520
+ var listener = getListeners().find(function (l) {
521
+ return l.name === name && l.formName === formName;
522
+ });
523
+ if (listener) {
524
+ listener.onChange(value, options);
525
+ } else {
526
+ setData(formName, name, value);
527
+ }
528
+ };
529
+ var setFieldValues = function setFieldValues(values, options) {
530
+ if (options === void 0) {
531
+ options = {
532
+ notTriggerDirty: false
533
+ };
534
+ }
535
+ var allStringPath = getAllNoneObjStringPath(values);
536
+ allStringPath.forEach(function (p) {
537
+ var listener = getListeners().find(function (l) {
538
+ return l.name === p && l.formName === formName;
539
+ });
540
+ if (listener) {
541
+ listener.onChange(lodash.get(values, listener.name), options);
542
+ } else {
543
+ setData(formName, p, lodash.get(values, p));
544
+ }
545
+ });
546
+ };
547
+ var getFieldValue = function getFieldValue(name) {
548
+ return getFormItemValue(formName, name);
549
+ };
550
+ var getFieldValues = function getFieldValues(names) {
551
+ if (names === void 0) {
552
+ names = [];
553
+ }
554
+ return names.map(function (name) {
555
+ return {
556
+ name: name,
557
+ value: getFormItemValue(formName, name)
558
+ };
559
+ });
560
+ };
561
+ var setFieldFocus = function setFieldFocus(name) {
562
+ var listener = getListeners().find(function (l) {
563
+ return l.name === name && l.formName === formName;
564
+ });
565
+ if (listener && typeof listener.emitFocus === "function") {
566
+ listener.emitFocus();
567
+ }
568
+ };
569
+ var getFieldErrors = function getFieldErrors(names) {
570
+ var listeners = getListeners().filter(function (l) {
571
+ return names.includes(l.name) && l.formName === formName;
572
+ });
573
+ return listeners.map(function (l) {
574
+ return {
575
+ name: l.name,
576
+ errors: l.internalErrors || []
577
+ };
578
+ });
579
+ };
580
+ var getAllFieldErrors = function getAllFieldErrors() {
581
+ var _getListeners;
582
+ return (_getListeners = getListeners()) == null ? void 0 : _getListeners.filter(function (l) {
583
+ var _l$internalErrors;
584
+ return ((_l$internalErrors = l.internalErrors) == null ? void 0 : _l$internalErrors.length) && l.formName === formName;
585
+ }).map(function (l) {
586
+ return {
587
+ name: l.name,
588
+ formName: l.formName,
589
+ formItemId: l.formItemId,
590
+ errors: l.internalErrors
591
+ };
592
+ });
593
+ };
594
+
595
+ // Submit data
596
+ var _useTask = minhCustomHooksRelease.useTask({
597
+ task: function task(props) {
598
+ try {
599
+ var _temp = _catch(function () {
600
+ reactDom.flushSync(setFormState({
601
+ formName: formName,
602
+ submitState: "submitting"
603
+ }));
604
+ var errorFields = getAllFieldErrors();
605
+ var listeners = getListeners().filter(function (l) {
606
+ return l.formName === formName;
607
+ });
608
+ var formValues = getFormValues(formName);
609
+ var resultValues = lodash.cloneDeep(formValues);
610
+ var cleanValues = {};
611
+ lodash.uniq(listeners, function (l) {
612
+ return l.name;
613
+ }).forEach(function (l) {
614
+ lodash.set(cleanValues, l.name, lodash.get(resultValues, l.name));
615
+ });
616
+ var handleIsolateCase = function handleIsolateCase() {
617
+ try {
618
+ var _temp1 = function () {
619
+ if (!(errorFields != null && errorFields.length)) {
620
+ var _temp6 = function _temp6() {
621
+ // if (!isEqual(cleanValues, last(getSubmitHistory(formName)))) {
622
+ // setSubmitHistory(formName, cleanValues);
623
+ // }
624
+
625
+ setSubmitHistory(formName, cleanValues);
626
+
627
+ // if (
628
+ // !isEqual(
629
+ // resultValues,
630
+ // last(submitHistoryWithUnRegisteredValues.current)
631
+ // )
632
+ // ) {
633
+ // submitHistoryWithUnRegisteredValues.current = [
634
+ // ...submitHistoryWithUnRegisteredValues.current,
635
+ // resultValues,
636
+ // ].slice(-10, 10);
637
+ // }
638
+
639
+ // resultWatchQueue.current.forEach((l) => {
640
+ // l.emitSubmitTrigger(cleanValues);
641
+ // l.emitDataChange(cleanValues);
642
+ // l.emitDataWithUnRegisteredValuesChange(resultValues);
643
+ // l.emitSubmitTriggerWithUnRegisteredValues(resultValues);
644
+ // });
645
+ };
646
+ var _temp5 = function () {
647
+ if (typeof (props == null ? void 0 : props.externalFinishCallback) !== "function") {
648
+ var _temp2 = function _temp2(_onFinish) {
649
+ _onFinish;
650
+ };
651
+ return onFinish ? Promise.resolve(onFinish(cleanValues, resultValues)).then(_temp2) : _temp2(onFinish);
652
+ } else {
653
+ var _temp4 = function () {
654
+ if (props != null && props.callBothFinish) {
655
+ var _temp3 = function _temp3(_onFinish2) {
656
+ _onFinish2;
657
+ return Promise.resolve(props == null ? void 0 : props.externalFinishCallback(cleanValues, resultValues)).then(function () {});
658
+ };
659
+ return onFinish ? Promise.resolve(onFinish(cleanValues, resultValues)).then(_temp3) : _temp3(onFinish);
660
+ } else {
661
+ return Promise.resolve(props == null ? void 0 : props.externalFinishCallback(cleanValues, resultValues)).then(function () {});
662
+ }
663
+ }();
664
+ if (_temp4 && _temp4.then) return _temp4.then(function () {});
665
+ }
666
+ }();
667
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
668
+ } else {
669
+ var _temp0 = function () {
670
+ if (typeof (props == null ? void 0 : props.externalRejectCallback) !== "function") {
671
+ var _temp7 = function _temp7(_onReject) {
672
+ _onReject;
673
+ };
674
+ return onReject ? Promise.resolve(onReject(errorFields)).then(_temp7) : _temp7(onReject);
675
+ } else {
676
+ var _temp9 = function () {
677
+ if (props != null && props.callBothReject) {
678
+ var _temp8 = function _temp8(_onReject2) {
679
+ _onReject2;
680
+ return Promise.resolve(props == null ? void 0 : props.externalRejectCallback(errorFields)).then(function () {});
681
+ };
682
+ return onReject ? Promise.resolve(onReject(errorFields)).then(_temp8) : _temp8(onReject);
683
+ } else {
684
+ return Promise.resolve(props == null ? void 0 : props.externalRejectCallback(errorFields)).then(function () {});
685
+ }
686
+ }();
687
+ if (_temp9 && _temp9.then) return _temp9.then(function () {});
688
+ }
689
+ }();
690
+ if (_temp0 && _temp0.then) return _temp0.then(function () {});
691
+ }
692
+ }();
693
+ return Promise.resolve(_temp1 && _temp1.then ? _temp1.then(function () {}) : void 0);
694
+ } catch (e) {
695
+ return Promise.reject(e);
696
+ }
697
+ };
698
+ var handleFinallyCase = function handleFinallyCase() {
699
+ try {
700
+ var _temp13 = function () {
701
+ if (typeof (props == null ? void 0 : props.externalFinallyCallback) !== "function") {
702
+ var _temp10 = function _temp10(_onFinally) {
703
+ _onFinally;
704
+ };
705
+ return onFinally ? Promise.resolve(onFinally({
706
+ errorsField: errorFields,
707
+ values: cleanValues,
708
+ withUnRegisteredValues: resultValues
709
+ })).then(_temp10) : _temp10(onFinally);
710
+ } else {
711
+ var _temp12 = function () {
712
+ if (props != null && props.callBothFinally) {
713
+ var _temp11 = function _temp11(_onFinally2) {
714
+ _onFinally2;
715
+ return Promise.resolve(props == null ? void 0 : props.externalFinallyCallback({
716
+ errorsField: errorFields,
717
+ values: cleanValues,
718
+ withUnRegisteredValues: resultValues
719
+ })).then(function () {});
720
+ };
721
+ return onFinally ? Promise.resolve(onFinally({
722
+ errorsField: errorFields,
723
+ values: cleanValues,
724
+ withUnRegisteredValues: resultValues
725
+ })).then(_temp11) : _temp11(onFinally);
726
+ } else {
727
+ return Promise.resolve(props == null ? void 0 : props.externalFinallyCallback({
728
+ errorsField: errorFields,
729
+ values: cleanValues,
730
+ withUnRegisteredValues: resultValues
731
+ })).then(function () {});
732
+ }
733
+ }();
734
+ if (_temp12 && _temp12.then) return _temp12.then(function () {});
735
+ }
736
+ }();
737
+ return Promise.resolve(_temp13 && _temp13.then ? _temp13.then(function () {}) : void 0);
738
+ } catch (e) {
739
+ return Promise.reject(e);
740
+ }
741
+ };
742
+ return Promise.resolve(Promise.allSettled([handleIsolateCase(), handleFinallyCase()])).then(function () {
743
+ if (errorFields != null && errorFields.length) {
744
+ setFormState({
745
+ formName: formName,
746
+ submitState: "rejected"
747
+ });
748
+ } else {
749
+ setFormState({
750
+ formName: formName,
751
+ submitState: "submitted"
752
+ });
753
+ }
754
+ });
755
+ }, function (error) {
756
+ console.error("Error in form submit: ", error);
757
+ setFormState({
758
+ formName: formName,
759
+ submitState: "rejected"
760
+ });
761
+ });
762
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
763
+ } catch (e) {
764
+ return Promise.reject(e);
765
+ }
766
+ }
767
+ }),
768
+ runSubmit = _useTask.run,
769
+ runSubmitAsync = _useTask.runAsync,
770
+ reset = _useTask.reset;
771
+ var resetFields = function resetFields(resetOptions) {
772
+ reset();
773
+ reactDom.flushSync(setFormState({
774
+ formName: formName,
775
+ isInitied: false
776
+ }));
777
+ var totalListenerFields = getListeners();
778
+ if (Array.isArray(resetOptions)) {
779
+ totalListenerFields.forEach(function (l) {
780
+ var findListenerByName = resetOptions.find(function (o) {
781
+ return o.name === l.name;
782
+ });
783
+ if (findListenerByName) {
784
+ l.onReset(findListenerByName == null ? void 0 : findListenerByName.value);
785
+ }
786
+ });
787
+ totalListenerFields.filter(function (l) {
788
+ return resetOptions.find(function (o) {
789
+ return o.name !== l.name;
790
+ });
791
+ }).forEach(function (l) {
792
+ l == null || l.onReset == null || l.onReset();
793
+ });
794
+ } else if (typeof resetOptions === "object") {
795
+ var allStringPath = getAllNoneObjStringPath(resetOptions);
796
+ allStringPath.forEach(function (p) {
797
+ var listener = totalListenerFields.find(function (l) {
798
+ return l.name === p && l.formName === formName;
799
+ });
800
+ if (listener) {
801
+ listener.onChange(lodash.get(resetOptions, listener.name));
802
+ } else {
803
+ setData(formName, p, lodash.get(resetOptions, p));
804
+ }
805
+ });
806
+ } else {
807
+ totalListenerFields.forEach(function (l) {
808
+ l == null || l.onReset == null || l.onReset();
809
+ });
810
+ }
811
+ setFormState({
812
+ formName: formName,
813
+ isInitied: true
814
+ });
815
+ };
816
+ react.useEffect(function () {
817
+ setInitData(formName, initialValues);
818
+ setFormState({
819
+ formName: formName,
820
+ isInitied: true,
821
+ submitState: "idle"
822
+ });
823
+ setFormInstance({
824
+ formName: formName,
825
+ resetFields: resetFields,
826
+ submit: runSubmit,
827
+ submitAsync: runSubmitAsync,
828
+ setFieldValue: setFieldValue,
829
+ setFieldValues: setFieldValues,
830
+ getFieldValue: getFieldValue,
831
+ getFieldValues: getFieldValues,
832
+ setFieldFocus: setFieldFocus,
833
+ getFieldErrors: getFieldErrors
834
+ });
835
+ return function () {
836
+ revokeFormInstance({
837
+ formName: formName
838
+ });
839
+ clearFormInitialValues(formName);
840
+ clearFormValues(formName);
841
+ clearFormState(formName);
842
+ };
843
+ }, []);
844
+ return h(FormContext.Provider, {
845
+ value: {
846
+ formName: formName
847
+ }
848
+ }, FormElement ? h(FormElement, _extends({
849
+ onSubmit: function onSubmit(e) {
850
+ e.preventDefault();
851
+ e.stopPropagation();
852
+ runSubmit();
853
+ }
854
+ }, props), children) : h("form", _extends({
855
+ onSubmit: function onSubmit(e) {
856
+ e.preventDefault();
857
+ e.stopPropagation();
858
+ runSubmit();
859
+ }
860
+ }, props), children), h(FormCleanUp, null));
861
+ }
862
+ function useFormContext() {
863
+ var c = react.useContext(FormContext);
864
+ if (!c) throw new Error("Must be use inside FormProvider");
865
+ return c;
866
+ }
867
+ function useForm(formNameOrFormInstance) {
868
+ var formInstance = useFormStore(function (state) {
869
+ return state.formInstances.find(function (i) {
870
+ var _formNameOrFormInstan;
871
+ return i.formName === ((_formNameOrFormInstan = formNameOrFormInstance == null ? void 0 : formNameOrFormInstance.formName) != null ? _formNameOrFormInstan : formNameOrFormInstance);
872
+ });
873
+ });
874
+ return [formInstance];
875
+ }
876
+ function useWatch(name, formNameOrFormInstance) {
877
+ var _useForm = useForm(formNameOrFormInstance),
878
+ formInstance = _useForm[0];
879
+ var value = useFormStore(function (state) {
880
+ var _formInstance$formNam;
881
+ return state.getFormItemValue((_formInstance$formNam = formInstance == null ? void 0 : formInstance.formName) != null ? _formInstance$formNam : formNameOrFormInstance, name);
882
+ });
883
+ return value;
884
+ }
885
+ function useSubmitDataWatch(_ref2) {
886
+ var formNameOrFormInstance = _ref2.formNameOrFormInstance,
887
+ _ref2$triggerWhenChan = _ref2.triggerWhenChange,
888
+ triggerWhenChange = _ref2$triggerWhenChan === void 0 ? false : _ref2$triggerWhenChan,
889
+ mapFn = _ref2.mapFn;
890
+ var _useForm2 = useForm(formNameOrFormInstance),
891
+ formInstance = _useForm2[0];
892
+ var value = useFormStore(function (state) {
893
+ return lodash.last(lodash.get(state.submitHistory, formInstance == null ? void 0 : formInstance.formName));
894
+ });
895
+ var _useState = react.useState(mapFn ? mapFn(value, null) : value),
896
+ submitData = _useState[0],
897
+ setSubmitData = _useState[1];
898
+ react.useEffect(function () {
899
+ if (!triggerWhenChange || !lodash.isEqual(submitData, value)) {
900
+ setSubmitData(mapFn ? mapFn(value, submitData) : value);
901
+ }
902
+ }, [value, triggerWhenChange]);
903
+ return submitData;
904
+ }
905
+ var useFormStateWatch = function useFormStateWatch(formNameOrFormInstance) {
906
+ var _useForm3 = useForm(formNameOrFormInstance),
907
+ formInstance = _useForm3[0];
908
+ var formState = useFormStore(function (state) {
909
+ var _state$formStates2;
910
+ return (_state$formStates2 = state.formStates) == null ? void 0 : _state$formStates2[formInstance == null ? void 0 : formInstance.formName];
911
+ });
912
+ return formState;
913
+ };
914
+ Form.useForm = useForm;
915
+ Form.useWatch = useWatch;
916
+ Form.useSubmitDataWatch = useSubmitDataWatch;
917
+ Form.useFormStateWatch = useFormStateWatch;
918
+
919
+ // ESM re-declaration of validation constants to match src/constants/validation.ts
920
+ var IS_STRING_NUMBER_REGEX = /^\d+$/;
921
+ var IS_USERNAME_REGEX = /^[a-zA-Z0-9._]{3,16}$/;
922
+ var IS_PASSWORD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
923
+ var IS_POSITIVE_STRING_NUMBER_REGEX = /^[1-9]\d*$/;
924
+ var IS_POSITIVE_INTEGER_STRING_NUMBER_REGEX = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
925
+ var IS_VIETNAMESE_PHONE_NUMBER_REGEX = /^(?:\+84|0)[\s\-\.]?(?:3[2-9]|5[6|8|9]|7[06-9]|8[1-5]|9[0-9])[\s\-\.]?\d[\d\s\-\.]{6,8}$/;
926
+ var IS_EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
927
+ var IS_NAME_REGEX = /^[A-Za-zÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚĂĐĨŨƠàáâãèéêìíòóôõùúăđĩũơƯĂÂÊÔƠƯăâêôơưÇçÝýỳỵỷỹ\s]{2,50}$/;
928
+ var IS_NOSPACE_STRING_AND_NUMBER_REGEX = /^[A-Za-zÀ-ỹ0-9]+$/;
929
+ var IS_STRING_AND_NUMBER_REGEX = /^[A-Za-zÀ-ỹ0-9][A-Za-zÀ-ỹ0-9\s]*$/;
930
+ var IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_REGEX = /^[A-Za-z0-9]+$/;
931
+ var IS_ALPHABET_STRING_AND_NUMBER_REGEX = /^[A-Za-z0-9]+(?:\s[A-Za-z0-9]+)*$/;
932
+ var IS_NO_SPACE_ALPHABET_STRING_REGEX = /^[A-Za-z]+$/;
933
+
934
+ var _iteratorSymbol = typeof Symbol !== "undefined" ? Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator")) : "@@iterator";
935
+ function _settle(pact, state, value) {
936
+ if (!pact.s) {
937
+ if (value instanceof _Pact) {
938
+ if (value.s) {
939
+ if (state & 1) {
940
+ state = value.s;
941
+ }
942
+ value = value.v;
943
+ } else {
944
+ value.o = _settle.bind(null, pact, state);
945
+ return;
946
+ }
947
+ }
948
+ if (value && value.then) {
949
+ value.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));
950
+ return;
951
+ }
952
+ pact.s = state;
953
+ pact.v = value;
954
+ var observer = pact.o;
955
+ if (observer) {
956
+ observer(pact);
957
+ }
958
+ }
959
+ }
960
+ var _Pact = /*#__PURE__*/function () {
961
+ function _Pact() {}
962
+ _Pact.prototype.then = function (onFulfilled, onRejected) {
963
+ var result = new _Pact();
964
+ var state = this.s;
965
+ if (state) {
966
+ var callback = state & 1 ? onFulfilled : onRejected;
967
+ if (callback) {
968
+ try {
969
+ _settle(result, 1, callback(this.v));
970
+ } catch (e) {
971
+ _settle(result, 2, e);
972
+ }
973
+ return result;
974
+ } else {
975
+ return this;
976
+ }
977
+ }
978
+ this.o = function (_this) {
979
+ try {
980
+ var value = _this.v;
981
+ if (_this.s & 1) {
982
+ _settle(result, 1, onFulfilled ? onFulfilled(value) : value);
983
+ } else if (onRejected) {
984
+ _settle(result, 1, onRejected(value));
985
+ } else {
986
+ _settle(result, 2, value);
987
+ }
988
+ } catch (e) {
989
+ _settle(result, 2, e);
990
+ }
991
+ };
992
+ return result;
993
+ };
994
+ return _Pact;
995
+ }();
996
+ function _isSettledPact(thenable) {
997
+ return thenable instanceof _Pact && thenable.s & 1;
998
+ }
999
+ function _forTo(array, body, check) {
1000
+ var i = -1,
1001
+ pact,
1002
+ reject;
1003
+ function _cycle(result) {
1004
+ try {
1005
+ while (++i < array.length && (!check || !check())) {
1006
+ result = body(i);
1007
+ if (result && result.then) {
1008
+ if (_isSettledPact(result)) {
1009
+ result = result.v;
1010
+ } else {
1011
+ result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));
1012
+ return;
1013
+ }
1014
+ }
1015
+ }
1016
+ if (pact) {
1017
+ _settle(pact, 1, result);
1018
+ } else {
1019
+ pact = result;
1020
+ }
1021
+ } catch (e) {
1022
+ _settle(pact || (pact = new _Pact()), 2, e);
1023
+ }
1024
+ }
1025
+ _cycle();
1026
+ return pact;
1027
+ }
1028
+ var VALID_PREMITIVE_TYPE = ["string", "number", "undefined"];
1029
+ function _forOf(target, body, check) {
1030
+ if (typeof target[_iteratorSymbol] === "function") {
1031
+ var iterator = target[_iteratorSymbol](),
1032
+ step,
1033
+ pact,
1034
+ reject;
1035
+ function _cycle(result) {
1036
+ try {
1037
+ while (!(step = iterator.next()).done && (!check || !check())) {
1038
+ result = body(step.value);
1039
+ if (result && result.then) {
1040
+ if (_isSettledPact(result)) {
1041
+ result = result.v;
1042
+ } else {
1043
+ result.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));
1044
+ return;
1045
+ }
1046
+ }
1047
+ }
1048
+ if (pact) {
1049
+ _settle(pact, 1, result);
1050
+ } else {
1051
+ pact = result;
1052
+ }
1053
+ } catch (e) {
1054
+ _settle(pact || (pact = new _Pact()), 2, e);
1055
+ }
1056
+ }
1057
+ _cycle();
1058
+ if (iterator.return) {
1059
+ var _fixup = function (value) {
1060
+ try {
1061
+ if (!step.done) {
1062
+ iterator.return();
1063
+ }
1064
+ } catch (e) {}
1065
+ return value;
1066
+ };
1067
+ if (pact && pact.then) {
1068
+ return pact.then(_fixup, function (e) {
1069
+ throw _fixup(e);
1070
+ });
1071
+ }
1072
+ _fixup();
1073
+ }
1074
+ return pact;
1075
+ }
1076
+ // No support for Symbol.iterator
1077
+ if (!("length" in target)) {
1078
+ throw new TypeError("Object is not iterable");
1079
+ }
1080
+ // Handle live collections properly
1081
+ var values = [];
1082
+ for (var i = 0; i < target.length; i++) {
1083
+ values.push(target[i]);
1084
+ }
1085
+ return _forTo(values, function (i) {
1086
+ return body(values[i]);
1087
+ }, check);
1088
+ }
1089
+ function useFormItemControl(_ref) {
1090
+ var formName = _ref.formName,
1091
+ form = _ref.form,
1092
+ name = _ref.name,
1093
+ initialValue = _ref.initialValue,
1094
+ formItemId = _ref.formItemId,
1095
+ rules = _ref.rules,
1096
+ elementRef = _ref.elementRef;
1097
+ var contextForm = useFormContext();
1098
+ var _useFormStore = useFormStore(shallow.useShallow(function (state) {
1099
+ return {
1100
+ value: lodash.get(state.forms, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
1101
+ setData: state.setData,
1102
+ getCacheData: state.getCacheData,
1103
+ getFormValues: state.getFormValues
1104
+ };
1105
+ })),
1106
+ value = _useFormStore.value,
1107
+ setData = _useFormStore.setData,
1108
+ getCacheData = _useFormStore.getCacheData,
1109
+ getFormValues = _useFormStore.getFormValues;
1110
+ var _useFormCleanUp = useFormCleanUp(shallow.useShallow(function (state) {
1111
+ return {
1112
+ setCleanUpStack: state.setCleanUpStack
1113
+ };
1114
+ })),
1115
+ setCleanUpStack = _useFormCleanUp.setCleanUpStack;
1116
+ var _useFormStore2 = useFormStore(shallow.useShallow(function (state) {
1117
+ // console.log(
1118
+ // "Shallow get initValue: ",
1119
+ // formName || form?.formName || contextForm?.formName,
1120
+ // name,
1121
+ // get(
1122
+ // state.initialValues,
1123
+ // `${formName || form?.formName || contextForm?.formName}.${name}`
1124
+ // )
1125
+ // );
1126
+ return {
1127
+ initValue: lodash.get(state.initialValues, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
1128
+ setInitData: state.setInitData,
1129
+ getInitData: state.getInitData
1130
+ };
1131
+ })),
1132
+ internalInitValue = _useFormStore2.initValue,
1133
+ setInitData = _useFormStore2.setInitData,
1134
+ getInitData = _useFormStore2.getInitData;
1135
+ var _useFormListeners = useFormListeners(shallow.useShallow(function (state) {
1136
+ // console.log(
1137
+ // "Get listener from store: ",
1138
+ // state.listeners.find((l) => l.formItemId === formItemId)
1139
+ // );
1140
+ return {
1141
+ listener: state.listeners.find(function (l) {
1142
+ return l.formItemId === formItemId;
1143
+ }),
1144
+ setListener: state.setListener
1145
+ };
1146
+ })),
1147
+ listener = _useFormListeners.listener,
1148
+ setListener = _useFormListeners.setListener;
1149
+ var onInitData = function onInitData(value) {
1150
+ // console.log(
1151
+ // "Init:",
1152
+ // formName || form?.formName || contextForm?.formName,
1153
+ // name,
1154
+ // value
1155
+ // );
1156
+ setInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, value);
1157
+ };
1158
+ var onFocus = function onFocus() {
1159
+ setListener({
1160
+ formItemId: formItemId,
1161
+ isTouched: true,
1162
+ isDirty: listener == null ? void 0 : listener.isDirty
1163
+ });
1164
+ };
1165
+ var emitFocus = function emitFocus() {
1166
+ if (elementRef != null && elementRef.current) {
1167
+ elementRef.current.focus();
1168
+ }
1169
+ };
1170
+ var onChange = function onChange(value, options) {
1171
+ if ((options == null ? void 0 : options.notTriggerDirty) !== true) {
1172
+ setListener({
1173
+ formItemId: formItemId,
1174
+ isDirty: true,
1175
+ isTouched: listener == null ? void 0 : listener.isTouched
1176
+ });
1177
+ }
1178
+ setData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, value);
1179
+ };
1180
+ var onReset = function onReset(value) {
1181
+ console.log("Reset", value, getInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name));
1182
+ onChange(lodash.isNil(value) ? getInitData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name) : value);
1183
+ };
1184
+
1185
+ // validate field rules
1186
+ var internalRules = react.useMemo(function () {
1187
+ return rules || [];
1188
+ }, [rules]);
1189
+ var _useTaskEffect = minhCustomHooksRelease.useTaskEffect({
1190
+ task: function task() {
1191
+ try {
1192
+ var _temp2 = function _temp2() {
1193
+ setListener({
1194
+ formItemId: formItemId,
1195
+ internalErrors: listErrors
1196
+ });
1197
+ return listErrors;
1198
+ };
1199
+ var listErrors = [];
1200
+ var formValues = getFormValues(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName));
1201
+ var ruleToTask = internalRules == null ? void 0 : internalRules.map(function (r, index) {
1202
+ return function () {
1203
+ try {
1204
+ var _temp4 = function _temp4(_result) {
1205
+ if (_exit) return _result;
1206
+ if (VALID_PREMITIVE_TYPE.includes(typeof value)) {
1207
+ var _fieldValue$toString;
1208
+ // REQUIRE
1209
+ if (r.required && !((fieldValue == null || (_fieldValue$toString = fieldValue.toString()) == null || (_fieldValue$toString = _fieldValue$toString.trim()) == null ? void 0 : _fieldValue$toString.length) > 0)) {
1210
+ // tempMessage.push("This field is required!");
1211
+ listErrors.push({
1212
+ ruleName: ruleName,
1213
+ message: r.message
1214
+ });
1215
+ return;
1216
+ }
1217
+
1218
+ // Min Max
1219
+ if (!lodash.isNil(r.min) || !lodash.isNil(r.max)) {
1220
+ var _r$min, _r$max;
1221
+ if (lodash.isNil(value)) {
1222
+ listErrors.push({
1223
+ ruleName: ruleName,
1224
+ message: r.message
1225
+ });
1226
+ return;
1227
+ }
1228
+ if (((_r$min = r.min) != null ? _r$min : Number.MIN_SAFE_INTEGER) <= ((_r$max = r.max) != null ? _r$max : Number.MAX_SAFE_INTEGER)) {
1229
+ if (!lodash.isNil(r.min)) {
1230
+ if (!isNaN(Number(fieldValue)) && Number(fieldValue) <= r.min) {
1231
+ // tempMessage.push(MIN_INVALID_MESSAGE);
1232
+ listErrors.push({
1233
+ ruleName: ruleName,
1234
+ message: r.message
1235
+ });
1236
+ return;
1237
+ }
1238
+ }
1239
+ if (!lodash.isNil(r.max)) {
1240
+ if (!isNaN(Number(fieldValue)) && Number(fieldValue) >= r.max) {
1241
+ // tempMessage.push(MAX_INVALID_MESSAGE);
1242
+ listErrors.push({
1243
+ ruleName: ruleName,
1244
+ message: r.message
1245
+ });
1246
+ return;
1247
+ }
1248
+ }
1249
+ }
1250
+ }
1251
+
1252
+ // MIN LENGTH MAX LENGTH
1253
+ if (!lodash.isNil(r.minLength) || !lodash.isNil(r.maxLength)) {
1254
+ var _r$minLength, _r$maxLength;
1255
+ if (((_r$minLength = r.minLength) != null ? _r$minLength : Number.MIN_SAFE_INTEGER) <= ((_r$maxLength = r.maxLength) != null ? _r$maxLength : Number.MAX_SAFE_INTEGER)) {
1256
+ if (!lodash.isNil(r.minLength)) {
1257
+ if ((fieldValue == null ? void 0 : fieldValue.length) <= r.minLength) {
1258
+ // tempMessage.push(MIN_INVALID_LENGTH_MESSAGE);
1259
+ listErrors.push({
1260
+ ruleName: ruleName,
1261
+ message: r.message
1262
+ });
1263
+ return;
1264
+ }
1265
+ }
1266
+ if (!lodash.isNil(r.maxLength)) {
1267
+ if ((fieldValue == null ? void 0 : fieldValue.length) >= r.maxLength) {
1268
+ // tempMessage.push(MAX_INVALID_LENGTH_MESSAGE);
1269
+ listErrors.push({
1270
+ ruleName: ruleName,
1271
+ message: r.message
1272
+ });
1273
+ return;
1274
+ }
1275
+ }
1276
+ }
1277
+ }
1278
+
1279
+ // Password
1280
+ if (r.isPassword && !IS_PASSWORD_REGEX.test(fieldValue)) {
1281
+ // tempMessage.push(IS_PASSWORD_INVALID_MESSAGE);
1282
+ listErrors.push({
1283
+ ruleName: ruleName,
1284
+ message: r.message
1285
+ });
1286
+ return;
1287
+ }
1288
+
1289
+ // Username
1290
+ if (r.isUsername && !IS_USERNAME_REGEX.test(fieldValue)) {
1291
+ // tempMessage.push(IS_USERNAME_INVALID_MESSAGE);
1292
+ listErrors.push({
1293
+ ruleName: ruleName,
1294
+ message: r.message
1295
+ });
1296
+ return;
1297
+ }
1298
+
1299
+ // Is Vietnamese Phone number
1300
+ if (r.isPhoneNumber && !IS_VIETNAMESE_PHONE_NUMBER_REGEX.test(fieldValue)) {
1301
+ // tempMessage.push(IS_VIETNAMESE_PHONE_NUMBER_INVALID_MESSAGE);
1302
+ listErrors.push({
1303
+ ruleName: ruleName,
1304
+ message: r.message
1305
+ });
1306
+ return;
1307
+ }
1308
+
1309
+ // String number
1310
+ if (r.isStringNumber && !IS_STRING_NUMBER_REGEX.test(fieldValue)) {
1311
+ // tempMessage.push(IS_STRING_NUMBER_INVALID_MESSAGE);
1312
+ listErrors.push({
1313
+ ruleName: ruleName,
1314
+ message: r.message
1315
+ });
1316
+ return;
1317
+ }
1318
+
1319
+ // String positive number
1320
+ if (r.isPositiveStringNumber && !IS_POSITIVE_STRING_NUMBER_REGEX.test(fieldValue)) {
1321
+ // tempMessage.push(IS_POSITIVE_STRING_NUMBER_INVALID_MESSAGE);
1322
+ listErrors.push({
1323
+ ruleName: ruleName,
1324
+ message: r.message
1325
+ });
1326
+ return;
1327
+ }
1328
+
1329
+ // String positive integer number
1330
+ if (r.isPositiveIntegerStringNumber && !IS_POSITIVE_INTEGER_STRING_NUMBER_REGEX.test(fieldValue)) {
1331
+ // tempMessage.push(
1332
+ listErrors.push({
1333
+ ruleName: ruleName,
1334
+ message: r.message
1335
+ });
1336
+ return;
1337
+ // IS_POSITIVE_INTEGER_STRING_NUMBER_INVALID_MESSAGE
1338
+ // );
1339
+ }
1340
+
1341
+ // Email
1342
+ if (r.isEmail && !IS_EMAIL_REGEX.test(fieldValue)) {
1343
+ // tempMessage.push(IS_EMAIL_INVALID_MESSAGE);
1344
+ listErrors.push({
1345
+ ruleName: ruleName,
1346
+ message: r.message
1347
+ });
1348
+ return;
1349
+ }
1350
+
1351
+ // Vietnamese Name
1352
+ if (r.isVietnameseName && !IS_NAME_REGEX.test(fieldValue)) {
1353
+ // tempMessage.push(IS_NAME_INVALID_MESSAGE);
1354
+ listErrors.push({
1355
+ ruleName: ruleName,
1356
+ message: r.message
1357
+ });
1358
+ return;
1359
+ }
1360
+
1361
+ // String and number without whitespace
1362
+ if (r.isNoSpaceStringAndNumber && !IS_NOSPACE_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
1363
+ // tempMessage.push(IS_NOSPACE_STRING_AND_NUMBER_MESSAGE);
1364
+ listErrors.push({
1365
+ ruleName: ruleName,
1366
+ message: r.message
1367
+ });
1368
+ return;
1369
+ }
1370
+
1371
+ // String and number with
1372
+ if (r.isStringAndNumber && !IS_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
1373
+ // tempMessage.push(IS_STRING_AND_NUMBER_MESSAGE);
1374
+ listErrors.push({
1375
+ ruleName: ruleName,
1376
+ message: r.message
1377
+ });
1378
+ return;
1379
+ }
1380
+ if (r.isNoSpaceOnlyAlphabetStringAndNumber && !IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
1381
+ // tempMessage.push(IS_NO_SPACE_ALPHABET_STRING_AND_NUMBER_MESSAGE);
1382
+ listErrors.push({
1383
+ ruleName: ruleName,
1384
+ message: r.message
1385
+ });
1386
+ return;
1387
+ }
1388
+ if (r.isOnlyAlphabetStringAndNumber && !IS_ALPHABET_STRING_AND_NUMBER_REGEX.test(fieldValue)) {
1389
+ // tempMessage.push(IS_ALPHABET_STRING_AND_NUMBER_MESSAGE);
1390
+ listErrors.push({
1391
+ ruleName: ruleName,
1392
+ message: r.message
1393
+ });
1394
+ return;
1395
+ }
1396
+ if (r.isNoSpaceAlphabetString && !IS_NO_SPACE_ALPHABET_STRING_REGEX.test(fieldValue)) {
1397
+ // tempMessage.push(IS_NO_SPACE_ALPHABET_STRING_MESSAGE);
1398
+ listErrors.push({
1399
+ ruleName: ruleName,
1400
+ message: r.message
1401
+ });
1402
+ }
1403
+ }
1404
+ };
1405
+ var _exit;
1406
+ var ruleName = (r == null ? void 0 : r.name) || index;
1407
+ var fieldValue = value == null || value.toString == null ? void 0 : value.toString();
1408
+ var _temp3 = function () {
1409
+ if (typeof r.handler === "function") {
1410
+ return Promise.resolve(r.handler(value, formValues)).then(function (_r$handler) {
1411
+ if (!_r$handler) {
1412
+ listErrors.push({
1413
+ ruleName: ruleName,
1414
+ message: r.message
1415
+ });
1416
+ _exit = 1;
1417
+ }
1418
+ });
1419
+ }
1420
+ }();
1421
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
1422
+ } catch (e) {
1423
+ return Promise.reject(e);
1424
+ }
1425
+ };
1426
+ });
1427
+
1428
+ // console.log("Trigger validate: ", listErrors);
1429
+ var _temp = _forOf(ruleToTask, function (rAsync) {
1430
+ return Promise.resolve(rAsync()).then(function () {});
1431
+ });
1432
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
1433
+ } catch (e) {
1434
+ return Promise.reject(e);
1435
+ }
1436
+ },
1437
+ deps: [internalRules, value],
1438
+ onError: function onError(err) {
1439
+ console.log(err);
1440
+ }
1441
+ }),
1442
+ errors = _useTaskEffect.data,
1443
+ state = _useTaskEffect.state;
1444
+
1445
+ // useEffect(() => {
1446
+ // console.log({ name, errors });
1447
+ // }, [errors]);
1448
+
1449
+ // useEffect(() => {
1450
+ // console.log({ name, listener });
1451
+ // }, [listener]);
1452
+
1453
+ react.useEffect(function () {
1454
+ // console.log({ internalInitValue, value, initialValue });
1455
+ // console.log("Init item value: ", name, value, internalInitValue);
1456
+ // console.log("internalInitValue: ", internalInitValue);
1457
+
1458
+ if (!value) {
1459
+ if (!internalInitValue) {
1460
+ if (!lodash.isNil(initialValue)) {
1461
+ console.log("On init data", initialValue);
1462
+ onInitData(initialValue);
1463
+ }
1464
+ } else {
1465
+ onChange(internalInitValue);
1466
+ }
1467
+ }
1468
+ }, [internalInitValue]);
1469
+ react.useEffect(function () {
1470
+ if (!listener) {
1471
+ setListener({
1472
+ onChange: onChange,
1473
+ emitFocus: emitFocus,
1474
+ isTouched: false,
1475
+ isDirty: false,
1476
+ name: name,
1477
+ formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
1478
+ formItemId: formItemId,
1479
+ onReset: onReset
1480
+ });
1481
+ }
1482
+
1483
+ // return () => {
1484
+ // console.log("Revoke listener", listener);
1485
+
1486
+ // };
1487
+ }, []);
1488
+ react.useEffect(function () {
1489
+ if (listener) {
1490
+ setListener({
1491
+ formItemId: formItemId,
1492
+ onChange: onChange,
1493
+ name: name,
1494
+ formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
1495
+ onReset: onReset,
1496
+ isTouched: listener == null ? void 0 : listener.isTouched,
1497
+ isDirty: listener == null ? void 0 : listener.isDirty
1498
+ });
1499
+ }
1500
+ var cacheData = getCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName));
1501
+
1502
+ // console.log("Get cache Data after list change: ", cacheData);
1503
+
1504
+ if (cacheData) {
1505
+ var getNewDataFromCache = lodash.get(cacheData, name);
1506
+
1507
+ // console.log("Init data when change form ite: ", name, cacheData);
1508
+
1509
+ if (!getNewDataFromCache) {
1510
+ onChange(initialValue);
1511
+ } else onChange(getNewDataFromCache);
1512
+ }
1513
+ }, [name, formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)]);
1514
+ react.useEffect(function () {
1515
+ return function () {
1516
+ setCleanUpStack({
1517
+ itemKey: formItemId
1518
+ });
1519
+ };
1520
+ }, []);
1521
+ return {
1522
+ value: value,
1523
+ onChange: onChange,
1524
+ state: state,
1525
+ errors: errors,
1526
+ onFocus: onFocus,
1527
+ isDirty: listener == null ? void 0 : listener.isDirty
1528
+ };
1529
+ }
1530
+
1531
+ function FormItem(_ref) {
1532
+ var _cloneElement;
1533
+ var children = _ref.children,
1534
+ name = _ref.name,
1535
+ formName = _ref.formName,
1536
+ initialValue = _ref.initialValue,
1537
+ externalFormItemId = _ref.formItemId,
1538
+ rules = _ref.rules,
1539
+ _ref$valuePropName = _ref.valuePropName,
1540
+ valuePropName = _ref$valuePropName === void 0 ? "value" : _ref$valuePropName,
1541
+ getValueFromEvent = _ref.getValueFromEvent;
1542
+ var elRef = react.useRef();
1543
+ var _useState = react.useState(externalFormItemId != null ? externalFormItemId : uuid.v4()),
1544
+ formItemId = _useState[0];
1545
+ var _useFormItemControl = useFormItemControl({
1546
+ formName: formName,
1547
+ name: name,
1548
+ initialValue: initialValue,
1549
+ formItemId: formItemId,
1550
+ rules: rules,
1551
+ elementRef: elRef
1552
+ }),
1553
+ value = _useFormItemControl.value,
1554
+ _onChange = _useFormItemControl.onChange,
1555
+ errors = _useFormItemControl.errors,
1556
+ state = _useFormItemControl.state,
1557
+ onFocus = _useFormItemControl.onFocus,
1558
+ isDirty = _useFormItemControl.isDirty;
1559
+ // console.log("re-render", formName, name);
1560
+
1561
+ // useEffect(() => {
1562
+ // console.log({ value });
1563
+ // }, [value]);
1564
+
1565
+ return react.cloneElement(children, (_cloneElement = {}, _cloneElement[valuePropName] = value, _cloneElement.onChange = function onChange(e) {
1566
+ var val = e;
1567
+ if (getValueFromEvent && typeof getValueFromEvent === "function") {
1568
+ val = getValueFromEvent(e);
1569
+ } else {
1570
+ if (e && e.target) {
1571
+ val = e.target.value;
1572
+ }
1573
+ }
1574
+ _onChange(val);
1575
+ }, _cloneElement.isDirty = isDirty, _cloneElement.errors = errors, _cloneElement.onFocus = onFocus, _cloneElement.validateState = state, _cloneElement.ref = elRef, _cloneElement));
1576
+ }
1577
+
1578
+ function useFormListControl(_ref) {
1579
+ var name = _ref.name,
1580
+ form = _ref.form,
1581
+ initialValues = _ref.initialValues,
1582
+ formName = _ref.formName;
1583
+ var contextForm = useFormContext();
1584
+ var getFormValues = useFormStore(function (state) {
1585
+ return state.getFormValues;
1586
+ });
1587
+ var _useState = react.useState(),
1588
+ listFormInitValues = _useState[0],
1589
+ setListFormInitValues = _useState[1];
1590
+ var _useFormStore = useFormStore(shallow.useShallow(function (state) {
1591
+ return {
1592
+ cacheData: state.cacheData,
1593
+ clearCacheData: state.clearCacheData,
1594
+ setCacheData: state.setCacheData
1595
+ };
1596
+ })),
1597
+ clearCacheData = _useFormStore.clearCacheData,
1598
+ setCacheData = _useFormStore.setCacheData;
1599
+ var _useFormCleanUp = useFormCleanUp(shallow.useShallow(function (state) {
1600
+ return {
1601
+ setCleanUpStack: state.setCleanUpStack
1602
+ };
1603
+ })),
1604
+ setCleanUpStack = _useFormCleanUp.setCleanUpStack;
1605
+ var _useFormStore2 = useFormStore(shallow.useShallow(function (state) {
1606
+ // console.log(
1607
+ // "Shallow get initValue: ",
1608
+ // formName || form?.formName || contextForm?.formName,
1609
+ // name,
1610
+ // get(
1611
+ // state.initialValues,
1612
+ // `${formName || form?.formName || contextForm?.formName}.${name}`
1613
+ // )
1614
+ // );
1615
+ return {
1616
+ initValue: lodash.get(state.initialValues, (formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)) + "." + name),
1617
+ formState: lodash.get(state.formStates, formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)),
1618
+ setInitData: state.setInitData,
1619
+ getFormState: state.getFormState
1620
+ };
1621
+ })),
1622
+ internalInitValue = _useFormStore2.initValue,
1623
+ formState = _useFormStore2.formState;
1624
+ var _useState2 = react.useState([]),
1625
+ listFields = _useState2[0],
1626
+ setListFields = _useState2[1];
1627
+ var handleCacheListField = function handleCacheListField(prev, cur) {
1628
+ var currentFormValues = lodash.cloneDeep(getFormValues(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName)));
1629
+ var formDataBeforeChange = lodash.get(currentFormValues, name);
1630
+ var mapPrevWithKey = formDataBeforeChange.map(function (d, index) {
1631
+ var findPrev = prev.find(function (p, pIndex) {
1632
+ return pIndex === index;
1633
+ });
1634
+ if (!findPrev) return undefined;
1635
+ return {
1636
+ key: findPrev.key,
1637
+ value: d
1638
+ };
1639
+ }).filter(Boolean);
1640
+ var mapCurWithKey = cur.map(function (c) {
1641
+ return mapPrevWithKey.find(function (m) {
1642
+ return m.key === c.key;
1643
+ }) || c;
1644
+ });
1645
+ var getNewValueCache = mapCurWithKey.filter(Boolean).map(function (c) {
1646
+ return c.value;
1647
+ });
1648
+ var startRemoveIndex = formDataBeforeChange.length - getNewValueCache.length;
1649
+ // console.log("Before list fields: ", prev);
1650
+ // console.log("After list fields: ", cur);
1651
+ // console.log("Before change arr value: ", formDataBeforeChange);
1652
+ // console.log("Mapping prev value with prev fields: ", mapPrevWithKey);
1653
+ // console.log("Mapping Cur value with prev fields: ", mapCurWithKey);
1654
+ // console.log("After change arr value: ", getNewValueCache);
1655
+
1656
+ // Nếu số phần tử trước khi thay đổi mảng lớn hơn thì đẩy 2 phần tử còn lại vào clean up stack để clear
1657
+ if (startRemoveIndex > 0) {
1658
+ Array.from(Array(startRemoveIndex)).map(function (_, index) {
1659
+ return getNewValueCache.length + index;
1660
+ }).forEach(function (index) {
1661
+ // console.log("Data for cleanup arr element: ", {
1662
+ // formName: formName || form?.formName || contextForm?.formName,
1663
+ // name: `${name}.${index}`,
1664
+ // type: "array",
1665
+ // });
1666
+ setCleanUpStack({
1667
+ formName: formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName),
1668
+ name: name + "." + index,
1669
+ type: "array"
1670
+ });
1671
+ });
1672
+ }
1673
+
1674
+ // console.log({ getNewValueCache });
1675
+ setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, getNewValueCache);
1676
+ };
1677
+ var add = function add(index) {
1678
+ setListFields(function (prev) {
1679
+ if (index > prev.length) return prev;
1680
+ if (index < 0) return prev;
1681
+ if (index === prev.length) {
1682
+ var newName = name + "." + prev.length;
1683
+ var newKey = uuid.v4();
1684
+ var _result = [].concat(prev, [{
1685
+ name: newName,
1686
+ key: newKey
1687
+ }]);
1688
+ return _result;
1689
+ }
1690
+ var clonePrev = [].concat(prev);
1691
+ var result = clonePrev.reduce(function (prev, cur, curIndex) {
1692
+ var newKey = uuid.v4();
1693
+ if (curIndex === index) return [].concat(prev, [{
1694
+ key: newKey
1695
+ }, cur]);
1696
+ return [].concat(prev, [cur]);
1697
+ }, []).map(function (r, index) {
1698
+ return {
1699
+ name: name + "." + index,
1700
+ key: r.key
1701
+ };
1702
+ });
1703
+ handleCacheListField(prev, result);
1704
+ return result;
1705
+ });
1706
+ };
1707
+ var remove = function remove(_ref2) {
1708
+ var index = _ref2.index,
1709
+ key = _ref2.key;
1710
+ setListFields(function (prev) {
1711
+ if (!lodash.isNil(key)) {
1712
+ var clonePrev = [].concat(prev);
1713
+ var removedItem = clonePrev.filter(function (d) {
1714
+ return d.key !== key;
1715
+ });
1716
+ console.log("Remove data: ", removedItem);
1717
+ var result = removedItem.map(function (r, index) {
1718
+ return {
1719
+ name: name + "." + index,
1720
+ key: r.key
1721
+ };
1722
+ });
1723
+ handleCacheListField(prev, result);
1724
+ return result;
1725
+ }
1726
+ if (!lodash.isNil(index)) {
1727
+ if (index > prev.length - 1 || index < 0) return prev;
1728
+ var _clonePrev = [].concat(prev);
1729
+ _clonePrev.splice(index, 1);
1730
+ var _result2 = _clonePrev.map(function (r, index) {
1731
+ return {
1732
+ name: name + "." + index,
1733
+ key: r.key
1734
+ };
1735
+ });
1736
+ handleCacheListField(prev, _result2);
1737
+ return _result2;
1738
+ }
1739
+ return prev;
1740
+ });
1741
+ };
1742
+ var move = function move(_ref3) {
1743
+ var from = _ref3.from,
1744
+ fromKey = _ref3.fromKey,
1745
+ to = _ref3.to;
1746
+ setListFields(function (prev) {
1747
+ console.log("move list item: ", {
1748
+ from: from,
1749
+ to: to
1750
+ });
1751
+ if (from >= listFields.length || from < 0 || to >= listFields.length || to < 0 || from === to) return prev;
1752
+ console.log("Trigger move item: ");
1753
+ if (!lodash.isNil(fromKey)) {
1754
+ var findItemIndex = prev.findIndex(function (p) {
1755
+ return p.key === fromKey;
1756
+ });
1757
+ if (findItemIndex < 0) return prev;
1758
+ var moveItem = lodash.cloneDeep(listFields[findItemIndex]);
1759
+ var result = prev.reduce(function (prev, cur, curIndex) {
1760
+ if (findItemIndex === curIndex) return [].concat(prev);
1761
+ if (to === curIndex) {
1762
+ if (findItemIndex > to) return [].concat(prev, [moveItem, cur]);else return [].concat(prev, [cur, moveItem]);
1763
+ } else {
1764
+ return [].concat(prev, [cur]);
1765
+ }
1766
+ }, []).map(function (i, index) {
1767
+ return {
1768
+ key: i.key,
1769
+ name: name + "." + index
1770
+ };
1771
+ });
1772
+ handleCacheListField(prev, result);
1773
+ return result;
1774
+ } else if (!lodash.isNil(from)) {
1775
+ console.log("Trigger from index: ");
1776
+ var _moveItem = lodash.cloneDeep(listFields[from]);
1777
+ var _result3 = prev.reduce(function (prev, cur, curIndex) {
1778
+ if (from === curIndex) return [].concat(prev);
1779
+ if (to === curIndex) {
1780
+ if (from > to) return [].concat(prev, [_moveItem, cur]);else return [].concat(prev, [cur, _moveItem]);
1781
+ } else {
1782
+ return [].concat(prev, [cur]);
1783
+ }
1784
+ }, []).map(function (i, index) {
1785
+ return {
1786
+ key: i.key,
1787
+ name: name + "." + index
1788
+ };
1789
+ });
1790
+ console.log({
1791
+ result: _result3
1792
+ });
1793
+ handleCacheListField(prev, _result3);
1794
+ return _result3;
1795
+ }
1796
+ return prev;
1797
+ });
1798
+ };
1799
+ react.useEffect(function () {
1800
+ console.log("Trigger init", formState == null ? void 0 : formState.isInitied, internalInitValue);
1801
+ if (formState != null && formState.isInitied) {
1802
+ if (Array.isArray(listFormInitValues)) {
1803
+ var result = listFormInitValues.map(function (_, i) {
1804
+ var itemName = name + "." + i;
1805
+ var key = uuid.v4();
1806
+ return {
1807
+ key: key,
1808
+ name: itemName
1809
+ };
1810
+ });
1811
+ console.log("Get local init values: ", listFormInitValues, result);
1812
+ setListFields(result);
1813
+ setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, listFormInitValues);
1814
+ return;
1815
+ }
1816
+ if (Array.isArray(internalInitValue)) {
1817
+ var _result4 = internalInitValue.map(function (_, i) {
1818
+ var itemName = name + "." + i;
1819
+ var key = uuid.v4();
1820
+ return {
1821
+ key: key,
1822
+ name: itemName
1823
+ };
1824
+ });
1825
+
1826
+ // console.log("Get form init values: ", internalInitValue, result);
1827
+
1828
+ setListFields(_result4);
1829
+ setListFormInitValues(internalInitValue);
1830
+ return;
1831
+ }
1832
+
1833
+ // console.log({ initialValues });
1834
+
1835
+ // console.log("After init: ", { result: cloneDeep(result) });
1836
+
1837
+ if (Array.isArray(initialValues)) {
1838
+ var _result5 = initialValues.map(function (_, i) {
1839
+ var itemName = name + "." + i;
1840
+ var key = uuid.v4();
1841
+ return {
1842
+ key: key,
1843
+ name: itemName
1844
+ };
1845
+ });
1846
+ if (initialValues) {
1847
+ setCacheData(formName || (form == null ? void 0 : form.formName) || (contextForm == null ? void 0 : contextForm.formName), name, initialValues);
1848
+ }
1849
+ setListFields(_result5);
1850
+ setListFormInitValues(initialValues);
1851
+
1852
+ // console.log("Get form init values: ", internalInitValue, result);
1853
+
1854
+ return;
1855
+ }
1856
+ }
1857
+ }, [formState == null ? void 0 : formState.isInitied]);
1858
+
1859
+ // useEffect(() => {
1860
+ // console.log("Show form list init values: ", { internalInitValue });
1861
+ // }, [internalInitValue]);
1862
+
1863
+ // useEffect(() => {
1864
+ // console.log("List fields update: ", listFields);
1865
+ // }, [listFields]);
1866
+
1867
+ react.useEffect(function () {
1868
+ // console.log({ listFields });
1869
+ return function () {
1870
+ // console.log("Cleanup listfield change");
1871
+ clearCacheData();
1872
+ };
1873
+ }, [listFields]);
1874
+ return {
1875
+ listFields: listFields,
1876
+ move: move,
1877
+ add: add,
1878
+ remove: remove
1879
+ };
1880
+ }
1881
+
1882
+ var _excluded$3 = ["listFields"];
1883
+ var FormList = function FormList(_ref) {
1884
+ var name = _ref.name,
1885
+ initialValues = _ref.initialValues,
1886
+ form = _ref.form,
1887
+ formName = _ref.formName,
1888
+ children = _ref.children;
1889
+ var _useTestRrenderListCo = useFormListControl({
1890
+ name: name,
1891
+ initialValues: initialValues,
1892
+ form: form,
1893
+ formName: formName
1894
+ }),
1895
+ listFields = _useTestRrenderListCo.listFields,
1896
+ actions = _objectWithoutPropertiesLoose(_useTestRrenderListCo, _excluded$3);
1897
+ return children(listFields, _extends({}, actions));
1898
+ };
1899
+
1900
+ var _excluded$2 = ["onChange", "ref"];
1901
+ var Input = function Input(_ref) {
1902
+ var _onChange = _ref.onChange,
1903
+ ref = _ref.ref,
1904
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1905
+ return h("input", _extends({
1906
+ ref: ref,
1907
+ onChange: function onChange(e) {
1908
+ _onChange && _onChange(e.target.value);
1909
+ }
1910
+ }, props));
1911
+ };
1912
+
1913
+ var _excluded$1 = ["onChange", "isValidating"];
1914
+ var AntInput = function AntInput(_ref) {
1915
+ var _onChange = _ref.onChange,
1916
+ isValidating = _ref.isValidating,
1917
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1918
+ return h(antd.Input, _extends({}, props, {
1919
+ onChange: function onChange(e) {
1920
+ _onChange && _onChange(e.target.value);
1921
+ },
1922
+ disabled: isValidating
1923
+ }));
1924
+ };
1925
+
1926
+ var _excluded = ["children", "errors"];
1927
+ var InputWrapper = function InputWrapper(_ref) {
1928
+ var children = _ref.children,
1929
+ _ref$errors = _ref.errors,
1930
+ errors = _ref$errors === void 0 ? [] : _ref$errors,
1931
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
1932
+ return h("div", null, react.cloneElement(children, props), (props.isDirty || props.formState === "submitted") && (errors == null ? void 0 : errors.map(function (r) {
1933
+ return h("div", {
1934
+ key: props.name + "-" + props.formItemId + "-" + r.ruleName
1935
+ }, r == null ? void 0 : r.message);
1936
+ })));
1937
+ };
1938
+
1939
+ exports.AntInput = AntInput;
1940
+ exports.FormItem = FormItem;
1941
+ exports.FormList = FormList;
1942
+ exports.Input = Input;
1943
+ exports.InputWrapper = InputWrapper;
1944
+ exports["default"] = Form;
1945
+ exports.useForm = useForm;
1946
+ exports.useFormItemControl = useFormItemControl;
1947
+ exports.useFormListControl = useFormListControl;
1948
+ exports.useFormStateWatch = useFormStateWatch;
1949
+ exports.useSubmitDataWatch = useSubmitDataWatch;
1950
+ exports.useWatch = useWatch;
1951
+ //# sourceMappingURL=index.cjs.map