@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.
Files changed (240) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +31 -5
  2. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +21 -113
  3. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +7 -1
  4. package/dist/es/components/CompareForm.js +5 -0
  5. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +196 -0
  6. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  7. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +2 -2
  8. package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
  9. package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +1 -1
  10. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +1 -1
  11. package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +1 -1
  14. package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +7 -7
  15. package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +1 -1
  16. package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/es/editorProps.js +2 -0
  18. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +20 -4
  19. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +3 -6
  20. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +19 -3
  21. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +42 -8
  22. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +14 -6
  24. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +13 -4
  25. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +41 -16
  26. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +2 -2
  27. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +9 -5
  28. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +40 -19
  29. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +17 -9
  30. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +4 -2
  31. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +1 -1
  32. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +59 -12
  33. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +12 -7
  34. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  35. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +9 -3
  36. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +38 -8
  38. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +4 -2
  39. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +1 -1
  40. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +1 -1
  41. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +1 -1
  42. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +1 -1
  43. package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
  44. package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
  45. package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
  46. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
  47. package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
  48. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +1 -1
  49. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +1 -1
  50. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +1 -1
  51. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +1 -1
  52. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +1 -1
  53. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +1 -1
  54. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +1 -1
  55. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +1 -1
  56. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +1 -1
  57. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
  58. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
  59. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
  60. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +11 -3
  61. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +17 -4
  62. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +11 -3
  63. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +15 -3
  64. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +11 -3
  65. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +11 -3
  66. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +9 -6
  67. package/dist/es/hooks/use-code-block-edit.js +7 -4
  68. package/dist/es/hooks/use-data-source-edit.js +5 -2
  69. package/dist/es/hooks/use-stage.js +22 -10
  70. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  71. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  72. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  73. package/dist/es/index.js +14 -3
  74. package/dist/es/initService.js +7 -7
  75. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
  76. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +7 -6
  77. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +14 -9
  78. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +12 -4
  79. package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
  80. package/dist/es/layouts/history-list/Bucket.js +5 -0
  81. package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +71 -0
  82. package/dist/es/layouts/history-list/BucketTab.js +5 -0
  83. package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +62 -0
  84. package/dist/es/layouts/history-list/GroupRow.js +5 -0
  85. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +269 -0
  86. package/dist/es/layouts/history-list/HistoryDiffDialog.js +5 -0
  87. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +287 -0
  88. package/dist/es/layouts/history-list/HistoryListPanel.js +5 -0
  89. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +327 -0
  90. package/dist/es/layouts/history-list/InitialRow.js +5 -0
  91. package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +83 -0
  92. package/dist/es/layouts/history-list/PageTab.js +5 -0
  93. package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +95 -0
  94. package/dist/es/layouts/history-list/composables.js +184 -0
  95. package/dist/es/layouts/history-list/useHistoryList.js +56 -0
  96. package/dist/es/layouts/history-list/useHistoryRevert.js +306 -0
  97. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  98. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +5 -3
  99. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  100. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
  101. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
  102. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +1 -1
  103. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +6 -2
  104. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
  105. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +8 -4
  106. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +4 -4
  107. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +2 -2
  108. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +1 -1
  109. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  110. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +19 -6
  111. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
  112. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +25 -3
  113. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +1 -1
  114. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +6 -6
  115. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +2 -2
  116. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/es/layouts/sidebar/layer/use-node-status.js +38 -4
  118. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
  119. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
  120. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  121. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +2 -2
  122. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  123. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +9 -9
  124. package/dist/es/services/BaseService.js +31 -68
  125. package/dist/es/services/codeBlock.js +286 -8
  126. package/dist/es/services/componentList.js +2 -2
  127. package/dist/es/services/dataSource.js +287 -8
  128. package/dist/es/services/dep.js +21 -9
  129. package/dist/es/services/editor.js +655 -194
  130. package/dist/es/services/events.js +2 -2
  131. package/dist/es/services/history.js +390 -47
  132. package/dist/es/services/keybinding.js +5 -5
  133. package/dist/es/services/props.js +8 -8
  134. package/dist/es/services/stageOverlay.js +2 -2
  135. package/dist/es/services/storage.js +2 -2
  136. package/dist/es/services/ui.js +5 -2
  137. package/dist/es/style.css +456 -8
  138. package/dist/es/utils/code-block.js +122 -0
  139. package/dist/es/utils/content-menu.js +19 -12
  140. package/dist/es/utils/data-source/index.js +2 -0
  141. package/dist/es/utils/dep/worker.js +1 -1
  142. package/dist/es/utils/editor.js +106 -52
  143. package/dist/es/utils/history.js +220 -0
  144. package/dist/es/utils/indexed-db.js +86 -0
  145. package/dist/es/utils/undo-redo.js +80 -1
  146. package/dist/style.css +456 -8
  147. package/dist/tmagic-editor.umd.cjs +9085 -4480
  148. package/package.json +8 -8
  149. package/src/Editor.vue +25 -1
  150. package/src/components/CodeBlockEditor.vue +20 -109
  151. package/src/components/CodeParams.vue +6 -0
  152. package/src/components/CompareForm.vue +277 -0
  153. package/src/components/ToolButton.vue +2 -2
  154. package/src/editorProps.ts +9 -0
  155. package/src/fields/Code.vue +19 -3
  156. package/src/fields/CodeLink.vue +2 -5
  157. package/src/fields/CodeSelect.vue +17 -1
  158. package/src/fields/CodeSelectCol.vue +37 -3
  159. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +23 -3
  160. package/src/fields/DataSourceFieldSelect/Index.vue +9 -2
  161. package/src/fields/DataSourceFields.vue +48 -10
  162. package/src/fields/DataSourceInput.vue +3 -3
  163. package/src/fields/DataSourceMethodSelect.vue +12 -4
  164. package/src/fields/DataSourceMethods.vue +55 -24
  165. package/src/fields/DataSourceMocks.vue +13 -3
  166. package/src/fields/DataSourceSelect.vue +4 -1
  167. package/src/fields/EventSelect.vue +57 -8
  168. package/src/fields/KeyValue.vue +17 -4
  169. package/src/fields/StyleSetter/Index.vue +6 -0
  170. package/src/fields/StyleSetter/components/Border.vue +30 -7
  171. package/src/fields/StyleSetter/components/Box.vue +2 -0
  172. package/src/fields/StyleSetter/pro/Background.vue +15 -1
  173. package/src/fields/StyleSetter/pro/Border.vue +24 -2
  174. package/src/fields/StyleSetter/pro/Font.vue +15 -1
  175. package/src/fields/StyleSetter/pro/Layout.vue +17 -1
  176. package/src/fields/StyleSetter/pro/Position.vue +15 -1
  177. package/src/fields/StyleSetter/pro/Transform.vue +15 -1
  178. package/src/fields/UISelect.vue +5 -2
  179. package/src/hooks/use-code-block-edit.ts +9 -5
  180. package/src/hooks/use-data-source-edit.ts +2 -2
  181. package/src/hooks/use-stage.ts +26 -9
  182. package/src/index.ts +8 -0
  183. package/src/initService.ts +1 -1
  184. package/src/layouts/CodeEditor.vue +17 -5
  185. package/src/layouts/Framework.vue +11 -6
  186. package/src/layouts/NavMenu.vue +12 -3
  187. package/src/layouts/history-list/Bucket.vue +91 -0
  188. package/src/layouts/history-list/BucketTab.vue +72 -0
  189. package/src/layouts/history-list/GroupRow.vue +304 -0
  190. package/src/layouts/history-list/HistoryDiffDialog.vue +273 -0
  191. package/src/layouts/history-list/HistoryListPanel.vue +367 -0
  192. package/src/layouts/history-list/InitialRow.vue +71 -0
  193. package/src/layouts/history-list/PageTab.vue +118 -0
  194. package/src/layouts/history-list/composables.ts +309 -0
  195. package/src/layouts/history-list/useHistoryList.ts +60 -0
  196. package/src/layouts/history-list/useHistoryRevert.ts +405 -0
  197. package/src/layouts/page-bar/PageBar.vue +4 -2
  198. package/src/layouts/props-panel/PropsPanel.vue +5 -1
  199. package/src/layouts/sidebar/ComponentListPanel.vue +9 -5
  200. package/src/layouts/sidebar/Sidebar.vue +8 -3
  201. package/src/layouts/sidebar/code-block/CodeBlockList.vue +5 -5
  202. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +1 -1
  203. package/src/layouts/sidebar/code-block/useContentMenu.ts +1 -1
  204. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +31 -2
  205. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +27 -2
  206. package/src/layouts/sidebar/data-source/useContentMenu.ts +1 -1
  207. package/src/layouts/sidebar/layer/LayerMenu.vue +19 -11
  208. package/src/layouts/sidebar/layer/LayerNodeTool.vue +7 -4
  209. package/src/layouts/sidebar/layer/use-node-status.ts +64 -12
  210. package/src/layouts/workspace/viewer/Stage.vue +1 -1
  211. package/src/layouts/workspace/viewer/ViewerMenu.vue +8 -8
  212. package/src/services/BaseService.ts +35 -86
  213. package/src/services/codeBlock.ts +361 -5
  214. package/src/services/dataSource.ts +336 -6
  215. package/src/services/dep.ts +32 -9
  216. package/src/services/editor.ts +834 -194
  217. package/src/services/history.ts +509 -49
  218. package/src/services/keybinding.ts +3 -3
  219. package/src/services/props.ts +2 -2
  220. package/src/services/ui.ts +7 -0
  221. package/src/theme/history-list-panel.scss +557 -0
  222. package/src/theme/page-bar.scss +0 -4
  223. package/src/theme/props-panel.scss +3 -3
  224. package/src/theme/style-setter/border.scss +4 -1
  225. package/src/theme/theme.scss +1 -0
  226. package/src/type.ts +594 -31
  227. package/src/utils/code-block.ts +150 -0
  228. package/src/utils/content-menu.ts +25 -13
  229. package/src/utils/data-source/index.ts +2 -0
  230. package/src/utils/dep/worker.ts +5 -3
  231. package/src/utils/editor.ts +170 -61
  232. package/src/utils/history.ts +286 -0
  233. package/src/utils/index.ts +3 -0
  234. package/src/utils/indexed-db.ts +122 -0
  235. package/src/utils/undo-redo.ts +111 -0
  236. package/types/index.d.ts +3173 -889
  237. package/dist/es/utils/compose.js +0 -44
  238. package/dist/es/utils/editor-history.js +0 -100
  239. package/src/utils/compose.ts +0 -52
  240. 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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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 = ref(props.data?.status);
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: "layer",
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: "code-block",
108
+ $key: SideItemKey.CODE_BLOCK,
105
109
  type: "component",
106
110
  icon: EditPen,
107
111
  text: "代码编辑",
@@ -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 = /* @__PURE__ */ defineComponent({
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}`), ["stop"])
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),
@@ -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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
9
+ var DataSourceConfigPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
10
  name: "MEditorDataSourceConfigPanel",
11
11
  __name: "DataSourceConfigPanel",
12
- props: /* @__PURE__ */ mergeModels({
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: /* @__PURE__ */ mergeModels([
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
- dataSourceConfig.value = dataSourceService.getFormConfig(initValues.value.type);
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);
@@ -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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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(() => page.value?.id, (pageId) => {
31
- if (!pageId) return;
32
- nodeStatusMaps.value.set(pageId, createPageNodeStatus(page.value, nodeStatusMaps.value.get(pageId)));
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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
7
+ var Workspace_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  name: "MEditorWorkspace",
9
9
  __name: "Workspace",
10
10
  props: {
@@ -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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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) => {
@@ -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 = /* @__PURE__ */ defineComponent({
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 = /* @__PURE__ */ defineComponent({
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"