@tmagic/editor 1.8.0-beta.6 → 1.8.0-beta.8

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 (42) hide show
  1. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +10 -6
  2. package/dist/es/index.js +6 -4
  3. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +2 -2
  4. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +38 -26
  5. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +5 -1
  6. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +163 -310
  7. package/dist/es/layouts/history-list/composables.js +47 -128
  8. package/dist/es/layouts/history-list/useHistoryList.js +56 -0
  9. package/dist/es/layouts/history-list/useHistoryRevert.js +304 -0
  10. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +2 -2
  11. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +3 -3
  12. package/dist/es/services/codeBlock.js +32 -28
  13. package/dist/es/services/dataSource.js +43 -34
  14. package/dist/es/services/editor.js +31 -26
  15. package/dist/es/services/history.js +268 -384
  16. package/dist/es/style.css +12 -0
  17. package/dist/es/utils/editor.js +2 -2
  18. package/dist/es/utils/history.js +35 -47
  19. package/dist/style.css +12 -0
  20. package/dist/tmagic-editor.umd.cjs +3808 -3090
  21. package/package.json +7 -7
  22. package/src/components/CompareForm.vue +14 -6
  23. package/src/index.ts +2 -0
  24. package/src/layouts/NavMenu.vue +2 -2
  25. package/src/layouts/history-list/GroupRow.vue +10 -0
  26. package/src/layouts/history-list/HistoryDiffDialog.vue +6 -1
  27. package/src/layouts/history-list/HistoryListPanel.vue +60 -270
  28. package/src/layouts/history-list/PageTab.vue +4 -4
  29. package/src/layouts/history-list/composables.ts +82 -180
  30. package/src/layouts/history-list/useHistoryList.ts +60 -0
  31. package/src/layouts/history-list/useHistoryRevert.ts +400 -0
  32. package/src/layouts/sidebar/Sidebar.vue +2 -2
  33. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +5 -4
  34. package/src/services/codeBlock.ts +30 -29
  35. package/src/services/dataSource.ts +37 -37
  36. package/src/services/editor.ts +32 -29
  37. package/src/services/history.ts +340 -431
  38. package/src/theme/history-list-panel.scss +14 -0
  39. package/src/type.ts +179 -100
  40. package/src/utils/editor.ts +2 -2
  41. package/src/utils/history.ts +52 -74
  42. package/types/index.d.ts +435 -309
@@ -2,7 +2,7 @@ import { useServices } from "../hooks/use-services.js";
2
2
  import { getCodeBlockFormConfig } from "../utils/code-block.js";
3
3
  import { MForm } from "@tmagic/form";
4
4
  import { HookType } from "@tmagic/core";
5
- import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, inject, normalizeStyle, openBlock, ref, unref, useTemplateRef, watch, watchEffect } from "vue";
5
+ import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, inject, normalizeStyle, openBlock, provide, ref, unref, useTemplateRef, watch, watchEffect } from "vue";
6
6
  import { isEqual } from "lodash-es";
7
7
  //#region packages/editor/src/components/CompareForm.vue?vue&type=script&setup=true&lang.ts
8
8
  var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -17,12 +17,13 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
17
17
  labelWidth: { default: "120px" },
18
18
  height: {},
19
19
  extendState: {},
20
- loadConfig: {}
20
+ loadConfig: {},
21
+ services: { default: () => useServices() }
21
22
  },
