@tmagic/editor 1.8.0-beta.2 → 1.8.0-beta.4
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 +9 -0
- package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +46 -28
- package/dist/es/editorProps.js +2 -0
- package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +2 -5
- package/dist/es/hooks/use-code-block-edit.js +6 -3
- package/dist/es/hooks/use-data-source-edit.js +5 -2
- package/dist/es/hooks/use-stage.js +8 -4
- package/dist/es/index.js +3 -1
- package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +2 -5
- package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +37 -14
- package/dist/es/layouts/history-list/BucketTab.js +5 -0
- package/dist/es/layouts/history-list/{CodeBlockTab.vue_vue_type_script_setup_true_lang.js → BucketTab.vue_vue_type_script_setup_true_lang.js} +30 -16
- package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +91 -60
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +82 -30
- package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +140 -66
- package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +15 -9
- package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +15 -6
- package/dist/es/layouts/history-list/composables.js +72 -2
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/code-block/useContentMenu.js +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/data-source/useContentMenu.js +1 -1
- package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/es/services/codeBlock.js +25 -10
- package/dist/es/services/dataSource.js +24 -10
- package/dist/es/services/editor.js +98 -46
- package/dist/es/services/history.js +7 -2
- package/dist/es/services/keybinding.js +3 -3
- package/dist/es/style.css +60 -16
- package/dist/es/utils/content-menu.js +17 -9
- package/dist/style.css +60 -16
- package/dist/tmagic-editor.umd.cjs +795 -443
- package/package.json +7 -7
- package/src/Editor.vue +8 -0
- package/src/components/CompareForm.vue +50 -19
- package/src/editorProps.ts +7 -0
- package/src/fields/CodeLink.vue +2 -5
- package/src/hooks/use-code-block-edit.ts +4 -3
- package/src/hooks/use-data-source-edit.ts +2 -2
- package/src/hooks/use-stage.ts +4 -3
- package/src/index.ts +2 -0
- package/src/layouts/CodeEditor.vue +2 -5
- package/src/layouts/NavMenu.vue +1 -1
- package/src/layouts/history-list/Bucket.vue +58 -29
- package/src/layouts/history-list/BucketTab.vue +80 -0
- package/src/layouts/history-list/GroupRow.vue +110 -58
- package/src/layouts/history-list/HistoryDiffDialog.vue +53 -33
- package/src/layouts/history-list/HistoryListPanel.vue +165 -52
- package/src/layouts/history-list/InitialRow.vue +17 -6
- package/src/layouts/history-list/PageTab.vue +25 -7
- package/src/layouts/history-list/composables.ts +92 -1
- package/src/layouts/props-panel/PropsPanel.vue +5 -1
- package/src/layouts/sidebar/ComponentListPanel.vue +9 -5
- package/src/layouts/sidebar/code-block/CodeBlockList.vue +5 -5
- package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +1 -1
- package/src/layouts/sidebar/code-block/useContentMenu.ts +1 -1
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +1 -1
- package/src/layouts/sidebar/data-source/useContentMenu.ts +1 -1
- package/src/layouts/sidebar/layer/LayerMenu.vue +19 -11
- package/src/layouts/sidebar/layer/LayerNodeTool.vue +7 -4
- package/src/layouts/workspace/viewer/Stage.vue +1 -1
- package/src/layouts/workspace/viewer/ViewerMenu.vue +8 -8
- package/src/services/codeBlock.ts +33 -9
- package/src/services/dataSource.ts +30 -8
- package/src/services/editor.ts +111 -34
- package/src/services/history.ts +10 -0
- package/src/services/keybinding.ts +3 -3
- package/src/theme/history-list-panel.scss +67 -14
- package/src/theme/props-panel.scss +3 -3
- package/src/type.ts +146 -0
- package/src/utils/content-menu.ts +18 -9
- package/types/index.d.ts +387 -156
- package/dist/es/layouts/history-list/CodeBlockTab.js +0 -5
- package/dist/es/layouts/history-list/DataSourceTab.js +0 -5
- package/dist/es/layouts/history-list/DataSourceTab.vue_vue_type_script_setup_true_lang.js +0 -62
- package/src/layouts/history-list/CodeBlockTab.vue +0 -61
- package/src/layouts/history-list/DataSourceTab.vue +0 -61
|
@@ -54,6 +54,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
54
54
|
disabledMultiSelect: { type: Boolean },
|
|
55
55
|
alwaysMultiSelect: { type: Boolean },
|
|
56
56
|
disabledPageFragment: { type: Boolean },
|
|
57
|
+
disabledFlashTip: { type: Boolean },
|
|
57
58
|
disabledStageOverlay: { type: Boolean },
|
|
58
59
|
disabledShowSrc: { type: Boolean },
|
|
59
60
|
disabledDataSource: { type: Boolean },
|
|
@@ -70,6 +71,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
70
71
|
beforeDblclick: { type: Function },
|
|
71
72
|
beforeLayerNodeDblclick: { type: Function },
|
|
72
73
|
extendFormState: { type: Function },
|
|
74
|
+
historyListExtraTabs: {},
|
|
73
75
|
pageBarSortOptions: {},
|
|
74
76
|
pageFilterFunction: { type: Function }
|
|
75
77
|
}, defaultEditorProps),
|
|
@@ -119,6 +121,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
119
121
|
guidesOptions: props.guidesOptions,
|
|
120
122
|
disabledMultiSelect: props.disabledMultiSelect,
|
|
121
123
|
alwaysMultiSelect: props.alwaysMultiSelect,
|
|
124
|
+
disabledFlashTip: props.disabledFlashTip,
|
|
122
125
|
beforeDblclick: props.beforeDblclick
|
|
123
126
|
};
|
|
124
127
|
stageOverlay_default.set("stageOptions", stageOptions);
|
|
@@ -131,6 +134,12 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
131
134
|
* 与 PropsPanel 通过 `:extend-state` 显式传入的方式保持等价。
|
|
132
135
|
*/
|
|
133
136
|
provide("extendFormState", props.extendFormState);
|
|
137
|
+
/**
|
|
138
|
+
* 把历史记录面板的自定义扩展 tab 提供给深层的 HistoryListPanel(它挂在 NavMenu 中,
|
|
139
|
+
* 以 markRaw component 形式渲染,无法直接通过 props 透传)。业务方可借此在历史记录
|
|
140
|
+
* 面板内追加自定义模块的历史 tab。
|
|
141
|
+
*/
|
|
142
|
+
provide("historyListExtraTabs", props.historyListExtraTabs);
|
|
134
143
|
provide("eventBus", new EventEmitter());
|
|
135
144
|
const propsPanelMountedHandler = (e) => {
|
|
136
145
|
emit("props-panel-mounted", e);
|
|
@@ -16,15 +16,10 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
16
16
|
dataSourceType: {},
|
|
17
17
|
labelWidth: { default: "120px" },
|
|
18
18
|
height: {},
|
|
19
|
-
extendState: {}
|
|
19
|
+
extendState: {},
|
|
20
|
+
loadConfig: {}
|
|
20
21
|
},
|
|
21
22
|
setup(__props, { expose: __expose }) {
|
|
22
|
-
/**
|
|
23
|
-
* 对比类型:
|
|
24
|
-
* - node: 节点组件,按 `type` 从 propsService 获取属性表单配置
|
|
25
|
-
* - data-source: 数据源,按 `type`(base/http/...) 从 dataSourceService 获取数据源表单配置
|
|
26
|
-
* - code-block: 数据源代码块,使用内置的代码块表单配置
|
|
27
|
-
*/
|
|
28
23
|
const props = __props;
|
|
29
24
|
const { propsService, dataSourceService, codeBlockService, editorService } = useServices();
|
|
30
25
|
const services = useServices();
|
|
@@ -84,34 +79,57 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
84
79
|
}
|
|
85
80
|
return !isEqual(curValue, lastValue);
|
|
86
81
|
};
|
|
87
|
-
const
|
|
82
|
+
const removeStyleDisplayConfig = (formConfig) => formConfig.map((item) => {
|
|
83
|
+
if (!("type" in item)) return item;
|
|
84
|
+
if (item?.type !== "tab" || !Array.isArray(item.items)) return item;
|
|
85
|
+
return {
|
|
86
|
+
...item,
|
|
87
|
+
items: item.items.map((tabPane) => {
|
|
88
|
+
if (tabPane?.title !== "样式" || !Array.isArray(tabPane.items)) return tabPane;
|
|
89
|
+
return {
|
|
90
|
+
...tabPane,
|
|
91
|
+
display: true
|
|
92
|
+
};
|
|
93
|
+
})
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* 内置的默认 FormConfig 加载逻辑:按 `category` 从对应 service / 工具取配置。
|
|
98
|
+
* 作为 ctx.defaultLoadConfig 透传给自定义 `loadConfig`,方便复用与二次加工。
|
|
99
|
+
*/
|
|
100
|
+
const defaultLoadConfig = async () => {
|
|
88
101
|
switch (props.category) {
|
|
89
102
|
case "node":
|
|
90
|
-
if (!props.type)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
if (!props.type) return [];
|
|
104
|
+
return removeStyleDisplayConfig(await propsService.getPropsConfig(props.type));
|
|
105
|
+
case "data-source": return dataSourceService.getFormConfig(props.type || "base");
|
|
106
|
+
case "code-block": return getCodeBlockFormConfig({
|
|
107
|
+
paramColConfig: codeBlockService.getParamsColConfig(),
|
|
108
|
+
isDataSource: () => Boolean(props.dataSourceType),
|
|
109
|
+
dataSourceType: () => props.dataSourceType,
|
|
110
|
+
codeOptions,
|
|
111
|
+
editable: false
|
|
112
|
+
});
|
|
113
|
+
default: return [];
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const loadConfig = async () => {
|
|
117
|
+
if (props.loadConfig) {
|
|
118
|
+
config.value = await props.loadConfig({
|
|
119
|
+
category: props.category,
|
|
120
|
+
type: props.type,
|
|
121
|
+
dataSourceType: props.dataSourceType,
|
|
122
|
+
defaultLoadConfig
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
109
125
|
}
|
|
126
|
+
config.value = await defaultLoadConfig();
|
|
110
127
|
};
|
|
111
128
|
watch([
|
|
112
129
|
() => props.category,
|
|
113
130
|
() => props.type,
|
|
114
|
-
() => props.dataSourceType
|
|
131
|
+
() => props.dataSourceType,
|
|
132
|
+
() => props.loadConfig
|
|
115
133
|
], () => {
|
|
116
134
|
loadConfig();
|
|
117
135
|
}, { immediate: true });
|
package/dist/es/editorProps.js
CHANGED
|
@@ -6,6 +6,7 @@ var defaultEditorProps = {
|
|
|
6
6
|
disabledMultiSelect: false,
|
|
7
7
|
alwaysMultiSelect: false,
|
|
8
8
|
disabledPageFragment: false,
|
|
9
|
+
disabledFlashTip: false,
|
|
9
10
|
disabledStageOverlay: false,
|
|
10
11
|
containerHighlightClassName: CONTAINER_HIGHLIGHT_CLASS_NAME,
|
|
11
12
|
containerHighlightDuration: 800,
|
|
@@ -15,6 +16,7 @@ var defaultEditorProps = {
|
|
|
15
16
|
disabledCodeBlock: false,
|
|
16
17
|
componentGroupList: () => [],
|
|
17
18
|
datasourceList: () => [],
|
|
19
|
+
historyListExtraTabs: () => [],
|
|
18
20
|
menu: () => ({
|
|
19
21
|
left: [],
|
|
20
22
|
right: []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getEditorConfig } from "../utils/config.js";
|
|
2
|
+
import { serializeConfig } from "../utils/editor.js";
|
|
2
3
|
import { computed, createBlock, defineComponent, openBlock, reactive, resolveComponent, watch } from "vue";
|
|
3
|
-
import serialize from "serialize-javascript";
|
|
4
4
|
//#region packages/editor/src/fields/CodeLink.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var CodeLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
6
|
name: "MFieldsCodeLink",
|
|
@@ -39,10 +39,7 @@ var CodeLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
|
|
|
39
39
|
});
|
|
40
40
|
const modelValue = reactive({ form: { [props.name]: "" } });
|
|
41
41
|
watch(() => props.model[props.name], (value) => {
|
|
42
|
-
modelValue.form = { [props.name]:
|
|
43
|
-
space: 2,
|
|
44
|
-
unsafe: true
|
|
45
|
-
}).replace(/"(\w+)":\s/g, "$1: ") };
|
|
42
|
+
modelValue.form = { [props.name]: serializeConfig(value) };
|
|
46
43
|
}, { immediate: true });
|
|
47
44
|
const changeHandler = (v) => {
|
|
48
45
|
if (!props.name || !props.model) return;
|
|
@@ -33,12 +33,15 @@ var useCodeBlockEdit = (codeBlockService) => {
|
|
|
33
33
|
await nextTick();
|
|
34
34
|
codeBlockEditorRef.value?.show();
|
|
35
35
|
};
|
|
36
|
-
const deleteCode = async (key) => {
|
|
37
|
-
codeBlockService.deleteCodeDslByIds([key]);
|
|
36
|
+
const deleteCode = async (key, { historySource } = {}) => {
|
|
37
|
+
codeBlockService.deleteCodeDslByIds([key], { historySource });
|
|
38
38
|
};
|
|
39
39
|
const submitCodeBlockHandler = async (values, eventData) => {
|
|
40
40
|
if (!codeId.value) return;
|
|
41
|
-
await codeBlockService.setCodeDslById(codeId.value, values, {
|
|
41
|
+
await codeBlockService.setCodeDslById(codeId.value, values, {
|
|
42
|
+
changeRecords: eventData?.changeRecords,
|
|
43
|
+
historySource: "props"
|
|
44
|
+
});
|
|
42
45
|
codeBlockEditorRef.value?.hide();
|
|
43
46
|
};
|
|
44
47
|
return {
|
|
@@ -12,8 +12,11 @@ var useDataSourceEdit = (dataSourceService) => {
|
|
|
12
12
|
editDialog.value.show();
|
|
13
13
|
};
|
|
14
14
|
const submitDataSourceHandler = (value, eventData) => {
|
|
15
|
-
if (value.id) dataSourceService.update(value, {
|
|
16
|
-
|
|
15
|
+
if (value.id) dataSourceService.update(value, {
|
|
16
|
+
changeRecords: eventData.changeRecords,
|
|
17
|
+
historySource: "props"
|
|
18
|
+
});
|
|
19
|
+
else dataSourceService.add(value, { historySource: "props" });
|
|
17
20
|
editDialog.value?.hide();
|
|
18
21
|
};
|
|
19
22
|
return {
|
|
@@ -38,7 +38,8 @@ var useStage = (stageOptions) => {
|
|
|
38
38
|
guidesOptions: stageOptions.guidesOptions,
|
|
39
39
|
disabledMultiSelect: stageOptions.disabledMultiSelect,
|
|
40
40
|
alwaysMultiSelect: stageOptions.alwaysMultiSelect,
|
|
41
|
-
disabledRule: stageOptions.disabledRule
|
|
41
|
+
disabledRule: stageOptions.disabledRule,
|
|
42
|
+
disabledFlashTip: stageOptions.disabledFlashTip
|
|
42
43
|
});
|
|
43
44
|
watch(() => editor_default.get("disabledMultiSelect"), (disabledMultiSelect) => {
|
|
44
45
|
if (disabledMultiSelect) stage.disableMultiSelect();
|
|
@@ -95,14 +96,17 @@ var useStage = (stageOptions) => {
|
|
|
95
96
|
changeRecordList.push(buildChangeRecords(style, "style"));
|
|
96
97
|
});
|
|
97
98
|
if (configs.length === 0) return;
|
|
98
|
-
editor_default.update(configs, {
|
|
99
|
+
editor_default.update(configs, {
|
|
100
|
+
changeRecordList,
|
|
101
|
+
historySource: "stage"
|
|
102
|
+
});
|
|
99
103
|
});
|
|
100
104
|
stage.on("sort", (ev) => {
|
|
101
|
-
editor_default.sort(ev.src, ev.dist);
|
|
105
|
+
editor_default.sort(ev.src, ev.dist, { historySource: "stage" });
|
|
102
106
|
});
|
|
103
107
|
stage.on("remove", (ev) => {
|
|
104
108
|
const nodes = ev.data.map(({ el }) => editor_default.getNodeById(getIdFromEl()(el) || ""));
|
|
105
|
-
editor_default.remove(nodes.filter((node) => Boolean(node)));
|
|
109
|
+
editor_default.remove(nodes.filter((node) => Boolean(node)), { historySource: "stage" });
|
|
106
110
|
});
|
|
107
111
|
stage.on("select-parent", () => {
|
|
108
112
|
const parent = editor_default.get("parent");
|
package/dist/es/index.js
CHANGED
|
@@ -32,7 +32,9 @@ import SplitView_default from "./components/SplitView.js";
|
|
|
32
32
|
import Icon_default from "./components/Icon.js";
|
|
33
33
|
import ToolButton_default from "./components/ToolButton.js";
|
|
34
34
|
import CodeEditor_default from "./layouts/CodeEditor.js";
|
|
35
|
+
import Bucket_default from "./layouts/history-list/Bucket.js";
|
|
35
36
|
import CompareForm_default from "./components/CompareForm.js";
|
|
37
|
+
import HistoryDiffDialog_default from "./layouts/history-list/HistoryDiffDialog.js";
|
|
36
38
|
import FormPanel_default from "./layouts/props-panel/FormPanel.js";
|
|
37
39
|
import PropsPanel_default from "./layouts/props-panel/PropsPanel.js";
|
|
38
40
|
import FloatingBox_default from "./components/FloatingBox.js";
|
|
@@ -78,4 +80,4 @@ export * from "@tmagic/table";
|
|
|
78
80
|
export * from "@tmagic/stage";
|
|
79
81
|
export * from "@tmagic/design";
|
|
80
82
|
export * from "@tmagic/utils";
|
|
81
|
-
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, 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, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, designPlugin, 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, getNodeIndex, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, info, isIncludeDataSource, monaco_editor_default as loadMonaco, log, moveItemsInContainer, numberOptions, props_default as propsService, resolveSelectedNode, serializeConfig, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
|
|
83
|
+
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, 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, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, designPlugin, 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, getNodeIndex, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, info, isIncludeDataSource, monaco_editor_default as loadMonaco, log, moveItemsInContainer, numberOptions, props_default as propsService, resolveSelectedNode, serializeConfig, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getEditorConfig } from "../utils/config.js";
|
|
2
|
+
import { serializeConfig } from "../utils/editor.js";
|
|
2
3
|
import monaco_editor_default from "../utils/monaco-editor.js";
|
|
3
4
|
import Icon_default from "../components/Icon.js";
|
|
4
5
|
import { TMagicButton } from "@tmagic/design";
|
|
5
6
|
import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, ref, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
6
7
|
import { throttle } from "lodash-es";
|
|
7
|
-
import serialize from "serialize-javascript";
|
|
8
8
|
import { FullScreen } from "@element-plus/icons-vue";
|
|
9
9
|
//#region packages/editor/src/layouts/CodeEditor.vue?vue&type=script&setup=true&lang.ts
|
|
10
10
|
var _hoisted_1 = { class: "magic-code-editor" };
|
|
@@ -94,10 +94,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
94
94
|
const toString = (v, language) => {
|
|
95
95
|
let value;
|
|
96
96
|
if (typeof v !== "string") if (language === "json") value = JSON.stringify(v, null, 2);
|
|
97
|
-
else value =
|
|
98
|
-
space: 2,
|
|
99
|
-
unsafe: true
|
|
100
|
-
}).replace(/"(\w+)":\s/g, "$1: ");
|
|
97
|
+
else value = serializeConfig(v);
|
|
101
98
|
else value = v;
|
|
102
99
|
if (language === "javascript" && value.startsWith("{") && value.endsWith("}")) value = `(${value})`;
|
|
103
100
|
return value;
|
|
@@ -45,7 +45,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
45
45
|
disabled: () => editorService.get("node")?.type === NodeType.PAGE,
|
|
46
46
|
handler: () => {
|
|
47
47
|
const node = editorService.get("node");
|
|
48
|
-
node && editorService.remove(node);
|
|
48
|
+
node && editorService.remove(node, { historySource: "toolbar" });
|
|
49
49
|
}
|
|
50
50
|
});
|
|
51
51
|
break;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { formatHistoryFullTime, formatHistoryTime, groupSource, groupTimestamp } from "./composables.js";
|
|
1
2
|
import GroupRow_default from "./GroupRow.js";
|
|
2
3
|
import InitialRow_default from "./InitialRow.js";
|
|
3
|
-
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode,
|
|
4
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, renderList, toDisplayString, unref } from "vue";
|
|
4
5
|
//#region packages/editor/src/layouts/history-list/Bucket.vue?vue&type=script&setup=true&lang.ts
|
|
5
6
|
var _hoisted_1 = { class: "m-editor-history-list-bucket" };
|
|
6
7
|
var _hoisted_2 = { class: "m-editor-history-list-bucket-title" };
|
|
@@ -13,11 +14,20 @@ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
13
14
|
title: {},
|
|
14
15
|
bucketId: {},
|
|
15
16
|
prefix: {},
|
|
17
|
+
showInitial: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: true
|
|
20
|
+
},
|
|
16
21
|
groups: {},
|
|
17
|
-
describeGroup: {
|
|
18
|
-
describeStep: {
|
|
19
|
-
isStepDiffable: {
|
|
20
|
-
|
|
22
|
+
describeGroup: {},
|
|
23
|
+
describeStep: {},
|
|
24
|
+
isStepDiffable: {},
|
|
25
|
+
isStepRevertable: {},
|
|
26
|
+
expanded: {},
|
|
27
|
+
gotoEnabled: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
default: true
|
|
30
|
+
}
|
|
21
31
|
},
|
|
22
32
|
emits: [
|
|
23
33
|
"toggle",
|
|
@@ -36,14 +46,17 @@ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
36
46
|
createElementVNode("code", null, toDisplayString(String(__props.bucketId)), 1),
|
|
37
47
|
createElementVNode("span", _hoisted_3, toDisplayString(__props.groups.length) + " 组", 1)
|
|
38
48
|
]), createElementVNode("ul", _hoisted_4, [
|
|
39
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (group
|
|
49
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (group) => {
|
|
40
50
|
return openBlock(), createBlock(GroupRow_default, {
|
|
41
|
-
key: `${__props.prefix}-${__props.bucketId}-${
|
|
42
|
-
"group-key": `${__props.prefix}-${__props.bucketId}-${
|
|
51
|
+
key: `${__props.prefix}-${__props.bucketId}-${group.steps[0]?.index}`,
|
|
52
|
+
"group-key": `${__props.prefix}-${__props.bucketId}-${group.steps[0]?.index}`,
|
|
43
53
|
applied: group.applied,
|
|
44
54
|
merged: group.steps.length > 1,
|
|
45
55
|
"op-type": group.opType,
|
|
46
56
|
desc: __props.describeGroup(group),
|
|
57
|
+
source: unref(groupSource)(group),
|
|
58
|
+
time: unref(formatHistoryTime)(unref(groupTimestamp)(group)),
|
|
59
|
+
"time-title": unref(formatHistoryFullTime)(unref(groupTimestamp)(group)),
|
|
47
60
|
"step-count": group.steps.length,
|
|
48
61
|
"sub-steps": group.steps.map((s) => ({
|
|
49
62
|
index: s.index,
|
|
@@ -51,10 +64,14 @@ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
51
64
|
isCurrent: s.isCurrent,
|
|
52
65
|
desc: __props.describeStep(s.step),
|
|
53
66
|
diffable: __props.isStepDiffable ? __props.isStepDiffable(s.step) : false,
|
|
54
|
-
revertable: s.applied
|
|
67
|
+
revertable: s.applied && (__props.isStepRevertable ? __props.isStepRevertable(s.step) : true),
|
|
68
|
+
source: s.step.source,
|
|
69
|
+
time: unref(formatHistoryTime)(s.step.timestamp),
|
|
70
|
+
timeTitle: unref(formatHistoryFullTime)(s.step.timestamp)
|
|
55
71
|
})),
|
|
56
72
|
"is-current": group.isCurrent,
|
|
57
|
-
expanded: !!__props.expanded[`${__props.prefix}-${__props.bucketId}-${
|
|
73
|
+
expanded: !!__props.expanded[`${__props.prefix}-${__props.bucketId}-${group.steps[0]?.index}`],
|
|
74
|
+
"goto-enabled": __props.gotoEnabled,
|
|
58
75
|
onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
|
|
59
76
|
onGoto: _cache[1] || (_cache[1] = (index) => _ctx.$emit("goto", __props.bucketId, index)),
|
|
60
77
|
onDiffStep: _cache[2] || (_cache[2] = (index) => _ctx.$emit("diff-step", __props.bucketId, index)),
|
|
@@ -65,17 +82,23 @@ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
65
82
|
"merged",
|
|
66
83
|
"op-type",
|
|
67
84
|
"desc",
|
|
85
|
+
"source",
|
|
86
|
+
"time",
|
|
87
|
+
"time-title",
|
|
68
88
|
"step-count",
|
|
69
89
|
"sub-steps",
|
|
70
90
|
"is-current",
|
|
71
|
-
"expanded"
|
|
91
|
+
"expanded",
|
|
92
|
+
"goto-enabled"
|
|
72
93
|
]);
|
|
73
94
|
}), 128)),
|
|
74
|
-
createCommentVNode("\n 初始状态项:永远位于该 bucket 列表底部(同样按倒序展示,最底部 = 最早状态)。\n 当 bucket 内所有 group 都未 applied 时即为当前位置。\n "),
|
|
75
|
-
|
|
95
|
+
createCommentVNode("\n 初始状态项:永远位于该 bucket 列表底部(同样按倒序展示,最底部 = 最早状态)。\n 当 bucket 内所有 group 都未 applied 时即为当前位置。\n showInitial=false 时不展示(用于没有\"撤销到初始状态\"语义的自定义历史,如业务模块历史)。\n "),
|
|
96
|
+
__props.showInitial !== false ? (openBlock(), createBlock(InitialRow_default, {
|
|
97
|
+
key: 0,
|
|
76
98
|
"is-current": isInitial.value,
|
|
99
|
+
"goto-enabled": __props.gotoEnabled,
|
|
77
100
|
onGotoInitial: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("goto-initial", __props.bucketId))
|
|
78
|
-
}, null, 8, ["is-current"])
|
|
101
|
+
}, null, 8, ["is-current", "goto-enabled"])) : createCommentVNode("v-if", true)
|
|
79
102
|
])]);
|
|
80
103
|
};
|
|
81
104
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import BucketTab_vue_vue_type_script_setup_true_lang_default from "./BucketTab.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/editor/src/layouts/history-list/BucketTab.vue
|
|
3
|
+
var BucketTab_default = BucketTab_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { BucketTab_default as default };
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
import { describeCodeBlockGroup, describeCodeBlockStep } from "./composables.js";
|
|
2
1
|
import Bucket_default from "./Bucket.js";
|
|
3
2
|
import { TMagicScrollbar } from "@tmagic/design";
|
|
4
3
|
import { Fragment, createBlock, createElementBlock, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
|
|
5
|
-
//#region packages/editor/src/layouts/history-list/
|
|
4
|
+
//#region packages/editor/src/layouts/history-list/BucketTab.vue?vue&type=script&setup=true&lang.ts
|
|
6
5
|
var _hoisted_1 = {
|
|
7
6
|
key: 0,
|
|
8
7
|
class: "m-editor-history-list-empty"
|
|
9
8
|
};
|
|
10
|
-
var
|
|
11
|
-
name: "
|
|
12
|
-
__name: "
|
|
9
|
+
var BucketTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
10
|
+
name: "MEditorHistoryListBucketTab",
|
|
11
|
+
__name: "BucketTab",
|
|
13
12
|
props: {
|
|
13
|
+
title: {},
|
|
14
|
+
prefix: {},
|
|
14
15
|
buckets: {},
|
|
15
|
-
|
|
16
|
+
describeGroup: {},
|
|
17
|
+
describeStep: {},
|
|
18
|
+
isStepDiffable: {},
|
|
19
|
+
isStepRevertable: {},
|
|
20
|
+
expanded: {},
|
|
21
|
+
gotoEnabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: true
|
|
24
|
+
}
|
|
16
25
|
},
|
|
17
26
|
emits: [
|
|
18
27
|
"toggle",
|
|
@@ -22,8 +31,6 @@ var CodeBlockTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
|
|
|
22
31
|
"revert-step"
|
|
23
32
|
],
|
|
24
33
|
setup(__props) {
|
|
25
|
-
/** 仅 update(前后 content 都存在)时可查看差异。 */
|
|
26
|
-
const isCodeBlockStepDiffable = (step) => Boolean(step.oldContent && step.newContent);
|
|
27
34
|
return (_ctx, _cache) => {
|
|
28
35
|
return !__props.buckets.length ? (openBlock(), createElementBlock("div", _hoisted_1, "暂无操作记录")) : (openBlock(), createBlock(unref(TMagicScrollbar), {
|
|
29
36
|
key: 1,
|
|
@@ -31,26 +38,33 @@ var CodeBlockTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
|
|
|
31
38
|
}, {
|
|
32
39
|
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.buckets, (bucket) => {
|
|
33
40
|
return openBlock(), createBlock(Bucket_default, {
|
|
34
|
-
key:
|
|
35
|
-
title:
|
|
41
|
+
key: `${__props.prefix}-${bucket.id}`,
|
|
42
|
+
title: __props.title,
|
|
36
43
|
"bucket-id": bucket.id,
|
|
37
|
-
prefix:
|
|
44
|
+
prefix: __props.prefix,
|
|
38
45
|
groups: bucket.groups,
|
|
39
|
-
"describe-group":
|
|
40
|
-
"describe-step":
|
|
41
|
-
"is-step-diffable":
|
|
46
|
+
"describe-group": __props.describeGroup,
|
|
47
|
+
"describe-step": __props.describeStep,
|
|
48
|
+
"is-step-diffable": __props.isStepDiffable,
|
|
49
|
+
"is-step-revertable": __props.isStepRevertable,
|
|
42
50
|
expanded: __props.expanded,
|
|
51
|
+
"goto-enabled": __props.gotoEnabled,
|
|
43
52
|
onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
|
|
44
53
|
onGoto: _cache[1] || (_cache[1] = (id, index) => _ctx.$emit("goto", id, index)),
|
|
45
54
|
onGotoInitial: _cache[2] || (_cache[2] = (id) => _ctx.$emit("goto-initial", id)),
|
|
46
55
|
onDiffStep: _cache[3] || (_cache[3] = (id, index) => _ctx.$emit("diff-step", id, index)),
|
|
47
56
|
onRevertStep: _cache[4] || (_cache[4] = (id, index) => _ctx.$emit("revert-step", id, index))
|
|
48
57
|
}, null, 8, [
|
|
58
|
+
"title",
|
|
49
59
|
"bucket-id",
|
|
60
|
+
"prefix",
|
|
50
61
|
"groups",
|
|
51
62
|
"describe-group",
|
|
52
63
|
"describe-step",
|
|
53
|
-
"
|
|
64
|
+
"is-step-diffable",
|
|
65
|
+
"is-step-revertable",
|
|
66
|
+
"expanded",
|
|
67
|
+
"goto-enabled"
|
|
54
68
|
]);
|
|
55
69
|
}), 128))]),
|
|
56
70
|
_: 1
|
|
@@ -59,4 +73,4 @@ var CodeBlockTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
|
|
|
59
73
|
}
|
|
60
74
|
});
|
|
61
75
|
//#endregion
|
|
62
|
-
export {
|
|
76
|
+
export { BucketTab_vue_vue_type_script_setup_true_lang_default as default };
|