@tmagic/editor 1.8.0-beta.0 → 1.8.0-beta.2

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 (138) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +11 -2
  2. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +18 -110
  3. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +6 -0
  4. package/dist/es/components/CompareForm.js +5 -0
  5. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +167 -0
  6. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +19 -3
  7. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +18 -2
  8. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +37 -6
  9. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +3 -1
  10. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +12 -3
  11. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +14 -6
  12. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +3 -1
  13. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +15 -7
  14. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +14 -6
  15. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +3 -1
  16. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +58 -11
  17. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +11 -6
  18. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +8 -2
  19. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +10 -2
  20. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +3 -1
  21. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +10 -2
  22. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +16 -3
  23. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +10 -2
  24. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +14 -2
  25. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +10 -2
  26. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +10 -2
  27. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +8 -5
  28. package/dist/es/hooks/use-code-block-edit.js +2 -2
  29. package/dist/es/hooks/use-stage.js +15 -7
  30. package/dist/es/index.js +3 -1
  31. package/dist/es/initService.js +6 -6
  32. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +4 -0
  33. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +12 -7
  34. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +8 -0
  35. package/dist/es/layouts/history-list/Bucket.js +5 -0
  36. package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +84 -0
  37. package/dist/es/layouts/history-list/CodeBlockTab.js +5 -0
  38. package/dist/es/layouts/history-list/CodeBlockTab.vue_vue_type_script_setup_true_lang.js +62 -0
  39. package/dist/es/layouts/history-list/DataSourceTab.js +5 -0
  40. package/dist/es/layouts/history-list/DataSourceTab.vue_vue_type_script_setup_true_lang.js +62 -0
  41. package/dist/es/layouts/history-list/GroupRow.js +5 -0
  42. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +180 -0
  43. package/dist/es/layouts/history-list/HistoryDiffDialog.js +5 -0
  44. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +195 -0
  45. package/dist/es/layouts/history-list/HistoryListPanel.js +5 -0
  46. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +270 -0
  47. package/dist/es/layouts/history-list/InitialRow.js +5 -0
  48. package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +48 -0
  49. package/dist/es/layouts/history-list/PageTab.js +5 -0
  50. package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +99 -0
  51. package/dist/es/layouts/history-list/composables.js +154 -0
  52. package/dist/es/layouts/sidebar/layer/use-node-status.js +38 -4
  53. package/dist/es/services/BaseService.js +31 -68
  54. package/dist/es/services/codeBlock.js +205 -8
  55. package/dist/es/services/componentList.js +2 -2
  56. package/dist/es/services/dataSource.js +217 -8
  57. package/dist/es/services/dep.js +21 -9
  58. package/dist/es/services/editor.js +350 -160
  59. package/dist/es/services/events.js +2 -2
  60. package/dist/es/services/history.js +407 -12
  61. package/dist/es/services/keybinding.js +2 -2
  62. package/dist/es/services/props.js +8 -8
  63. package/dist/es/services/stageOverlay.js +2 -2
  64. package/dist/es/services/storage.js +2 -2
  65. package/dist/es/services/ui.js +2 -2
  66. package/dist/es/style.css +347 -1
  67. package/dist/es/utils/code-block.js +122 -0
  68. package/dist/es/utils/content-menu.js +4 -5
  69. package/dist/es/utils/dep/worker.js +1 -1
  70. package/dist/es/utils/editor.js +3 -3
  71. package/dist/es/utils/undo-redo.js +20 -0
  72. package/dist/style.css +347 -1
  73. package/dist/tmagic-editor.umd.cjs +3273 -766
  74. package/package.json +7 -7
  75. package/src/Editor.vue +7 -0
  76. package/src/components/CodeBlockEditor.vue +20 -109
  77. package/src/components/CodeParams.vue +6 -0
  78. package/src/components/CompareForm.vue +225 -0
  79. package/src/editorProps.ts +2 -0
  80. package/src/fields/Code.vue +19 -3
  81. package/src/fields/CodeSelect.vue +17 -1
  82. package/src/fields/CodeSelectCol.vue +30 -2
  83. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +7 -1
  84. package/src/fields/DataSourceFieldSelect/Index.vue +9 -2
  85. package/src/fields/DataSourceFields.vue +12 -3
  86. package/src/fields/DataSourceMethodSelect.vue +4 -1
  87. package/src/fields/DataSourceMethods.vue +14 -4
  88. package/src/fields/DataSourceMocks.vue +13 -3
  89. package/src/fields/DataSourceSelect.vue +4 -1
  90. package/src/fields/EventSelect.vue +57 -8
  91. package/src/fields/KeyValue.vue +17 -4
  92. package/src/fields/StyleSetter/Index.vue +6 -0
  93. package/src/fields/StyleSetter/components/Border.vue +15 -1
  94. package/src/fields/StyleSetter/components/Box.vue +2 -0
  95. package/src/fields/StyleSetter/pro/Background.vue +15 -1
  96. package/src/fields/StyleSetter/pro/Border.vue +24 -2
  97. package/src/fields/StyleSetter/pro/Font.vue +15 -1
  98. package/src/fields/StyleSetter/pro/Layout.vue +17 -1
  99. package/src/fields/StyleSetter/pro/Position.vue +15 -1
  100. package/src/fields/StyleSetter/pro/Transform.vue +15 -1
  101. package/src/fields/UISelect.vue +5 -2
  102. package/src/hooks/use-code-block-edit.ts +5 -2
  103. package/src/hooks/use-stage.ts +23 -7
  104. package/src/index.ts +1 -0
  105. package/src/layouts/CodeEditor.vue +15 -0
  106. package/src/layouts/Framework.vue +10 -5
  107. package/src/layouts/NavMenu.vue +9 -0
  108. package/src/layouts/history-list/Bucket.vue +99 -0
  109. package/src/layouts/history-list/CodeBlockTab.vue +61 -0
  110. package/src/layouts/history-list/DataSourceTab.vue +61 -0
  111. package/src/layouts/history-list/GroupRow.vue +207 -0
  112. package/src/layouts/history-list/HistoryDiffDialog.vue +212 -0
  113. package/src/layouts/history-list/HistoryListPanel.vue +271 -0
  114. package/src/layouts/history-list/InitialRow.vue +41 -0
  115. package/src/layouts/history-list/PageTab.vue +94 -0
  116. package/src/layouts/history-list/composables.ts +195 -0
  117. package/src/layouts/sidebar/layer/use-node-status.ts +64 -12
  118. package/src/services/BaseService.ts +35 -86
  119. package/src/services/codeBlock.ts +256 -5
  120. package/src/services/dataSource.ts +257 -6
  121. package/src/services/dep.ts +32 -9
  122. package/src/services/editor.ts +454 -171
  123. package/src/services/history.ts +452 -8
  124. package/src/services/props.ts +2 -2
  125. package/src/theme/history-list-panel.scss +423 -0
  126. package/src/theme/theme.scss +1 -0
  127. package/src/type.ts +179 -6
  128. package/src/utils/code-block.ts +150 -0
  129. package/src/utils/content-menu.ts +8 -5
  130. package/src/utils/dep/worker.ts +5 -3
  131. package/src/utils/editor.ts +4 -1
  132. package/src/utils/index.ts +1 -0
  133. package/src/utils/undo-redo.ts +23 -0
  134. package/types/index.d.ts +2107 -810
  135. package/dist/es/utils/compose.js +0 -44
  136. package/dist/es/utils/editor-history.js +0 -100
  137. package/src/utils/compose.ts +0 -52
  138. package/src/utils/editor-history.ts +0 -138
