@tmagic/editor 1.8.0-beta.1 → 1.8.0-beta.11

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 (232) 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 +3 -3
  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 +1 -1
  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 +28 -6
  38. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +1 -1
  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 +1 -1
  61. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +1 -1
  62. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +1 -1
  63. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +1 -1
  64. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +1 -1
  65. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +1 -1
  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 +294 -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 +313 -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 +1 -1
  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 +105 -51
  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 +11149 -6646
  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 +2 -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/components/Border.vue +15 -6
  170. package/src/fields/UISelect.vue +5 -2
  171. package/src/hooks/use-code-block-edit.ts +9 -5
  172. package/src/hooks/use-data-source-edit.ts +2 -2
  173. package/src/hooks/use-stage.ts +26 -9
  174. package/src/index.ts +8 -0
  175. package/src/initService.ts +1 -1
  176. package/src/layouts/CodeEditor.vue +17 -5
  177. package/src/layouts/Framework.vue +11 -6
  178. package/src/layouts/NavMenu.vue +12 -3
  179. package/src/layouts/history-list/Bucket.vue +91 -0
  180. package/src/layouts/history-list/BucketTab.vue +72 -0
  181. package/src/layouts/history-list/GroupRow.vue +304 -0
  182. package/src/layouts/history-list/HistoryDiffDialog.vue +281 -0
  183. package/src/layouts/history-list/HistoryListPanel.vue +367 -0
  184. package/src/layouts/history-list/InitialRow.vue +71 -0
  185. package/src/layouts/history-list/PageTab.vue +118 -0
  186. package/src/layouts/history-list/composables.ts +309 -0
  187. package/src/layouts/history-list/useHistoryList.ts +60 -0
  188. package/src/layouts/history-list/useHistoryRevert.ts +421 -0
  189. package/src/layouts/page-bar/PageBar.vue +4 -2
  190. package/src/layouts/props-panel/PropsPanel.vue +5 -1
  191. package/src/layouts/sidebar/ComponentListPanel.vue +9 -5
  192. package/src/layouts/sidebar/Sidebar.vue +8 -3
  193. package/src/layouts/sidebar/code-block/CodeBlockList.vue +5 -5
  194. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +1 -1
  195. package/src/layouts/sidebar/code-block/useContentMenu.ts +1 -1
  196. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +31 -2
  197. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +27 -2
  198. package/src/layouts/sidebar/data-source/useContentMenu.ts +1 -1
  199. package/src/layouts/sidebar/layer/LayerMenu.vue +19 -11
  200. package/src/layouts/sidebar/layer/LayerNodeTool.vue +7 -4
  201. package/src/layouts/sidebar/layer/use-node-status.ts +9 -6
  202. package/src/layouts/workspace/viewer/Stage.vue +1 -1
  203. package/src/layouts/workspace/viewer/ViewerMenu.vue +8 -8
  204. package/src/services/BaseService.ts +35 -86
  205. package/src/services/codeBlock.ts +361 -5
  206. package/src/services/dataSource.ts +336 -6
  207. package/src/services/dep.ts +32 -9
  208. package/src/services/editor.ts +834 -194
  209. package/src/services/history.ts +509 -49
  210. package/src/services/keybinding.ts +3 -3
  211. package/src/services/props.ts +2 -2
  212. package/src/services/ui.ts +7 -0
  213. package/src/theme/history-list-panel.scss +557 -0
  214. package/src/theme/page-bar.scss +0 -4
  215. package/src/theme/props-panel.scss +3 -3
  216. package/src/theme/style-setter/border.scss +4 -1
  217. package/src/theme/theme.scss +1 -0
  218. package/src/type.ts +613 -31
  219. package/src/utils/code-block.ts +150 -0
  220. package/src/utils/content-menu.ts +25 -13
  221. package/src/utils/data-source/index.ts +2 -0
  222. package/src/utils/dep/worker.ts +5 -3
  223. package/src/utils/editor.ts +166 -60
  224. package/src/utils/history.ts +286 -0
  225. package/src/utils/index.ts +3 -0
  226. package/src/utils/indexed-db.ts +122 -0
  227. package/src/utils/undo-redo.ts +111 -0
  228. package/types/index.d.ts +3197 -896
  229. package/dist/es/utils/compose.js +0 -44
  230. package/dist/es/utils/editor-history.js +0 -100
  231. package/src/utils/compose.ts +0 -52
  232. package/src/utils/editor-history.ts +0 -138
