@tmagic/form 1.7.14-beta.1 → 1.7.14-beta.3

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 (28) hide show
  1. package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +2 -2
  2. package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +5 -2
  3. package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +5 -2
  4. package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +5 -2
  5. package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +2 -2
  6. package/dist/es/containers/table-group-list/useAdd.js +1 -1
  7. package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +1 -1
  8. package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  9. package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +1 -1
  10. package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +1 -1
  11. package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +27 -9
  14. package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +2 -2
  16. package/dist/es/index.js +3 -2
  17. package/dist/es/submitForm.js +87 -0
  18. package/dist/es/utils/form.js +2 -2
  19. package/dist/tmagic-form.umd.cjs +178 -66
  20. package/package.json +5 -5
  21. package/src/FormBox.vue +3 -1
  22. package/src/FormDialog.vue +4 -1
  23. package/src/FormDrawer.vue +4 -1
  24. package/src/containers/table-group-list/useAdd.ts +1 -1
  25. package/src/fields/Select.vue +43 -8
  26. package/src/index.ts +1 -0
  27. package/src/submitForm.ts +161 -0
  28. package/types/index.d.ts +269 -211
@@ -1,10 +1,10 @@
1
- import { initValue } from "./utils/form.js";
2
1
  import { getConfig } from "./utils/config.js";
2
+ import { initValue } from "./utils/form.js";
3
3
  import Container_default from "./containers/Container.js";
4
4
  import { Fragment, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeStyle, openBlock, provide, reactive, ref, renderList, shallowRef, toRaw, unref, useTemplateRef, watch, watchEffect, withCtx } from "vue";
5
5
  import { cloneDeep, isEqual } from "lodash-es";
6
- import { setValueByKeyPath } from "@tmagic/utils";
7
6
  import { TMagicForm, tMagicMessage, tMagicMessageBox } from "@tmagic/design";
7
+ import { setValueByKeyPath } from "@tmagic/utils";
8
8
  //#region packages/form/src/Form.vue?vue&type=script&setup=true&lang.ts
9
9
  var Form_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
10
  name: "MForm",
@@ -18,7 +18,8 @@ var FormBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
18
18
  confirmText: { default: "确定" },
19
19
  inline: { type: Boolean },
20
20
  labelPosition: {},
21
- preventSubmitDefault: { type: Boolean }
21
+ preventSubmitDefault: { type: Boolean },
22
+ extendState: {}
22
23
  },
23
24
  emits: [
24
25
  "change",
@@ -80,6 +81,7 @@ var FormBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
80
81
  "label-position": __props.labelPosition,
81
82
  inline: __props.inline,
82
83
  "prevent-submit-default": __props.preventSubmitDefault,
84
+ "extend-state": __props.extendState,
83
85
  onChange: changeHandler
84
86
  }, null, 8, [
85
87
  "size",
@@ -90,7 +92,8 @@ var FormBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
90
92
  "label-width",
91
93
  "label-position",
92
94
  "inline",
93
- "prevent-submit-default"
95
+ "prevent-submit-default",
96
+ "extend-state"
94
97
  ]), renderSlot(_ctx.$slots, "default")]),
95
98
  _: 3
96
99
  })], 4), createElementVNode("div", {
@@ -40,7 +40,8 @@ var FormDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
40
40
  showCancel: {
41
41
  type: Boolean,
42
42
  default: true
43
- }
43
+ },
44
+ extendState: {}
44
45
  },
45
46
  emits: [
46
47
  "close",
@@ -190,6 +191,7 @@ var FormDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
190
191
  "label-position": __props.labelPosition,
191
192
  inline: __props.inline,
192
193
  "prevent-submit-default": __props.preventSubmitDefault,
194
+ "extend-state": __props.extendState,
193
195
  onChange: changeHandler
194
196
  }, null, 8, [
195
197
  "modelValue",
@@ -201,7 +203,8 @@ var FormDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
201
203
  "label-width",
202
204
  "label-position",
203
205
  "inline",
204
- "prevent-submit-default"
206
+ "prevent-submit-default",
207
+ "extend-state"
205
208
  ]), renderSlot(_ctx.$slots, "default")], 4)) : createCommentVNode("v-if", true)]),
206
209
  _: 3