@@ -20,10 +20,12 @@ var Layout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
20
20
  __name: "Layout",
21
21
  props: {
22
22
  values: {},
23
+ lastValues: {},
24
+ isCompare: { type: Boolean },
23
25
  disabled: { type: Boolean },
24
26
  size: {}
25
27
  },
26
- emits: ["change"],
28
+ emits: ["change", "addDiffCount"],
27
29
  setup(__props, { emit: __emit }) {
28
30
  const emit = __emit;
29
31
  const config = defineFormItem({ items: [
@@ -259,25 +261,35 @@ var Layout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
259
261
  const change = (value, eventData) => {
260
262
  emit("change", value, eventData);
261
263
  };
264
+ const onAddDiffCount = () => emit("addDiffCount");
262
265
  return (_ctx, _cache) => {
263
266
  return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(MContainer), {
264
267
  config: unref(config),
265
268
  model: __props.values,
269
+ "last-values": __props.lastValues,
270
+ "is-compare": __props.isCompare,
266
271
  size: __props.size,
267
272
  disabled: __props.disabled,
268
- onChange: change
273
+ onChange: change,
274
+ onAddDiffCount
269
275
  }, null, 8, [
270
276
  "config",
271
277
  "model",
278
+ "last-values",
279
+ "is-compare",
272
280
  "size",
273
281
  "disabled"
274
282
  ]), withDirectives(createVNode(Box_default, {
275
283
  model: __props.values,
284
+ "last-values": __props.lastValues,
285
+ "is-compare": __props.isCompare,
276
286
  size: __props.size,
277
287
  disabled: __props.disabled,
278
288
  onChange: change
279
289
  }, null, 8, [
280
290
  "model",
291
+ "last-values",
292
+ "is-compare",
281
293
  "size",
282
294
  "disabled"
283
295
  ]), [[vShow, !["fixed", "absolute"].includes(__props.values.position)]])], 64);
@@ -5,10 +5,12 @@ var Position_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
5
5
  __name: "Position",
6
6
  props: {
7
7
  values: {},
8
+ lastValues: {},
9
+ isCompare: { type: Boolean },
8
10
  disabled: { type: Boolean },
9
11
  size: {}
10
12
  },
11
- emits: ["change"],
13
+ emits: ["change", "addDiffCount"],
12
14
  setup(__props, { emit: __emit }) {
13
15
  const props = __props;
14
16
  const emit = __emit;
@@ -76,16 +78,22 @@ var Position_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
76
78
  const change = (value, eventData) => {
77
79
  emit("change", value, eventData);
78
80
  };
81
+ const onAddDiffCount = () => emit("addDiffCount");
79
82
  return (_ctx, _cache) => {
80
83
  return openBlock(), createBlock(unref(MContainer), {
81
84
  config: unref(config),
82
85
  model: __props.values,
86
+ "last-values": __props.lastValues,
87
+ "is-compare": __props.isCompare,
83
88
  size: __props.size,
84
89
  disabled: __props.disabled,
85
- onChange: change
90
+ onChange: change,
91
+ onAddDiffCount
86
92
  }, null, 8, [
87
93
  "config",
88
94
  "model",
95
+ "last-values",
96
+ "is-compare",
89
97
  "size",
90
98
  "disabled"
91
99
  ]);
@@ -5,10 +5,12 @@ var Transform_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
5
5
  __name: "Transform",
6
6
  props: {
7
7
  values: {},
8
+ lastValues: {},
9
+ isCompare: { type: Boolean },
8
10
  disabled: { type: Boolean },
9
11
  size: {}
10
12
  },
11
- emits: ["change"],
13
+ emits: ["change", "addDiffCount"],
12
14
  setup(__props, { emit: __emit }) {
13
15
  const emit = __emit;
14
16
  const config = defineFormItem({ items: [{
@@ -34,16 +36,22 @@ var Transform_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
34
36
  const change = (value, eventData) => {
35
37
  emit("change", value, eventData);
36
38
  };
39
+ const onAddDiffCount = () => emit("addDiffCount");
37
40
  return (_ctx, _cache) => {
38
41
  return openBlock(), createBlock(unref(MContainer), {
39
42
  config: unref(config),
40
43
  model: __props.values,
44
+ "last-values": __props.lastValues,
45
+ "is-compare": __props.isCompare,
41
46
  size: __props.size,
42
47
  disabled: __props.disabled,
43
- onChange: change
48
+ onChange: change,
49
+ onAddDiffCount
44
50
  }, null, 8, [
45
51
  "config",
46
52
  "model",
53
+ "last-values",
54
+ "is-compare",
47
55
  "size",
48
56
  "disabled"
49
57
  ]);
@@ -2,7 +2,7 @@ import { UI_SELECT_MODE_EVENT_NAME } from "../utils/const.js";
2
2
  import { useServices } from "../hooks/use-services.js";
3
3
  import { TMagicButton, TMagicTooltip } from "@tmagic/design";
4
4
  import { getIdFromEl } from "@tmagic/utils";
5
- import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, toDisplayString, unref, withCtx, withModifiers } from "vue";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, toDisplayString, unref, withCtx, withModifiers } from "vue";
6
6
  import { throttle } from "lodash-es";
7
7
  import { Close, Delete } from "@element-plus/icons-vue";
8
8
  //#region packages/editor/src/fields/UISelect.vue?vue&type=script&setup=true&lang.ts
@@ -34,6 +34,8 @@ var UISelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
34
34
  const mForm = inject("mForm");
35
35
  const val = computed(() => props.model[props.name]);
36
36
  const uiSelectMode = ref(false);
37
+ /** 对比模式下隐藏清除/选择等操作按钮,仅保留只读展示。 */
38
+ const isCompare = computed(() => Boolean(mForm?.isCompare));
37
39
  const cancelHandler = () => {
38
40
  uiService.set("uiSelectMode", false);
39
41
  uiSelectMode.value = false;
@@ -96,7 +98,8 @@ var UISelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
96
98
  "icon",
97
99
  "disabled",
98
100
  "size"
99
- ])])) : (openBlock(), createElementBlock("div", _hoisted_1, [val.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(unref(TMagicTooltip), {
101
+ ])])) : (openBlock(), createElementBlock("div", _hoisted_1, [val.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [!isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
102
+ key: 0,
100
103
  content: "清除",
101
104
  placement: "top"
102
105
  }, {
@@ -114,7 +117,7 @@ var UISelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
114
117
  "size"
115
118
  ])]),
116
119
  _: 1
117
- }), createVNode(unref(TMagicTooltip), {
120
+ })) : createCommentVNode("v-if", true), createVNode(unref(TMagicTooltip), {
118
121
  content: "点击选中组件",
119
122
  placement: "top"
120
123
  }, {
@@ -134,7 +137,7 @@ var UISelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
134
137
  _: 1
135
138
  }, 8, ["disabled", "size"])]),
