@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
@@ -1,12 +1,15 @@
1
1
  import CodeBlockEditor_default from "../components/CodeBlockEditor.js";
2
2
  import { MagicTable } from "@tmagic/table";
3
3
  import { TMagicButton, tMagicMessageBox } from "@tmagic/design";
4
- import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
4
+ import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, nextTick, onMounted, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
5
5
  import { cloneDeep } from "lodash-es";
6
6
  //#region packages/editor/src/fields/DataSourceMethods.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = { class: "m-editor-data-source-methods" };
8
- var _hoisted_2 = { class: "m-editor-data-source-methods-footer" };
9
- var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var _hoisted_2 = {
9
+ key: 0,
10
+ class: "m-editor-data-source-methods-footer"
11
+ };
12
+ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
13
  name: "MFieldsDataSourceMethods",
11
14
  __name: "DataSourceMethods",
12
15
  props: {
@@ -28,9 +31,25 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
28
31
  setup(__props, { emit: __emit }) {
29
32
  const props = __props;
30
33
  const emit = __emit;
34
+ const mForm = inject("mForm");
35
+ /** 对比模式下隐藏新增/编辑/删除等操作按钮,仅保留只读展示。 */
36
+ const isCompare = computed(() => Boolean(mForm?.isCompare));
31
37
  const codeConfig = ref();
32
38
  const codeBlockEditorRef = useTemplateRef("codeBlockEditor");
33
39
  let editIndex = -1;
40
+ const editMethod = (method, index) => {
41
+ let codeContent = "({ params, dataSource, app }) => {\n // place your code here\n}";
42
+ if (method.content) if (typeof method.content !== "string") codeContent = method.content.toString();
43
+ else codeContent = method.content;
44
+ codeConfig.value = {
45
+ ...cloneDeep(method),
46
+ content: codeContent
47
+ };
48
+ editIndex = index;
49
+ nextTick(() => {
50
+ codeBlockEditorRef.value?.show();
51
+ });
52
+ };
34
53
  const methodColumns = [
35
54
  {
36
55
  label: "名称",
@@ -55,17 +74,7 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
55
74
  actions: [{
56
75
  text: "编辑",
57
76
  handler: (method, index) => {
58
- let codeContent = "({ params, dataSource, app }) => {\n // place your code here\n}";
59
- if (method.content) if (typeof method.content !== "string") codeContent = method.content.toString();
60
- else codeContent = method.content;
61
- codeConfig.value = {
62
- ...cloneDeep(method),
63
- content: codeContent
64
- };
65
- editIndex = index;
66
- nextTick(() => {
67
- codeBlockEditorRef.value?.show();
68
- });
77
+ editMethod(method, index);
69
78
  }
70
79
  }, {
71
80
  text: "删除",
@@ -78,6 +87,8 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
78
87
  }]
79
88
  }
80
89
  ];
90
+ /** 对比模式下移除「操作」列(编辑/删除按钮),仅保留只读列。 */
91
+ const displayColumns = computed(() => isCompare.value ? methodColumns.filter((col) => !col.actions) : methodColumns);
81
92
  const createCodeHandler = () => {
82
93
  codeConfig.value = {
83
94
  name: "",
@@ -111,14 +122,24 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
111
122
  codeConfig.value = void 0;
112
123
  codeBlockEditorRef.value?.hide();
113
124
  };
125
+ /** 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的方法名 */
126
+ const editingMethodName = inject("editingDataSourceMethodName", computed(() => ""));
127
+ onMounted(() => {
128
+ const methodName = editingMethodName.value;
129
+ if (!methodName) return;
130
+ const methods = props.model[props.name] || [];
131
+ const index = methods.findIndex((method) => method.name === methodName);
132
+ if (index === -1) return;
133
+ editMethod(methods[index], index);
134
+ });
114
135
  return (_ctx, _cache) => {
115
136
  return openBlock(), createElementBlock("div", _hoisted_1, [
116
137
  createVNode(unref(MagicTable), {
117
138
  data: __props.model[__props.name],
118
- columns: methodColumns,
139
+ columns: displayColumns.value,
119
140
  border: true
120
- }, null, 8, ["data"]),
121
- createElementVNode("div", _hoisted_2, [createVNode(unref(TMagicButton), {
141
+ }, null, 8, ["data", "columns"]),
142
+ !isCompare.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(TMagicButton), {
122
143
  size: "small",
123
144
  type: "primary",
124
145
  disabled: __props.disabled,
@@ -127,9 +148,9 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
127
148
  }, {
128
149
  default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("添加", -1)])]),
129
150
  _: 1
130
- }, 8, ["disabled"])]),
151
+ }, 8, ["disabled"])])) : createCommentVNode("v-if", true),
131
152
  codeConfig.value ? (openBlock(), createBlock(CodeBlockEditor_default, {
132
- key: 0,
153
+ key: 1,
133
154
  ref: "codeBlockEditor",
134
155
  disabled: __props.disabled,
135
156
  content: codeConfig.value,
@@ -7,14 +7,17 @@ import { MFormBox } from "@tmagic/form";
7
7
  import { MagicTable } from "@tmagic/table";
8
8
  import { TMagicButton, TMagicSwitch, tMagicMessageBox } from "@tmagic/design";
9
9
  import { getDefaultValueFromFields } from "@tmagic/utils";
10
- import { createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
10
+ import { computed, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
11
11
  //#region packages/editor/src/fields/DataSourceMocks.vue?vue&type=script&setup=true&lang.ts
12
12
  var _hoisted_1 = { class: "m-editor-data-source-fields" };
13
- var _hoisted_2 = { class: "m-editor-data-source-fields-footer" };
14
- var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ var _hoisted_2 = {
14
+ key: 0,
15
+ class: "m-editor-data-source-fields-footer"
16
+ };
17
+ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
15
18
  name: "MFieldsDataSourceMocks",
16
19
  __name: "DataSourceMocks",
17
- props: /* @__PURE__ */ mergeModels({
20
+ props: /*@__PURE__*/ mergeModels({
18
21
  config: {},
19
22
  model: {},
20
23
  initValues: {},
@@ -37,11 +40,14 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
37
40
  },
38
41
  "visibleModifiers": {}
39
42
  }),
40
- emits: /* @__PURE__ */ mergeModels(["change"], ["update:width", "update:visible"]),
43
+ emits: /*@__PURE__*/ mergeModels(["change"], ["update:width", "update:visible"]),
41
44
  setup(__props, { emit: __emit }) {
42
45
  const props = __props;
43
46
  const emit = __emit;
44
47
  const { uiService } = useServices();
48
+ const mForm = inject("mForm");
49
+ /** 对比模式下隐藏新增/编辑/删除等操作按钮,仅保留只读展示。 */
50
+ const isCompare = computed(() => Boolean(mForm?.isCompare));
45
51
  const width = useModel(__props, "width");
46
52
  const drawerTitle = ref("");
47
53
  const formValues = ref({});
@@ -175,6 +181,8 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
175
181
  }]
176
182
  }
177
183
  ];
184
+ /** 对比模式下移除「操作」列(编辑/删除按钮),仅保留只读列。 */
185
+ const displayColumns = computed(() => isCompare.value ? columns.filter((col) => !col.actions) : columns);
178
186
  const newHandler = () => {
179
187
  const isFirstRow = props.model[props.name].length === 0;
180
188
  formValues.value = {
@@ -209,9 +217,9 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
209
217
  return openBlock(), createElementBlock("div", _hoisted_1, [
210
218
  createVNode(unref(MagicTable), {
211
219
  data: __props.model[__props.name],
212
- columns
213
- }, null, 8, ["data"]),
214
- createElementVNode("div", _hoisted_2, [createVNode(unref(TMagicButton), {
220
+ columns: displayColumns.value
221
+ }, null, 8, ["data", "columns"]),
222
+ !isCompare.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(TMagicButton), {
215
223
  size: "small",
216
224
  type: "primary",
217
225
  disabled: __props.disabled,
@@ -220,7 +228,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
220
228
  }, {
221
229
  default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("添加", -1)])]),
222
230
  _: 1
223
- }, 8, ["disabled"])]),
231
+ }, 8, ["disabled"])])) : createCommentVNode("v-if", true),
224
232
  createVNode(FloatingBox_default, {
225
233
  visible: addDialogVisible.value,
226
234
  "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => addDialogVisible.value = $event),
@@ -7,7 +7,7 @@ import { computed, createBlock, createCommentVNode, createElementBlock, createVN
7
7
  import { Edit, View } from "@element-plus/icons-vue";
8
8
  //#region packages/editor/src/fields/DataSourceSelect.vue?vue&type=script&setup=true&lang.ts
9
9
  var _hoisted_1 = { class: "m-fields-data-source-select" };
10
- var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "MFieldsDataSourceSelect",
12
12
  __name: "DataSourceSelect",
13
13
  props: {
@@ -34,6 +34,8 @@ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
34
34
  const eventBus = inject("eventBus");
35
35
  const dataSources = computed(() => dataSourceService.get("dataSources"));
36
36
  const notEditable = computed(() => filterFunction(mForm, props.config.notEditable, props));
37
+ /** 对比模式下隐藏查看/编辑操作按钮,仅保留只读展示。 */
38
+ const isCompare = computed(() => Boolean(mForm?.isCompare));
37
39
  const hasDataSourceSidePanel = computed(() => uiService.get("sideBarItems").find((item) => item.$key === SideItemKey.DATA_SOURCE));
38
40
  const selectConfig = computed(() => {
39
41
  const { type, dataSourceType, value, ...config } = props.config;
@@ -80,7 +82,7 @@ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
80
82
  "disabled",
81
83
  "config",
82
84
  "last-values"
83
- ]), __props.model[__props.name] && hasDataSourceSidePanel.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
85
+ ]), __props.model[__props.name] && hasDataSourceSidePanel.value && !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
84
86
  key: 0,
85
87
  content: notEditable.value ? "查看" : "编辑"
86
88
  }, {
@@ -3,7 +3,7 @@ import { getCascaderOptionsFromFields, getFieldType } from "../utils/data-source
3
3
  import { MGroupList, filterFunction } from "@tmagic/form";
4
4
  import { computed, createBlock, defineComponent, inject, openBlock, unref } from "vue";
5
5
  //#region packages/editor/src/fields/DisplayConds.vue?vue&type=script&setup=true&lang.ts
6
- var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
7
  name: "m-fields-display-conds",
8
8
  __name: "DisplayConds",
9
9
  props: {
@@ -4,7 +4,7 @@ import { MContainer, MPanel, MTable, defineFormItem } from "@tmagic/form";
4
4
  import { TMagicButton } from "@tmagic/design";
5
5
  import { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, traverseNode } from "@tmagic/utils";
6
6
  import { ActionType } from "@tmagic/core";
7
- import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
7
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
8
8
  import { has } from "lodash-es";
9
9
  import { Delete } from "@element-plus/icons-vue";
10
10
  //#region packages/editor/src/fields/EventSelect.vue?vue&type=script&setup=true&lang.ts
@@ -13,7 +13,7 @@ var _hoisted_2 = {
13
13
  key: 1,
14
14
  class: "fullWidth"
15
15
  };
16
- var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
16
+ var EventSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
17
17
  name: "MFieldsEventSelect",
18
18
  __name: "EventSelect",
19
19
  props: {
@@ -243,6 +243,39 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
243
243
  if (props.model[props.name].length === 0) return false;
244
244
  return !has(props.model[props.name][0], "actions");
245
245
  });
246
+ /**
247
+ * 对比模式判定:
248
+ *
249
+ * event-select 内部由「事件列表 + 嵌套子表单」组成,属于复合字段。父级 `MFormContainer` 已将其
250
+ * 归入「自接管对比字段」(见 Container.vue 的 `SELF_DIFF_FIELD_TYPES`),即对比时只渲染一次本组件,
251
+ * 并把当前值 `model` 与历史值 `lastValues` 一并传入,由本组件把 `is-compare`/`lastValues` 透传给
252
+ * 内部的 MPanel / MFormContainer,逐项(事件名、动作)展示前后差异。
253
+ *
254
+ * 仅当存在历史值时才启用对比,避免 lastValues 缺失时退化为「全部新增」的空对比。
255
+ */
256
+ const isCompareMode = computed(() => Boolean(props.isCompare && props.lastValues));
257
+ /**
258
+ * 待渲染的事件卡片列表。
259
+ *
260
+ * - 非对比模式:直接映射当前事件列表,`lastCardItem` 为空;
261
+ * - 对比模式:按索引对齐当前值与历史值,取两者长度的最大值,使得「新增」(仅当前有)与
262
+ * 「删除」(仅历史有)的事件都能被渲染出来;缺失的一侧用空对象兜底,从而让子级正确高亮差异。
263
+ */
264
+ const displayList = computed(() => {
265
+ const current = props.model[props.name] || [];
266
+ if (!isCompareMode.value) return current.map((cardItem, index) => ({
267
+ cardItem,
268
+ lastCardItem: void 0,
269
+ index
270
+ }));
271
+ const last = props.lastValues?.[props.name] || [];
272
+ const length = Math.max(current.length, last.length);
273
+ return Array.from({ length }, (_, index) => ({
274
+ cardItem: current[index] ?? {},
275
+ lastCardItem: last[index] ?? {},
276
+ index
277
+ }));
278
+ });
246
279
  const addEvent = () => {
247
280
  const defaultEvent = {
248
281
  name: "",
@@ -267,14 +300,19 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
267
300
  size: __props.size,
268
301
  disabled: __props.disabled,
269
302
  model: __props.model,
303
+ "last-values": __props.lastValues,
304
+ "is-compare": isCompareMode.value,
270
305
  config: tableConfig.value,
271
306
  onChange: onChangeHandler
272
307
  }, null, 8, [
273
308
  "size",
274
309
  "disabled",
275
310
  "model",
311
+ "last-values",
312
+ "is-compare",
276
313
  "config"
277
- ])) : (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(TMagicButton), {
314
+ ])) : (openBlock(), createElementBlock("div", _hoisted_2, [!isCompareMode.value ? (openBlock(), createBlock(unref(TMagicButton), {
315
+ key: 0,
278
316
  class: "create-button",
279
317
  type: "primary",
280
318
  size: __props.size,
@@ -283,44 +321,51 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
283
321
  }, {
284
322
  default: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode("添加事件", -1)])]),
285
323
  _: 1
286
- }, 8, ["size", "disabled"]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.model[__props.name], (cardItem, index) => {
324
+ }, 8, ["size", "disabled"])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(displayList.value, (entry) => {
287
325
  return openBlock(), createBlock(unref(MPanel), {
288
- key: index,
326
+ key: entry.index,
289
327
  disabled: __props.disabled,
290
328
  size: __props.size,
291
- prop: `${__props.prop}.${index}`,
329
+ prop: `${__props.prop}.${entry.index}`,
292
330
  config: actionsConfig.value,
293
- model: cardItem,
331
+ model: entry.cardItem,
332
+ "last-values": entry.lastCardItem,
333
+ "is-compare": isCompareMode.value,
294
334
  "label-width": __props.config.labelWidth || "100px",
295
335
  onChange: onChangeHandler
296
336
  }, {
297
337
  header: withCtx(() => [createVNode(unref(MContainer), {
298
338
  class: "fullWidth",
299
339
  config: eventNameConfig.value,
300
- model: cardItem,
340
+ model: entry.cardItem,
341
+ "last-values": entry.lastCardItem,
342
+ "is-compare": isCompareMode.value,
301
343
  disabled: __props.disabled,
302
344
  size: __props.size,
303
- prop: `${__props.prop}.${index}`,
345
+ prop: `${__props.prop}.${entry.index}`,
304
346
  onChange: eventNameChangeHandler
305
347
  }, null, 8, [
306
348
  "config",
307
349
  "model",
350
+ "last-values",
351
+ "is-compare",
308
352
  "disabled",
309
353
  "size",
310
354
  "prop"
311
- ]), createVNode(unref(TMagicButton), {
355
+ ]), !isCompareMode.value ? (openBlock(), createBlock(unref(TMagicButton), {
356
+ key: 0,
312
357
  style: { "color": "#f56c6c" },
313
358
  link: "",
314
359
  icon: unref(Delete),
315
360
  disabled: __props.disabled,
316
361
  size: __props.size,
317
- onClick: ($event) => removeEvent(Number(index))
362
+ onClick: ($event) => removeEvent(Number(entry.index))
318
363
  }, null, 8, [
319
364
  "icon",
320
365
  "disabled",
321
366
  "size",
322
367
  "onClick"
323
- ])]),
368
+ ])) : createCommentVNode("v-if", true)]),
324
369
  _: 2