207
210
  }, 8, [
@@ -24,7 +24,8 @@ var FormDrawer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
24
24
  inline: { type: Boolean },
25
25
  labelPosition: {},
26
26
  preventSubmitDefault: { type: Boolean },
27
- beforeClose: {}
27
+ beforeClose: {},
28
+ extendState: {}
28
29
  },
29
30
  emits: [
30
31
  "close",
@@ -148,6 +149,7 @@ var FormDrawer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
148
149
  "label-position": __props.labelPosition,
149
150
  inline: __props.inline,
150
151
  "prevent-submit-default": __props.preventSubmitDefault,
152
+ "extend-state": __props.extendState,
151
153
  onChange: changeHandler
152
154
  }, null, 8, [
153
155
  "size",
@@ -158,7 +160,8 @@ var FormDrawer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
158
160
  "label-width",
159
161
  "label-position",
160
162
  "inline",
161
- "prevent-submit-default"
163
+ "prevent-submit-default",
164
+ "extend-state"
162
165
  ]), renderSlot(_ctx.$slots, "default")], 512)) : createCommentVNode("v-if", true)]),
163
166
  _: 3
164
167
  }, 8, [
@@ -1,11 +1,11 @@
1
- import { createObjectProp, display, filterFunction, getRules } from "../utils/form.js";
2
1
  import Hidden_default from "../fields/Hidden.js";
3
2
  import { getField } from "../utils/config.js";
3
+ import { createObjectProp, display, filterFunction, getRules } from "../utils/form.js";
4
4
  import FormLabel_default from "./FormLabel.js";
5
5
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, openBlock, readonly, ref, renderList, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, unref, watch, watchEffect, withCtx } from "vue";
6
6
  import { isEqual } from "lodash-es";
7
- import { getValueByKeyPath } from "@tmagic/utils";
8
7
  import { TMagicButton, TMagicFormItem, TMagicIcon, TMagicTooltip } from "@tmagic/design";
8
+ import { getValueByKeyPath } from "@tmagic/utils";
9
9
  import { WarningFilled } from "@element-plus/icons-vue";
10
10
  //#region packages/form/src/containers/Container.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = ["data-tmagic-id", "data-tmagic-form-item-prop"];
