@tmagic/editor 1.8.0-beta.13 → 1.8.0-beta.14
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 +15 -3
- package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +11 -4
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +80 -55
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +10 -7
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +4 -1
- package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +99 -64
- package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/Center.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +31 -0
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +50 -0
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +50 -0
- package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +6 -6
- package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +5 -2
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +28 -5
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +31 -5
- package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +10 -2
- package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +10 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +16 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +18 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +18 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +36 -2
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +32 -2
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +47 -25
- package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/es/icons/DatasourceIcon.js +17 -0
- package/dist/es/index.js +2 -2
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +14 -10
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +10 -1
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/plugin.js +2 -1
- package/dist/es/services/editor.js +54 -13
- package/dist/es/services/ui.js +5 -3
- package/dist/es/style.css +303 -40
- package/dist/es/utils/config.js +4 -1
- package/dist/es/utils/const.js +2 -2
- package/dist/es/utils/props.js +43 -29
- package/dist/style.css +303 -40
- package/dist/themes/magic-admin.css +3000 -0
- package/dist/tmagic-editor.umd.cjs +1066 -449
- package/package.json +7 -7
- package/src/Editor.vue +22 -1
- package/src/components/ContentMenu.vue +10 -2
- package/src/components/FloatingBox.vue +8 -2
- package/src/editorProps.ts +4 -0
- package/src/fields/CodeSelect.vue +54 -43
- package/src/fields/CodeSelectCol.vue +1 -0
- package/src/fields/DataSourceFieldSelect/Index.vue +14 -5
- package/src/fields/DisplayConds.vue +4 -1
- package/src/fields/EventSelect.vue +56 -32
- package/src/fields/StyleSetter/Index.vue +1 -4
- package/src/fields/StyleSetter/components/Border.vue +1 -1
- package/src/fields/StyleSetter/icons/align-items/Center.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/FlexEnd.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/FlexStart.vue +19 -0
- package/src/fields/StyleSetter/icons/align-items/SpaceAround.vue +34 -0
- package/src/fields/StyleSetter/icons/align-items/SpaceBetween.vue +34 -0
- package/src/fields/StyleSetter/icons/align-items/index.ts +5 -0
- package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +20 -4
- package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +10 -28
- package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +4 -5
- package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +4 -5
- package/src/fields/StyleSetter/icons/flex-direction/Column.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/Row.vue +4 -3
- package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +4 -3
- package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -2
- package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +15 -2
- package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +15 -2
- package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +28 -3
- package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +28 -2
- package/src/fields/StyleSetter/pro/Background.vue +7 -2
- package/src/fields/StyleSetter/pro/Font.vue +3 -3
- package/src/fields/StyleSetter/pro/Layout.vue +98 -28
- package/src/icons/DatasourceIcon.vue +7 -0
- package/src/index.ts +3 -0
- package/src/layouts/Framework.vue +7 -1
- package/src/layouts/props-panel/PropsPanel.vue +19 -1
- package/src/layouts/sidebar/Sidebar.vue +3 -3
- package/src/plugin.ts +3 -2
- package/src/services/editor.ts +54 -11
- package/src/services/ui.ts +20 -5
- package/src/theme/code-block.scss +37 -0
- package/src/theme/common/var.scss +1 -1
- package/src/theme/component-list-panel.scss +2 -2
- package/src/theme/data-source-field.scss +4 -0
- package/src/theme/display-conds.scss +11 -0
- package/src/theme/event.scss +58 -4
- package/src/theme/framework.scss +4 -1
- package/src/theme/history-list-panel.scss +9 -9
- package/src/theme/nav-menu.scss +5 -1
- package/src/theme/props-panel.scss +2 -1
- package/src/theme/style-setter/border.scss +14 -5
- package/src/theme/theme.scss +1 -0
- package/src/theme/themes/magic-admin/index.scss +214 -0
- package/src/theme/ui-select.scss +1 -1
- package/src/type.ts +27 -6
- package/src/utils/config.ts +9 -1
- package/src/utils/const.ts +3 -2
- package/src/utils/props.ts +22 -9
- package/types/index.d.ts +88 -35
|
@@ -6,13 +6,8 @@ import SplitView_default from "../components/SplitView.js";
|
|
|
6
6
|
import PageBar_default from "./page-bar/PageBar.js";
|
|
7
7
|
import AddPageBox_default from "./AddPageBox.js";
|
|
8
8
|
import CodeEditor_default from "./CodeEditor.js";
|
|
9
|
-
import { computed, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, inject, onBeforeUnmount, onMounted, openBlock, renderSlot, unref, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
|
|
9
|
+
import { computed, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, inject, normalizeClass, onBeforeUnmount, onMounted, openBlock, renderSlot, unref, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
|
|
10
10
|
//#region packages/editor/src/layouts/Framework.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
-
var _hoisted_1 = {
|
|
12
|
-
class: "m-editor",
|
|
13
|
-
ref: "content",
|
|
14
|
-
style: { "min-width": "900px" }
|
|
15
|
-
};
|
|
16
11
|
var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
12
|
name: "MEditorFramework",
|
|
18
13
|
__name: "Framework",
|
|
@@ -20,7 +15,8 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
20
15
|
disabledPageFragment: { type: Boolean },
|
|
21
16
|
pageBarSortOptions: {},
|
|
22
17
|
pageFilterFunction: { type: Function },
|
|
23
|
-
hideSidebar: { type: Boolean }
|
|
18
|
+
hideSidebar: { type: Boolean },
|
|
19
|
+
theme: {}
|
|
24
20
|
},
|
|
25
21
|
setup(__props) {
|
|
26
22
|
const props = __props;
|
|
@@ -42,7 +38,7 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
42
38
|
watch(() => uiService.get("hideSlideBar"), (hideSlideBar) => {
|
|
43
39
|
uiService.set("columnWidth", {
|
|
44
40
|
...columnWidth.value,
|
|
45
|
-
left: hideSlideBar ? 0 : storageService.getItem("$MagicEditorLeftColumnWidthData", { protocol: Protocol.NUMBER }) ||
|
|
41
|
+
left: hideSlideBar ? 0 : storageService.getItem("$MagicEditorLeftColumnWidthData", { protocol: Protocol.NUMBER }) || 345
|
|
46
42
|
});
|
|
47
43
|
});
|
|
48
44
|
const columnWidthChange = (columnW) => {
|
|
@@ -75,7 +71,15 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
75
71
|
}
|
|
76
72
|
};
|
|
77
73
|
return (_ctx, _cache) => {
|
|
78
|
-
return openBlock(), createElementBlock("div",
|
|
74
|
+
return openBlock(), createElementBlock("div", {
|
|
75
|
+
ref: "content",
|
|
76
|
+
class: normalizeClass([
|
|
77
|
+
"m-editor",
|
|
78
|
+
__props.theme ? `m-editor--${__props.theme}` : "",
|
|
79
|
+
__props.theme ? `m-theme--${__props.theme}` : ""
|
|
80
|
+
]),
|
|
81
|
+
style: { "min-width": "900px" }
|
|
82
|
+
}, [
|
|
79
83
|
renderSlot(_ctx.$slots, "header"),
|
|
80
84
|
renderSlot(_ctx.$slots, "nav"),
|
|
81
85
|
renderSlot(_ctx.$slots, "content-before"),
|
|
@@ -134,7 +138,7 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
134
138
|
]), [[vShow, !showSrc.value]]),
|
|
135
139
|
renderSlot(_ctx.$slots, "content-after"),
|
|
136
140
|
renderSlot(_ctx.$slots, "footer")
|
|
137
|
-
],
|
|
141
|
+
], 2);
|
|
138
142
|
};
|
|
139
143
|
}
|
|
140
144
|
});
|
|
@@ -42,18 +42,27 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
42
42
|
tabPosition: "right",
|
|
43
43
|
items: styleTabConfig.items
|
|
44
44
|
}];
|
|
45
|
+
let initSeq = 0;
|
|
46
|
+
let mounted = true;
|
|
45
47
|
const init = async () => {
|
|
48
|
+
initSeq += 1;
|
|
49
|
+
const seq = initSeq;
|
|
46
50
|
if (!node.value) {
|
|
51
|
+
if (seq !== initSeq || !mounted) return;
|
|
47
52
|
curFormConfig.value = [];
|
|
48
53
|
return;
|
|
49
54
|
}
|
|
50
55
|
const type = node.value.type || (node.value.items ? "container" : "text");
|
|
51
|
-
|
|
56
|
+
const config = await propsService.getPropsConfig(type, { node: node.value });
|
|
57
|
+
if (seq !== initSeq || !mounted) return;
|
|
58
|
+
if (!node.value) return;
|
|
59
|
+
curFormConfig.value = config;
|
|
52
60
|
values.value = node.value;
|
|
53
61
|
};
|
|
54
62
|
watchEffect(init);
|
|
55
63
|
propsService.on("props-configs-change", init);
|
|
56
64
|
onBeforeUnmount(() => {
|
|
65
|
+
mounted = false;
|
|
57
66
|
propsService.off("props-configs-change", init);
|
|
58
67
|
});
|
|
59
68
|
const submit = async (v, eventData, error, source = "props") => {
|
|
@@ -9,7 +9,7 @@ import DataSourceListPanel_default from "./data-source/DataSourceListPanel.js";
|
|
|
9
9
|
import LayerPanel_default from "./layer/LayerPanel.js";
|
|
10
10
|
import ComponentListPanel_default from "./ComponentListPanel.js";
|
|
11
11
|
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toHandlers, unref, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
|
|
12
|
-
import { Close, Coin, EditPen,
|
|
12
|
+
import { Box, Close, Coin, EditPen, Finished } from "@element-plus/icons-vue";
|
|
13
13
|
//#region packages/editor/src/layouts/sidebar/Sidebar.vue?vue&type=script&setup=true&lang.ts
|
|
14
14
|
var _hoisted_1 = {
|
|
15
15
|
key: 0,
|
|
@@ -82,7 +82,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
82
82
|
[SideItemKey.COMPONENT_LIST]: {
|
|
83
83
|
$key: SideItemKey.COMPONENT_LIST,
|
|
84
84
|
type: "component",
|
|
85
|
-
icon:
|
|
85
|
+
icon: Box,
|
|
86
86
|
text: "组件",
|
|
87
87
|
component: ComponentListPanel_default,
|
|
88
88
|
slots: {}
|
|
@@ -90,7 +90,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
90
90
|
layer: {
|
|
91
91
|
$key: SideItemKey.LAYER,
|
|
92
92
|
type: "component",
|
|
93
|
-
icon:
|
|
93
|
+
icon: Finished,
|
|
94
94
|
text: "已选组件",
|
|
95
95
|
props: {
|
|
96
96
|
layerContentMenu: props.layerContentMenu,
|
package/dist/es/plugin.js
CHANGED
|
@@ -28,7 +28,8 @@ import designPlugin from "@tmagic/design";
|
|
|
28
28
|
var defaultInstallOpt = {
|
|
29
29
|
parseDSL: (dsl) => eval(dsl),
|
|
30
30
|
customCreateMonacoEditor: (monaco, codeEditorEl, options) => monaco.editor.create(codeEditorEl, options),
|
|
31
|
-
customCreateMonacoDiffEditor: (monaco, codeEditorEl, options) => monaco.editor.createDiffEditor(codeEditorEl, options)
|
|
31
|
+
customCreateMonacoDiffEditor: (monaco, codeEditorEl, options) => monaco.editor.createDiffEditor(codeEditorEl, options),
|
|
32
|
+
flat: false
|
|
32
33
|
};
|
|
33
34
|
var plugin_default = { install: (app, opt) => {
|
|
34
35
|
const option = Object.assign(defaultInstallOpt, opt || {});
|
|
@@ -347,7 +347,9 @@ var Editor = class extends BaseService {
|
|
|
347
347
|
data: newNodes.map((node) => ({
|
|
348
348
|
node,
|
|
349
349
|
page: this.getPageOfNode(node.id)
|
|
350
|
-
}))
|
|
350
|
+
})),
|
|
351
|
+
historySource,
|
|
352
|
+
doNotPushHistory
|
|
351
353
|
});
|
|
352
354
|
return Array.isArray(addNode) ? newNodes : newNodes[0];
|
|
353
355
|
}
|
|
@@ -448,7 +450,9 @@ var Editor = class extends BaseService {
|
|
|
448
450
|
this.emit("remove", nodes);
|
|
449
451
|
this.emit("change", {
|
|
450
452
|
type: "remove",
|
|
451
|
-
data: changeItems
|
|
453
|
+
data: changeItems,
|
|
454
|
+
historySource,
|
|
455
|
+
doNotPushHistory
|
|
452
456
|
});
|
|
453
457
|
}
|
|
454
458
|
async doUpdate(config, { changeRecords = [], historySource } = {}) {
|
|
@@ -541,7 +545,9 @@ var Editor = class extends BaseService {
|
|
|
541
545
|
data: updateData.map((node) => ({
|
|
542
546
|
node,
|
|
543
547
|
page: this.getPageOfNode(node.newNode.id)
|
|
544
|
-
}))
|
|
548
|
+
})),
|
|
549
|
+
historySource,
|
|
550
|
+
doNotPushHistory
|
|
545
551
|
});
|
|
546
552
|
return Array.isArray(config) ? updateData.map((item) => item.newNode) : updateData[0].newNode;
|
|
547
553
|
}
|
|
@@ -714,7 +720,9 @@ var Editor = class extends BaseService {
|
|
|
714
720
|
node,
|
|
715
721
|
page: this.getPageOfNode(node.id)
|
|
716
722
|
}],
|
|
717
|
-
offset
|
|
723
|
+
offset,
|
|
724
|
+
historySource,
|
|
725
|
+
doNotPushHistory
|
|
718
726
|
});
|
|
719
727
|
}
|
|
720
728
|
/**
|
|
@@ -852,7 +860,9 @@ var Editor = class extends BaseService {
|
|
|
852
860
|
page: this.getPageOfNode(node.id)
|
|
853
861
|
})),
|
|
854
862
|
targetIndex,
|
|
855
|
-
targetParent
|
|
863
|
+
targetParent,
|
|
864
|
+
historySource,
|
|
865
|
+
doNotPushHistory
|
|
856
866
|
});
|
|
857
867
|
}
|
|
858
868
|
/**
|
|
@@ -1301,10 +1311,12 @@ var Editor = class extends BaseService {
|
|
|
1301
1311
|
/**
|
|
1302
1312
|
* 应用历史操作(撤销 / 重做)
|
|
1303
1313
|
*
|
|
1304
|
-
*
|
|
1305
|
-
* `doNotSelect / doNotSwitchPage`
|
|
1314
|
+
* 删除 / 更新类修改走 `editor.remove / update`,并通过 `doNotPushHistory` 阻止再次入栈、
|
|
1315
|
+
* `doNotSelect / doNotSwitchPage` 让选区由方法末尾的统一逻辑兜底;
|
|
1316
|
+
* 「重新插回节点」(撤销 remove / 重做 add)需按 step 记录的 parentId / index 精确还原,
|
|
1317
|
+
* 不走 this.add,由手工 splice + stage.add 完成后补发等价的 add / change 事件(见 emitHistoryInsertEvents)。
|
|
1306
1318
|
*
|
|
1307
|
-
*
|
|
1319
|
+
* 注意:这些路径都会发出 add / remove / update / change 事件,业务侧若需要区分"用户操作"与"撤销重做触发",
|
|
1308
1320
|
* 请监听 `history-change` 事件配合判断。
|
|
1309
1321
|
*
|
|
1310
1322
|
* @param step 操作记录
|
|
@@ -1318,7 +1330,8 @@ var Editor = class extends BaseService {
|
|
|
1318
1330
|
const commonOpts = {
|
|
1319
1331
|
doNotSelect: true,
|
|
1320
1332
|
doNotSwitchPage: true,
|
|
1321
|
-
doNotPushHistory: true
|
|
1333
|
+
doNotPushHistory: true,
|
|
1334
|
+
historySource: step.source
|
|
1322
1335
|
};
|
|
1323
1336
|
switch (step.opType) {
|
|
1324
1337
|
case "add": {
|
|
@@ -1330,12 +1343,15 @@ var Editor = class extends BaseService {
|
|
|
1330
1343
|
}
|
|
1331
1344
|
else {
|
|
1332
1345
|
const sorted = [...items].sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
|
1346
|
+
const addedNodes = [];
|
|
1333
1347
|
for (const { newSchema, parentId, index } of sorted) {
|
|
1334
1348
|
if (!newSchema || parentId === void 0) continue;
|
|
1335
1349
|
const parent = this.getNodeById(parentId, false);
|
|
1336
1350
|
if (parent?.items) {
|
|
1337
|
-
|
|
1338
|
-
|
|
1351
|
+
const addedNode = cloneDeep$1(newSchema);
|
|
1352
|
+
if (typeof index === "number" && index >= 0 && index < parent.items.length) parent.items.splice(index, 0, addedNode);
|
|
1353
|
+
else parent.items.push(addedNode);
|
|
1354
|
+
addedNodes.push(addedNode);
|
|
1339
1355
|
await stage?.add({
|
|
1340
1356
|
config: cloneDeep$1(newSchema),
|
|
1341
1357
|
parent: cloneDeep$1(parent),
|
|
@@ -1344,6 +1360,7 @@ var Editor = class extends BaseService {
|
|
|
1344
1360
|
});
|
|
1345
1361
|
}
|
|
1346
1362
|
}
|
|
1363
|
+
this.emitHistoryInsertEvents(addedNodes, step.source);
|
|
1347
1364
|
}
|
|
1348
1365
|
break;
|
|
1349
1366
|
}
|
|
@@ -1351,11 +1368,14 @@ var Editor = class extends BaseService {
|
|
|
1351
1368
|
const items = step.diff ?? [];
|
|
1352
1369
|
if (reverse) {
|
|
1353
1370
|
const sorted = [...items].sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
|
1371
|
+
const addedNodes = [];
|
|
1354
1372
|
for (const { oldSchema, parentId, index } of sorted) {
|
|
1355
1373
|
if (!oldSchema || parentId === void 0) continue;
|
|
1356
1374
|
const parent = this.getNodeById(parentId, false);
|
|
1357
1375
|
if (parent?.items) {
|
|
1358
|
-
|
|
1376
|
+
const addedNode = cloneDeep$1(oldSchema);
|
|
1377
|
+
parent.items.splice(index ?? parent.items.length, 0, addedNode);
|
|
1378
|
+
addedNodes.push(addedNode);
|
|
1359
1379
|
await stage?.add({
|
|
1360
1380
|
config: cloneDeep$1(oldSchema),
|
|
1361
1381
|
parent: cloneDeep$1(parent),
|
|
@@ -1364,6 +1384,7 @@ var Editor = class extends BaseService {
|
|
|
1364
1384
|
});
|
|
1365
1385
|
}
|
|
1366
1386
|
}
|
|
1387
|
+
this.emitHistoryInsertEvents(addedNodes, step.source);
|
|
1367
1388
|
} else for (const { oldSchema } of items) {
|
|
1368
1389
|
if (!oldSchema) continue;
|
|
1369
1390
|
const existing = this.getNodeById(oldSchema.id, false);
|
|
@@ -1390,7 +1411,10 @@ var Editor = class extends BaseService {
|
|
|
1390
1411
|
}
|
|
1391
1412
|
return cloneDeep$1(reverse ? oldNode : newNode);
|
|
1392
1413
|
});
|
|
1393
|
-
if (configs.length) await this.update(configs, {
|
|
1414
|
+
if (configs.length) await this.update(configs, {
|
|
1415
|
+
doNotPushHistory: true,
|
|
1416
|
+
historySource: step.source
|
|
1417
|
+
});
|
|
1394
1418
|
break;
|
|
1395
1419
|
}
|
|
1396
1420
|
}
|
|
@@ -1414,6 +1438,23 @@ var Editor = class extends BaseService {
|
|
|
1414
1438
|
selectedConfigExceptionHandler(config) {
|
|
1415
1439
|
return resolveSelectedNode(config, (id) => this.getNodeInfo(id), this.state.root?.id);
|
|
1416
1440
|
}
|
|
1441
|
+
/**
|
|
1442
|
+
* 撤销 remove / 重做 add 通过手工 splice 按 step 记录的 parentId / index 精确还原节点(不走 this.add,原因见调用处注释),
|
|
1443
|
+
* 这里补齐与 this.add 等价的 add / change 事件,保证撤销/重做路径的事件行为与正向操作一致。
|
|
1444
|
+
*/
|
|
1445
|
+
emitHistoryInsertEvents(nodes, source) {
|
|
1446
|
+
if (!nodes.length) return;
|
|
1447
|
+
this.emit("add", nodes);
|
|
1448
|
+
this.emit("change", {
|
|
1449
|
+
type: "add",
|
|
1450
|
+
data: nodes.map((node) => ({
|
|
1451
|
+
node,
|
|
1452
|
+
page: this.getPageOfNode(node.id)
|
|
1453
|
+
})),
|
|
1454
|
+
historySource: source,
|
|
1455
|
+
doNotPushHistory: true
|
|
1456
|
+
});
|
|
1457
|
+
}
|
|
1417
1458
|
};
|
|
1418
1459
|
var editor_default = new Editor();
|
|
1419
1460
|
//#endregion
|
package/dist/es/services/ui.js
CHANGED
|
@@ -19,11 +19,11 @@ var state = shallowReactive({
|
|
|
19
19
|
height: 817
|
|
20
20
|
},
|
|
21
21
|
columnWidth: {
|
|
22
|
-
left:
|
|
22
|
+
left: 0,
|
|
23
23
|
center: 0,
|
|
24
|
-
right:
|
|
24
|
+
right: 0
|
|
25
25
|
},
|
|
26
|
-
minLeftColumnWidth:
|
|
26
|
+
minLeftColumnWidth: 345,
|
|
27
27
|
minCenterColumnWidth: 400,
|
|
28
28
|
minRightColumnWidth: 300,
|
|
29
29
|
showGuides: true,
|
|
@@ -48,6 +48,8 @@ var state = shallowReactive({
|
|
|
48
48
|
top: 0
|
|
49
49
|
}
|
|
50
50
|
});
|
|
51
|
+
state.columnWidth.left = Math.max(storage_default.getItem("$MagicEditorLeftColumnWidthData", { protocol: Protocol.NUMBER }) || 345, state.minLeftColumnWidth);
|
|
52
|
+
state.columnWidth.right = Math.max(storage_default.getItem("$MagicEditorRightColumnWidthData", { protocol: Protocol.NUMBER }) || 480, state.minRightColumnWidth);
|
|
51
53
|
var canUsePluginMethods = {
|
|
52
54
|
async: ["zoom", "calcZoom"],
|
|
53
55
|
sync: []
|