@tmagic/editor 1.8.0-beta.11 → 1.8.0-beta.13
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/es/Editor.vue_vue_type_script_setup_true_lang.js +7 -4
- package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +18 -123
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +60 -14
- package/dist/es/components/ScrollBar.js +0 -1
- package/dist/es/components/ViewForm.js +5 -0
- package/dist/es/components/ViewForm.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/es/editorProps.js +6 -1
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +15 -3
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +2 -17
- package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +7 -0
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +5 -17
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +29 -3
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +50 -88
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +2 -5
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +48 -23
- package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +28 -22
- package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/UISelect.js +0 -1
- package/dist/es/hooks/use-compare-form.js +119 -0
- package/dist/es/index.js +13 -8
- package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +21 -6
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +9 -6
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/layouts/history-list/composables.js +1 -1
- package/dist/es/layouts/history-list/useHistoryRevert.js +7 -3
- package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +44 -5
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +15 -8
- package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +15 -31
- package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/code-block/useContentMenu.js +18 -3
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/data-source/useContentMenu.js +18 -3
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/plugin.js +3 -1
- package/dist/es/services/codeBlock.js +1 -1
- package/dist/es/services/editor.js +104 -5
- package/dist/es/services/history.js +1 -1
- package/dist/es/services/props.js +3 -2
- package/dist/es/services/storage.js +2 -2
- package/dist/es/services/ui.js +3 -0
- package/dist/es/style.css +104 -55
- package/dist/es/utils/data-source/index.js +30 -11
- package/dist/es/utils/event.js +123 -0
- package/dist/es/utils/monaco-editor.js +22 -6
- package/dist/es/utils/props.js +119 -8
- package/dist/es/utils/type-match-rules.js +360 -0
- package/dist/style.css +104 -55
- package/dist/tmagic-editor.umd.cjs +16996 -15806
- package/package.json +8 -8
- package/src/Editor.vue +3 -1
- package/src/components/CodeBlockEditor.vue +3 -0
- package/src/components/CompareForm.vue +16 -196
- package/src/components/FloatingBox.vue +77 -8
- package/src/components/ScrollBar.vue +0 -67
- package/src/components/ViewForm.vue +55 -0
- package/src/editorProps.ts +13 -0
- package/src/fields/CodeSelect.vue +4 -1
- package/src/fields/CondOpSelect.vue +2 -24
- package/src/fields/DataSourceFields.vue +5 -0
- package/src/fields/DataSourceInput.vue +7 -25
- package/src/fields/DataSourceMocks.vue +3 -0
- package/src/fields/DisplayConds.vue +14 -0
- package/src/fields/EventSelect.vue +84 -129
- package/src/fields/StyleSetter/Index.vue +2 -8
- package/src/fields/StyleSetter/pro/Background.vue +94 -55
- package/src/fields/StyleSetter/pro/Border.vue +9 -11
- package/src/fields/StyleSetter/pro/Font.vue +66 -64
- package/src/fields/StyleSetter/pro/Layout.vue +140 -138
- package/src/fields/StyleSetter/pro/Position.vue +69 -67
- package/src/fields/StyleSetter/pro/Transform.vue +23 -25
- package/src/fields/UISelect.vue +0 -12
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-compare-form.ts +187 -0
- package/src/index.ts +2 -0
- package/src/layouts/CodeEditor.vue +32 -6
- package/src/layouts/Framework.vue +7 -6
- package/src/layouts/history-list/HistoryDiffDialog.vue +11 -1
- package/src/layouts/history-list/useHistoryRevert.ts +4 -0
- package/src/layouts/props-panel/FormPanel.vue +66 -5
- package/src/layouts/props-panel/PropsPanel.vue +20 -6
- package/src/layouts/props-panel/use-style-panel.ts +4 -3
- package/src/layouts/sidebar/Sidebar.vue +2 -0
- package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +4 -1
- package/src/layouts/sidebar/code-block/useContentMenu.ts +13 -1
- package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +3 -0
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +2 -2
- package/src/layouts/sidebar/data-source/useContentMenu.ts +13 -1
- package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
- package/src/layouts/sidebar/layer/LayerPanel.vue +4 -1
- package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
- package/src/plugin.ts +3 -1
- package/src/services/editor.ts +168 -3
- package/src/services/ui.ts +6 -0
- package/src/theme/event.scss +8 -0
- package/src/theme/floating-box.scss +9 -1
- package/src/theme/layer-node-content.scss +14 -0
- package/src/theme/scroll-bar.scss +64 -0
- package/src/theme/theme.scss +3 -0
- package/src/theme/ui-select.scss +9 -0
- package/src/type.ts +105 -2
- package/src/utils/data-source/index.ts +30 -12
- package/src/utils/event.ts +224 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/monaco-editor.ts +27 -0
- package/src/utils/props.ts +189 -2
- package/src/utils/type-match-rules.ts +678 -0
- package/types/index.d.ts +558 -213
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MContainer,
|
|
2
|
-
import { createBlock, defineComponent, openBlock, unref } from "vue";
|
|
1
|
+
import { MContainer, defineFormConfig } from "@tmagic/form";
|
|
2
|
+
import { Fragment, createBlock, createElementBlock, defineComponent, openBlock, renderList, unref } from "vue";
|
|
3
3
|
//#region packages/editor/src/fields/StyleSetter/pro/Position.vue?vue&type=script&setup=true&lang.ts
|
|
4
4
|
var Position_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
5
5
|
__name: "Position",
|
|
@@ -8,7 +8,8 @@ var Position_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
8
8
|
lastValues: {},
|
|
9
9
|
isCompare: { type: Boolean },
|
|
10
10
|
disabled: { type: Boolean },
|
|
11
|
-
size: {}
|
|
11
|
+
size: {},
|
|
12
|
+
prop: {}
|
|
12
13
|
},
|
|
13
14
|
emits: ["change", "addDiffCount"],
|
|
14
15
|
setup(__props, { emit: __emit }) {
|
|
@@ -21,7 +22,7 @@ var Position_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
21
22
|
fixed: "固定定位",
|
|
22
23
|
sticky: "粘性定位"
|
|
23
24
|
};
|
|
24
|
-
const
|
|
25
|
+
const formConfig = defineFormConfig([
|
|
25
26
|
{
|
|
26
27
|
name: "position",
|
|
27
28
|
text: "定位",
|
|
@@ -74,29 +75,34 @@ var Position_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
74
75
|
type: "data-source-field-select",
|
|
75
76
|
fieldConfig: { type: "text" }
|
|
76
77
|
}
|
|
77
|
-
]
|
|
78
|
+
]);
|
|
78
79
|
const change = (value, eventData) => {
|
|
79
80
|
emit("change", value, eventData);
|
|
80
81
|
};
|
|
81
82
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
82
83
|
return (_ctx, _cache) => {
|
|
83
|
-
return openBlock(),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
84
|
+
return openBlock(true), createElementBlock(Fragment, null, renderList(unref(formConfig), (item, index) => {
|
|
85
|
+
return openBlock(), createBlock(unref(MContainer), {
|
|
86
|
+
prop: __props.prop,
|
|
87
|
+
key: index,
|
|
88
|
+
config: item,
|
|
89
|
+
model: __props.values,
|
|
90
|
+
"last-values": __props.lastValues,
|
|
91
|
+
"is-compare": __props.isCompare,
|
|
92
|
+
size: __props.size,
|
|
93
|
+
disabled: __props.disabled,
|
|
94
|
+
onChange: change,
|
|
95
|
+
onAddDiffCount
|
|
96
|
+
}, null, 8, [
|
|
97
|
+
"prop",
|
|
98
|
+
"config",
|
|
99
|
+
"model",
|
|
100
|
+
"last-values",
|
|
101
|
+
"is-compare",
|
|
102
|
+
"size",
|
|
103
|
+
"disabled"
|
|
104
|
+
]);
|
|
105
|
+
}), 128);
|
|
100
106
|
};
|
|
101
107
|
}
|
|
102
108
|
});
|
|
@@ -8,12 +8,13 @@ var Transform_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
8
8
|
lastValues: {},
|
|
9
9
|
isCompare: { type: Boolean },
|
|
10
10
|
disabled: { type: Boolean },
|
|
11
|
-
size: {}
|
|
11
|
+
size: {},
|
|
12
|
+
prop: {}
|
|
12
13
|
},
|
|
13
14
|
emits: ["change", "addDiffCount"],
|
|
14
15
|
setup(__props, { emit: __emit }) {
|
|
15
16
|
const emit = __emit;
|
|
16
|
-
const config = defineFormItem({
|
|
17
|
+
const config = defineFormItem({
|
|
17
18
|
name: "transform",
|
|
18
19
|
items: [{
|
|
19
20
|
name: "rotate",
|
|
@@ -32,13 +33,14 @@ var Transform_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
32
33
|
dataSourceFieldType: ["string", "number"],
|
|
33
34
|
fieldConfig: { type: "text" }
|
|
34
35
|
}]
|
|
35
|
-
}
|
|
36
|
+
});
|
|
36
37
|
const change = (value, eventData) => {
|
|
37
38
|
emit("change", value, eventData);
|
|
38
39
|
};
|
|
39
40
|
const onAddDiffCount = () => emit("addDiffCount");
|
|
40
41
|
return (_ctx, _cache) => {
|
|
41
42
|
return openBlock(), createBlock(unref(MContainer), {
|
|
43
|
+
prop: __props.prop,
|
|
42
44
|
config: unref(config),
|
|
43
45
|
model: __props.values,
|
|
44
46
|
"last-values": __props.lastValues,
|
|
@@ -48,6 +50,7 @@ var Transform_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
48
50
|
onChange: change,
|
|
49
51
|
onAddDiffCount
|
|
50
52
|
}, null, 8, [
|
|
53
|
+
"prop",
|
|
51
54
|
"config",
|
|
52
55
|
"model",
|
|
53
56
|
"last-values",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import UISelect_vue_vue_type_script_setup_true_lang_default from "./UISelect.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
-
/* empty css */
|
|
3
2
|
//#region packages/editor/src/fields/UISelect.vue
|
|
4
3
|
var UISelect_default = UISelect_vue_vue_type_script_setup_true_lang_default;
|
|
5
4
|
//#endregion
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { getCodeBlockFormConfig } from "../utils/code-block.js";
|
|
2
|
+
import { removeStyleDisplayConfig } from "../utils/props.js";
|
|
3
|
+
import { computed, inject, provide, ref, useTemplateRef, watch, watchEffect } from "vue";
|
|
4
|
+
//#region packages/editor/src/hooks/use-compare-form.ts
|
|
5
|
+
/**
|
|
6
|
+
* CompareForm / ViewForm 共用逻辑:
|
|
7
|
+
* - 按 `category`(node / data-source / code-block) 加载 FormConfig(支持自定义 `loadConfig`);
|
|
8
|
+
* - 代码块 `content` 归一化为字符串;
|
|
9
|
+
* - 外层容器固定高度 + 内部滚动的 `wrapperStyle`;
|
|
10
|
+
* - 将 services / stage 注入 MForm.formState,保证 filterFunction 上下文一致。
|
|
11
|
+
*
|
|
12
|
+
* 两个组件的差异仅在于是否做新旧值对比,这部分逻辑保留在各自组件中。
|
|
13
|
+
*/
|
|
14
|
+
var useCompareForm = (props) => {
|
|
15
|
+
provide("services", props.services);
|
|
16
|
+
const config = ref([]);
|
|
17
|
+
/** vs-code 编辑器的 monaco 配置项,沿用 Editor 顶层 provide('codeOptions', ...) 的注入。 */
|
|
18
|
+
const codeOptions = inject("codeOptions", {});
|
|
19
|
+
/** 将代码块的 content 字段统一成字符串,便于在表单 / 对比中展示 */
|
|
20
|
+
const normalizeCodeBlockValue = (v) => {
|
|
21
|
+
if (!v) return {};
|
|
22
|
+
const next = { ...v };
|
|
23
|
+
if (next.content && typeof next.content !== "string") try {
|
|
24
|
+
next.content = next.content.toString();
|
|
25
|
+
} catch {
|
|
26
|
+
next.content = "";
|
|
27
|
+
}
|
|
28
|
+
return next;
|
|
29
|
+
};
|
|
30
|
+
const currentValues = computed(() => {
|
|
31
|
+
if (props.category === "code-block") return normalizeCodeBlockValue(props.value);
|
|
32
|
+
return props.value || {};
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* 外层包裹层的样式:当传入 `height` 时启用固定高度 + 内部滚动,
|
|
36
|
+
* 这样滚动条会出现在组件内部,避免父容器(如 Dialog)自身也产生滚动。
|
|
37
|
+
*/
|
|
38
|
+
const wrapperStyle = computed(() => {
|
|
39
|
+
if (!props.height) return void 0;
|
|
40
|
+
return {
|
|
41
|
+
height: props.height,
|
|
42
|
+
overflow: "auto"
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
const mergedExtendState = (state) => {
|
|
46
|
+
return (props.extendState ?? ((s) => s))(props.baseFormState || state);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* 内置的默认 FormConfig 加载逻辑:按 `category` 从对应 service / 工具取配置。
|
|
50
|
+
* 作为 ctx.defaultLoadConfig 透传给自定义 `loadConfig`,方便复用与二次加工。
|
|
51
|
+
*/
|
|
52
|
+
const defaultLoadConfig = async () => {
|
|
53
|
+
if (!props.services) return [];
|
|
54
|
+
switch (props.category) {
|
|
55
|
+
case "node":
|
|
56
|
+
if (!props.type) return [];
|
|
57
|
+
return removeStyleDisplayConfig(await props.services.propsService.getPropsConfig(props.type, { node: props.value }));
|
|
58
|
+
case "data-source": return props.services.dataSourceService.getFormConfig(props.type || "base").map((item) => "type" in item && item.type === "tab" ? {
|
|
59
|
+
...item,
|
|
60
|
+
active: "fields"
|
|
61
|
+
} : item);
|
|
62
|
+
case "code-block": return getCodeBlockFormConfig({
|
|
63
|
+
paramColConfig: props.services.codeBlockService.getParamsColConfig(),
|
|
64
|
+
isDataSource: () => Boolean(props.dataSourceType),
|
|
65
|
+
dataSourceType: () => props.dataSourceType,
|
|
66
|
+
codeOptions,
|
|
67
|
+
editable: false
|
|
68
|
+
});
|
|
69
|
+
default: return [];
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const loadConfig = async () => {
|
|
73
|
+
if (props.loadConfig) {
|
|
74
|
+
config.value = await props.loadConfig({
|
|
75
|
+
category: props.category,
|
|
76
|
+
type: props.type,
|
|
77
|
+
dataSourceType: props.dataSourceType,
|
|
78
|
+
defaultLoadConfig
|
|
79
|
+
});
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
config.value = await defaultLoadConfig();
|
|
83
|
+
};
|
|
84
|
+
watch([
|
|
85
|
+
() => props.category,
|
|
86
|
+
() => props.type,
|
|
87
|
+
() => props.dataSourceType,
|
|
88
|
+
() => props.loadConfig
|
|
89
|
+
], () => {
|
|
90
|
+
loadConfig();
|
|
91
|
+
}, { immediate: true });
|
|
92
|
+
const formRef = useTemplateRef("form");
|
|
93
|
+
/**
|
|
94
|
+
* 把 services / stage 注入 MForm 的 formState,避免 propsService 注入的表单配置中
|
|
95
|
+
* 形如 `display: ({ services }) => services.uiService.get(...)` 的 filterFunction
|
|
96
|
+
* 在执行时拿不到 `formState.services` 而报错。
|
|
97
|
+
*
|
|
98
|
+
* 与 props-panel/FormPanel.vue 中的注入方式保持一致:
|
|
99
|
+
* - services:整个 useServices() 返回的服务集合;
|
|
100
|
+
* - stage:当前 editorService.get('stage') 的最新值。
|
|
101
|
+
*/
|
|
102
|
+
watchEffect(() => {
|
|
103
|
+
if (formRef.value && props.services) {
|
|
104
|
+
formRef.value.formState.stage = props.services.editorService.get("stage");
|
|
105
|
+
formRef.value.formState.services = props.services;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
return {
|
|
109
|
+
config,
|
|
110
|
+
currentValues,
|
|
111
|
+
wrapperStyle,
|
|
112
|
+
mergedExtendState,
|
|
113
|
+
loadConfig,
|
|
114
|
+
formRef,
|
|
115
|
+
normalizeCodeBlockValue
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
//#endregion
|
|
119
|
+
export { useCompareForm };
|
package/dist/es/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { CODE_DRAFT_STORAGE_KEY, CodeDeleteErrorType, ColumnLayout, DragType, KeyBindingCommand, Keys, LayerOffset, Layout, SideItemKey, canUsePluginMethods } from "./type.js";
|
|
2
2
|
import { useCodeBlockEdit } from "./hooks/use-code-block-edit.js";
|
|
3
|
-
import { advancedTabConfig, arrayOptions, displayTabConfig, eqOptions, eventTabConfig, fillConfig, numberOptions, styleTabConfig } from "./utils/props.js";
|
|
4
|
-
import props_default from "./services/props.js";
|
|
5
3
|
import { getEditorConfig, setEditorConfig } from "./utils/config.js";
|
|
4
|
+
import { getCodeBlockFormConfig } from "./utils/code-block.js";
|
|
5
|
+
import { advancedTabConfig, arrayOptions, booleanOptions, displayTabConfig, eqOptions, eventTabConfig, fillConfig, getCondOpOptionsByFieldType, numberOptions, removeStyleDisplayConfig, styleTabConfig, validatePropsForm } from "./utils/props.js";
|
|
6
|
+
import { useCompareForm } from "./hooks/use-compare-form.js";
|
|
7
|
+
import props_default from "./services/props.js";
|
|
6
8
|
import { UndoRedo } from "./utils/undo-redo.js";
|
|
7
9
|
import { createStackStep, describeRevertStep, deserializeStacks, detectStackOpType, detectTargetId, detectTargetName, getLastPushedHistoryIds, getOrCreateStack, markStackSaved, mergeSteps, serializeStacks, undoFloor } from "./utils/history.js";
|
|
8
10
|
import { idbDelete, idbGet, idbSet, isIndexedDBSupported, openIndexedDB } from "./utils/indexed-db.js";
|
|
@@ -23,11 +25,15 @@ import { useFilter } from "./hooks/use-filter.js";
|
|
|
23
25
|
import { useGetSo } from "./hooks/use-getso.js";
|
|
24
26
|
import { useNextFloatBoxPosition } from "./hooks/use-next-float-box-position.js";
|
|
25
27
|
import { useNodeStatus } from "./hooks/use-node-status.js";
|
|
26
|
-
import { getCodeBlockFormConfig } from "./utils/code-block.js";
|
|
27
28
|
import { debug, error, info, log, warn } from "./utils/logger.js";
|
|
28
|
-
import { getCascaderOptionsFromFields, getDisplayField, getFieldType, getFormConfig, getFormValue } from "./utils/data-source/index.js";
|
|
29
|
+
import { getCascaderOptionsFromFields, getDisplayField, getFieldType, getFormConfig, getFormValue, resolveFieldByPath } from "./utils/data-source/index.js";
|
|
29
30
|
import { IdleTask } from "./utils/dep/idle-task.js";
|
|
30
31
|
import { ScrollViewer } from "./utils/scroll-viewer.js";
|
|
32
|
+
import codeBlock_default from "./services/codeBlock.js";
|
|
33
|
+
import dataSource_default from "./services/dataSource.js";
|
|
34
|
+
import { ALL_COND_OPS, editorTypeMatchRules } from "./utils/type-match-rules.js";
|
|
35
|
+
import events_default from "./services/events.js";
|
|
36
|
+
import { EVENT_NAME_VALUE_SEPARATOR, collectEventNameOptionValues, getCompActionAllowedValues, getCompActionOptions, getEventNameAllowedValues, getEventNameOptions, isEventNameCheckStrictly, normalizeCompActionValue } from "./utils/event.js";
|
|
31
37
|
import monaco_editor_default from "./utils/monaco-editor.js";
|
|
32
38
|
import Resizer_default from "./components/Resizer.js";
|
|
33
39
|
import SplitView_default from "./components/SplitView.js";
|
|
@@ -49,13 +55,11 @@ import CodeBlockList_default from "./layouts/sidebar/code-block/CodeBlockList.js
|
|
|
49
55
|
import CodeBlockListPanel_default from "./layouts/sidebar/code-block/CodeBlockListPanel.js";
|
|
50
56
|
import DataSourceAddButton_default from "./layouts/sidebar/data-source/DataSourceAddButton.js";
|
|
51
57
|
import DataSourceConfigPanel_default from "./layouts/sidebar/data-source/DataSourceConfigPanel.js";
|
|
58
|
+
import LayerNodeContent_default from "./layouts/sidebar/layer/LayerNodeContent.js";
|
|
52
59
|
import LayerPanel_default from "./layouts/sidebar/layer/LayerPanel.js";
|
|
53
60
|
import ComponentListPanel_default from "./layouts/sidebar/ComponentListPanel.js";
|
|
54
|
-
import codeBlock_default from "./services/codeBlock.js";
|
|
55
61
|
import componentList_default from "./services/componentList.js";
|
|
56
|
-
import dataSource_default from "./services/dataSource.js";
|
|
57
62
|
import dep_default from "./services/dep.js";
|
|
58
|
-
import events_default from "./services/events.js";
|
|
59
63
|
import keybinding_default from "./services/keybinding.js";
|
|
60
64
|
import stageOverlay_default from "./services/stageOverlay.js";
|
|
61
65
|
import Editor_default from "./Editor.js";
|
|
@@ -71,6 +75,7 @@ import Index_default from "./fields/DataSourceFieldSelect/Index.js";
|
|
|
71
75
|
import EventSelect_default from "./fields/EventSelect.js";
|
|
72
76
|
import KeyValue_default from "./fields/KeyValue.js";
|
|
73
77
|
import CompareForm_default from "./components/CompareForm.js";
|
|
78
|
+
import ViewForm_default from "./components/ViewForm.js";
|
|
74
79
|
import HistoryDiffDialog_default from "./layouts/history-list/HistoryDiffDialog.js";
|
|
75
80
|
import PageFragmentSelect_default from "./fields/PageFragmentSelect.js";
|
|
76
81
|
import DisplayConds_default from "./fields/DisplayConds.js";
|
|
@@ -87,4 +92,4 @@ export * from "@tmagic/table";
|
|
|
87
92
|
export * from "@tmagic/stage";
|
|
88
93
|
export * from "@tmagic/design";
|
|
89
94
|
export * from "@tmagic/utils";
|
|
90
|
-
export { CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, CompareForm_default as CompareForm, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, advancedTabConfig, arrayOptions, beforePaste, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectRelatedNodes, componentList_default as componentListService, confirmHistoryAction, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectStackOpType, detectTargetId, detectTargetName, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getCodeBlockFormConfig, getDefaultConfig, getDisplayField, getEditorConfig, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isIncludeDataSource, isIndexedDBSupported, keybinding_default as keybindingService, monaco_editor_default as loadMonaco, log, markStackSaved, mergeSteps, moveItemsInContainer, numberOptions, openIndexedDB, props_default as propsService, resolveSelectedNode, serializeConfig, serializeStacks, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, undoFloor, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useHistoryRevert, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
|
|
95
|
+
export { ALL_COND_OPS, CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, CompareForm_default as CompareForm, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EVENT_NAME_VALUE_SEPARATOR, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerNodeContent_default as LayerNodeContent, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, ViewForm_default as ViewForm, advancedTabConfig, arrayOptions, beforePaste, booleanOptions, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectEventNameOptionValues, collectRelatedNodes, componentList_default as componentListService, confirmHistoryAction, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectStackOpType, detectTargetId, detectTargetName, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, editorTypeMatchRules, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getCodeBlockFormConfig, getCompActionAllowedValues, getCompActionOptions, getCondOpOptionsByFieldType, getDefaultConfig, getDisplayField, getEditorConfig, getEventNameAllowedValues, getEventNameOptions, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isEventNameCheckStrictly, isIncludeDataSource, isIndexedDBSupported, keybinding_default as keybindingService, monaco_editor_default as loadMonaco, log, markStackSaved, mergeSteps, moveItemsInContainer, normalizeCompActionValue, numberOptions, openIndexedDB, props_default as propsService, removeStyleDisplayConfig, resolveFieldByPath, resolveSelectedNode, serializeConfig, serializeStacks, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, undoFloor, updateStatus, useCodeBlockEdit, useCompareForm, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useHistoryRevert, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, validatePropsForm, warn };
|
|
@@ -110,6 +110,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
110
110
|
const values = ref("");
|
|
111
111
|
const loading = ref(false);
|
|
112
112
|
const codeEditorEl = useTemplateRef("codeEditor");
|
|
113
|
+
let destroyed = false;
|
|
113
114
|
const resizeObserver = new globalThis.ResizeObserver(throttle(() => {
|
|
114
115
|
vsEditor?.layout();
|
|
115
116
|
vsDiffEditor?.layout();
|
|
@@ -150,11 +151,17 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
150
151
|
emit("save", props.parse ? parseCode(newValue, props.language) : newValue);
|
|
151
152
|
}
|
|
152
153
|
};
|
|
154
|
+
const isEditorElValid = () => !destroyed && !!codeEditorEl.value && codeEditorEl.value.isConnected;
|
|
153
155
|
const init = async () => {
|
|
154
|
-
if (!
|
|
155
|
-
if (codeEditorEl.value.clientHeight === 0)
|
|
156
|
+
if (!isEditorElValid()) return;
|
|
157
|
+
if (codeEditorEl.value.clientHeight === 0) {
|
|
158
|
+
await nextTick();
|
|
159
|
+
if (!isEditorElValid()) return;
|
|
160
|
+
}
|
|
156
161
|
cachedExtraHeight = null;
|
|
157
162
|
monaco = await monaco_editor_default();
|
|
163
|
+
if (!isEditorElValid()) return;
|
|
164
|
+
const editorEl = codeEditorEl.value;
|
|
158
165
|
const options = {
|
|
159
166
|
value: values.value,
|
|
160
167
|
language: props.language,
|
|
@@ -163,19 +170,26 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
163
170
|
...props.options
|
|
164
171
|
};
|
|
165
172
|
if (props.type === "diff") {
|
|
166
|
-
vsDiffEditor = await getEditorConfig("customCreateMonacoDiffEditor")(monaco,
|
|
173
|
+
vsDiffEditor = await getEditorConfig("customCreateMonacoDiffEditor")(monaco, editorEl, options);
|
|
167
174
|
vsDiffEditor.getModifiedEditor().onDidChangeModelContent(() => {
|
|
168
175
|
if (props.autosize) setAutoHeight(getEditorValue());
|
|
169
176
|
});
|
|
170
177
|
} else {
|
|
171
|
-
vsEditor = await getEditorConfig("customCreateMonacoEditor")(monaco,
|
|
178
|
+
vsEditor = await getEditorConfig("customCreateMonacoEditor")(monaco, editorEl, options);
|
|
172
179
|
vsEditor.onDidChangeModelContent(() => {
|
|
173
180
|
if (props.autosize) setAutoHeight(getEditorValue());
|
|
174
181
|
});
|
|
175
182
|
}
|
|
183
|
+
if (destroyed) {
|
|
184
|
+
vsEditor?.dispose();
|
|
185
|
+
vsDiffEditor?.dispose();
|
|
186
|
+
vsEditor = null;
|
|
187
|
+
vsDiffEditor = null;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
176
190
|
setEditorValue(props.initValues, props.modifiedValues);
|
|
177
191
|
emit("initd", vsEditor);
|
|
178
|
-
|
|
192
|
+
editorEl.addEventListener("keydown", handleKeyDown);
|
|
179
193
|
if (props.type !== "diff" && props.autoSave) vsEditor?.onDidBlurEditorWidget(() => {
|
|
180
194
|
const newValue = getEditorValue();
|
|
181
195
|
if (values.value !== newValue) {
|
|
@@ -183,7 +197,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
183
197
|
emit("save", props.parse ? parseCode(newValue, props.language) : newValue);
|
|
184
198
|
}
|
|
185
199
|
});
|
|
186
|
-
resizeObserver.observe(
|
|
200
|
+
resizeObserver.observe(editorEl);
|
|
187
201
|
};
|
|
188
202
|
watch(() => props.initValues, (v, preV) => {
|
|
189
203
|
if (v !== preV) setEditorValue(props.initValues, props.modifiedValues);
|
|
@@ -205,6 +219,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
205
219
|
loading.value = false;
|
|
206
220
|
});
|
|
207
221
|
onBeforeUnmount(() => {
|
|
222
|
+
destroyed = true;
|
|
208
223
|
resizeObserver.disconnect();
|
|
209
224
|
vsEditor?.dispose();
|
|
210
225
|
vsDiffEditor?.dispose();
|
|
@@ -33,6 +33,9 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
33
33
|
const pageLength = computed(() => editorService.get("pageLength") || 0);
|
|
34
34
|
const showSrc = computed(() => uiService.get("showSrc"));
|
|
35
35
|
const columnWidth = computed(() => uiService.get("columnWidth"));
|
|
36
|
+
const minLeftColumnWidth = computed(() => uiService.get("minLeftColumnWidth"));
|
|
37
|
+
const minCenterColumnWidth = computed(() => uiService.get("minCenterColumnWidth"));
|
|
38
|
+
const minRightColumnWidth = computed(() => uiService.get("minRightColumnWidth"));
|
|
36
39
|
watch(pageLength, () => {
|
|
37
40
|
splitViewRef.value?.updateWidth();
|
|
38
41
|
});
|
|
@@ -76,13 +79,13 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
76
79
|
renderSlot(_ctx.$slots, "header"),
|
|
77
80
|
renderSlot(_ctx.$slots, "nav"),
|
|
78
81
|
renderSlot(_ctx.$slots, "content-before"),
|
|
79
|
-
showSrc.value ? renderSlot(_ctx.$slots, "src-code", {
|
|
82
|
+
showSrc.value ? renderSlot(_ctx.$slots, "src-code", {}, () => [createVNode(CodeEditor_default, {
|
|
80
83
|
class: "m-editor-content",
|
|
81
84
|
"editor-custom-type": "m-editor-content",
|
|
82
85
|
"init-values": root.value,
|
|
83
86
|
options: unref(codeOptions),
|
|
84
87
|
onSave: saveCode
|
|
85
|
-
}, null, 8, ["init-values", "options"])]) : createCommentVNode("v-if", true),
|
|
88
|
+
}, null, 8, ["init-values", "options"])], void 0, 0) : createCommentVNode("v-if", true),
|
|
86
89
|
withDirectives(createVNode(SplitView_default, {
|
|
87
90
|
ref: "splitView",
|
|
88
91
|
class: "m-editor-content",
|
|
@@ -91,13 +94,13 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
91
94
|
"right-class": "m-editor-framework-right",
|
|
92
95
|
left: __props.hideSidebar ? void 0 : columnWidth.value.left,
|
|
93
96
|
right: columnWidth.value.right,
|
|
94
|
-
"min-left": __props.hideSidebar ? 0 :
|
|
95
|
-
"min-right":
|
|
96
|
-
"min-center":
|
|
97
|
+
"min-left": __props.hideSidebar ? 0 : minLeftColumnWidth.value,
|
|
98
|
+
"min-right": minRightColumnWidth.value,
|
|
99
|
+
"min-center": minCenterColumnWidth.value,
|
|
97
100
|
width: frameworkRect.value.width,
|
|
98
101
|
onChange: columnWidthChange
|
|
99
102
|
}, createSlots({
|
|
100
|
-
center: withCtx(() => [page.value ? renderSlot(_ctx.$slots, "workspace", {
|
|
103
|
+
center: withCtx(() => [page.value ? renderSlot(_ctx.$slots, "workspace", {}, void 0, void 0, 0) : renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(AddPageBox_default, { "disabled-page-fragment": __props.disabledPageFragment }, null, 8, ["disabled-page-fragment"])], void 0, 1), renderSlot(_ctx.$slots, "page-bar", {}, () => [createVNode(PageBar_default, {
|
|
101
104
|
"disabled-page-fragment": __props.disabledPageFragment,
|
|
102
105
|
"page-bar-sort-options": __props.pageBarSortOptions,
|
|
103
106
|
"filter-function": __props.pageFilterFunction
|
package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -28,6 +28,7 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
28
28
|
extendState: {},
|
|
29
29
|
loadConfig: {},
|
|
30
30
|
width: { default: "900px" },
|
|
31
|
+
size: {},
|
|
31
32
|
isConfirm: { type: Boolean },
|
|
32
33
|
onConfirm: {},
|
|
33
34
|
selfDiffFieldTypes: {},
|
|
@@ -258,6 +259,7 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
258
259
|
"load-config": __props.loadConfig,
|
|
259
260
|
"self-diff-field-types": __props.selfDiffFieldTypes,
|
|
260
261
|
services: props.services,
|
|
262
|
+
size: props.size,
|
|
261
263
|
height: "70vh"
|
|
262
264
|
}, null, 8, [
|
|
263
265
|
"category",
|
|
@@ -269,7 +271,8 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
|
|
|
269
271
|
"extend-state",
|
|
270
272
|
"load-config",
|
|
271
273
|
"self-diff-field-types",
|
|
272
|
-
"services"
|
|
274
|
+
"services",
|
|
275
|
+
"size"
|
|
273
276
|
])) : (openBlock(), createBlock(CodeEditor_default, {
|
|
274
277
|
key: 2,
|
|
275
278
|
type: "diff",
|
|
@@ -181,4 +181,4 @@ var confirmHistoryAction = async (message) => {
|
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
183
|
//#endregion
|
|
184
|
-
export { confirmHistoryAction, describePageGroup, describePageStep, describeStep, formatHistoryFullTime, formatHistoryTime, isHistoryGroupExpanded, isPageStepRevertable, isSingleDiffStepRevertable, opLabel, sourceLabel, toRowGroup };
|
|
184
|
+
export { confirmHistoryAction, describePageGroup, describePageStep, describeStep, formatHistoryFullTime, formatHistoryTime, groupOperator, groupSource, groupTimestamp, isHistoryGroupExpanded, isPageStepRevertable, isSingleDiffStepRevertable, opLabel, sourceLabel, toRowGroup };
|
|
@@ -48,6 +48,7 @@ var mountHistoryDiffDialog = async (options) => {
|
|
|
48
48
|
selfDiffFieldTypes: options.selfDiffFieldTypes,
|
|
49
49
|
compareFormState: options.compareFormState,
|
|
50
50
|
width: options.width,
|
|
51
|
+
size: options.size ?? options.services?.uiService?.get("propsPanelSize"),
|
|
51
52
|
onClose: options.onClose
|
|
52
53
|
});
|
|
53
54
|
if (options.appContext) Object.assign(app._context, options.appContext);
|
|
@@ -148,7 +149,8 @@ var useHistoryRevert = (options = {}, services) => {
|
|
|
148
149
|
extendState,
|
|
149
150
|
services,
|
|
150
151
|
...extra,
|
|
151
|
-
width: extra?.width ?? dialogWidth
|
|
152
|
+
width: extra?.width ?? dialogWidth,
|
|
153
|
+
size: extra?.size
|
|
152
154
|
});
|
|
153
155
|
return confirmRevert();
|
|
154
156
|
};
|
|
@@ -275,7 +277,8 @@ var useHistoryRevert = (options = {}, services) => {
|
|
|
275
277
|
if (!await runRevert(revertOptions.diffPayload ?? null, {
|
|
276
278
|
loadConfig: revertOptions.loadConfig,
|
|
277
279
|
selfDiffFieldTypes: revertOptions.selfDiffFieldTypes,
|
|
278
|
-
width: revertOptions.width
|
|
280
|
+
width: revertOptions.width,
|
|
281
|
+
size: revertOptions.size
|
|
279
282
|
})) return null;
|
|
280
283
|
return await revertOptions.revert();
|
|
281
284
|
};
|
|
@@ -289,7 +292,8 @@ var useHistoryRevert = (options = {}, services) => {
|
|
|
289
292
|
extendState,
|
|
290
293
|
services,
|
|
291
294
|
...extra,
|
|
292
|
-
width: extra?.width ?? dialogWidth
|
|
295
|
+
width: extra?.width ?? dialogWidth,
|
|
296
|
+
size: extra?.size
|
|
293
297
|
});
|
|
294
298
|
};
|
|
295
299
|
return {
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { validatePropsForm } from "../../utils/props.js";
|
|
1
2
|
import { useServices } from "../../hooks/use-services.js";
|
|
2
3
|
import { useEditorContentHeight } from "../../hooks/use-editor-content-height.js";
|
|
3
4
|
import Icon_default from "../../components/Icon.js";
|
|
4
5
|
import CodeEditor_default from "../CodeEditor.js";
|
|
6
|
+
import { ENABLE_PROPS_FORM_VALIDATE } from "../../editorProps.js";
|
|
5
7
|
import { MForm } from "@tmagic/form";
|
|
6
|
-
import { TMagicButton, TMagicScrollbar } from "@tmagic/design";
|
|
8
|
+
import { TMagicButton, TMagicScrollbar, tMagicMessage } from "@tmagic/design";
|
|
9
|
+
import { filterXSS } from "@tmagic/utils";
|
|
7
10
|
import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, inject, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderSlot, unref, useTemplateRef, watchEffect, withCtx } from "vue";
|
|
8
11
|
import { Document } from "@element-plus/icons-vue";
|
|
9
12
|
//#region packages/editor/src/layouts/props-panel/FormPanel.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -30,6 +33,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
30
33
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
31
34
|
const props = __props;
|
|
32
35
|
const emit = __emit;
|
|
36
|
+
const enablePropsFormValidate = inject(ENABLE_PROPS_FORM_VALIDATE, false);
|
|
33
37
|
const services = useServices();
|
|
34
38
|
const { editorService, uiService } = services;
|
|
35
39
|
const codeOptions = inject("codeOptions", {});
|
|
@@ -53,16 +57,50 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
53
57
|
});
|
|
54
58
|
const submit = async (v, eventData) => {
|
|
55
59
|
try {
|
|
56
|
-
|
|
60
|
+
const values = await configFormRef.value?.submitForm();
|
|
61
|
+
emit("submit", values, eventData);
|
|
57
62
|
} catch (e) {
|
|
58
|
-
emit("submit
|
|
63
|
+
if (enablePropsFormValidate) emit("submit", v, eventData, e);
|
|
64
|
+
else emit("submit-error", e);
|
|
59
65
|
}
|
|
60
66
|
};
|
|
61
67
|
const errorHandler = (e) => {
|
|
62
68
|
emit("form-error", e);
|
|
63
69
|
};
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
/**
|
|
71
|
+
* 将校验错误文案安全地转为用于弹窗展示的 HTML。
|
|
72
|
+
*
|
|
73
|
+
* 文案形如 `字段 -> 主文案\n\n建议`,多条以结构性 `<br>` 拼接。为在保留换行排版的同时
|
|
74
|
+
* 避免 `${value}`/字段名中可能夹带的 HTML 造成 XSS:先按结构性 `<br>` 拆分,对每段做 HTML
|
|
75
|
+
* 转义后再把段内换行 `\n` 替换为 `<br>`,最后用 `<br>` 拼回。
|
|
76
|
+
*/
|
|
77
|
+
const formatValidateErrorHtml = (error) => error.split(/<br\s*\/?>/i).map((segment) => filterXSS(segment).replaceAll("\n", "<br>")).join("<br>");
|
|
78
|
+
const saveCode = async (values) => {
|
|
79
|
+
const newValues = props.codeValueKey ? { [props.codeValueKey]: values } : values;
|
|
80
|
+
if (!enablePropsFormValidate) {
|
|
81
|
+
emit("submit", newValues);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const error = await validatePropsForm({
|
|
86
|
+
config: props.config,
|
|
87
|
+
values: newValues,
|
|
88
|
+
appContext: internalInstance?.appContext ?? null,
|
|
89
|
+
services,
|
|
90
|
+
stage: stage.value,
|
|
91
|
+
typeMatchValid: true,
|
|
92
|
+
extendState: props.extendState
|
|
93
|
+
});
|
|
94
|
+
if (error) tMagicMessage({
|
|
95
|
+
type: "error",
|
|
96
|
+
message: formatValidateErrorHtml(error),
|
|
97
|
+
dangerouslyUseHTMLString: true
|
|
98
|
+
});
|
|
99
|
+
emit("submit", newValues, void 0, error ? new Error(error) : void 0);
|
|
100
|
+
} catch (e) {
|
|
101
|
+
console.log("validateForm error", e);
|
|
102
|
+
emit("submit", newValues);
|
|
103
|
+
}
|
|
66
104
|
};
|
|
67
105
|
__expose({
|
|
68
106
|
configForm: configFormRef,
|
|
@@ -81,6 +119,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
81
119
|
size: propsPanelSize.value,
|
|
82
120
|
"init-values": __props.values,
|
|
83
121
|
config: __props.config,
|
|
122
|
+
"type-match-valid": true,
|
|
84
123
|
"extend-state": __props.extendState,
|
|
85
124
|
onChange: submit,
|
|
86
125
|
onError: errorHandler
|