136
139
  _: 1
137
- })], 64)) : (openBlock(), createBlock(unref(TMagicTooltip), {
140
+ })], 64)) : !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
138
141
  key: 1,
139
142
  content: "点击此处选择",
140
143
  placement: "top"
@@ -153,7 +156,7 @@ var UISelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
153
156
  _: 1
154
157
  }, 8, ["disabled", "size"])]),
155
158
  _: 1
156
- }))]));
159
+ })) : createCommentVNode("v-if", true)]));
157
160
  };
158
161
  }
159
162
  });
@@ -36,9 +36,9 @@ var useCodeBlockEdit = (codeBlockService) => {
36
36
  const deleteCode = async (key) => {
37
37
  codeBlockService.deleteCodeDslByIds([key]);
38
38
  };
39
- const submitCodeBlockHandler = async (values) => {
39
+ const submitCodeBlockHandler = async (values, eventData) => {
40
40
  if (!codeId.value) return;
41
- await codeBlockService.setCodeDslById(codeId.value, values);
41
+ await codeBlockService.setCodeDslById(codeId.value, values, { changeRecords: eventData?.changeRecords });
42
42
  codeBlockEditorRef.value?.hide();
43
43
  };
44
44
  return {
@@ -69,25 +69,33 @@ var useStage = (stageOptions) => {
69
69
  });
70
70
  stage.on("update", (ev) => {
71
71
  if (ev.parentEl) {
72
- for (const data of ev.data) {
72
+ const pId = getIdFromEl()(ev.parentEl);
73
+ if (!pId) return;
74
+ const configs = ev.data.map((data) => {
73
75
  const id = getIdFromEl()(data.el);
74
- const pId = getIdFromEl()(ev.parentEl);
75
- id && pId && editor_default.moveToContainer({
76
+ if (!id) return null;
77
+ return {
76
78
  id,
77
79
  style: data.style
78
- }, pId);
79
- }
80
+ };
81
+ }).filter((cfg) => Boolean(cfg));
82
+ if (configs.length > 0) editor_default.moveToContainer(configs, pId);
80
83
  return;
81
84
  }
85
+ const configs = [];
86
+ const changeRecordList = [];
82
87
  ev.data.forEach((data) => {
83
88
  const id = getIdFromEl()(data.el);
84
89
  if (!id) return;
85
90
  const { style = {} } = data;
86
- editor_default.update({
91
+ configs.push({
87
92
  id,
88
93
  style
89
- }, { changeRecords: buildChangeRecords(style, "style") });
94
+ });
95
+ changeRecordList.push(buildChangeRecords(style, "style"));
90
96
  });
97
+ if (configs.length === 0) return;
98
+ editor_default.update(configs, { changeRecordList });
91
99
  });
92
100
  stage.on("sort", (ev) => {
93
101
  editor_default.sort(ev.src, ev.dist);
package/dist/es/index.js CHANGED
@@ -21,6 +21,7 @@ import { useFilter } from "./hooks/use-filter.js";
21
21
  import { useGetSo } from "./hooks/use-getso.js";
22
22
  import { useNextFloatBoxPosition } from "./hooks/use-next-float-box-position.js";
23
23
  import { useNodeStatus } from "./hooks/use-node-status.js";
24
+ import { getCodeBlockFormConfig } from "./utils/code-block.js";
24
25
  import { debug, error, info, log, warn } from "./utils/logger.js";
25
26
  import { getCascaderOptionsFromFields, getDisplayField, getFieldType, getFormConfig, getFormValue } from "./utils/data-source/index.js";
26
27
  import { IdleTask } from "./utils/dep/idle-task.js";
@@ -31,6 +32,7 @@ import SplitView_default from "./components/SplitView.js";
31
32
  import Icon_default from "./components/Icon.js";
32
33
  import ToolButton_default from "./components/ToolButton.js";
33
34
  import CodeEditor_default from "./layouts/CodeEditor.js";
35
+ import CompareForm_default from "./components/CompareForm.js";
34
36
  import FormPanel_default from "./layouts/props-panel/FormPanel.js";
35
37
  import PropsPanel_default from "./layouts/props-panel/PropsPanel.js";
36
38
  import FloatingBox_default from "./components/FloatingBox.js";
@@ -76,4 +78,4 @@ export * from "@tmagic/table";
76
78
  export * from "@tmagic/stage";
77
79
  export * from "@tmagic/design";
78
80
  export * from "@tmagic/utils";
79
- export { CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, advancedTabConfig, arrayOptions, beforePaste, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectRelatedNodes, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, designPlugin, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getDefaultConfig, getDisplayField, getEditorConfig, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getNodeIndex, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, info, isIncludeDataSource, monaco_editor_default as loadMonaco, log, moveItemsInContainer, numberOptions, props_default as propsService, resolveSelectedNode, serializeConfig, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
81
+ export { CODE_DRAFT_STORAGE_KEY, COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, CodeBlockEditor_default as CodeBlockEditor, CodeBlockList_default as CodeBlockList, CodeBlockListPanel_default as CodeBlockListPanel, CodeDeleteErrorType, CodeSelect_default as CodeSelect, CodeSelectCol_default as CodeSelectCol, ColumnLayout, CompareForm_default as CompareForm, ComponentListPanel_default as ComponentListPanel, CondOpSelect_default as CondOpSelect, ContentMenu_default as ContentMenu, DEFAULT_LEFT_COLUMN_WIDTH, DEFAULT_RIGHT_COLUMN_WIDTH, DataSourceAddButton_default as DataSourceAddButton, DataSourceConfigPanel_default as DataSourceConfigPanel, Index_default as DataSourceFieldSelect, DataSourceFields_default as DataSourceFields, DataSourceInput_default as DataSourceInput, DataSourceMethodSelect_default as DataSourceMethodSelect, DataSourceMethods_default as DataSourceMethods, DataSourceMocks_default as DataSourceMocks, DataSourceSelect_default as DataSourceSelect, DepTargetType, DisplayConds_default as DisplayConds, DragType, EventSelect_default as EventSelect, Fixed2Other, FloatingBox_default as FloatingBox, H_GUIDE_LINE_STORAGE_KEY, Icon_default as Icon, IdleTask, KeyBindingCommand, KeyValue_default as KeyValue, Keys, LEFT_COLUMN_WIDTH_STORAGE_KEY, LayerOffset, LayerPanel_default as LayerPanel, Layout, SplitView_default as LayoutContainer, MIN_CENTER_COLUMN_WIDTH, MIN_LEFT_COLUMN_WIDTH, MIN_RIGHT_COLUMN_WIDTH, PROPS_PANEL_WIDTH_STORAGE_KEY, PageFragmentSelect_default as PageFragmentSelect, FormPanel_default as PropsFormPanel, PropsPanel_default as PropsPanel, RIGHT_COLUMN_WIDTH_STORAGE_KEY, Resizer_default as Resizer, ScrollViewer, SideItemKey, SplitView_default as SplitView, StageCore, Index_default$1 as StyleSetter, CodeEditor_default as TMagicCodeEditor, Editor_default as TMagicEditor, ToolButton_default as ToolButton, Tree_default as Tree, TreeNode_default as TreeNode, UI_SELECT_MODE_EVENT_NAME, UndoRedo, V_GUIDE_LINE_STORAGE_KEY, advancedTabConfig, arrayOptions, beforePaste, buildChangeRecords, calcAlignCenterStyle, calcLayerTargetIndex, calcMoveStyle, canUsePluginMethods, change2Fixed, classifyDragSources, codeBlock_default as codeBlockService, collectRelatedNodes, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, designPlugin, displayTabConfig, editorNodeMergeCustomizer, editor_default as editorService, eqOptions, error, eventTabConfig, events_default as eventsService, fillConfig, fixNodeLeft, fixNodePosition, formPlugin, generatePageName, generatePageNameByApp, getAddParent, getCascaderOptionsFromFields, getCodeBlockFormConfig, getDefaultConfig, getDisplayField, getEditorConfig, getFieldType, getFormConfig, getFormValue, getGuideLineFromCache, getInitPositionStyle, getNodeIndex, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, info, isIncludeDataSource, monaco_editor_default as loadMonaco, log, moveItemsInContainer, numberOptions, props_default as propsService, resolveSelectedNode, serializeConfig, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
@@ -2,7 +2,7 @@ import { isIncludeDataSource } from "./utils/editor.js";
2
2
  import { getDepNodeIds, getNodes, isPage, isValueIncludeDataSource } from "@tmagic/utils";
3
3
  import { DepTargetType, NODE_CONDS_KEY, NodeType, createCodeBlockTarget, createDataSourceCondTarget, createDataSourceMethodTarget, createDataSourceTarget, updateNode } from "@tmagic/core";
4
4
  import { nextTick, onBeforeUnmount, reactive, toRaw, watch } from "vue";
5
- import { cloneDeep } from "lodash-es";
5
+ import { cloneDeep as cloneDeep$1 } from "lodash-es";
6
6
  //#region packages/editor/src/initService.ts
7
7
  var initServiceState = (props, { editorService, historyService, componentListService, propsService, eventsService, uiService, codeBlockService, keybindingService, dataSourceService, depService }) => {
8
8
  watch(() => props.modelValue, (modelValue) => {
@@ -86,9 +86,9 @@ var initServiceEvents = (props, emit, { editorService, codeBlockService, dataSou
86
86
  const root = editorService.get("root");
87
87
  if (!root) return;
88
88
  return editorService.get("stage")?.update({
89
- config: cloneDeep(node),
89
+ config: cloneDeep$1(node),
90
90
  parentId: editorService.getParentById(node.id)?.id,
91
- root: cloneDeep(root)
91
+ root: cloneDeep$1(root)
92
92
  });
93
93
  };
94
94
  const updateDataSourceSchema = async () => {
@@ -128,7 +128,7 @@ var initServiceEvents = (props, emit, { editorService, codeBlockService, dataSou
128
128
  if (!stage) return;
129
129
  stage.reloadIframe(url);
130
130
  stage.renderer?.once("runtime-ready", (runtime) => {
131
- runtime.updateRootConfig?.(cloneDeep(toRaw(editorService.get("root"))));
131
+ runtime.updateRootConfig?.(cloneDeep$1(toRaw(editorService.get("root"))));
132
132
  const page = editorService.get("page");
133
133
  const node = editorService.get("node");
134
134
  page?.id && runtime?.updatePageId?.(page.id);
@@ -155,7 +155,7 @@ var initServiceEvents = (props, emit, { editorService, codeBlockService, dataSou
155
155
  const stage = await getStage();
156
156
  const runtime = await stage.renderer?.getRuntime();
157
157
  const app = await getTMagicApp();
158
- if (!app?.dataSourceManager) runtime?.updateRootConfig?.(cloneDeep(toRaw(value)));
158
+ if (!app?.dataSourceManager) runtime?.updateRootConfig?.(cloneDeep$1(toRaw(value)));
159
159
  const page = editorService.get("page");
160
160
  const node = editorService.get("node");
161
161
  page?.id && runtime?.updatePageId?.(page.id);
@@ -165,7 +165,7 @@ var initServiceEvents = (props, emit, { editorService, codeBlockService, dataSou
165
165
  if (value) {
166
166
  depService.clearIdleTasks();
167
167
  await (typeof Worker === "undefined" ? collectIdle(value.items, true) : depService.collectByWorker(value));
168
- const dsl = cloneDeep(toRaw(value));
168
+ const dsl = cloneDeep$1(toRaw(value));
169
169
  if (dsl.dataSources && dsl.dataSourceDeps && app?.dataSourceManager) for (const node of getNodes(getDepNodeIds(dsl.dataSourceDeps), dsl.items)) updateNode(app.dataSourceManager.compiledNode(node), dsl);
170
170
  runtime?.updateRootConfig?.(dsl);
171
171
  }
@@ -194,6 +194,10 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
194
194
  deep: true,
195
195
  immediate: true
196
196
  });
197
+ watch(() => props.modifiedValues, (v, preV) => {
198
+ if (props.type !== "diff") return;
199
+ if (v !== preV) setEditorValue(props.initValues, props.modifiedValues);
200
+ }, { deep: true });
197
201
  watch(() => props.options, (v) => {
198
202
  vsEditor?.updateOptions(v);
199
203
  vsDiffEditor?.updateOptions(v);
@@ -19,9 +19,11 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
19
19
  props: {
20
20
  disabledPageFragment: { type: Boolean },
21
21
  pageBarSortOptions: {},
22
- pageFilterFunction: { type: Function }
22
+ pageFilterFunction: { type: Function },
23
+ hideSidebar: { type: Boolean }
23
24
  },
24
25
  setup(__props) {
26
+ const props = __props;
25
27
  const codeOptions = inject("codeOptions", {});
26
28
  const { editorService, uiService, storageService } = useServices();
27
29
  const contentEl = useTemplateRef("content");
@@ -41,7 +43,7 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
41
43
  });
42
44
  });
43
45
  const columnWidthChange = (columnW) => {
44
- storageService.setItem(LEFT_COLUMN_WIDTH_STORAGE_KEY, columnW.left, { protocol: Protocol.NUMBER });
46
+ if (!props.hideSidebar) storageService.setItem(LEFT_COLUMN_WIDTH_STORAGE_KEY, columnW.left, { protocol: Protocol.NUMBER });
45
47
  storageService.setItem(RIGHT_COLUMN_WIDTH_STORAGE_KEY, columnW.right, { protocol: Protocol.NUMBER });
46
48
  uiService.set("columnWidth", columnW);
47
49
  };
@@ -87,15 +89,14 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
87
89
  "left-class": "m-editor-framework-left",
88
90
  "center-class": "m-editor-framework-center",
89
91
  "right-class": "m-editor-framework-right",
90
- left: columnWidth.value.left,
92
+ left: __props.hideSidebar ? void 0 : columnWidth.value.left,
91
93
  right: columnWidth.value.right,
92
- "min-left": unref(200),
94
+ "min-left": __props.hideSidebar ? 0 : unref(200),
93
95
  "min-right": unref(300),
94
96
  "min-center": unref(400),
95
97
  width: frameworkRect.value.width,
96
98
  onChange: columnWidthChange
97
99
  }, createSlots({
98
- left: withCtx(() => [renderSlot(_ctx.$slots, "sidebar")]),
99
100
  center: withCtx(() => [page.value ? renderSlot(_ctx.$slots, "workspace", { key: 0 }) : renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [createVNode(AddPageBox_default, { "disabled-page-fragment": __props.disabledPageFragment }, null, 8, ["disabled-page-fragment"])]), renderSlot(_ctx.$slots, "page-bar", {}, () => [createVNode(PageBar_default, {
100
101
  "disabled-page-fragment": __props.disabledPageFragment,
101
102
  "page-bar-sort-options": __props.pageBarSortOptions,
@@ -112,10 +113,14 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
112
113
  "filter-function"
113
114
  ])])]),
114
115
  _: 2
115
- }, [page.value ? {
116
+ }, [!__props.hideSidebar ? {
117
+ name: "left",
118
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "sidebar")]),
119
+ key: "0"
120
+ } : void 0, page.value ? {
116
121
  name: "right",
117
122
  fn: withCtx(() => [renderSlot(_ctx.$slots, "props-panel")]),
118
- key: "0"
123
+ key: "1"
119
124
  } : void 0]), 1032, [
120
125
  "left",
121
126
  "right",
@@ -1,5 +1,6 @@
1
1
  import { ColumnLayout } from "../type.js";
2
2
  import { useServices } from "../hooks/use-services.js";
3
+ import HistoryListPanel_default from "./history-list/HistoryListPanel.js";
3
4
  import NavMenuColumn_default from "./NavMenuColumn.js";
4
5
  import { NodeType } from "@tmagic/core";
5
6
  import { Fragment, computed, createBlock, createElementBlock, defineComponent, markRaw, normalizeStyle, onBeforeUnmount, onMounted, openBlock, renderList, unref, useTemplateRef } from "vue";
@@ -68,6 +69,13 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
68
69
  handler: () => editorService.redo()
69
70
  });
70
71
  break;
72
+ case "history-list":
73
+ config.push({
74
+ type: "component",
75
+ className: "history-list",
76
+ component: markRaw(HistoryListPanel_default)
77
+ });
78
+ break;
71
79
  case "zoom-in":
72
80
  config.push({
73
81
  type: "button",
@@ -0,0 +1,5 @@
1
+ import Bucket_vue_vue_type_script_setup_true_lang_default from "./Bucket.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/Bucket.vue
3
+ var Bucket_default = Bucket_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Bucket_default as default };
@@ -0,0 +1,84 @@
1
+ import GroupRow_default from "./GroupRow.js";
2
+ import InitialRow_default from "./InitialRow.js";
3
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, renderList, toDisplayString } from "vue";
4
+ //#region packages/editor/src/layouts/history-list/Bucket.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = { class: "m-editor-history-list-bucket" };
6
+ var _hoisted_2 = { class: "m-editor-history-list-bucket-title" };
7
+ var _hoisted_3 = { class: "m-editor-history-list-bucket-count" };
8
+ var _hoisted_4 = { class: "m-editor-history-list-ul" };
9
+ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ name: "MEditorHistoryListBucket",
11
+ __name: "Bucket",
12
+ props: {
13
+ title: {},
14
+ bucketId: {},
15
+ prefix: {},
16
+ groups: {},
17
+ describeGroup: { type: Function },
18
+ describeStep: { type: Function },
19
+ isStepDiffable: { type: Function },
20
+ expanded: {}
21
+ },
22
+ emits: [
23
+ "toggle",
24
+ "goto",
25
+ "goto-initial",
26
+ "diff-step",
27
+ "revert-step"
28
+ ],
29
+ setup(__props) {
30
+ const props = __props;
31
+ /** 该 bucket 是否处于初始状态(栈 cursor=0),等价于全部 group 都未 applied。 */
32
+ const isInitial = computed(() => props.groups.length > 0 && props.groups.every((g) => !g.applied));
33
+ return (_ctx, _cache) => {
34
+ return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
35
+ createElementVNode("span", null, toDisplayString(__props.title), 1),
36
+ createElementVNode("code", null, toDisplayString(String(__props.bucketId)), 1),
37
+ createElementVNode("span", _hoisted_3, toDisplayString(__props.groups.length) + " 组", 1)
38
+ ]), createElementVNode("ul", _hoisted_4, [
39
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (group, gIdx) => {
40
+ return openBlock(), createBlock(GroupRow_default, {
41
+ key: `${__props.prefix}-${__props.bucketId}-${gIdx}`,
42
+ "group-key": `${__props.prefix}-${__props.bucketId}-${gIdx}`,
43
+ applied: group.applied,
44
+ merged: group.steps.length > 1,
45
+ "op-type": group.opType,
46
+ desc: __props.describeGroup(group),
47
+ "step-count": group.steps.length,
48
+ "sub-steps": group.steps.map((s) => ({
49
+ index: s.index,
50
+ applied: s.applied,
51
+ isCurrent: s.isCurrent,
52
+ desc: __props.describeStep(s.step),
53
+ diffable: __props.isStepDiffable ? __props.isStepDiffable(s.step) : false,
54
+ revertable: s.applied
55
+ })),
56
+ "is-current": group.isCurrent,
57
+ expanded: !!__props.expanded[`${__props.prefix}-${__props.bucketId}-${gIdx}`],
58
+ onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
59
+ onGoto: _cache[1] || (_cache[1] = (index) => _ctx.$emit("goto", __props.bucketId, index)),
60
+ onDiffStep: _cache[2] || (_cache[2] = (index) => _ctx.$emit("diff-step", __props.bucketId, index)),
61
+ onRevertStep: _cache[3] || (_cache[3] = (index) => _ctx.$emit("revert-step", __props.bucketId, index))
62
+ }, null, 8, [
63
+ "group-key",
64
+ "applied",
65
+ "merged",
66
+ "op-type",
67
+ "desc",
68
+ "step-count",
69
+ "sub-steps",
70
+ "is-current",
71
+ "expanded"
72
+ ]);
73
+ }), 128)),
74
+ createCommentVNode("\n 初始状态项:永远位于该 bucket 列表底部(同样按倒序展示,最底部 = 最早状态)。\n 当 bucket 内所有 group 都未 applied 时即为当前位置。\n "),
75
+ createVNode(InitialRow_default, {
76
+ "is-current": isInitial.value,
77
+ onGotoInitial: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("goto-initial", __props.bucketId))
78
+ }, null, 8, ["is-current"])
79
+ ])]);
80
+ };
81
+ }
82
+ });
83
+ //#endregion
84
+ export { Bucket_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import CodeBlockTab_vue_vue_type_script_setup_true_lang_default from "./CodeBlockTab.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/CodeBlockTab.vue
3
+ var CodeBlockTab_default = CodeBlockTab_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { CodeBlockTab_default as default };
@@ -0,0 +1,62 @@
1
+ import { describeCodeBlockGroup, describeCodeBlockStep } from "./composables.js";
2
+ import Bucket_default from "./Bucket.js";
3
+ import { TMagicScrollbar } from "@tmagic/design";
4
+ import { Fragment, createBlock, createElementBlock, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
5
+ //#region packages/editor/src/layouts/history-list/CodeBlockTab.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = {
7
+ key: 0,
8
+ class: "m-editor-history-list-empty"
9
+ };
10
+ var CodeBlockTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ name: "MEditorHistoryListCodeBlockTab",
12
+ __name: "CodeBlockTab",
13
+ props: {
14
+ buckets: {},
15
+ expanded: {}
16
+ },
17
+ emits: [
18
+ "toggle",
19
+ "goto",
20
+ "goto-initial",
21
+ "diff-step",
22
+ "revert-step"
23
+ ],
24
+ setup(__props) {
25
+ /** 仅 update(前后 content 都存在)时可查看差异。 */
26
+ const isCodeBlockStepDiffable = (step) => Boolean(step.oldContent && step.newContent);
27
+ return (_ctx, _cache) => {
28
+ return !__props.buckets.length ? (openBlock(), createElementBlock("div", _hoisted_1, "暂无操作记录")) : (openBlock(), createBlock(unref(TMagicScrollbar), {
29
+ key: 1,
30
+ "max-height": "360px"
31
+ }, {
32
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.buckets, (bucket) => {
33
+ return openBlock(), createBlock(Bucket_default, {
34
+ key: `cb-${bucket.id}`,
35
+ title: "代码块",
36
+ "bucket-id": bucket.id,
37
+ prefix: "cb",
38
+ groups: bucket.groups,
39
+ "describe-group": unref(describeCodeBlockGroup),
40
+ "describe-step": unref(describeCodeBlockStep),
41
+ "is-step-diffable": isCodeBlockStepDiffable,
42
+ expanded: __props.expanded,
43
+ onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
44
+ onGoto: _cache[1] || (_cache[1] = (id, index) => _ctx.$emit("goto", id, index)),
45
+ onGotoInitial: _cache[2] || (_cache[2] = (id) => _ctx.$emit("goto-initial", id)),
46
+ onDiffStep: _cache[3] || (_cache[3] = (id, index) => _ctx.$emit("diff-step", id, index)),
47
+ onRevertStep: _cache[4] || (_cache[4] = (id, index) => _ctx.$emit("revert-step", id, index))
48
+ }, null, 8, [
49
+ "bucket-id",
50
+ "groups",
51
+ "describe-group",
52
+ "describe-step",
53
+ "expanded"
54
+ ]);
55
+ }), 128))]),
56
+ _: 1
57
+ }));
58
+ };
59
+ }
60
+ });
61
+ //#endregion
62
+ export { CodeBlockTab_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DataSourceTab_vue_vue_type_script_setup_true_lang_default from "./DataSourceTab.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/DataSourceTab.vue
3
+ var DataSourceTab_default = DataSourceTab_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DataSourceTab_default as default };
@@ -0,0 +1,62 @@
1
+ import { describeDataSourceGroup, describeDataSourceStep } from "./composables.js";
2
+ import Bucket_default from "./Bucket.js";
3
+ import { TMagicScrollbar } from "@tmagic/design";
4
+ import { Fragment, createBlock, createElementBlock, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
5
+ //#region packages/editor/src/layouts/history-list/DataSourceTab.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = {
7
+ key: 0,
8
+ class: "m-editor-history-list-empty"
9
+ };
10
+ var DataSourceTab_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ name: "MEditorHistoryListDataSourceTab",
12
+ __name: "DataSourceTab",
13
+ props: {
14
+ buckets: {},
15
+ expanded: {}
16
+ },
17
+ emits: [
18
+ "toggle",
19
+ "goto",
20
+ "goto-initial",
21
+ "diff-step",
22
+ "revert-step"
23
+ ],
24
+ setup(__props) {
25
+ /** 仅 update(前后 schema 都存在)时可查看差异。 */
26
+ const isDataSourceStepDiffable = (step) => Boolean(step.oldSchema && step.newSchema);
27
+ return (_ctx, _cache) => {
28
+ return !__props.buckets.length ? (openBlock(), createElementBlock("div", _hoisted_1, "暂无操作记录")) : (openBlock(), createBlock(unref(TMagicScrollbar), {
29
+ key: 1,
30
+ "max-height": "360px"
31
+ }, {
32
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.buckets, (bucket) => {
33
+ return openBlock(), createBlock(Bucket_default, {
34
+ key: `ds-${bucket.id}`,
35
+ title: "数据源",
36
+ "bucket-id": bucket.id,
37
+ prefix: "ds",
38
+ groups: bucket.groups,
39
+ "describe-group": unref(describeDataSourceGroup),
40
+ "describe-step": unref(describeDataSourceStep),
41
+ "is-step-diffable": isDataSourceStepDiffable,
42
+ expanded: __props.expanded,
43
+ onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
44
+ onGoto: _cache[1] || (_cache[1] = (id, index) => _ctx.$emit("goto", id, index)),
45
+ onGotoInitial: _cache[2] || (_cache[2] = (id) => _ctx.$emit("goto-initial", id)),
46
+ onDiffStep: _cache[3] || (_cache[3] = (id, index) => _ctx.$emit("diff-step", id, index)),
47
+ onRevertStep: _cache[4] || (_cache[4] = (id, index) => _ctx.$emit("revert-step", id, index))
48
+ }, null, 8, [
49
+ "bucket-id",
50
+ "groups",
51
+ "describe-group",
52
+ "describe-step",
53
+ "expanded"
54
+ ]);
55
+ }), 128))]),
56
+ _: 1
57
+ }));
58
+ };
59
+ }
60
+ });
61
+ //#endregion
62
+ export { DataSourceTab_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import GroupRow_vue_vue_type_script_setup_true_lang_default from "./GroupRow.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/GroupRow.vue
3
+ var GroupRow_default = GroupRow_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { GroupRow_default as default };