@tmagic/editor 1.8.0-beta.0 → 1.8.0-beta.10
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 +31 -5
- package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +21 -113
- package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +7 -1
- package/dist/es/components/CompareForm.js +5 -0
- package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +196 -0
- package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/editorProps.js +2 -0
- package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +20 -4
- package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +3 -6
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +19 -3
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +42 -8
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +14 -6
- package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +13 -4
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +41 -16
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +9 -5
- package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +40 -19
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +17 -9
- package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +59 -12
- package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +12 -7
- package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +9 -3
- package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +38 -8
- package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +11 -3
- package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +17 -4
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +11 -3
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +15 -3
- package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +11 -3
- package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +11 -3
- package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +9 -6
- package/dist/es/hooks/use-code-block-edit.js +7 -4
- package/dist/es/hooks/use-data-source-edit.js +5 -2
- package/dist/es/hooks/use-stage.js +22 -10
- package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/index.js +14 -3
- package/dist/es/initService.js +7 -7
- package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +14 -9
- package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +12 -4
- package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/Bucket.js +5 -0
- package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/es/layouts/history-list/BucketTab.js +5 -0
- package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/es/layouts/history-list/GroupRow.js +5 -0
- package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +269 -0
- package/dist/es/layouts/history-list/HistoryDiffDialog.js +5 -0
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +287 -0
- package/dist/es/layouts/history-list/HistoryListPanel.js +5 -0
- package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +327 -0
- package/dist/es/layouts/history-list/InitialRow.js +5 -0
- package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/es/layouts/history-list/PageTab.js +5 -0
- package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +95 -0
- package/dist/es/layouts/history-list/composables.js +184 -0
- package/dist/es/layouts/history-list/useHistoryList.js +56 -0
- package/dist/es/layouts/history-list/useHistoryRevert.js +306 -0
- package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +5 -3
- package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +6 -2
- package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +8 -4
- package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +4 -4
- 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 +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +19 -6
- package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +25 -3
- 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 +6 -6
- package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/layer/use-node-status.js +38 -4
- package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/viewer/NodeListMenu.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 +2 -2
- package/dist/es/layouts/workspace/viewer/StageOverlay.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 +9 -9
- package/dist/es/services/BaseService.js +31 -68
- package/dist/es/services/codeBlock.js +286 -8
- package/dist/es/services/componentList.js +2 -2
- package/dist/es/services/dataSource.js +287 -8
- package/dist/es/services/dep.js +21 -9
- package/dist/es/services/editor.js +655 -194
- package/dist/es/services/events.js +2 -2
- package/dist/es/services/history.js +390 -47
- package/dist/es/services/keybinding.js +5 -5
- package/dist/es/services/props.js +8 -8
- package/dist/es/services/stageOverlay.js +2 -2
- package/dist/es/services/storage.js +2 -2
- package/dist/es/services/ui.js +5 -2
- package/dist/es/style.css +456 -8
- package/dist/es/utils/code-block.js +122 -0
- package/dist/es/utils/content-menu.js +19 -12
- package/dist/es/utils/data-source/index.js +2 -0
- package/dist/es/utils/dep/worker.js +1 -1
- package/dist/es/utils/editor.js +106 -52
- package/dist/es/utils/history.js +220 -0
- package/dist/es/utils/indexed-db.js +86 -0
- package/dist/es/utils/undo-redo.js +80 -1
- package/dist/style.css +456 -8
- package/dist/tmagic-editor.umd.cjs +9085 -4480
- package/package.json +8 -8
- package/src/Editor.vue +25 -1
- package/src/components/CodeBlockEditor.vue +20 -109
- package/src/components/CodeParams.vue +6 -0
- package/src/components/CompareForm.vue +277 -0
- package/src/components/ToolButton.vue +2 -2
- package/src/editorProps.ts +9 -0
- package/src/fields/Code.vue +19 -3
- package/src/fields/CodeLink.vue +2 -5
- package/src/fields/CodeSelect.vue +17 -1
- package/src/fields/CodeSelectCol.vue +37 -3
- package/src/fields/DataSourceFieldSelect/FieldSelect.vue +23 -3
- package/src/fields/DataSourceFieldSelect/Index.vue +9 -2
- package/src/fields/DataSourceFields.vue +48 -10
- package/src/fields/DataSourceInput.vue +3 -3
- package/src/fields/DataSourceMethodSelect.vue +12 -4
- package/src/fields/DataSourceMethods.vue +55 -24
- package/src/fields/DataSourceMocks.vue +13 -3
- package/src/fields/DataSourceSelect.vue +4 -1
- package/src/fields/EventSelect.vue +57 -8
- package/src/fields/KeyValue.vue +17 -4
- package/src/fields/StyleSetter/Index.vue +6 -0
- package/src/fields/StyleSetter/components/Border.vue +30 -7
- package/src/fields/StyleSetter/components/Box.vue +2 -0
- package/src/fields/StyleSetter/pro/Background.vue +15 -1
- package/src/fields/StyleSetter/pro/Border.vue +24 -2
- package/src/fields/StyleSetter/pro/Font.vue +15 -1
- package/src/fields/StyleSetter/pro/Layout.vue +17 -1
- package/src/fields/StyleSetter/pro/Position.vue +15 -1
- package/src/fields/StyleSetter/pro/Transform.vue +15 -1
- package/src/fields/UISelect.vue +5 -2
- package/src/hooks/use-code-block-edit.ts +9 -5
- package/src/hooks/use-data-source-edit.ts +2 -2
- package/src/hooks/use-stage.ts +26 -9
- package/src/index.ts +8 -0
- package/src/initService.ts +1 -1
- package/src/layouts/CodeEditor.vue +17 -5
- package/src/layouts/Framework.vue +11 -6
- package/src/layouts/NavMenu.vue +12 -3
- package/src/layouts/history-list/Bucket.vue +91 -0
- package/src/layouts/history-list/BucketTab.vue +72 -0
- package/src/layouts/history-list/GroupRow.vue +304 -0
- package/src/layouts/history-list/HistoryDiffDialog.vue +273 -0
- package/src/layouts/history-list/HistoryListPanel.vue +367 -0
- package/src/layouts/history-list/InitialRow.vue +71 -0
- package/src/layouts/history-list/PageTab.vue +118 -0
- package/src/layouts/history-list/composables.ts +309 -0
- package/src/layouts/history-list/useHistoryList.ts +60 -0
- package/src/layouts/history-list/useHistoryRevert.ts +405 -0
- package/src/layouts/page-bar/PageBar.vue +4 -2
- package/src/layouts/props-panel/PropsPanel.vue +5 -1
- package/src/layouts/sidebar/ComponentListPanel.vue +9 -5
- package/src/layouts/sidebar/Sidebar.vue +8 -3
- 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/DataSourceConfigPanel.vue +31 -2
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +27 -2
- 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/sidebar/layer/use-node-status.ts +64 -12
- package/src/layouts/workspace/viewer/Stage.vue +1 -1
- package/src/layouts/workspace/viewer/ViewerMenu.vue +8 -8
- package/src/services/BaseService.ts +35 -86
- package/src/services/codeBlock.ts +361 -5
- package/src/services/dataSource.ts +336 -6
- package/src/services/dep.ts +32 -9
- package/src/services/editor.ts +834 -194
- package/src/services/history.ts +509 -49
- package/src/services/keybinding.ts +3 -3
- package/src/services/props.ts +2 -2
- package/src/services/ui.ts +7 -0
- package/src/theme/history-list-panel.scss +557 -0
- package/src/theme/page-bar.scss +0 -4
- package/src/theme/props-panel.scss +3 -3
- package/src/theme/style-setter/border.scss +4 -1
- package/src/theme/theme.scss +1 -0
- package/src/type.ts +594 -31
- package/src/utils/code-block.ts +150 -0
- package/src/utils/content-menu.ts +25 -13
- package/src/utils/data-source/index.ts +2 -0
- package/src/utils/dep/worker.ts +5 -3
- package/src/utils/editor.ts +170 -61
- package/src/utils/history.ts +286 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/indexed-db.ts +122 -0
- package/src/utils/undo-redo.ts +111 -0
- package/types/index.d.ts +3173 -889
- package/dist/es/utils/compose.js +0 -44
- package/dist/es/utils/editor-history.js +0 -100
- package/src/utils/compose.ts +0 -52
- package/src/utils/editor-history.ts +0 -138
|
@@ -10,7 +10,7 @@ import { Grid } from "@element-plus/icons-vue";
|
|
|
10
10
|
//#region packages/editor/src/layouts/sidebar/ComponentListPanel.vue?vue&type=script&setup=true&lang.ts
|
|
11
11
|
var _hoisted_1 = ["onClick", "onDragstart"];
|
|
12
12
|
var _hoisted_2 = ["title"];
|
|
13
|
-
var ComponentListPanel_vue_vue_type_script_setup_true_lang_default =
|
|
13
|
+
var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
14
14
|
name: "MEditorComponentListPanel",
|
|
15
15
|
__name: "ComponentListPanel",
|
|
16
16
|
setup(__props) {
|
|
@@ -37,7 +37,7 @@ var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
|
|
|
37
37
|
name: text,
|
|
38
38
|
type,
|
|
39
39
|
...data
|
|
40
|
-
});
|
|
40
|
+
}, void 0, { historySource: "component-panel" });
|
|
41
41
|
};
|
|
42
42
|
const dragstartHandler = ({ text, type, data = {} }, e) => {
|
|
43
43
|
e.dataTransfer?.setData("text/json", serialize({
|
|
@@ -30,7 +30,7 @@ var _hoisted_5 = {
|
|
|
30
30
|
class: "m-editor-sidebar-tips"
|
|
31
31
|
};
|
|
32
32
|
var _hoisted_6 = { class: "m-editor-slide-list-box" };
|
|
33
|
-
var Sidebar_vue_vue_type_script_setup_true_lang_default =
|
|
33
|
+
var Sidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
34
34
|
name: "MEditorSidebar",
|
|
35
35
|
__name: "Sidebar",
|
|
36
36
|
props: {
|
|
@@ -71,7 +71,11 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
}, { immediate: true });
|
|
74
|
-
const activeTabName =
|
|
74
|
+
const activeTabName = computed({
|
|
75
|
+
get: () => uiService.get("sideBarActiveTabName"),
|
|
76
|
+
set: (value) => uiService.set("sideBarActiveTabName", value)
|
|
77
|
+
});
|
|
78
|
+
uiService.set("sideBarActiveTabName", props.data?.status || "");
|
|
75
79
|
const getItemConfig = (data) => {
|
|
76
80
|
const map = {
|
|
77
81
|
[SideItemKey.COMPONENT_LIST]: {
|
|
@@ -83,7 +87,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
83
87
|
slots: {}
|
|
84
88
|
},
|
|
85
89
|
layer: {
|
|
86
|
-
$key:
|
|
90
|
+
$key: SideItemKey.LAYER,
|
|
87
91
|
type: "component",
|
|
88
92
|
icon: List,
|
|
89
93
|
text: "已选组件",
|
|
@@ -101,7 +105,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
101
105
|
slots: {}
|
|
102
106
|
},
|
|
103
107
|
[SideItemKey.CODE_BLOCK]: {
|
|
104
|
-
$key:
|
|
108
|
+
$key: SideItemKey.CODE_BLOCK,
|
|
105
109
|
type: "component",
|
|
106
110
|
icon: EditPen,
|
|
107
111
|
text: "代码编辑",
|
package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -9,7 +9,7 @@ import { DepTargetType } from "@tmagic/core";
|
|
|
9
9
|
import { computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
|
|
10
10
|
import { Close, Edit, View } from "@element-plus/icons-vue";
|
|
11
11
|
//#region packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue?vue&type=script&setup=true&lang.ts
|
|
12
|
-
var CodeBlockList_vue_vue_type_script_setup_true_lang_default =
|
|
12
|
+
var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
13
13
|
name: "MEditorCodeBlockList",
|
|
14
14
|
__name: "CodeBlockList",
|
|
15
15
|
props: {
|
|
@@ -78,7 +78,7 @@ var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
|
|
|
78
78
|
const editCode = (id) => {
|
|
79
79
|
emit("edit", id);
|
|
80
80
|
};
|
|
81
|
-
const deleteCode = async (id) => {
|
|
81
|
+
const deleteCode = async (id, { historySource } = {}) => {
|
|
82
82
|
const currentCode = codeList.value.find((codeItem) => codeItem.id === id);
|
|
83
83
|
const existBinds = Boolean(currentCode?.items?.length);
|
|
84
84
|
const undeleteableList = codeBlockService.getUndeletableList() || [];
|
|
@@ -88,7 +88,7 @@ var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
|
|
|
88
88
|
cancelButtonText: "取消",
|
|
89
89
|
type: "warning"
|
|
90
90
|
});
|
|
91
|
-
emit("remove", id);
|
|
91
|
+
emit("remove", id, { historySource });
|
|
92
92
|
} else if (typeof props.customError === "function") props.customError(id, existBinds ? CodeDeleteErrorType.BIND : CodeDeleteErrorType.UNDELETEABLE);
|
|
93
93
|
else if (existBinds) tMagicMessage.error("代码块存在绑定关系,不可删除");
|
|
94
94
|
else tMagicMessage.error("代码块不可删除");
|
|
@@ -138,7 +138,7 @@ var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
|
|
|
138
138
|
default: withCtx(() => [createVNode(Icon_default, {
|
|
139
139
|
icon: unref(Close),
|
|
140
140
|
class: "edit-icon",
|
|
141
|
-
onClick: withModifiers(($event) => deleteCode(`${data.key}
|
|
141
|
+
onClick: withModifiers(($event) => deleteCode(`${data.key}`, { historySource: "tree" }), ["stop"])
|
|
142
142
|
}, null, 8, ["icon", "onClick"])]),
|
|
143
143
|
_: 2
|
|
144
144
|
}, 1024)) : createCommentVNode("v-if", true),
|
package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -9,7 +9,7 @@ import { TMagicButton, TMagicScrollbar } from "@tmagic/design";
|
|
|
9
9
|
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, renderSlot, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
10
10
|
//#region packages/editor/src/layouts/sidebar/code-block/CodeBlockListPanel.vue?vue&type=script&setup=true&lang.ts
|
|
11
11
|
var _hoisted_1 = { class: "search-wrapper" };
|
|
12
|
-
var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default =
|
|
12
|
+
var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
13
13
|
name: "MEditorCodeBlockListPanel",
|
|
14
14
|
__name: "CodeBlockListPanel",
|
|
15
15
|
props: {
|
|
@@ -38,7 +38,7 @@ var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
|
|
|
38
38
|
if (codeBlockListRef.value) for (const [, status] of codeBlockListRef.value.nodeStatusMap.entries()) status.selected = false;
|
|
39
39
|
};
|
|
40
40
|
const { nodeContentMenuHandler, menuData: contentMenuData, contentMenuHideHandler } = useContentMenu((id) => {
|
|
41
|
-
codeBlockListRef.value?.deleteCode(id);
|
|
41
|
+
codeBlockListRef.value?.deleteCode(id, { historySource: "tree-contextmenu" });
|
|
42
42
|
});
|
|
43
43
|
const menuData = computed(() => props.customContentMenu(contentMenuData, "code-block"));
|
|
44
44
|
return (_ctx, _cache) => {
|
|
@@ -26,7 +26,7 @@ var useContentMenu = (deleteCode) => {
|
|
|
26
26
|
const codeBlock = codeBlockService.getCodeContentById(selectId);
|
|
27
27
|
if (!codeBlock) return;
|
|
28
28
|
const newCodeId = await codeBlockService.getUniqueId();
|
|
29
|
-
codeBlockService.setCodeDslById(newCodeId, cloneDeep(codeBlock));
|
|
29
|
+
codeBlockService.setCodeDslById(newCodeId, cloneDeep(codeBlock), { historySource: "tree-contextmenu" });
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
{
|
|
@@ -2,7 +2,7 @@ import ToolButton_default from "../../../components/ToolButton.js";
|
|
|
2
2
|
import { TMagicButton, TMagicPopover } from "@tmagic/design";
|
|
3
3
|
import { Fragment, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
4
4
|
//#region packages/editor/src/layouts/sidebar/data-source/DataSourceAddButton.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var DataSourceAddButton_vue_vue_type_script_setup_true_lang_default =
|
|
5
|
+
var DataSourceAddButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
6
6
|
name: "MEditorDataSourceAddButton",
|
|
7
7
|
__name: "DataSourceAddButton",
|
|
8
8
|
props: {
|
|
@@ -4,15 +4,17 @@ import { useNextFloatBoxPosition } from "../../../hooks/use-next-float-box-posit
|
|
|
4
4
|
import FloatingBox_default from "../../../components/FloatingBox.js";
|
|
5
5
|
import { MFormBox } from "@tmagic/form";
|
|
6
6
|
import { tMagicMessage } from "@tmagic/design";
|
|
7
|
-
import { createBlock, createVNode, defineComponent, inject, isRef, mergeModels, nextTick, openBlock, ref, unref, useModel, watch, watchEffect, withCtx } from "vue";
|
|
7
|
+
import { computed, createBlock, createVNode, defineComponent, inject, isRef, mergeModels, nextTick, openBlock, provide, ref, unref, useModel, watch, watchEffect, withCtx } from "vue";
|
|
8
8
|
//#region packages/editor/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
-
var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default =
|
|
9
|
+
var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
10
10
|
name: "MEditorDataSourceConfigPanel",
|
|
11
11
|
__name: "DataSourceConfigPanel",
|
|
12
|
-
props:
|
|
12
|
+
props: /*@__PURE__*/ mergeModels({
|
|
13
13
|
title: {},
|
|
14
14
|
values: {},
|
|
15
|
-
disabled: { type: Boolean }
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
editMethodName: {},
|
|
17
|
+
editFieldPath: {}
|
|
16
18
|
}, {
|
|
17
19
|
"visible": {
|
|
18
20
|
type: Boolean,
|
|
@@ -22,7 +24,7 @@ var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default = /* @__PU
|
|
|
22
24
|
"width": { default: 670 },
|
|
23
25
|
"widthModifiers": {}
|
|
24
26
|
}),
|
|
25
|
-
emits:
|
|
27
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
26
28
|
"submit",
|
|
27
29
|
"close",
|
|
28
30
|
"open"
|
|
@@ -37,9 +39,20 @@ var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default = /* @__PU
|
|
|
37
39
|
const dataSourceConfig = ref([]);
|
|
38
40
|
const { height: editorHeight } = useEditorContentHeight();
|
|
39
41
|
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
|
|
42
|
+
/** 供「方法定义」tab 内的字段消费,用于打开数据源详情后自动打开指定方法 */
|
|
43
|
+
provide("editingDataSourceMethodName", computed(() => props.editMethodName));
|
|
44
|
+
/** 供「数据定义」tab 内的字段消费,用于打开数据源详情后自动打开指定字段 */
|
|
45
|
+
provide("editingDataSourceFieldPath", computed(() => props.editFieldPath || []));
|
|
40
46
|
watchEffect(() => {
|
|
41
47
|
initValues.value = props.values;
|
|
42
|
-
|
|
48
|
+
const config = dataSourceService.getFormConfig(initValues.value.type);
|
|
49
|
+
let activeTab = "fields";
|
|
50
|
+
if (props.editMethodName) activeTab = "methods";
|
|
51
|
+
else if (props.editFieldPath?.length) activeTab = "fields";
|
|
52
|
+
dataSourceConfig.value = config.map((item) => item.type === "tab" ? {
|
|
53
|
+
...item,
|
|
54
|
+
active: activeTab
|
|
55
|
+
} : item);
|
|
43
56
|
});
|
|
44
57
|
const submitHandler = (values, data) => {
|
|
45
58
|
emit("submit", values, data);
|
package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -8,7 +8,7 @@ import { DepTargetType } from "@tmagic/core";
|
|
|
8
8
|
import { computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
|
|
9
9
|
import { Close, Edit, View } from "@element-plus/icons-vue";
|
|
10
10
|
//#region packages/editor/src/layouts/sidebar/data-source/DataSourceList.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
-
var DataSourceList_vue_vue_type_script_setup_true_lang_default =
|
|
11
|
+
var DataSourceList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
12
|
name: "MEditorDataSourceList",
|
|
13
13
|
__name: "DataSourceList",
|
|
14
14
|
props: {
|
|
@@ -7,11 +7,11 @@ import DataSourceConfigPanel_default from "./DataSourceConfigPanel.js";
|
|
|
7
7
|
import DataSourceList_default from "./DataSourceList.js";
|
|
8
8
|
import { useContentMenu } from "./useContentMenu.js";
|
|
9
9
|
import { TMagicScrollbar, tMagicMessageBox } from "@tmagic/design";
|
|
10
|
-
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, renderSlot, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
10
|
+
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, renderSlot, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
11
11
|
import { mergeWith } from "lodash-es";
|
|
12
12
|
//#region packages/editor/src/layouts/sidebar/data-source/DataSourceListPanel.vue?vue&type=script&setup=true&lang.ts
|
|
13
13
|
var _hoisted_1 = { class: "search-wrapper" };
|
|
14
|
-
var DataSourceListPanel_vue_vue_type_script_setup_true_lang_default =
|
|
14
|
+
var DataSourceListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
15
15
|
name: "MEditorDataSourceListPanel",
|
|
16
16
|
__name: "DataSourceListPanel",
|
|
17
17
|
props: {
|
|
@@ -24,7 +24,13 @@ var DataSourceListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE
|
|
|
24
24
|
const eventBus = inject("eventBus");
|
|
25
25
|
const { dataSourceService } = useServices();
|
|
26
26
|
const { editDialog, dataSourceValues, dialogTitle, editable, editHandler, submitDataSourceHandler } = useDataSourceEdit(dataSourceService);
|
|
27
|
+
/** 打开数据源详情时需要直接定位并打开的方法名,为空则正常展示「数据定义」tab */
|
|
28
|
+
const editMethodName = ref("");
|
|
29
|
+
/** 打开数据源详情时需要直接定位并打开的字段路径,为空则不自动打开字段配置 */
|
|
30
|
+
const editFieldPath = ref([]);
|
|
27
31
|
const editDialogCloseHandler = () => {
|
|
32
|
+
editMethodName.value = "";
|
|
33
|
+
editFieldPath.value = [];
|
|
28
34
|
if (dataSourceListRef.value) for (const [, status] of dataSourceListRef.value.nodeStatusMap.entries()) status.selected = false;
|
|
29
35
|
};
|
|
30
36
|
watch(dataSourceValues, (dataSourceValues) => {
|
|
@@ -55,13 +61,25 @@ var DataSourceListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE
|
|
|
55
61
|
cancelButtonText: "取消",
|
|
56
62
|
type: "warning"
|
|
57
63
|
});
|
|
58
|
-
dataSourceService.remove(id);
|
|
64
|
+
dataSourceService.remove(id, { historySource: "tree-contextmenu" });
|
|
59
65
|
};
|
|
60
66
|
const dataSourceListRef = useTemplateRef("dataSourceList");
|
|
61
67
|
const filterTextChangeHandler = (val) => {
|
|
62
68
|
dataSourceListRef.value?.filter(val);
|
|
63
69
|
};
|
|
64
70
|
eventBus?.on("edit-data-source", (id) => {
|
|
71
|
+
editMethodName.value = "";
|
|
72
|
+
editFieldPath.value = [];
|
|
73
|
+
editHandler(id);
|
|
74
|
+
});
|
|
75
|
+
eventBus?.on("edit-data-source-method", (id, methodName) => {
|
|
76
|
+
editMethodName.value = methodName;
|
|
77
|
+
editFieldPath.value = [];
|
|
78
|
+
editHandler(id);
|
|
79
|
+
});
|
|
80
|
+
eventBus?.on("edit-data-source-field", (id, fieldPath) => {
|
|
81
|
+
editMethodName.value = "";
|
|
82
|
+
editFieldPath.value = fieldPath;
|
|
65
83
|
editHandler(id);
|
|
66
84
|
});
|
|
67
85
|
eventBus?.on("remove-data-source", (id) => {
|
|
@@ -110,12 +128,16 @@ var DataSourceListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE
|
|
|
110
128
|
disabled: !unref(editable),
|
|
111
129
|
values: unref(dataSourceValues),
|
|
112
130
|
title: unref(dialogTitle),
|
|
131
|
+
"edit-method-name": editMethodName.value,
|
|
132
|
+
"edit-field-path": editFieldPath.value,
|
|
113
133
|
onSubmit: unref(submitDataSourceHandler),
|
|
114
134
|
onClose: editDialogCloseHandler
|
|
115
135
|
}, null, 8, [
|
|
116
136
|
"disabled",
|
|
117
137
|
"values",
|
|
118
138
|
"title",
|
|
139
|
+
"edit-method-name",
|
|
140
|
+
"edit-field-path",
|
|
119
141
|
"onSubmit"
|
|
120
142
|
]),
|
|
121
143
|
(openBlock(), createBlock(Teleport, { to: "body" }, [menuData.value.length ? (openBlock(), createBlock(ContentMenu_default, {
|
|
@@ -25,7 +25,7 @@ var useContentMenu = () => {
|
|
|
25
25
|
if (!selectId) return;
|
|
26
26
|
const ds = dataSourceService.getDataSourceById(selectId);
|
|
27
27
|
if (!ds) return;
|
|
28
|
-
dataSourceService.add(cloneDeep(ds));
|
|
28
|
+
dataSourceService.add(cloneDeep(ds), { historySource: "tree-contextmenu" });
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
{
|
|
@@ -6,7 +6,7 @@ import { isPage, isPageFragment } from "@tmagic/utils";
|
|
|
6
6
|
import { computed, createBlock, defineComponent, markRaw, openBlock, useTemplateRef } from "vue";
|
|
7
7
|
import { Files, Plus } from "@element-plus/icons-vue";
|
|
8
8
|
//#region packages/editor/src/layouts/sidebar/layer/LayerMenu.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
-
var LayerMenu_vue_vue_type_script_setup_true_lang_default =
|
|
9
|
+
var LayerMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
10
10
|
name: "MEditorLayerMenu",
|
|
11
11
|
__name: "LayerMenu",
|
|
12
12
|
props: {
|
|
@@ -32,7 +32,7 @@ var LayerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
32
32
|
name: component.text,
|
|
33
33
|
type: component.type,
|
|
34
34
|
...component.data || {}
|
|
35
|
-
});
|
|
35
|
+
}, void 0, { historySource: "tree-contextmenu" });
|
|
36
36
|
}
|
|
37
37
|
}));
|
|
38
38
|
const getSubMenuData = computed(() => {
|
|
@@ -41,7 +41,7 @@ var LayerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
41
41
|
type: "button",
|
|
42
42
|
icon: Files,
|
|
43
43
|
handler: () => {
|
|
44
|
-
editorService.add({ type: "tab-pane" });
|
|
44
|
+
editorService.add({ type: "tab-pane" }, void 0, { historySource: "tree-contextmenu" });
|
|
45
45
|
}
|
|
46
46
|
}];
|
|
47
47
|
if (node.value?.items) return componentList.value.reduce((subMenuData, group, index) => subMenuData.concat(createMenuItems(group), index < componentList.value.length - 1 ? [{
|
|
@@ -68,9 +68,9 @@ var LayerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
68
68
|
items: getSubMenuData.value
|
|
69
69
|
},
|
|
70
70
|
useCopyMenu(),
|
|
71
|
-
usePasteMenu(),
|
|
72
|
-
useDeleteMenu(),
|
|
73
|
-
useMoveToMenu(services),
|
|
71
|
+
usePasteMenu("tree-contextmenu"),
|
|
72
|
+
useDeleteMenu("tree-contextmenu"),
|
|
73
|
+
useMoveToMenu(services, "tree-contextmenu"),
|
|
74
74
|
...props.layerContentMenu
|
|
75
75
|
], "layer"));
|
|
76
76
|
const show = (e) => {
|
|
@@ -3,7 +3,7 @@ import { TMagicButton } from "@tmagic/design";
|
|
|
3
3
|
import { createBlock, createCommentVNode, defineComponent, openBlock, unref, withModifiers } from "vue";
|
|
4
4
|
import { Hide, View } from "@element-plus/icons-vue";
|
|
5
5
|
//#region packages/editor/src/layouts/sidebar/layer/LayerNodeTool.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
-
var LayerNodeTool_vue_vue_type_script_setup_true_lang_default =
|
|
6
|
+
var LayerNodeTool_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
7
7
|
__name: "LayerNodeTool",
|
|
8
8
|
props: { data: {} },
|
|
9
9
|
setup(__props) {
|
|
@@ -13,7 +13,7 @@ var LayerNodeTool_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
|
|
|
13
13
|
editorService.update({
|
|
14
14
|
id: props.data.id,
|
|
15
15
|
visible
|
|
16
|
-
});
|
|
16
|
+
}, { historySource: "tree" });
|
|
17
17
|
};
|
|
18
18
|
return (_ctx, _cache) => {
|
|
19
19
|
return __props.data.type !== "page" ? (openBlock(), createBlock(unref(TMagicButton), {
|
|
@@ -11,7 +11,7 @@ import { useNodeStatus } from "./use-node-status.js";
|
|
|
11
11
|
import { TMagicScrollbar } from "@tmagic/design";
|
|
12
12
|
import { Teleport, computed, createBlock, createCommentVNode, createVNode, defineComponent, openBlock, renderSlot, unref, useTemplateRef, withCtx } from "vue";
|
|
13
13
|
//#region packages/editor/src/layouts/sidebar/layer/LayerPanel.vue?vue&type=script&setup=true&lang.ts
|
|
14
|
-
var LayerPanel_vue_vue_type_script_setup_true_lang_default =
|
|
14
|
+
var LayerPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
15
15
|
name: "MEditorLayerPanel",
|
|
16
16
|
__name: "LayerPanel",
|
|
17
17
|
props: {
|
|
@@ -4,7 +4,7 @@ import { computed, onBeforeUnmount, ref, watch } from "vue";
|
|
|
4
4
|
//#region packages/editor/src/layouts/sidebar/layer/use-node-status.ts
|
|
5
5
|
var createPageNodeStatus = (page, initialLayerNodeStatus) => {
|
|
6
6
|
const map = /* @__PURE__ */ new Map();
|
|
7
|
-
map.set(page.id, {
|
|
7
|
+
map.set(page.id, initialLayerNodeStatus?.get(page.id) || {
|
|
8
8
|
visible: true,
|
|
9
9
|
expand: true,
|
|
10
10
|
selected: true,
|
|
@@ -27,10 +27,43 @@ var useNodeStatus = ({ editorService }) => {
|
|
|
27
27
|
const nodeStatusMaps = ref(/* @__PURE__ */ new Map());
|
|
28
28
|
/** 当前页面的节点状态 */
|
|
29
29
|
const nodeStatusMap = computed(() => page.value ? nodeStatusMaps.value.get(page.value.id) : /* @__PURE__ */ new Map());
|
|
30
|
-
watch(
|
|
31
|
-
if (!
|
|
32
|
-
nodeStatusMaps.value.set(
|
|
30
|
+
watch(page, (newPage) => {
|
|
31
|
+
if (!newPage?.id) return;
|
|
32
|
+
nodeStatusMaps.value.set(newPage.id, createPageNodeStatus(newPage, nodeStatusMaps.value.get(newPage.id)));
|
|
33
33
|
}, { immediate: true });
|
|
34
|
+
/**
|
|
35
|
+
* root 整体被替换时(外部 modelValue 变化、历史版本恢复、套件编辑模式进入/退出等):
|
|
36
|
+
* - 仅 watch page 引用还不够,因为 root-change 同步触发时 page 还是旧引用,
|
|
37
|
+
* 等 initService 的异步 IIFE 跑完 editorService.select(...) 后 page 才会
|
|
38
|
+
* 被替换为新 dsl 中的 page;此时上面的 page watch 才会触发重建。
|
|
39
|
+
* - 但若直接同步清空 nodeStatusMaps,会让 nodeStatusMap (computed) 立刻变
|
|
40
|
+
* undefined。上层 LayerPanel 用 `v-if="page && nodeStatusMap"` 渲染组件树,
|
|
41
|
+
* 会瞬间销毁整个面板;若紧接着的异步 select 链路(套件退出等场景)发生
|
|
42
|
+
* 竞态、page 引用未变 / 解析失败,watch(page) 不触发重建,组件树就再也回
|
|
43
|
+
* 不来。
|
|
44
|
+
* - 此外「污染」问题本质来自 createPageNodeStatus 用旧 status 作为新节点
|
|
45
|
+
* initial 值:只要新 root 的 page 是新引用,watch(page) 会触发重建,重建
|
|
46
|
+
* 时基于新 page.items 生成的 map 只会包含新节点 id;旧节点 id 即便残留在
|
|
47
|
+
* initialLayerNodeStatus 中也不会被写入新 map。真正的风险只有「同一 page
|
|
48
|
+
* id 下,新旧 dsl 都存在同一节点 id 但其实是不同节点」这种极端情况——这
|
|
49
|
+
* 在常规业务中不会发生(id 是 uuid)。
|
|
50
|
+
*
|
|
51
|
+
* 综合:root-change 时仅清理「在新 root 中已不存在的 page id」对应缓存,
|
|
52
|
+
* 保留仍然有效的 page status 不动;既避免 v-if 闪断,也不会保留无关 page 的
|
|
53
|
+
* 死缓存。同 page id 的重建交给下方 watch(page) 触发。
|
|
54
|
+
*/
|
|
55
|
+
const rootChangeHandler = (value) => {
|
|
56
|
+
if (!value) {
|
|
57
|
+
nodeStatusMaps.value = /* @__PURE__ */ new Map();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const validPageIds = /* @__PURE__ */ new Set();
|
|
61
|
+
(value.items || []).forEach((p) => {
|
|
62
|
+
if (p?.id !== void 0) validPageIds.add(p.id);
|
|
63
|
+
});
|
|
64
|
+
for (const cachedPageId of Array.from(nodeStatusMaps.value.keys())) if (!validPageIds.has(cachedPageId)) nodeStatusMaps.value.delete(cachedPageId);
|
|
65
|
+
};
|
|
66
|
+
editorService.on("root-change", rootChangeHandler);
|
|
34
67
|
watch(nodes, (nodes) => {
|
|
35
68
|
if (!nodeStatusMap.value) return;
|
|
36
69
|
for (const [id, status] of nodeStatusMap.value.entries()) {
|
|
@@ -63,6 +96,7 @@ var useNodeStatus = ({ editorService }) => {
|
|
|
63
96
|
};
|
|
64
97
|
editorService.on("remove", removeHandler);
|
|
65
98
|
onBeforeUnmount(() => {
|
|
99
|
+
editorService.off("root-change", rootChangeHandler);
|
|
66
100
|
editorService.off("remove", removeHandler);
|
|
67
101
|
editorService.off("add", addHandler);
|
|
68
102
|
});
|
|
@@ -12,7 +12,7 @@ var _hoisted_2 = {
|
|
|
12
12
|
class: "m-editor-breadcrumb-separator"
|
|
13
13
|
};
|
|
14
14
|
var COLLAPSE_RATIO = .8;
|
|
15
|
-
var Breadcrumb_vue_vue_type_script_setup_true_lang_default =
|
|
15
|
+
var Breadcrumb_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
16
16
|
name: "MEditorBreadcrumb",
|
|
17
17
|
__name: "Breadcrumb",
|
|
18
18
|
setup(__props) {
|
|
@@ -4,7 +4,7 @@ import Breadcrumb_default from "./Breadcrumb.js";
|
|
|
4
4
|
import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, renderSlot, unref, withCtx } from "vue";
|
|
5
5
|
//#region packages/editor/src/layouts/workspace/Workspace.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var _hoisted_1 = { class: "m-editor-workspace" };
|
|
7
|
-
var Workspace_vue_vue_type_script_setup_true_lang_default =
|
|
7
|
+
var Workspace_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
8
8
|
name: "MEditorWorkspace",
|
|
9
9
|
__name: "Workspace",
|
|
10
10
|
props: {
|
package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -7,7 +7,7 @@ import { TMagicTooltip } from "@tmagic/design";
|
|
|
7
7
|
import { getIdFromEl } from "@tmagic/utils";
|
|
8
8
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, useTemplateRef, watch, withCtx } from "vue";
|
|
9
9
|
//#region packages/editor/src/layouts/workspace/viewer/NodeListMenu.vue?vue&type=script&setup=true&lang.ts
|
|
10
|
-
var NodeListMenu_vue_vue_type_script_setup_true_lang_default =
|
|
10
|
+
var NodeListMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
11
11
|
__name: "NodeListMenu",
|
|
12
12
|
setup(__props) {
|
|
13
13
|
const services = useServices();
|
|
@@ -11,7 +11,7 @@ import { getOffset } from "@tmagic/stage";
|
|
|
11
11
|
import { calcValueByFontsize, getIdFromEl } from "@tmagic/utils";
|
|
12
12
|
import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, markRaw, nextTick, normalizeStyle, onBeforeUnmount, onMounted, openBlock, renderSlot, resolveDirective, useTemplateRef, watch, watchEffect, withCtx, withDirectives } from "vue";
|
|
13
13
|
//#region packages/editor/src/layouts/workspace/viewer/Stage.vue?vue&type=script&setup=true&lang.ts
|
|
14
|
-
var Stage_vue_vue_type_script_setup_true_lang_default =
|
|
14
|
+
var Stage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
15
15
|
name: "MEditorStage",
|
|
16
16
|
__name: "Stage",
|
|
17
17
|
props: {
|
|
@@ -226,7 +226,7 @@ var Stage_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
226
226
|
left: calcValueByFontsize(doc, left / zoom.value)
|
|
227
227
|
};
|
|
228
228
|
config.data.inputEvent = e;
|
|
229
|
-
editorService.add(config.data, parent);
|
|
229
|
+
editorService.add(config.data, parent, { historySource: "component-panel" });
|
|
230
230
|
}
|
|
231
231
|
};
|
|
232
232
|
return (_ctx, _cache) => {
|
package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -8,7 +8,7 @@ var _hoisted_1 = {
|
|
|
8
8
|
key: 0,
|
|
9
9
|
class: "m-editor-stage-overlay"
|
|
10
10
|
};
|
|
11
|
-
var StageOverlay_vue_vue_type_script_setup_true_lang_default =
|
|
11
|
+
var StageOverlay_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
12
|
__name: "StageOverlay",
|
|
13
13
|
setup(__props) {
|
|
14
14
|
const { stageOverlayService, editorService, uiService } = useServices();
|
|
@@ -8,7 +8,7 @@ import { NodeType } from "@tmagic/core";
|
|
|
8
8
|
import { computed, createBlock, defineComponent, markRaw, openBlock, ref, useTemplateRef, watch } from "vue";
|
|
9
9
|
import { Bottom, Top } from "@element-plus/icons-vue";
|
|
10
10
|
//#region packages/editor/src/layouts/workspace/viewer/ViewerMenu.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
-
var ViewerMenu_vue_vue_type_script_setup_true_lang_default =
|
|
11
|
+
var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
12
|
name: "MEditorViewerMenu",
|
|
13
13
|
__name: "ViewerMenu",
|
|
14
14
|
props: {
|
|
@@ -36,11 +36,11 @@ var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
36
36
|
display: () => canCenter.value,
|
|
37
37
|
handler: () => {
|
|
38
38
|
if (!nodes.value) return;
|
|
39
|
-
editorService.alignCenter(nodes.value);
|
|
39
|
+
editorService.alignCenter(nodes.value, { historySource: "stage-contextmenu" });
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
useCopyMenu(),
|
|
43
|
-
usePasteMenu(menuRef),
|
|
43
|
+
usePasteMenu("stage-contextmenu", menuRef),
|
|
44
44
|
{
|
|
45
45
|
type: "divider",
|
|
46
46
|
direction: "horizontal",
|
|
@@ -55,7 +55,7 @@ var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
55
55
|
icon: markRaw(Top),
|
|
56
56
|
display: () => !isPage(node.value) && !isPageFragment(node.value) && !props.isMultiSelect,
|
|
57
57
|
handler: () => {
|
|
58
|
-
editorService.moveLayer(1);
|
|
58
|
+
editorService.moveLayer(1, { historySource: "stage-contextmenu" });
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
{
|
|
@@ -64,7 +64,7 @@ var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
64
64
|
icon: markRaw(Bottom),
|
|
65
65
|
display: () => !isPage(node.value) && !isPageFragment(node.value) && !props.isMultiSelect,
|
|
66
66
|
handler: () => {
|
|
67
|
-
editorService.moveLayer(-1);
|
|
67
|
+
editorService.moveLayer(-1, { historySource: "stage-contextmenu" });
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
{
|
|
@@ -73,7 +73,7 @@ var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
73
73
|
icon: markRaw(Top),
|
|
74
74
|
display: () => !isPage(node.value) && !isPageFragment(node.value) && !props.isMultiSelect,
|
|
75
75
|
handler: () => {
|
|
76
|
-
editorService.moveLayer(LayerOffset.TOP);
|
|
76
|
+
editorService.moveLayer(LayerOffset.TOP, { historySource: "stage-contextmenu" });
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
{
|
|
@@ -82,16 +82,16 @@ var ViewerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
82
82
|
icon: markRaw(Bottom),
|
|
83
83
|
display: () => !isPage(node.value) && !isPageFragment(node.value) && !props.isMultiSelect,
|
|
84
84
|
handler: () => {
|
|
85
|
-
editorService.moveLayer(LayerOffset.BOTTOM);
|
|
85
|
+
editorService.moveLayer(LayerOffset.BOTTOM, { historySource: "stage-contextmenu" });
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
|
-
useMoveToMenu(services),
|
|
88
|
+
useMoveToMenu(services, "stage-contextmenu"),
|
|
89
89
|
{
|
|
90
90
|
type: "divider",
|
|
91
91
|
direction: "horizontal",
|
|
92
92
|
display: () => !isPage(node.value) && !isPageFragment(node.value) && !props.isMultiSelect
|
|
93
93
|
},
|
|
94
|
-
useDeleteMenu(),
|
|
94
|
+
useDeleteMenu("stage-contextmenu"),
|
|
95
95
|
{
|
|
96
96
|
type: "divider",
|
|
97
97
|
direction: "horizontal"
|