325
370
  }, 1032, [
326
371
  "disabled",
@@ -328,6 +373,8 @@ var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
328
373
  "prop",
329
374
  "config",
330
375
  "model",
376
+ "last-values",
377
+ "is-compare",
331
378
  "label-width"
332
379
  ]);
333
380
  }), 128))]))]);
@@ -1,12 +1,12 @@
1
1
  import CodeEditor_default from "../layouts/CodeEditor.js";
2
2
  import CodeIcon_default from "../icons/CodeIcon.js";
3
3
  import { TMagicButton, TMagicInput } from "@tmagic/design";
4
- import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, renderList, unref, watchEffect, withCtx } from "vue";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, renderList, unref, watchEffect, withCtx } from "vue";
5
5
  import { Delete, Plus } from "@element-plus/icons-vue";
6
6
  //#region packages/editor/src/fields/KeyValue.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = { class: "m-fields-key-value" };
8
8
  var _hoisted_2 = { key: 0 };
9
- var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
+ var KeyValue_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
10
  name: "MFieldsKeyValue",
11
11
  __name: "KeyValue",
12
12
  props: {
@@ -28,6 +28,9 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
28
28
  setup(__props, { emit: __emit }) {
29
29
  const props = __props;
30
30
  const emit = __emit;
31
+ const mForm = inject("mForm");
32
+ /** 对比模式下隐藏增删/代码切换等操作按钮,仅保留只读展示。 */
33
+ const isCompare = computed(() => Boolean(mForm?.isCompare));
31
34
  const records = ref([]);
32
35
  const showCode = ref(false);
33
36
  watchEffect(() => {
@@ -98,7 +101,8 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
98
101
  "disabled",
99
102
  "size"
100
103
  ]),
101
- createVNode(unref(TMagicButton), {
104
+ !isCompare.value ? (openBlock(), createBlock(unref(TMagicButton), {
105
+ key: 0,
102
106
  class: "m-fields-key-value-delete",
103
107
  type: "danger",
104
108
  size: __props.size,
@@ -112,9 +116,10 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
112
116
  "disabled",
113
117
  "icon",
114
118
  "onClick"
115
- ])
119
+ ])) : createCommentVNode("v-if", true)
116
120
  ]);