22
23
  setup(__props, { expose: __expose }) {
23
24
  const props = __props;
24
- const { propsService, dataSourceService, codeBlockService, editorService } = useServices();
25
- const services = useServices();
25
+ const { propsService, dataSourceService, codeBlockService, editorService } = props.services;
26
+ provide("services", props.services);
26
27
  const config = ref([]);
27
28
  /** vs-code 编辑器的 monaco 配置项,沿用 Editor 顶层 provide('codeOptions', ...) 的注入。 */
28
29
  const codeOptions = inject("codeOptions", {});
@@ -102,7 +103,10 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
102
103
  case "node":
103
104
  if (!props.type) return [];
104
105
  return removeStyleDisplayConfig(await propsService.getPropsConfig(props.type, { node: props.value }));
105
- case "data-source": return dataSourceService.getFormConfig(props.type || "base");
106
+ case "data-source": return dataSourceService.getFormConfig(props.type || "base").map((item) => "type" in item && item.type === "tab" ? {
107
+ ...item,
108
+ active: "fields"
109
+ } : item);
106
110
  case "code-block": return getCodeBlockFormConfig({
107
111
  paramColConfig: codeBlockService.getParamsColConfig(),
108
112
  isDataSource: () => Boolean(props.dataSourceType),
@@ -147,7 +151,7 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
147
151
  watchEffect(() => {
148
152
  if (formRef.value) {
149
153
  formRef.value.formState.stage = stage.value;
150
- formRef.value.formState.services = services;
154
+ formRef.value.formState.services = props.services;
151
155
  }
152
156
  });
153
157
  __expose({
package/dist/es/index.js CHANGED
@@ -4,7 +4,7 @@ import { advancedTabConfig, arrayOptions, displayTabConfig, eqOptions, eventTabC
4
4
  import props_default from "./services/props.js";
5
5
  import { getEditorConfig, setEditorConfig } from "./utils/config.js";
6
6
  import { UndoRedo } from "./utils/undo-redo.js";
7
- import { createStackStep, describeRevertStep, deserializeStacks, detectPageTargetId, detectPageTargetName, detectStackOpType, getLastPushedHistoryIds, getOrCreateStack, markStackSaved, mergePageSteps, mergeStackSteps, serializeStacks, undoFloor } from "./utils/history.js";
7
+ import { createStackStep, describeRevertStep, deserializeStacks, detectStackOpType, detectTargetId, detectTargetName, getLastPushedHistoryIds, getOrCreateStack, markStackSaved, mergeSteps, serializeStacks, undoFloor } from "./utils/history.js";
8
8
  import { idbDelete, idbGet, idbSet, isIndexedDBSupported, openIndexedDB } from "./utils/indexed-db.js";
9
9
  import history_default from "./services/history.js";
10
10
  import storage_default from "./services/storage.js";
@@ -34,10 +34,10 @@ import SplitView_default from "./components/SplitView.js";
34
34
  import Icon_default from "./components/Icon.js";
35
35
  import ToolButton_default from "./components/ToolButton.js";
36
36
  import CodeEditor_default from "./layouts/CodeEditor.js";
37
+ import { confirmHistoryAction } from "./layouts/history-list/composables.js";
37
38
  import Bucket_default from "./layouts/history-list/Bucket.js";
38
39
  import BucketTab_default from "./layouts/history-list/BucketTab.js";
39
- import CompareForm_default from "./components/CompareForm.js";
40
- import HistoryDiffDialog_default from "./layouts/history-list/HistoryDiffDialog.js";
40
+ import { useHistoryRevert } from "./layouts/history-list/useHistoryRevert.js";
41
41
  import FormPanel_default from "./layouts/props-panel/FormPanel.js";
42
42
  import PropsPanel_default from "./layouts/props-panel/PropsPanel.js";
43
43
  import FloatingBox_default from "./components/FloatingBox.js";
@@ -68,6 +68,8 @@ import DataSourceMethodSelect_default from "./fields/DataSourceMethodSelect.js";
68
68
  import Index_default from "./fields/DataSourceFieldSelect/Index.js";
69
69
  import EventSelect_default from "./fields/EventSelect.js";
70
70
  import KeyValue_default from "./fields/KeyValue.js";
71
+ import CompareForm_default from "./components/CompareForm.js";
72
+ import HistoryDiffDialog_default from "./layouts/history-list/HistoryDiffDialog.js";
71
73
  import PageFragmentSelect_default from "./fields/PageFragmentSelect.js";
72
74
  import DisplayConds_default from "./fields/DisplayConds.js";
73
75
  import CondOpSelect_default from "./fields/CondOpSelect.js";
@@ -83,4 +85,4 @@ export * from "@tmagic/table";
83
85
  export * from "@tmagic/stage";
84
86
  export * from "@tmagic/design";
85
87
  export * from "@tmagic/utils";
86
- 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, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, 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, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectPageTargetId, detectPageTargetName, detectStackOpType, 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, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isIncludeDataSource, isIndexedDBSupported, monaco_editor_default as loadMonaco, log, markStackSaved, mergePageSteps, mergeStackSteps, moveItemsInContainer, numberOptions, openIndexedDB, props_default as propsService, resolveSelectedNode, serializeConfig, serializeStacks, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, undoFloor, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
88
+ 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, HistoryDiffDialog_default as HistoryDiffDialog, Bucket_default as HistoryListBucket, BucketTab_default as HistoryListBucketTab, 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, confirmHistoryAction, createStackStep, dataSource_default as dataSourceService, debug, plugin_default as default, defaultIsExpandable, dep_default as depService, describeRevertStep, describeStepForRevert, deserializeStacks, designPlugin, detectStackOpType, detectTargetId, detectTargetName, 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, getLastPushedHistoryIds, getNodeIndex, getOrCreateStack, getPageFragmentList, getPageList, getPageNameList, getPositionInContainer, getRelativeStyle, history_default as historyService, idbDelete, idbGet, idbSet, info, isIncludeDataSource, isIndexedDBSupported, monaco_editor_default as loadMonaco, log, markStackSaved, mergeSteps, moveItemsInContainer, numberOptions, openIndexedDB, props_default as propsService, resolveSelectedNode, serializeConfig, serializeStacks, setChildrenLayout, setEditorConfig, setLayout, stageOverlay_default as stageOverlayService, storage_default as storageService, styleTabConfig, tablePlugin, toggleFixedPosition, ui_default as uiService, undoFloor, updateStatus, useCodeBlockEdit, useEditorContentHeight, useFilter, useFloatBox, useGetSo, useHistoryRevert, useNextFloatBoxPosition, useNodeStatus, useServices, useStage, useWindowRect, warn };
@@ -55,7 +55,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
55
55
  className: "undo",
56
56
  icon: markRaw(Back),
57
57
  tooltip: `后退(${ctrl}+z)`,
58
- disabled: () => !historyService.state.canUndo,
58
+ disabled: () => !historyService.canUndo("page", editorService.get("page")?.id),
59
59
  handler: () => editorService.undo()
60
60
  });
61
61
  break;
@@ -65,7 +65,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
65
65
  className: "redo",
66
66
  icon: markRaw(Right),
67
67
  tooltip: `前进(${ctrl}+Shift+z)`,
68
- disabled: () => !historyService.state.canRedo,
68
+ disabled: () => !historyService.canRedo("page", editorService.get("page")?.id),
69
69
  handler: () => editorService.redo()
70
70
  });
71
71
  break;
@@ -15,31 +15,33 @@ var _hoisted_5 = {
15
15
  };
16
16
  var _hoisted_6 = ["title"];
17
17
  var _hoisted_7 = ["title"];
18
- var _hoisted_8 = {
19
- key: 4,
18
+ var _hoisted_8 = ["title"];
19
+ var _hoisted_9 = {
20
+ key: 5,
20
21
  class: "m-editor-history-list-item-merge"
21
22
  };
22
- var _hoisted_9 = {
23
+ var _hoisted_10 = {
23
24
  key: 0,
24
25
  class: "m-editor-history-list-substeps"
25
26
  };
26
- var _hoisted_10 = ["title", "onClick"];
27
- var _hoisted_11 = { class: "m-editor-history-list-item-index" };
28
- var _hoisted_12 = { class: "m-editor-history-list-substep-desc" };
29
- var _hoisted_13 = {
27
+ var _hoisted_11 = ["title", "onClick"];
28
+ var _hoisted_12 = { class: "m-editor-history-list-item-index" };
29
+ var _hoisted_13 = { class: "m-editor-history-list-substep-desc" };
30
+ var _hoisted_14 = {
30
31
  key: 0,
31
32
  class: "m-editor-history-list-item-saved",
32
33
  title: "该记录为最近一次保存的状态"
33
34
  };
34
- var _hoisted_14 = {
35
+ var _hoisted_15 = {
35
36
  key: 1,
36
37
  class: "m-editor-history-list-item-actions"
37
38
  };
38
- var _hoisted_15 = ["onClick"];
39
39
  var _hoisted_16 = ["onClick"];
40
40
  var _hoisted_17 = ["onClick"];
41
- var _hoisted_18 = ["title"];
41
+ var _hoisted_18 = ["onClick"];
42
42
  var _hoisted_19 = ["title"];
43
+ var _hoisted_20 = ["title"];
44
+ var _hoisted_21 = ["title"];
43
45
  var GroupRow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
44
46
  name: "MEditorHistoryListGroupRow",
45
47
  __name: "GroupRow",
@@ -194,17 +196,22 @@ var GroupRow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
194
196
  class: "m-editor-history-list-item-source",
195
197
  title: `操作途径:${unref(sourceLabel)(__props.group.source)}`
196
198
  }, toDisplayString(unref(sourceLabel)(__props.group.source)), 9, _hoisted_6)) : createCommentVNode("v-if", true),
197
- !merged.value && __props.group.time ? (openBlock(), createElementBlock("span", {
199
+ !merged.value && __props.group.operator ? (openBlock(), createElementBlock("span", {
198
200
  key: 3,
201
+ class: "m-editor-history-list-item-operator",
202
+ title: `操作人:${__props.group.operator}`
203
+ }, toDisplayString(__props.group.operator), 9, _hoisted_7)) : createCommentVNode("v-if", true),
204
+ !merged.value && __props.group.time ? (openBlock(), createElementBlock("span", {
205
+ key: 4,
199
206
  class: "m-editor-history-list-item-time",
200
207
  title: __props.group.timeTitle || __props.group.time
201
- }, toDisplayString(__props.group.time), 9, _hoisted_7)) : createCommentVNode("v-if", true),
202
- merged.value ? (openBlock(), createElementBlock("span", _hoisted_8, "合并 " + toDisplayString(stepCount.value) + " 步", 1)) : createCommentVNode("v-if", true),
208
+ }, toDisplayString(__props.group.time), 9, _hoisted_8)) : createCommentVNode("v-if", true),
209
+ merged.value ? (openBlock(), createElementBlock("span", _hoisted_9, "合并 " + toDisplayString(stepCount.value) + " 步", 1)) : createCommentVNode("v-if", true),
203
210
  merged.value ? (openBlock(), createElementBlock("span", {
204
- key: 5,
211
+ key: 6,
205
212
  class: normalizeClass(["m-editor-history-list-group-toggle", { "is-expanded": __props.expanded }])
206
213
  }, "▾", 2)) : createCommentVNode("v-if", true)
207
- ], 10, _hoisted_1), merged.value && __props.expanded ? (openBlock(), createElementBlock("ul", _hoisted_9, [(openBlock(true), createElementBlock(Fragment, null, renderList(subStepsDisplay.value, (s) => {
214
+ ], 10, _hoisted_1), merged.value && __props.expanded ? (openBlock(), createElementBlock("ul", _hoisted_10, [(openBlock(true), createElementBlock(Fragment, null, renderList(subStepsDisplay.value, (s) => {
208
215
  return openBlock(), createElementBlock("li", {
209
216
  key: s.index,
210
217
  class: normalizeClass({
@@ -215,40 +222,45 @@ var GroupRow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
215
222
  title: subStepTitle(s),
216
223
  onClick: ($event) => onSubStepClick(s.index)
217
224
  }, [
218
- createElementVNode("span", _hoisted_11, "#" + toDisplayString(s.index + 1), 1),
219
- createElementVNode("span", _hoisted_12, toDisplayString(s.desc), 1),
220
- s.saved ? (openBlock(), createElementBlock("span", _hoisted_13, "已保存")) : createCommentVNode("v-if", true),
221
- s.revertable || s.diffable || __props.gotoEnabled && !s.isCurrent ? (openBlock(), createElementBlock("span", _hoisted_14, [
225
+ createElementVNode("span", _hoisted_12, "#" + toDisplayString(s.index + 1), 1),
226
+ createElementVNode("span", _hoisted_13, toDisplayString(s.desc), 1),
227
+ s.saved ? (openBlock(), createElementBlock("span", _hoisted_14, "已保存")) : createCommentVNode("v-if", true),
228
+ s.revertable || s.diffable || __props.gotoEnabled && !s.isCurrent ? (openBlock(), createElementBlock("span", _hoisted_15, [
222
229
  s.revertable ? (openBlock(), createElementBlock("span", {
223
230
  key: 0,
224
231
  class: "m-editor-history-list-item-revert",
225
232
  title: "将该步骤的修改作为一次新操作反向应用(不影响后续历史)",
226
233
  onClick: withModifiers(($event) => onRevertClick(s.index), ["stop"])
227
- }, "回滚", 8, _hoisted_15)) : createCommentVNode("v-if", true),
234
+ }, "回滚", 8, _hoisted_16)) : createCommentVNode("v-if", true),
228
235
  __props.gotoEnabled && !s.isCurrent ? (openBlock(), createElementBlock("span", {
229
236
  key: 1,
230
237
  class: "m-editor-history-list-item-goto",
231
238
  title: "回到该记录",
232
239
  onClick: withModifiers(($event) => onGotoClick(s.index), ["stop"])
233
- }, "回到", 8, _hoisted_16)) : createCommentVNode("v-if", true),
240
+ }, "回到", 8, _hoisted_17)) : createCommentVNode("v-if", true),
234
241
  s.diffable ? (openBlock(), createElementBlock("span", {
235
242
  key: 2,
236
243
  class: "m-editor-history-list-item-diff",
237
244
  title: "查看修改差异",
238
245
  onClick: withModifiers(($event) => onDiffClick(s.index), ["stop"])
239
- }, "查看差异", 8, _hoisted_17)) : createCommentVNode("v-if", true)
246
+ }, "查看差异", 8, _hoisted_18)) : createCommentVNode("v-if", true)
240
247
  ])) : createCommentVNode("v-if", true),
241
248
  unref(sourceLabel)(s.source) ? (openBlock(), createElementBlock("span", {
242
249
  key: 2,
243
250
  class: "m-editor-history-list-item-source",
244
251
  title: `操作途径:${unref(sourceLabel)(s.source)}`
245
- }, toDisplayString(unref(sourceLabel)(s.source)), 9, _hoisted_18)) : createCommentVNode("v-if", true),
246
- s.time ? (openBlock(), createElementBlock("span", {
252
+ }, toDisplayString(unref(sourceLabel)(s.source)), 9, _hoisted_19)) : createCommentVNode("v-if", true),
253
+ s.operator ? (openBlock(), createElementBlock("span", {
247
254
  key: 3,
255
+ class: "m-editor-history-list-item-operator",
256
+ title: `操作人:${s.operator}`
257
+ }, toDisplayString(s.operator), 9, _hoisted_20)) : createCommentVNode("v-if", true),
258
+ s.time ? (openBlock(), createElementBlock("span", {
259
+ key: 4,
248
260
  class: "m-editor-history-list-item-time",
249
261
  title: s.timeTitle || s.time
250
- }, toDisplayString(s.time), 9, _hoisted_19)) : createCommentVNode("v-if", true)
251
- ], 10, _hoisted_10);
262
+ }, toDisplayString(s.time), 9, _hoisted_21)) : createCommentVNode("v-if", true)
263
+ ], 10, _hoisted_11);
252
264
  }), 128))])) : createCommentVNode("v-if", true)], 2);