@@ -7,7 +7,7 @@ var useAdd = (props, emit) => {
7
7
  const addable = computed(() => {
8
8
  const modelName = props.name || props.config.name || "";
9
9
  if (!modelName) return false;
10
- if (!props.model[modelName].length) return true;
10
+ if (!props.model[modelName]?.length) return true;
11
11
  if (typeof props.config.addable === "function") return props.config.addable(mForm, {
12
12
  model: props.model[modelName],
13
13
  formValue: mForm?.values,
@@ -1,6 +1,6 @@
1
- import { filterFunction } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
3
2
  import { getConfig } from "../utils/config.js";
3
+ import { filterFunction } from "../utils/form.js";
4
4
  import { computed, createBlock, defineComponent, inject, openBlock, ref, unref, watchEffect } from "vue";
5
5
  import { TMagicCascader } from "@tmagic/design";
6
6
  //#region packages/form/src/fields/Cascader.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { filterFunction } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { filterFunction } from "../utils/form.js";
3
3
  import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, inject, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
4
4
  import { TMagicCheckbox, TMagicCheckboxGroup } from "@tmagic/design";
5
5
  //#region packages/form/src/fields/CheckboxGroup.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { datetimeFormatter } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { datetimeFormatter } from "../utils/form.js";
3
3
  import { createBlock, defineComponent, openBlock, unref } from "vue";
4
4
  import { TMagicDatePicker } from "@tmagic/design";
5
5
  //#region packages/form/src/fields/Date.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { datetimeFormatter } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { datetimeFormatter } from "../utils/form.js";
3
3
  import { createBlock, defineComponent, openBlock, unref } from "vue";
4
4
  import { TMagicDatePicker } from "@tmagic/design";
5
5
  //#region packages/form/src/fields/DateTime.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { datetimeFormatter } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { datetimeFormatter } from "../utils/form.js";
3
3
  import { createBlock, defineComponent, onUnmounted, openBlock, ref, unref, watch } from "vue";
4
4
  import { TMagicDatePicker } from "@tmagic/design";
5
5
  //#region packages/form/src/fields/Daterange.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { filterFunction } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { filterFunction } from "../utils/form.js";
3
3
  import { computed, createCommentVNode, createElementBlock, defineComponent, inject, openBlock, toDisplayString } from "vue";
4
4
  //#region packages/form/src/fields/Display.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = { key: 0 };
@@ -1,8 +1,8 @@
1
1
  import { useAddField } from "../utils/useAddField.js";
2
2
  import { getConfig } from "../utils/config.js";
3
- import { Fragment, createBlock, createCommentVNode, createElementBlock, defineComponent, inject, mergeProps, nextTick, onBeforeMount, openBlock, ref, renderList, resolveDirective, resolveDynamicComponent, unref, watch, watchEffect, withCtx, withDirectives } from "vue";
4
- import { getValueByKeyPath } from "@tmagic/utils";
3
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, defineComponent, inject, mergeProps, nextTick, openBlock, ref, renderList, resolveDirective, resolveDynamicComponent, unref, watch, watchEffect, withCtx, withDirectives } from "vue";
5
4
  import { TMagicSelect, getDesignConfig } from "@tmagic/design";
5
+ import { getValueByKeyPath } from "@tmagic/utils";
6
6
  //#region packages/form/src/fields/Select.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = { key: 2 };
8
8
  var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -47,6 +47,18 @@ var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
47
47
  }
48
48
  return value === v;
49
49
  };
50
+ const hasOption = (value) => {
51
+ const { config } = props;
52
+ if (Array.isArray(value) && !value.length) return true;
53
+ if (config.group) {
54
+ const groups = options.value;
55
+ if (config.multiple && Array.isArray(value)) return value.every((v) => groups.some((group) => group.options.some((item) => equalValue(item.value, v))));
56
+ return groups.some((group) => group.options.some((item) => equalValue(item.value, value)));
57
+ }
58
+ const opts = options.value;
59
+ if (config.multiple && Array.isArray(value)) return value.every((v) => opts.some((item) => equalValue(item.value, v)));
60
+ return opts.some((item) => equalValue(item.value, value));
61
+ };
50
62
  const mapOptions = (data) => {
51
63
  const { option = {
52
64
  text: "text",
@@ -145,6 +157,7 @@ var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
145
157
  let options = [];
146
158
  let url = option.initUrl;
147
159
  if (!url) return getInitLocalOption();
160
+ if (typeof props.model[props.name] === "undefined" || props.model[props.name] === "" || props.model[props.name] === null) return [];
148
161
  if (typeof url === "function") url = await url(mForm, {
149
162
  model: props.model,
150
163
  formValue: mForm?.values
@@ -208,13 +221,18 @@ var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
208
221
  else if (Array.isArray(props.config.options)) watchEffect(() => {
209
222
  setOptions(props.config.options);
210
223
  });
211
- else if (props.config.option) onBeforeMount(() => {
212
- if (!props.model) return;
213
- const v = props.model[props.name];
214
- if (Array.isArray(v) ? v.length : typeof v !== "undefined") getInitOption().then((data) => {
215
- setOptions(data);
216
- });
217
- });
224
+ else if (props.config.option) {
225
+ const initOption = async () => {
226
+ if (!props.model) return;
227
+ const v = props.model[props.name];
228
+ if (Array.isArray(v) ? !v.length : typeof v === "undefined") return;
229
+ if (typeof v === "undefined" || hasOption(v)) return;
230
+ setOptions(await getInitOption());
231
+ };
232
+ watch(() => props.model?.[props.name], () => {
233
+ initOption();
234
+ }, { immediate: true });
235
+ }
218
236
  if (props.config.remote) {
219
237
  const unWatch = watch(() => tMagicSelect.value?.scrollbarWrap, (scrollbarWrap) => {
220
238
  if (!scrollbarWrap) return;
@@ -1,8 +1,8 @@
1
1
  import { useAddField } from "../utils/useAddField.js";
2
2
  import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, inject, openBlock, readonly, ref, shallowRef, toDisplayString, unref, watch, withCtx, withModifiers } from "vue";
3
3
  import { debounce } from "lodash-es";
4
- import { isNumber } from "@tmagic/utils";
5
4
  import { TMagicButton, TMagicInput } from "@tmagic/design";
5
+ import { isNumber } from "@tmagic/utils";
6
6
  import { createPopper } from "@popperjs/core";
7
7
  //#region packages/form/src/fields/Text.vue?vue&type=script&setup=true&lang.ts
8
8
  var _hoisted_1 = { class: "m-fields-text" };
@@ -1,8 +1,8 @@
1
- import { datetimeFormatter } from "../utils/form.js";
2
1
  import { useAddField } from "../utils/useAddField.js";
2
+ import { datetimeFormatter } from "../utils/form.js";
3
3
  import { createBlock, defineComponent, onUnmounted, openBlock, ref, unref, watch } from "vue";
4
- import dayjs from "dayjs";
5
4
  import { TMagicTimePicker } from "@tmagic/design";
5
+ import dayjs from "dayjs";
6
6
  //#region packages/form/src/fields/Timerange.vue?vue&type=script&setup=true&lang.ts
7
7
  var Timerange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
8
  name: "MFormTimeRange",
package/dist/es/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
- import { createObjectProp, createValues, datetimeFormatter, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange } from "./utils/form.js";
3
2
  import { useAddField } from "./utils/useAddField.js";
4
3
  import Hidden_default from "./fields/Hidden.js";
5
4
  import { deleteField, getField, registerField } from "./utils/config.js";
5
+ import { createObjectProp, createValues, datetimeFormatter, display, filterFunction, getDataByPage, getRules, initValue, sortArray, sortChange } from "./utils/form.js";
6
6
  import Container_default from "./containers/Container.js";
7
7
  import Form_default from "./Form.js";
8
+ import { submitForm } from "./submitForm.js";
8
9
  import FormDialog_default from "./FormDialog.js";
9
10
  import FormDrawer_default from "./FormDrawer.js";
10
11
  import FormBox_default from "./FormBox.js";
@@ -37,4 +38,4 @@ import plugin_default from "./plugin.js";
37
38
  export * from "@tmagic/form-schema";
38
39
  var createForm = (config) => config;
39
40
  //#endregion
40
- export { Cascader_default as MCascader, Checkbox_default as MCheckbox, CheckboxGroup_default as MCheckboxGroup, ColorPicker_default as MColorPicker, Container_default as MContainer, Date_default as MDate, DateTime_default as MDateTime, Daterange_default as MDaterange, Display_default as MDisplay, DynamicField_default as MDynamicField, Fieldset_default as MFieldset, FlexLayout_default as MFlexLayout, Form_default as MForm, FormBox_default as MFormBox, FormDialog_default as MFormDialog, FormDrawer_default as MFormDrawer, TableGroupList_default as MGroupList, Hidden_default as MHidden, Link_default as MLink, Number_default as MNumber, NumberRange_default as MNumberRange, Panel_default as MPanel, RadioGroup_default as MRadioGroup, Row_default as MRow, Select_default as MSelect, Switch_default as MSwitch, TableGroupList_default as MTable, TableGroupList_default as MTableGroupList, Tabs_default as MTabs, Text_default as MText, Textarea_default as MTextarea, Time_default as MTime, Timerange_default as MTimerange, createForm, createObjectProp, createValues, datetimeFormatter, plugin_default as default, deleteField as deleteFormField, display, filterFunction, getDataByPage, getField as getFormField, getRules, initValue, registerField as registerFormField, sortArray, sortChange, useAddField };
41
+ export { Cascader_default as MCascader, Checkbox_default as MCheckbox, CheckboxGroup_default as MCheckboxGroup, ColorPicker_default as MColorPicker, Container_default as MContainer, Date_default as MDate, DateTime_default as MDateTime, Daterange_default as MDaterange, Display_default as MDisplay, DynamicField_default as MDynamicField, Fieldset_default as MFieldset, FlexLayout_default as MFlexLayout, Form_default as MForm, FormBox_default as MFormBox, FormDialog_default as MFormDialog, FormDrawer_default as MFormDrawer, TableGroupList_default as MGroupList, Hidden_default as MHidden, Link_default as MLink, Number_default as MNumber, NumberRange_default as MNumberRange, Panel_default as MPanel, RadioGroup_default as MRadioGroup, Row_default as MRow, Select_default as MSelect, Switch_default as MSwitch, TableGroupList_default as MTable, TableGroupList_default as MTableGroupList, Tabs_default as MTabs, Text_default as MText, Textarea_default as MTextarea, Time_default as MTime, Timerange_default as MTimerange, createForm, createObjectProp, createValues, datetimeFormatter, plugin_default as default, deleteField as deleteFormField, display, filterFunction, getDataByPage, getField as getFormField, getRules, initValue, registerField as registerFormField, sortArray, sortChange, submitForm, useAddField };
@@ -0,0 +1,87 @@
1
+ import Form_default from "./Form.js";
2
+ import { createApp, defineComponent, h, nextTick, ref, watch } from "vue";
3
+ //#region packages/form/src/submitForm.ts
4
+ /**
5
+ * 以命令式方式调用 Form.vue 完成一次表单校验/提交。
6
+ *
7
+ * 类似 ElMessage 的用法:传入 props(包含 `config`/`initValues` 等),函数内部会临时挂载
8
+ * 一个不可见的 Form 组件实例,等待初始化完成后调用其 `submitForm` 方法,
9
+ * 校验通过则 resolve 表单值,校验失败则 reject 错误信息,最后自动卸载实例。
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { submitForm } from '@tmagic/form';
14
+ *
15
+ * try {
16
+ * const values = await submitForm({
17
+ * config: [...],
18
+ * initValues: { name: 'foo' },
19
+ * });
20
+ * console.log(values);
21
+ * } catch (e) {
22
+ * console.error(e);
23
+ * }
24
+ * ```
25
+ */
26
+ var submitForm = (options) => {
27
+ const { native, appContext, timeout = 1e4, ...formProps } = options;
28
+ return new Promise((resolve, reject) => {
29
+ const container = document.createElement("div");
30
+ container.style.display = "none";
31
+ document.body.appendChild(container);
32
+ let cleaned = false;
33
+ let timer = null;
34
+ const app = createApp(defineComponent({
35
+ name: "MFormSubmitWrapper",
36
+ setup() {
37
+ const formRef = ref(null);
38
+ const stop = watch(() => formRef.value?.initialized, async (initialized) => {
39
+ if (!initialized) return;
40
+ stop();
41
+ try {
42
+ await nextTick();
43
+ resolve(await formRef.value.submitForm(native));
44
+ } catch (err) {
45
+ reject(err);
46
+ } finally {
47
+ cleanup();
48
+ }
49
+ }, {
50
+ flush: "post",
51
+ immediate: true
52
+ });
53
+ return () => h(Form_default, {
54
+ ...formProps,
55
+ ref: formRef
56
+ });
57
+ }
58
+ }));
59
+ if (appContext) Object.assign(app._context, appContext);
60
+ const cleanup = () => {
61
+ if (cleaned) return;
62
+ cleaned = true;
63
+ if (timer) {
64
+ clearTimeout(timer);
65
+ timer = null;
66
+ }
67
+ try {
68
+ app.unmount();
69
+ } catch {}
70
+ container.parentNode?.removeChild(container);
71
+ };
72
+ if (timeout > 0) timer = setTimeout(() => {
73
+ if (!cleaned) {
74
+ reject(/* @__PURE__ */ new Error(`submitForm timeout after ${timeout}ms: form is not initialized.`));
75
+ cleanup();
76
+ }
77
+ }, timeout);
78
+ try {
79
+ app.mount(container);
80
+ } catch (err) {
81
+ reject(err);
82
+ cleanup();
83
+ }
84
+ });
85
+ };
86
+ //#endregion
87
+ export { submitForm };
@@ -1,8 +1,8 @@
1
1
  import { readonly } from "vue";
2
- import dayjs from "dayjs";
3
- import utc from "dayjs/plugin/utc";
4
2
  import { cloneDeep } from "lodash-es";
5
3
  import { getValueByKeyPath } from "@tmagic/utils";
4
+ import dayjs from "dayjs";
5
+ import utc from "dayjs/plugin/utc";
6
6
  //#region packages/form/src/utils/form.ts
7
7
  var TABLE_SELECT_TYPES = new Set(["table-select", "tableSelect"]);
8
8
  var isTableSelect = (type) => typeof type === "string" && TABLE_SELECT_TYPES.has(type);