117
- }), 128)), createVNode(unref(TMagicButton), {
121
+ }), 128)), !isCompare.value ? (openBlock(), createBlock(unref(TMagicButton), {
122
+ key: 0,
118
123
  type: "primary",
119
124
  size: __props.size,
120
125
  disabled: __props.disabled,
@@ -128,7 +133,7 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
128
133
  "size",
129
134
  "disabled",
130
135
  "icon"
131
- ])])) : createCommentVNode("v-if", true),
136
+ ])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
132
137
  __props.config.advanced && showCode.value ? (openBlock(), createBlock(CodeEditor_default, {
133
138
  key: 1,
134
139
  "editor-custom-type": "m-fields-key-value",
@@ -142,7 +147,7 @@ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
142
147
  parse: true,
143
148
  onSave: save
144
149
  }, null, 8, ["init-values", "options"])) : createCommentVNode("v-if", true),
145
- __props.config.advanced ? (openBlock(), createBlock(unref(TMagicButton), {
150
+ __props.config.advanced && !isCompare.value ? (openBlock(), createBlock(unref(TMagicButton), {
146
151
  key: 2,
147
152
  size: "default",
148
153
  disabled: __props.disabled,
@@ -7,7 +7,7 @@ import { Edit } from "@element-plus/icons-vue";
7
7
  //#region packages/editor/src/fields/PageFragmentSelect.vue?vue&type=script&setup=true&lang.ts
8
8
  var _hoisted_1 = { class: "m-fields-page-fragment-select" };
9
9
  var _hoisted_2 = { class: "page-fragment-select-container" };
10
- var PageFragmentSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var PageFragmentSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "MFieldsPageFragmentSelect",
12
12
  __name: "PageFragmentSelect",
13
13
  props: {
@@ -9,7 +9,7 @@ import { TMagicCollapse, TMagicCollapseItem } from "@tmagic/design";
9
9
  import { Fragment, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, openBlock, renderList, resolveDynamicComponent, shallowRef, toDisplayString, unref, withCtx } from "vue";
10
10
  import { Grid } from "@element-plus/icons-vue";
11
11
  //#region packages/editor/src/fields/StyleSetter/Index.vue?vue&type=script&setup=true&lang.ts
12
- var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  name: "MFieldsStyleSetter",
14
14
  __name: "Index",
15
15
  props: {
@@ -24,7 +24,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
24
24
  lastValues: {},
25
25
  isCompare: { type: Boolean }
26
26
  },
27
- emits: ["change"],
27
+ emits: ["change", "addDiffCount"],
28
28
  setup(__props, { emit: __emit }) {
29
29
  const props = __props;
30
30
  const emit = __emit;
@@ -63,6 +63,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
63
63
  });
64
64
  emit("change", v, eventData);
65
65
  };
66
+ const onAddDiffCount = () => emit("addDiffCount");
66
67
  return (_ctx, _cache) => {
67
68
  return openBlock(), createBlock(unref(TMagicCollapse), {
68
69
  class: "m-fields-style-setter",
@@ -78,11 +79,16 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
78
79
  default: withCtx(() => [item.component ? (openBlock(), createBlock(resolveDynamicComponent(item.component), {
79
80
  key: 0,
80
81
  values: __props.model[__props.name],
82
+ "last-values": __props.lastValues?.[__props.name],
83
+ "is-compare": __props.isCompare,
81
84
  size: __props.size,
82
85
  disabled: __props.disabled,
83
- onChange: change
86
+ onChange: change,
87
+ onAddDiffCount
84
88
  }, null, 40, [
85
89
  "values",
90
+ "last-values",
91
+ "is-compare",
86
92
  "size",
87
93
  "disabled"
88
94
  ])) : createCommentVNode("v-if", true)]),
@@ -4,7 +4,7 @@ import { Fragment, createBlock, createElementBlock, createElementVNode, createVN
4
4
  var _hoisted_1 = { class: "background-position-container" };
5
5
  var _hoisted_2 = { class: "presets-value-list" };
6
6
  var _hoisted_3 = { class: "custom-value" };
7
- var BackgroundPosition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var BackgroundPosition_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  __name: "BackgroundPosition",
9
9
  props: {
10
10
  config: {},
@@ -7,14 +7,16 @@ var _hoisted_3 = { class: "border-icon-container-row" };
7
7
  var _hoisted_4 = { class: "border-icon-container-row" };
8
8
  var _hoisted_5 = { class: "border-icon-container-row" };
9
9
  var _hoisted_6 = { class: "border-value-container" };
10
- var Border_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var Border_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  __name: "Border",
12
12
  props: {
13
13
  model: {},
14
+ lastValues: {},
15
+ isCompare: { type: Boolean },
14
16
  disabled: { type: Boolean },
15
17
  size: {}
16
18
  },
17
- emits: ["change"],
19
+ emits: ["change", "addDiffCount"],
18
20
  setup(__props, { emit: __emit }) {
19
21
  const direction = ref("");
20
22
  const config = computed(() => defineFormItem({ items: [
@@ -52,44 +54,72 @@ var Border_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
52
54
  ] }));
53
55
  const selectDirection = (d) => direction.value = d || "";
54
56
  const emit = __emit;
57
+ const props = __props;
58
+ const hasValue = (value) => value !== void 0 && value !== null && value !== "";
59
+ const isConfigured = (d) => [
60
+ "Width",
61
+ "Color",
62
+ "Style"
63
+ ].some((key) => hasValue(props.model?.[`border${d}${key}`]));
55
64
  const change = (value, eventData) => {
56
65
  eventData.changeRecords?.forEach((record) => {
57
66
  emit("change", record.value, { modifyKey: record.propPath });
58
67
  });
59
68
  };
69
+ const onAddDiffCount = () => emit("addDiffCount");
60
70
  return (_ctx, _cache) => {
61
71
  return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
62
72
  createElementVNode("div", _hoisted_3, [createElementVNode("div", {
63
- class: normalizeClass(["border-icon border-icon-top", { active: direction.value === "Top" }]),
73
+ class: normalizeClass(["border-icon border-icon-top", {
74
+ active: direction.value === "Top",
75
+ configured: isConfigured("Top")
76
+ }]),
64
77
  onClick: _cache[0] || (_cache[0] = ($event) => selectDirection("Top"))
65
78
  }, null, 2)]),
66
79
  createElementVNode("div", _hoisted_4, [
67
80
  createElementVNode("div", {
68
- class: normalizeClass(["border-icon border-icon-left", { active: direction.value === "Left" }]),
81
+ class: normalizeClass(["border-icon border-icon-left", {
82
+ active: direction.value === "Left",
83
+ configured: isConfigured("Left")
84
+ }]),
69
85
  onClick: _cache[1] || (_cache[1] = ($event) => selectDirection("Left"))
70
86
  }, null, 2),
71
87
  createElementVNode("div", {
72
- class: normalizeClass(["border-icon", { active: direction.value === "" }]),
88
+ class: normalizeClass(["border-icon", {
89
+ active: direction.value === "",
90
+ configured: isConfigured("")
91
+ }]),
73
92
  onClick: _cache[2] || (_cache[2] = ($event) => selectDirection())
74
93
  }, null, 2),
75
94
  createElementVNode("div", {
76
- class: normalizeClass(["border-icon border-icon-right", { active: direction.value === "Right" }]),
95
+ class: normalizeClass(["border-icon border-icon-right", {
96
+ active: direction.value === "Right",
97
+ configured: isConfigured("Right")
98
+ }]),
77
99
  onClick: _cache[3] || (_cache[3] = ($event) => selectDirection("Right"))
78
100
  }, null, 2)
79
101
  ]),
80
102
  createElementVNode("div", _hoisted_5, [createElementVNode("div", {
81
- class: normalizeClass(["border-icon border-icon-bottom", { active: direction.value === "Bottom" }]),
103
+ class: normalizeClass(["border-icon border-icon-bottom", {
104
+ active: direction.value === "Bottom",
105
+ configured: isConfigured("Bottom")
106
+ }]),
82
107
  onClick: _cache[4] || (_cache[4] = ($event) => selectDirection("Bottom"))
83
108
  }, null, 2)])
84
109
  ]), createElementVNode("div", _hoisted_6, [createVNode(unref(MContainer), {
85
110
  config: config.value,
86
111
  model: __props.model,
112
+ "last-values": __props.lastValues,
113
+ "is-compare": __props.isCompare,
87
114
  size: __props.size,
88
115
  disabled: __props.disabled,
89
- onChange: change
116
+ onChange: change,
117
+ onAddDiffCount
90
118
  }, null, 8, [
91
119
  "config",
92
120
  "model",
121
+ "last-values",
122
+ "is-compare",
93
123
  "size",
94
124
  "disabled"
95
125
  ])])]);
@@ -12,12 +12,14 @@ var _hoisted_4 = [
12
12
  "disabled",
13
13
  "onChange"
14
14
  ];
15
- var Box_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ var Box_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
16
  __name: "Box",
17
17
  props: {
18
18
  disabled: { type: Boolean },
19
19
  size: {},
20
- model: {}
20
+ model: {},
21
+ lastValues: {},
22
+ isCompare: { type: Boolean }
21
23
  },
22
24
  emits: ["change"],
23
25
  setup(__props, { emit: __emit }) {
@@ -12,6 +12,6 @@ function _sfc_render(_ctx, _cache) {
12
12
  fill: "#5D5D5D"
13
13
  }, null, -1)])]);
14
14
  }
15
- var NoRepeat_default = /* @__PURE__ */ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
+ var NoRepeat_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
16
16
  //#endregion
17
17
  export { NoRepeat_default as default };
@@ -9,6 +9,6 @@ var _hoisted_1 = {
9
9
  function _sfc_render(_ctx, _cache) {
10
10
  return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createStaticVNode("<path d=\"M884.736 102.4l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456C696.32 311.296 712.704 327.68 733.184 327.68l147.456 0c20.48 0 36.864-16.384 36.864-36.864L917.504 139.264C921.6 118.784 905.216 102.4 884.736 102.4zM884.736 290.816l-147.456 0L737.28 139.264l147.456 0L884.736 290.816z\"></path><path d=\"M884.736 696.32l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C921.6 712.704 905.216 696.32 884.736 696.32zM884.736 884.736l-147.456 0 0-147.456 147.456 0L884.736 884.736z\"></path><path d=\"M884.736 401.408l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C921.6 417.792 905.216 401.408 884.736 401.408zM884.736 585.728l-147.456 0 0-147.456 147.456 0L884.736 585.728z\"></path><path d=\"M585.728 401.408l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C622.592 417.792 606.208 401.408 585.728 401.408zM585.728 585.728l-147.456 0 0-147.456 147.456 0L585.728 585.728z\"></path><path d=\"M585.728 102.4l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864L622.592 139.264C622.592 118.784 606.208 102.4 585.728 102.4zM585.728 290.816l-147.456 0L438.272 139.264l147.456 0L585.728 290.816z\"></path><path d=\"M585.728 696.32l-147.456 0c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C622.592 712.704 606.208 696.32 585.728 696.32zM585.728 884.736l-147.456 0 0-147.456 147.456 0L585.728 884.736z\"></path><path d=\"M290.816 696.32 139.264 696.32c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C327.68 712.704 311.296 696.32 290.816 696.32zM290.816 884.736 139.264 884.736l0-147.456 147.456 0L286.72 884.736z\"></path><path d=\"M290.816 401.408 139.264 401.408c-20.48 0-36.864 16.384-36.864 36.864l0 147.456c0 20.48 16.384 36.864 36.864 36.864l147.456 0c20.48 0 36.864-16.384 36.864-36.864l0-147.456C327.68 417.792 311.296 401.408 290.816 401.408zM290.816 585.728 139.264 585.728l0-147.456 147.456 0L286.72 585.728z\"></path><path d=\"M290.816 102.4 139.264 102.4c-20.48 0-36.864 16.384-36.864 36.864l0 147.456C102.4 311.296 118.784 327.68 139.264 327.68l147.456 0C311.296 327.68 327.68 311.296 327.68 290.816L327.68 139.264C327.68 118.784 311.296 102.4 290.816 102.4zM290.816 290.816 139.264 290.816 139.264 139.264l147.456 0L286.72 290.816z\"></path>", 9)])]);
11
11
  }
12
- var Repeat_default = /* @__PURE__ */ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
12
+ var Repeat_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
13
13
  //#endregion
14
14
  export { Repeat_default as default };
@@ -12,6 +12,6 @@ function _sfc_render(_ctx, _cache) {
12
12
  fill: "#333333"
13
13
  }, null, -1)])]);
14
14
  }
15
- var RepeatX_default = /* @__PURE__ */ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
+ var RepeatX_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
16
16
  //#endregion
17
17
  export { RepeatX_default as default };
@@ -12,6 +12,6 @@ function _sfc_render(_ctx, _cache) {
12
12
  fill: "#333333"
13
13
  }, null, -1)])]);
14
14
  }
15
- var RepeatY_default = /* @__PURE__ */ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
+ var RepeatY_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
16
16
  //#endregion
17
17
  export { RepeatY_default as default };