253
265
  };
254
266
  }
@@ -1,3 +1,4 @@
1
+ import { useServices } from "../../hooks/use-services.js";
1
2
  import CodeEditor_default from "../CodeEditor.js";
2
3
  import CompareForm_default from "../../components/CompareForm.js";
3
4
  import { TMagicButton, TMagicDialog, TMagicRadioButton, TMagicRadioGroup, TMagicTag } from "@tmagic/design";
@@ -24,6 +25,7 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
24
25
  name: "MEditorHistoryDiffDialog",
25
26
  __name: "HistoryDiffDialog",
26
27
  props: {
28
+ services: { default: () => useServices() },
27
29
  extendState: {},
28
30
  loadConfig: {},
29
31
  width: { default: "900px" },
@@ -237,6 +239,7 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
237
239
  "extend-state": __props.extendState,
238
240
  "load-config": __props.loadConfig,
239
241
  "self-diff-field-types": __props.selfDiffFieldTypes,
242
+ services: props.services,
240
243
  height: "70vh"
241
244
  }, null, 8, [
242
245
  "category",
@@ -246,7 +249,8 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
246
249
  "last-value",
247
250
  "extend-state",
248
251
  "load-config",
249
- "self-diff-field-types"
252
+ "self-diff-field-types",
253
+ "services"
250
254
  ])) : (openBlock(), createBlock(CodeEditor_default, {
251
255
  key: 2,
252
256
  type: "diff",