@tmagic/editor 1.8.0-beta.1 → 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 (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 +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 +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 +10135 -5646
  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 +273 -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 +405 -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 +594 -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 +3171 -889
  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
@@ -0,0 +1,287 @@
1
+ import CodeEditor_default from "../CodeEditor.js";
2
+ import CompareForm_default from "../../components/CompareForm.js";
3
+ import { TMagicButton, TMagicDialog, TMagicRadioButton, TMagicRadioGroup, TMagicTag } from "@tmagic/design";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, toDisplayString, unref, watch, withCtx } from "vue";
5
+ import { isEqual } from "lodash-es";
6
+ //#region packages/editor/src/layouts/history-list/HistoryDiffDialog.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = {
8
+ key: 0,
9
+ class: "m-editor-history-diff-dialog-body"
10
+ };
11
+ var _hoisted_2 = {
12
+ key: 0,
13
+ class: "m-editor-history-diff-dialog-notice"
14
+ };
15
+ var _hoisted_3 = { class: "m-editor-history-diff-dialog-header" };
16
+ var _hoisted_4 = { class: "m-editor-history-diff-dialog-target" };
17
+ var _hoisted_5 = { class: "m-editor-history-diff-dialog-controls" };
18
+ var _hoisted_6 = { class: "m-editor-history-diff-dialog-legend" };
19
+ var _hoisted_7 = {
20
+ key: 0,
21
+ class: "m-editor-history-diff-dialog-tip"
22
+ };
23
+ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
24
+ name: "MEditorHistoryDiffDialog",
25
+ __name: "HistoryDiffDialog",
26
+ props: {
27
+ services: {},
28
+ extendState: {},
29
+ loadConfig: {},
30
+ width: { default: "900px" },
31
+ isConfirm: { type: Boolean },
32
+ onConfirm: {},
33
+ selfDiffFieldTypes: {},
34
+ compareFormState: {}
35
+ },
36
+ emits: ["close"],
37
+ setup(__props, { expose: __expose, emit: __emit }) {
38
+ const props = __props;
39
+ const emit = __emit;
40
+ /**
41
+ * 差异对比模式:
42
+ * - before:该步骤修改前 vs 该步骤修改后(默认行为,体现这一步带来的变化)
43
+ * - current:该步骤修改后 vs 当前最新值(用于查看「该步骤之后是否还被改过」)
44
+ */
45
+ const visible = ref(false);
46
+ const payload = ref(null);
47
+ const mode = ref("before");
48
+ const viewMode = ref("form");
49
+ /**
50
+ * 源码对比始终只读,关闭小地图,强制左右并排(side-by-side)展示。
51
+ *
52
+ * monaco diff 编辑器在宽度低于 `renderSideBySideInlineBreakpoint`(默认 900px)时
53
+ * 会自动退化为 inline(上下/单栏)视图。本弹窗宽度约 900px,去掉内边距后编辑器实际
54
+ * 宽度小于该阈值,会被切到 inline。这里通过 `useInlineViewWhenSpaceIsLimited: false`
55
+ * 关闭该自动降级,确保始终保持左右两栏对比。
56
+ */
57
+ const codeDiffOptions = {
58
+ readOnly: true,
59
+ tabSize: 2,
60
+ minimap: { enabled: false },
61
+ renderSideBySide: true,
62
+ useInlineViewWhenSpaceIsLimited: false,
63
+ scrollBeyondLastLine: false,
64
+ hideUnchangedRegions: { enabled: true }
65
+ };
66
+ const dialogTitle = computed(() => props.onConfirm ? "确认回滚" : "查看修改差异");
67
+ const hasCurrent = computed(() => payload.value?.currentValue !== void 0 && payload.value?.currentValue !== null);
68
+ /** 是否存在该步「修改后的值」:不存在(如仅删除)时「与修改前对比」无意义,置灰禁用。 */
69
+ const hasValue = computed(() => payload.value?.value !== void 0 && payload.value?.value !== null);
70
+ /**
71
+ * 计算 open 时的初始对比模式:
72
+ * 没有「修改后的值」但有当前值时(「与修改前对比」不可用),默认进入「与当前对比」;否则默认「与修改前对比」。
73
+ */
74
+ const resolveInitialMode = () => !hasValue.value && hasCurrent.value ? "current" : "before";
75
+ /** 左侧(旧/参照)值 */
76
+ const leftValue = computed(() => {
77
+ if (!payload.value) return {};
78
+ if (mode.value === "current") return payload.value.value;
79
+ return payload.value.lastValue;
80
+ });
81
+ /** 右侧(新/对比)值 */
82
+ const rightValue = computed(() => {
83
+ if (!payload.value) return {};
84
+ if (mode.value === "current") return payload.value.currentValue || {};
85
+ return payload.value.value;
86
+ });
87
+ const leftLabel = computed(() => mode.value === "current" ? "该步修改后" : "修改前");
88
+ const rightLabel = computed(() => mode.value === "current" ? "当前" : "修改后");
89
+ /** 「与当前对比」模式下,若当前值与该步修改后值相等,则展示提示 */
90
+ const isSameAsCurrent = computed(() => {
91
+ if (mode.value !== "current" || !payload.value) return false;
92
+ return isEqual(payload.value.value, payload.value.currentValue);
93
+ });
94
+ /** confirm() 的 resolve,仅在「等待用户确认回滚」期间存在 */
95
+ let confirmResolve = null;
96
+ const onConfirmClick = () => {
97
+ props.onConfirm?.();
98
+ confirmResolve?.(true);
99
+ confirmResolve = null;
100
+ visible.value = false;
101
+ };
102
+ const targetText = computed(() => {
103
+ if (!payload.value) return "";
104
+ const categoryText = {
105
+ node: "节点",
106
+ "data-source": "数据源",
107
+ "code-block": "代码块"
108
+ };
109
+ const { category } = payload.value;
110
+ const prefix = category ? categoryText[category] : "";
111
+ const label = payload.value.targetLabel || payload.value.type || "";
112
+ const { id } = payload.value;
113
+ return [prefix, id !== void 0 && id !== "" ? `${label}(${id})` : label].filter(Boolean).join(":");
114
+ });
115
+ const open = (p) => {
116
+ payload.value = p;
117
+ mode.value = resolveInitialMode();
118
+ viewMode.value = "form";
119
+ visible.value = true;
120
+ };
121
+ /**
122
+ * 以 Promise 形式打开确认回滚弹窗:
123
+ * - 用户点击「确定回滚」时 resolve(true);
124
+ * - 取消 / 关闭 / 按 Esc 等其他方式关闭弹窗时 resolve(false)。
125
+ *
126
+ * 同一时刻只允许一个待确认流程,重复调用会先 resolve(false) 掉上一个。
127
+ */
128
+ const confirm = (p) => {
129
+ confirmResolve?.(false);
130
+ confirmResolve = null;
131
+ return new Promise((resolve) => {
132
+ confirmResolve = resolve;
133
+ open(p);
134
+ });
135
+ };
136
+ const close = () => {
137
+ visible.value = false;
138
+ };
139
+ watch(visible, (v) => {
140
+ if (!v) {
141
+ payload.value = null;
142
+ confirmResolve?.(false);
143
+ confirmResolve = null;
144
+ }
145
+ });
146
+ const onClose = () => {
147
+ emit("close");
148
+ };
149
+ __expose({
150
+ open,
151
+ confirm,
152
+ close
153
+ });
154
+ return (_ctx, _cache) => {
155
+ return openBlock(), createBlock(unref(TMagicDialog), {
156
+ modelValue: visible.value,
157
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => visible.value = $event),
158
+ class: "m-editor-history-diff-dialog",
159
+ title: dialogTitle.value,
160
+ top: "5vh",
161
+ "destroy-on-close": "",
162
+ "append-to-body": "",
163
+ width: __props.width,
164
+ onClose
165
+ }, {
166
+ footer: withCtx(() => [__props.isConfirm ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(unref(TMagicButton), {
167
+ size: "small",
168
+ onClick: _cache[2] || (_cache[2] = ($event) => visible.value = false)
169
+ }, {
170
+ default: withCtx(() => [..._cache[10] || (_cache[10] = [createTextVNode("取消", -1)])]),
171
+ _: 1
172
+ }), createVNode(unref(TMagicButton), {
173
+ size: "small",
174
+ type: "primary",
175
+ onClick: onConfirmClick
176
+ }, {
177
+ default: withCtx(() => [..._cache[11] || (_cache[11] = [createTextVNode("确定回滚", -1)])]),
178
+ _: 1
179
+ })], 64)) : (openBlock(), createBlock(unref(TMagicButton), {
180
+ key: 1,
181
+ size: "small",
182
+ onClick: _cache[3] || (_cache[3] = ($event) => visible.value = false)
183
+ }, {
184
+ default: withCtx(() => [..._cache[12] || (_cache[12] = [createTextVNode("关闭", -1)])]),
185
+ _: 1
186
+ }))]),
187
+ default: withCtx(() => [payload.value && visible.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
188
+ __props.onConfirm ? (openBlock(), createElementBlock("div", _hoisted_2, "仅回滚有差异的字段")) : createCommentVNode("v-if", true),
189
+ createElementVNode("div", _hoisted_3, [createElementVNode("span", _hoisted_4, toDisplayString(targetText.value), 1), createElementVNode("div", _hoisted_5, [createVNode(unref(TMagicRadioGroup), {
190
+ modelValue: viewMode.value,
191
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => viewMode.value = $event),
192
+ size: "small",
193
+ class: "m-editor-history-diff-dialog-view"
194
+ }, {
195
+ default: withCtx(() => [createVNode(unref(TMagicRadioButton), { value: "form" }, {
196
+ default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("表单对比", -1)])]),
197
+ _: 1
198
+ }), createVNode(unref(TMagicRadioButton), { value: "code" }, {
199
+ default: withCtx(() => [..._cache[6] || (_cache[6] = [createTextVNode("源码对比", -1)])]),
200
+ _: 1
201
+ })]),
202
+ _: 1
203
+ }, 8, ["modelValue"]), createVNode(unref(TMagicRadioGroup), {
204
+ modelValue: mode.value,
205
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => mode.value = $event),
206
+ size: "small",
207
+ class: "m-editor-history-diff-dialog-mode"
208
+ }, {
209
+ default: withCtx(() => [createVNode(unref(TMagicRadioButton), {
210
+ value: "before",
211
+ disabled: !hasValue.value
212
+ }, {
213
+ default: withCtx(() => [..._cache[7] || (_cache[7] = [createTextVNode("与修改前对比", -1)])]),
214
+ _: 1
215
+ }, 8, ["disabled"]), createVNode(unref(TMagicRadioButton), {
216
+ value: "current",
217
+ disabled: !hasCurrent.value
218
+ }, {
219
+ default: withCtx(() => [..._cache[8] || (_cache[8] = [createTextVNode("与当前对比", -1)])]),
220
+ _: 1
221
+ }, 8, ["disabled"])]),
222
+ _: 1
223
+ }, 8, ["modelValue"])])]),
224
+ createElementVNode("div", _hoisted_6, [
225
+ createVNode(unref(TMagicTag), {
226
+ size: "small",
227
+ type: "danger"
228
+ }, {
229
+ default: withCtx(() => [createTextVNode(toDisplayString(leftLabel.value), 1)]),
230
+ _: 1
231
+ }),
232
+ _cache[9] || (_cache[9] = createElementVNode("span", { class: "m-editor-history-diff-dialog-arrow" }, "→", -1)),
233
+ createVNode(unref(TMagicTag), {
234
+ size: "small",
235
+ type: "success"
236
+ }, {
237
+ default: withCtx(() => [createTextVNode(toDisplayString(rightLabel.value), 1)]),
238
+ _: 1
239
+ }),
240
+ mode.value === "current" && isSameAsCurrent.value ? (openBlock(), createElementBlock("span", _hoisted_7, " 当前值与该步修改后一致,无差异 ")) : createCommentVNode("v-if", true)
241
+ ]),
242
+ viewMode.value === "form" ? (openBlock(), createBlock(CompareForm_default, {
243
+ key: 1,
244
+ category: payload.value.category,
245
+ type: payload.value.type,
246
+ "data-source-type": payload.value.dataSourceType,
247
+ value: rightValue.value,
248
+ "last-value": leftValue.value,
249
+ "base-form-state": __props.compareFormState,
250
+ "extend-state": __props.extendState,
251
+ "load-config": __props.loadConfig,
252
+ "self-diff-field-types": __props.selfDiffFieldTypes,
253
+ services: props.services,
254
+ height: "70vh"
255
+ }, null, 8, [
256
+ "category",
257
+ "type",
258
+ "data-source-type",
259
+ "value",
260
+ "last-value",
261
+ "base-form-state",
262
+ "extend-state",
263
+ "load-config",
264
+ "self-diff-field-types",
265
+ "services"
266
+ ])) : (openBlock(), createBlock(CodeEditor_default, {
267
+ key: 2,
268
+ type: "diff",
269
+ language: "json",
270
+ "init-values": leftValue.value,
271
+ "modified-values": rightValue.value,
272
+ options: codeDiffOptions,
273
+ "disabled-full-screen": "",
274
+ height: "70vh"
275
+ }, null, 8, ["init-values", "modified-values"]))
276
+ ])) : createCommentVNode("v-if", true)]),
277
+ _: 1
278
+ }, 8, [
279
+ "modelValue",
280
+ "title",
281
+ "width"
282
+ ]);
283
+ };
284
+ }
285
+ });
286
+ //#endregion
287
+ export { HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import HistoryListPanel_vue_vue_type_script_setup_true_lang_default from "./HistoryListPanel.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/HistoryListPanel.vue
3
+ var HistoryListPanel_default = HistoryListPanel_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { HistoryListPanel_default as default };
@@ -0,0 +1,327 @@
1
+ import { useServices } from "../../hooks/use-services.js";
2
+ import Icon_default from "../../components/Icon.js";
3
+ import { confirmHistoryAction, describeStep, isSingleDiffStepRevertable } from "./composables.js";
4
+ import BucketTab_default from "./BucketTab.js";
5
+ import PageTab_default from "./PageTab.js";
6
+ import { useHistoryList } from "./useHistoryList.js";
7
+ import { useHistoryRevert } from "./useHistoryRevert.js";
8
+ import { TMagicButton, TMagicPopover, TMagicTabs, TMagicTooltip, getDesignConfig, tMagicMessage } from "@tmagic/design";
9
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, guardReactiveProps, inject, markRaw, mergeProps, normalizeProps, openBlock, ref, renderList, resolveDynamicComponent, toHandlers, unref, watch, withCtx } from "vue";
10
+ import { Clock, Close } from "@element-plus/icons-vue";
11
+ //#region packages/editor/src/layouts/history-list/HistoryListPanel.vue?vue&type=script&setup=true&lang.ts
12
+ var _hoisted_1 = { class: "m-editor-history-list" };
13
+ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
+ name: "MEditorHistoryListPanel",
15
+ __name: "HistoryListPanel",
16
+ setup(__props) {
17
+ /**
18
+ * 历史记录面板:在顶部 NavMenu 上点击图标打开 popover,分三个 tab:
19
+ * - 页面:当前活动页面的历史栈,连续修改同一节点的多步会被合并成一组
20
+ * - 数据源:以 dataSource.id 分桶,每条操作记录独立展示
21
+ * - 代码块:同上,按 codeBlock.id 分桶,每条操作记录独立展示
22
+ *
23
+ * 数据通过 historyService 暴露的聚合 API 读取,UI 仅用于只读展示,
24
+ * 同时支持点击任意一条记录跳转至该状态:
25
+ * - 页面 tab:调用 editorService.gotoPageStep(targetCursor)
26
+ * - 数据源 tab:调用 dataSourceService.goto(id, targetCursor)
27
+ * - 代码块 tab:调用 codeBlockService.goto(id, targetCursor)
28
+ *
29
+ * 这里的 targetCursor = 用户点击的 step.index + 1,即"应用至此步完成的状态"。
30
+ *
31
+ * 此外每条 step 上提供"查看差异"入口(仅在前后值都存在的 update 步骤显示),
32
+ * 点击后弹出 HistoryDiffDialog,使用 CompareForm 组件以表单形式展示新旧值差异。
33
+ *
34
+ * 各 tab 的内容拆分为独立的 SFC:页面用 PageTab,数据源 / 代码块复用通用的 BucketTab
35
+ * (通过 title / prefix / describe* / isStepDiffable 注入差异)。
36
+ * 共享的描述生成与折叠状态在 composables.ts 中维护。
37
+ */
38
+ const ClockIcon = markRaw(Clock);
39
+ const CloseIcon = markRaw(Close);
40
+ const activeTab = ref("page");
41
+ /**
42
+ * 面板显隐受控:reference 图标点击切换,右上角关闭按钮置为 false。
43
+ * 点击面板以外区域的自动收起由 TMagicPopover 通过 v-model:visible 回写完成。
44
+ */
45
+ const visible = ref(false);
46
+ const tabPaneComponent = getDesignConfig("components")?.tabPane;
47
+ /**
48
+ * 业务方自定义的扩展 tab,由 Editor 顶层通过 `historyListExtraTabs` 注入。
49
+ * 追加在内置「页面 / 数据源 / 代码块」三个 tab 之后,未提供时为空数组。
50
+ */
51
+ const extraTabs = inject("historyListExtraTabs", []);
52
+ /** label 支持字符串或函数,函数形式便于展示动态数量等内容。 */
53
+ const resolveTabLabel = (tab) => typeof tab.label === "function" ? tab.label() : tab.label;
54
+ const services = useServices();
55
+ const { editorService, dataSourceService, codeBlockService, historyService, propsService, stageOverlayService } = services;
56
+ /**
57
+ * 数据源 / 代码块功能可被业务方通过 `disabledDataSource` / `disabledCodeBlock` 禁用,
58
+ * 禁用后对应的历史记录 tab 不再展示。若当前激活的 tab 恰好被禁用,则回退到「页面」tab。
59
+ */
60
+ const disabledDataSource = computed(() => propsService.getDisabledDataSource());
61
+ const disabledCodeBlock = computed(() => propsService.getDisabledCodeBlock());
62
+ watch([disabledDataSource, disabledCodeBlock], ([dsDisabled, cbDisabled]) => {
63
+ if (activeTab.value === "data-source" && dsDisabled || activeTab.value === "code-block" && cbDisabled) activeTab.value = "page";
64
+ });
65
+ /**
66
+ * 通过 inject 拿到 Editor 顶层注入的 `extendFormState`,转交给 HistoryDiffDialog
67
+ * 内部的 CompareForm,使差异对比表单的 filterFunction 能拿到完整的业务上下文。
68
+ * 未提供时为 undefined,CompareForm/MForm 会跳过 extendState 处理。
69
+ */
70
+ const extendFormState = inject("extendFormState", void 0);
71
+ const getPropsPanelFormState = inject("getPropsPanelFormState", void 0);
72
+ const { expanded, toggleGroup, pageGroups, dataSourceGroups, codeBlockGroups, pageGroupsDisplay, dataSourceGroupsByTarget, codeBlockGroupsByTarget } = useHistoryList();
73
+ /**
74
+ * 当前活动页的「加载/初始」标记记录(设置 root 时生成),透传给 PageTab 的底部初始行展示。
75
+ * 基于 historyService 的 reactive state 派生,活动页切换或标记写入后自动刷新。
76
+ */
77
+ const pageMarker = computed(() => historyService.getMarker("page", editorService.get("page")?.id));
78
+ /**
79
+ * 各历史类型的展示名称(页面 / 数据源 / 代码块),由 historyService.state.stepNames 配置,
80
+ * 业务方可通过 historyService.setStepName / registerStepType 覆盖。基于 reactive state 派生,配置变更后自动刷新。
81
+ */
82
+ const pageName = computed(() => historyService.getStepName("page"));
83
+ const dataSourceName = computed(() => historyService.getStepName("dataSource"));
84
+ const codeBlockName = computed(() => historyService.getStepName("codeBlock"));
85
+ /** 代码块 step 仅 update(前后 content 都存在)时可查看差异。 */
86
+ const isStepDiffable = (step) => Boolean(step.diff?.[0]?.oldSchema && step.diff?.[0]?.newSchema);
87
+ /**
88
+ * 数据源 / 代码块两类 bucket 历史的整体渲染配置:把 title / prefix 与各自的描述、
89
+ * 可差异、可回滚判定收敛为单一对象整体注入 BucketTab,组件内部按需读取。
90
+ * title / 描述回退名取自可配置的展示名称,故用 computed 使其随 stepNames 变更刷新。
91
+ */
92
+ const dataSourceConfig = computed(() => ({
93
+ title: dataSourceName.value,
94
+ prefix: "ds",
95
+ describeStep: (step) => describeStep(step, (schema) => schema?.title, dataSourceName.value),
96
+ isStepDiffable,
97
+ isStepRevertable: isSingleDiffStepRevertable
98
+ }));
99
+ const codeBlockConfig = computed(() => ({
100
+ title: codeBlockName.value,
101
+ prefix: "cb",
102
+ describeStep: (step) => describeStep(step, (content) => content?.name, codeBlockName.value),
103
+ isStepDiffable,
104
+ isStepRevertable: isSingleDiffStepRevertable
105
+ }));
106
+ /** 把"目标 step 索引"翻译成"目标 cursor"(已应用步骤数量)。 */
107
+ const indexToCursor = (index) => index + 1;
108
+ const onPageGoto = (index) => {
109
+ editorService.gotoPageStep(indexToCursor(index));
110
+ };
111
+ /**
112
+ * 点击页面历史记录行:选中该记录对应的画布节点。
113
+ * - 从目标 step 的 diff 中取节点 id(优先 newSchema,回退 oldSchema),按出现顺序找到第一个当前仍存在的节点;
114
+ * - 与图层树点击选中一致:editorService.select + 画布 / overlay 画布 select 三者联动;
115
+ * - 该 step 涉及的节点都已不存在(如删除记录、被撤销的新增)时给出提示,不做选中。
116
+ */
117
+ const onPageSelect = async (index) => {
118
+ const step = historyService.getStepList("page", editorService.get("page")?.id)[index]?.step;
119
+ if (!step) return;
120
+ const targetId = (step.diff ?? []).map((item) => item.newSchema?.id ?? item.oldSchema?.id).find((id) => id !== void 0 && id !== null && editorService.getNodeById(id, false));
121
+ if (targetId === void 0 || targetId === null) {
122
+ tMagicMessage.warning("该记录对应的节点已不存在,无法选中");
123
+ return;
124
+ }
125
+ const node = editorService.getNodeById(targetId, false);
126
+ if (!node) return;
127
+ await editorService.select(node);
128
+ editorService.get("stage")?.select(targetId);
129
+ stageOverlayService.get("stage")?.select(targetId);
130
+ };
131
+ const onDataSourceGoto = (id, index) => {
132
+ dataSourceService.goto(id, indexToCursor(index));
133
+ };
134
+ const onCodeBlockGoto = (id, index) => {
135
+ codeBlockService.goto(id, indexToCursor(index));
136
+ };
137
+ /**
138
+ * "回到初始状态" = 把对应栈 cursor 移到 0(全部已撤销)。
139
+ * 复用 service.goto*(0) 即可,所有真实 step 的反向应用由 service 层的 undo 链路完成。
140
+ */
141
+ const onPageGotoInitial = () => {
142
+ editorService.gotoPageStep(0);
143
+ };
144
+ const onDataSourceGotoInitial = (id) => {
145
+ dataSourceService.goto(id, 0);
146
+ };
147
+ const onCodeBlockGotoInitial = (id) => {
148
+ codeBlockService.goto(id, 0);
149
+ };
150
+ /**
151
+ * 「单步回滚」与「查看差异」的完整逻辑收敛到 useHistoryRevert,面板与业务方共用:
152
+ * 二者均由 useHistoryRevert 内部按需动态挂载 HistoryDiffDialog,
153
+ * 业务方亦可直接 import useHistoryRevert(options, services) 调用,无需自行挂载任何弹窗。
154
+ */
155
+ const { onPageRevert, onDataSourceRevert, onCodeBlockRevert, onPageDiff, onDataSourceDiff, onCodeBlockDiff } = useHistoryRevert({
156
+ extendState: extendFormState,
157
+ getPropsPanelFormState
158
+ }, services);
159
+ /**
160
+ * 把内存中(已清空对应类别后的)历史状态重新写回 IndexedDB,
161
+ * 使本地持久化的那份与内存保持一致——即「连同本地保存的一并删除」。
162
+ * 不支持 IndexedDB 或写入失败时静默忽略(内存清空已生效)。
163
+ */
164
+ const syncIndexedDB = async () => {
165
+ try {
166
+ await historyService.saveToIndexedDB();
167
+ } catch (e) {}
168
+ };
169
+ const onPageClear = async () => {
170
+ if (await confirmHistoryAction("确定清空当前页面的历史记录吗?清空后将无法撤销/重做之前的操作,本地保存的记录也会一并删除。")) {
171
+ historyService.clear("page", editorService.get("page")?.id);
172
+ await syncIndexedDB();
173
+ }
174
+ };
175
+ const onDataSourceClear = async () => {
176
+ if (await confirmHistoryAction("确定清空数据源的历史记录吗?清空后将无法撤销/重做之前的操作,本地保存的记录也会一并删除。")) {
177
+ historyService.clear("dataSource");
178
+ await syncIndexedDB();
179
+ }
180
+ };
181
+ const onCodeBlockClear = async () => {
182
+ if (await confirmHistoryAction("确定清空代码块的历史记录吗?清空后将无法撤销/重做之前的操作,本地保存的记录也会一并删除。")) {
183
+ historyService.clear("codeBlock");
184
+ await syncIndexedDB();
185
+ }
186
+ };
187
+ return (_ctx, _cache) => {
188
+ return openBlock(), createBlock(unref(TMagicPopover), {
189
+ "popper-class": "m-editor-history-list-popover",
190
+ placement: "bottom",
191
+ trigger: "click",
192
+ visible: visible.value,
193
+ "onUpdate:visible": _cache[3] || (_cache[3] = ($event) => visible.value = $event),
194
+ width: 660
195
+ }, {
196
+ reference: withCtx(() => [createVNode(unref(TMagicTooltip), {
197
+ effect: "dark",
198
+ placement: "bottom",
199
+ content: "历史记录"
200
+ }, {
201
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
202
+ size: "small",
203
+ link: "",
204
+ onClick: _cache[2] || (_cache[2] = ($event) => visible.value = !visible.value)
205
+ }, {
206
+ icon: withCtx(() => [createVNode(Icon_default, { icon: unref(ClockIcon) }, null, 8, ["icon"])]),
207
+ _: 1
208
+ })]),
209
+ _: 1
210
+ })]),
211
+ default: withCtx(() => [createElementVNode("div", _hoisted_1, [createVNode(unref(TMagicTooltip), {
212
+ effect: "dark",
213
+ placement: "top",
214
+ content: "关闭"
215
+ }, {
216
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
217
+ class: "m-editor-history-list-close",
218
+ size: "small",
219
+ link: "",
220
+ onClick: _cache[0] || (_cache[0] = ($event) => visible.value = false)
221
+ }, {
222
+ icon: withCtx(() => [createVNode(Icon_default, { icon: unref(CloseIcon) }, null, 8, ["icon"])]),
223
+ _: 1
224
+ })]),
225
+ _: 1
226
+ }), createVNode(unref(TMagicTabs), {
227
+ modelValue: activeTab.value,
228
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => activeTab.value = $event),
229
+ class: "m-editor-history-list-tabs"
230
+ }, {
231
+ default: withCtx(() => [
232
+ (openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(guardReactiveProps(unref(tabPaneComponent)?.props({
233
+ name: "page",
234
+ label: `${pageName.value} (${unref(pageGroups).length})`,
235
+ lazy: true
236
+ }) || {})), {
237
+ default: withCtx(() => [createVNode(PageTab_default, {
238
+ list: unref(pageGroupsDisplay),
239
+ expanded: unref(expanded),
240
+ marker: pageMarker.value,
241
+ onToggle: unref(toggleGroup),
242
+ onGoto: onPageGoto,
243
+ onGotoInitial: onPageGotoInitial,
244
+ onDiffStep: unref(onPageDiff),
245
+ onRevertStep: unref(onPageRevert),
246
+ onSelect: onPageSelect,
247
+ onClear: onPageClear
248
+ }, null, 8, [
249
+ "list",
250
+ "expanded",
251
+ "marker",
252
+ "onToggle",
253
+ "onDiffStep",
254
+ "onRevertStep"
255
+ ])]),
256
+ _: 1
257
+ }, 16)),
258
+ !disabledDataSource.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(mergeProps({ key: 0 }, unref(tabPaneComponent)?.props({
259
+ name: "data-source",
260
+ label: `${dataSourceName.value} (${unref(dataSourceGroups).length})`,
261
+ lazy: true
262
+ }) || {})), {
263
+ default: withCtx(() => [createVNode(BucketTab_default, {
264
+ config: dataSourceConfig.value,
265
+ buckets: unref(dataSourceGroupsByTarget),
266
+ expanded: unref(expanded),
267
+ onToggle: unref(toggleGroup),
268
+ onGoto: onDataSourceGoto,
269
+ onGotoInitial: onDataSourceGotoInitial,
270
+ onDiffStep: unref(onDataSourceDiff),
271
+ onRevertStep: unref(onDataSourceRevert),
272
+ onClear: onDataSourceClear
273
+ }, null, 8, [
274
+ "config",
275
+ "buckets",
276
+ "expanded",
277
+ "onToggle",
278
+ "onDiffStep",
279
+ "onRevertStep"
280
+ ])]),
281
+ _: 1
282
+ }, 16)) : createCommentVNode("v-if", true),
283
+ !disabledCodeBlock.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(mergeProps({ key: 1 }, unref(tabPaneComponent)?.props({
284
+ name: "code-block",
285
+ label: `${codeBlockName.value} (${unref(codeBlockGroups).length})`,
286
+ lazy: true
287
+ }) || {})), {
288
+ default: withCtx(() => [createVNode(BucketTab_default, {
289
+ config: codeBlockConfig.value,
290
+ buckets: unref(codeBlockGroupsByTarget),
291
+ expanded: unref(expanded),
292
+ onToggle: unref(toggleGroup),
293
+ onGoto: onCodeBlockGoto,
294
+ onGotoInitial: onCodeBlockGotoInitial,
295
+ onDiffStep: unref(onCodeBlockDiff),
296
+ onRevertStep: unref(onCodeBlockRevert),
297
+ onClear: onCodeBlockClear
298
+ }, null, 8, [
299
+ "config",
300
+ "buckets",
301
+ "expanded",
302
+ "onToggle",
303
+ "onDiffStep",
304
+ "onRevertStep"
305
+ ])]),
306
+ _: 1
307
+ }, 16)) : createCommentVNode("v-if", true),
308
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(extraTabs), (tab) => {
309
+ return openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), mergeProps({ key: tab.name }, { ref_for: true }, unref(tabPaneComponent)?.props({
310
+ name: tab.name,
311
+ label: resolveTabLabel(tab),
312
+ lazy: true
313
+ }) || {}), {
314
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tab.component), mergeProps({ ref_for: true }, tab.props || {}, toHandlers(tab.listeners || {})), null, 16))]),
315
+ _: 2
316
+ }, 1040);
317
+ }), 128))
318
+ ]),
319
+ _: 1
320
+ }, 8, ["modelValue"])])]),
321
+ _: 1
322
+ }, 8, ["visible"]);
323
+ };
324
+ }
325
+ });
326
+ //#endregion
327
+ export { HistoryListPanel_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import InitialRow_vue_vue_type_script_setup_true_lang_default from "./InitialRow.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/InitialRow.vue
3
+ var InitialRow_default = InitialRow_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { InitialRow_default as default };