@@ -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,
@@ -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"
@@ -1,49 +1,39 @@
1
- import { compose } from "../utils/compose.js";
2
1
  import { EventEmitter } from "events";
3
2
  //#region packages/editor/src/services/BaseService.ts
4
3
  var methodName = (prefix, name) => `${prefix}${name[0].toUpperCase()}${name.substring(1)}`;
5
4
  var isError = (error) => Object.prototype.toString.call(error) === "[object Error]";
6
- var doAction = (args, scope, sourceMethod, beforeMethodName, afterMethodName, fn) => {
7
- try {
8
- let beforeArgs = args;
9
- for (const beforeMethod of scope.pluginOptionsList[beforeMethodName]) {
10
- beforeArgs = beforeMethod(...beforeArgs) || [];
11
- if (isError(beforeArgs)) throw beforeArgs;
12
- if (!Array.isArray(beforeArgs)) beforeArgs = [beforeArgs];
13
- }
14
- let returnValue = fn(beforeArgs, sourceMethod.bind(scope));
15
- for (const afterMethod of scope.pluginOptionsList[afterMethodName]) {
16
- returnValue = afterMethod(returnValue, ...beforeArgs);
17
- if (isError(returnValue)) throw returnValue;
18
- }
19
- return returnValue;
20
- } catch (error) {
21
- throw error;
5
+ var doAction = (args, scope, sourceMethod, beforeMethodName, afterMethodName) => {
6
+ let beforeArgs = args;
7
+ for (const beforeMethod of scope.pluginOptionsList[beforeMethodName]) {
8
+ beforeArgs = beforeMethod(...beforeArgs) || [];
9
+ if (isError(beforeArgs)) throw beforeArgs;
10
+ if (!Array.isArray(beforeArgs)) beforeArgs = [beforeArgs];
11
+ }
12
+ let returnValue = sourceMethod.apply(scope, beforeArgs);
13
+ for (const afterMethod of scope.pluginOptionsList[afterMethodName]) {
14
+ returnValue = afterMethod(returnValue, ...beforeArgs);
15
+ if (isError(returnValue)) throw returnValue;
22
16
  }
17
+ return returnValue;
23
18
  };
24
- var doAsyncAction = async (args, scope, sourceMethod, beforeMethodName, afterMethodName, fn) => {
25
- try {
26
- let beforeArgs = args;
27
- for (const beforeMethod of scope.pluginOptionsList[beforeMethodName]) {
28
- beforeArgs = await beforeMethod(...beforeArgs) || [];
29
- if (isError(beforeArgs)) throw beforeArgs;
30
- if (!Array.isArray(beforeArgs)) beforeArgs = [beforeArgs];
31
- }
32
- let returnValue = await fn(beforeArgs, sourceMethod.bind(scope));
33
- for (const afterMethod of scope.pluginOptionsList[afterMethodName]) {
34
- returnValue = await afterMethod(returnValue, ...beforeArgs);
35
- if (isError(returnValue)) throw returnValue;
36
- }
37
- return returnValue;
38
- } catch (error) {
39
- throw error;
19
+ var doAsyncAction = async (args, scope, sourceMethod, beforeMethodName, afterMethodName) => {
20
+ let beforeArgs = args;
21
+ for (const beforeMethod of scope.pluginOptionsList[beforeMethodName]) {
22
+ beforeArgs = await beforeMethod(...beforeArgs) || [];
23
+ if (isError(beforeArgs)) throw beforeArgs;
24
+ if (!Array.isArray(beforeArgs)) beforeArgs = [beforeArgs];
40
25
  }
26
+ let returnValue = await sourceMethod.apply(scope, beforeArgs);
27
+ for (const afterMethod of scope.pluginOptionsList[afterMethodName]) {
28
+ returnValue = await afterMethod(returnValue, ...beforeArgs);
29
+ if (isError(returnValue)) throw returnValue;
30
+ }
31
+ return returnValue;
41
32
  };
42
33
  /**
43
- * 提供两种方式对Class进行扩展
44
- * 方法1:
34
+ * Class进行扩展
45
35
  * 给Class中的每个方法都添加before after两个钩子
46
- * 给Class添加一个usePlugin方法,use方法可以传入一个包含before或者after方法的对象
36
+ * 给Class添加一个usePlugin方法,usePlugin方法可以传入一个包含before或者after方法的对象
47
37
  *
48
38
  * 例如:
49
39
  * Class EditorService extends BaseService {
@@ -68,27 +58,9 @@ var doAsyncAction = async (args, scope, sourceMethod, beforeMethodName, afterMet
68
58
  *
69
59
  * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after第一个参数则是原方法的return值;
70
60
  * 如需终止后续方法调用可以return new Error();
71
- *
72
- * 方法2:
73
- * 给Class中的每个方法都添加中间件
74
- * 给Class添加一个use方法,use方法可以传入一个包含源对象方法名作为key值的对象
75
- *
76
- * 例如:
77
- * Class EditorService extends BaseService {
78
- * constructor() {
79
- * super([ { name: 'add', isAsync: true },]);
80
- * }
81
- * add(value) { return result; }
82
- * };
83
- *
84
- * const editorService = new EditorService();
85
- * editorService.use({
86
- * add(value, next) { console.log(value); next() },
87
- * });
88
61
  */
89
- var BaseService_default = class extends EventEmitter {
62
+ var BaseService = class extends EventEmitter {
90
63
  pluginOptionsList = {};
91
- middleware = {};
92
64
  taskList = [];
93
65
  doingTask = false;
94
66
  constructor(methods = [], serialMethods = []) {
@@ -100,14 +72,12 @@ var BaseService_default = class extends EventEmitter {
100
72
  const afterMethodName = methodName("after", propertyName);
101
73
  this.pluginOptionsList[beforeMethodName] = [];
102
74
  this.pluginOptionsList[afterMethodName] = [];
103
- this.middleware[propertyName] = [];
104
- const fn = compose(this.middleware[propertyName], isAsync);
105
75
  Object.defineProperty(scope, propertyName, { value: isAsync ? async (...args) => {
106
- if (!serialMethods.includes(propertyName)) return doAsyncAction(args, scope, sourceMethod, beforeMethodName, afterMethodName, fn);
76
+ if (!serialMethods.includes(propertyName)) return doAsyncAction(args, scope, sourceMethod, beforeMethodName, afterMethodName);
107
77
  const promise = new Promise((resolve, reject) => {
108
78
  this.taskList.push(async () => {
109
79
  try {
110
- resolve(await doAsyncAction(args, scope, sourceMethod, beforeMethodName, afterMethodName, fn));
80
+ resolve(await doAsyncAction(args, scope, sourceMethod, beforeMethodName, afterMethodName));
111
81
  } catch (e) {
112
82
  reject(e);
113
83
  }
@@ -115,15 +85,9 @@ var BaseService_default = class extends EventEmitter {
115
85
  });
116
86
  if (!this.doingTask) this.doTask();
117
87
  return promise;
118
- } : (...args) => doAction(args, scope, sourceMethod, beforeMethodName, afterMethodName, fn) });
88
+ } : (...args) => doAction(args, scope, sourceMethod, beforeMethodName, afterMethodName) });
119
89
  });
120
90
  }
121
- /**
122
- * @deprecated 请使用usePlugin代替
123
- */
124
- use(options) {
125
- for (const [methodName, method] of Object.entries(options)) if (typeof method === "function") this.middleware[methodName].push(method);
126
- }
127
91
  usePlugin(options) {
128
92
  for (const [methodName, method] of Object.entries(options)) if (typeof method === "function" && !this.pluginOptionsList[methodName].includes(method)) this.pluginOptionsList[methodName].push(method);
129
93
  }
@@ -132,7 +96,6 @@ var BaseService_default = class extends EventEmitter {
132
96
  }
133
97
  removeAllPlugins() {
134
98
  for (const key of Object.keys(this.pluginOptionsList)) this.pluginOptionsList[key] = [];
135
- for (const key of Object.keys(this.middleware)) this.middleware[key] = [];
136
99
  }
137
100
  async doTask() {
138
101
  this.doingTask = true;
@@ -145,4 +108,4 @@ var BaseService_default = class extends EventEmitter {
145
108
  }
146
109
  };
147
110
  //#endregion
148
- export { BaseService_default as default };
111
+ export { BaseService as default };