@tmagic/editor 1.8.0-manmanyu.9 → 1.8.0
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.
- package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +22 -13
- package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +10 -5
- package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +21 -122
- package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +21 -5
- package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +62 -16
- package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/es/components/ScrollBar.js +0 -1
- package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/components/ViewForm.js +5 -0
- package/dist/es/components/ViewForm.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/es/editorProps.js +7 -1
- package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +30 -113
- package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +7 -19
- package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +7 -6
- package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +12 -4
- package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +9 -20
- package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +2 -2
- package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +5 -3
- package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +9 -4
- package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +10 -110
- package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +52 -363
- package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +3 -6
- package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +4 -35
- package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/fields/StyleSetter/configs.js +663 -0
- package/dist/es/fields/StyleSetter/icons/align-items/Center.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +1 -1
- package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +1 -1
- package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
- package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +1 -1
- package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +1 -1
- package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
- package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
- package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +29 -106
- package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +8 -11
- package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +30 -89
- package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +29 -297
- package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +29 -82
- package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +8 -24
- package/dist/es/fields/UISelect.js +0 -1
- package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/fields/configs/codeSelect.js +98 -0
- package/dist/es/fields/configs/displayConds.js +158 -0
- package/dist/es/fields/configs/eventSelect.js +225 -0
- package/dist/es/fields/configs/stickyAddButton.js +21 -0
- package/dist/es/fields/headless-validation.js +139 -0
- package/dist/es/headless.js +2 -0
- package/dist/es/hooks/use-code-block-edit.js +4 -2
- package/dist/es/hooks/use-compare-form.js +101 -0
- package/dist/es/hooks/use-form-context.js +29 -0
- package/dist/es/hooks/use-stage.js +1 -0
- package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/icons/DatasourceIcon.js +1 -1
- package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/index.js +16 -8
- package/dist/es/initService.js +52 -16
- package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +26 -10
- package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +11 -8
- package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +8 -5
- package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +26 -10
- package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +11 -13
- package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/history-list/composables.js +1 -1
- package/dist/es/layouts/history-list/useHistoryRevert.js +38 -33
- package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +50 -20
- package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +53 -35
- package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
- package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +21 -36
- package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/es/layouts/sidebar/code-block/useContentMenu.js +19 -4
- package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +9 -4
- package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/es/layouts/sidebar/data-source/useContentMenu.js +19 -4
- package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
- package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +6 -4
- package/dist/es/layouts/sidebar/layer/use-click.js +3 -3
- package/dist/es/layouts/sidebar/layer/use-drag.js +11 -10
- package/dist/es/layouts/sidebar/layer/use-node-status.js +2 -2
- package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +9 -3
- package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +55 -9
- package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/es/plugin.js +35 -23
- package/dist/es/services/codeBlock.js +8 -3
- package/dist/es/services/dataSource.js +3 -0
- package/dist/es/services/dep.js +162 -41
- package/dist/es/services/editor.js +344 -113
- package/dist/es/services/events.js +4 -4
- package/dist/es/services/history.js +17 -1
- package/dist/es/services/keybinding.js +3 -3
- package/dist/es/services/props.js +2 -1
- package/dist/es/services/storage.js +2 -2
- package/dist/es/services/ui.js +7 -2
- package/dist/es/style.css +277 -114
- package/dist/es/utils/code-block.js +14 -7
- package/dist/es/utils/config.js +4 -1
- package/dist/es/utils/const.js +2 -2
- package/dist/es/utils/content-menu.js +2 -2
- package/dist/es/utils/data-source/index.js +34 -12
- package/dist/es/utils/dep/collect-worker-client.js +154 -0
- package/dist/es/utils/dep/idle-task.js +70 -22
- package/dist/es/utils/dep/worker.js +1 -1
- package/dist/es/utils/editor.js +4 -2
- package/dist/es/utils/event.js +135 -0
- package/dist/es/utils/monaco-editor.js +22 -6
- package/dist/es/utils/operator.js +2 -2
- package/dist/es/utils/props.js +50 -106
- package/dist/es/utils/type-match-rules.js +356 -0
- package/dist/style.css +277 -114
- package/dist/themes/magic-admin.css +978 -175
- package/dist/tmagic-editor-headless.umd.cjs +10880 -0
- package/dist/tmagic-editor.umd.cjs +12695 -10896
- package/package.json +18 -13
- package/src/Editor.vue +23 -6
- package/src/components/CodeBlockEditor.vue +3 -0
- package/src/components/CodeParams.vue +10 -4
- package/src/components/CompareForm.vue +20 -190
- package/src/components/ContentMenu.vue +34 -6
- package/src/components/FloatingBox.vue +71 -7
- package/src/components/ScrollBar.vue +0 -67
- package/src/components/ViewForm.vue +54 -0
- package/src/editorProps.ts +23 -10
- package/src/fields/Code.vue +1 -1
- package/src/fields/CodeSelect.vue +20 -113
- package/src/fields/CodeSelectCol.vue +1 -1
- package/src/fields/CondOpSelect.vue +5 -26
- package/src/fields/DataSourceFieldSelect/FieldSelect.vue +2 -2
- package/src/fields/DataSourceFieldSelect/Index.vue +4 -1
- package/src/fields/DataSourceFields.vue +5 -1
- package/src/fields/DataSourceInput.vue +10 -28
- package/src/fields/DataSourceMethodSelect.vue +1 -1
- package/src/fields/DataSourceMethods.vue +6 -2
- package/src/fields/DataSourceMocks.vue +3 -0
- package/src/fields/DataSourceSelect.vue +1 -1
- package/src/fields/DisplayConds.vue +17 -139
- package/src/fields/EventSelect.vue +29 -416
- package/src/fields/KeyValue.vue +1 -1
- package/src/fields/StyleSetter/Index.vue +2 -8
- package/src/fields/StyleSetter/components/Border.vue +4 -38
- package/src/fields/StyleSetter/components/Box.vue +1 -1
- package/src/fields/StyleSetter/components/Position.vue +1 -1
- package/src/fields/StyleSetter/configs.ts +690 -0
- package/src/fields/StyleSetter/pro/Background.vue +9 -64
- package/src/fields/StyleSetter/pro/Border.vue +5 -16
- package/src/fields/StyleSetter/pro/Font.vue +11 -71
- package/src/fields/StyleSetter/pro/Layout.vue +10 -230
- package/src/fields/StyleSetter/pro/Position.vue +11 -82
- package/src/fields/StyleSetter/pro/Transform.vue +6 -34
- package/src/fields/UISelect.vue +0 -12
- package/src/fields/configs/codeSelect.ts +127 -0
- package/src/fields/configs/displayConds.ts +184 -0
- package/src/fields/configs/eventSelect.ts +309 -0
- package/src/fields/configs/stickyAddButton.ts +32 -0
- package/src/fields/headless-validation.ts +177 -0
- package/src/headless.ts +33 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-compare-form.ts +166 -0
- package/src/hooks/use-form-context.ts +56 -0
- package/src/hooks/use-stage.ts +1 -0
- package/src/index.ts +9 -0
- package/src/initService.ts +73 -18
- package/src/layouts/CodeEditor.vue +32 -6
- package/src/layouts/Framework.vue +7 -6
- package/src/layouts/history-list/BucketTab.vue +2 -2
- package/src/layouts/history-list/HistoryDiffDialog.vue +33 -15
- package/src/layouts/history-list/HistoryListPanel.vue +16 -18
- package/src/layouts/history-list/useHistoryRevert.ts +57 -41
- package/src/layouts/props-panel/FormPanel.vue +75 -20
- package/src/layouts/props-panel/PropsPanel.vue +81 -30
- package/src/layouts/props-panel/use-style-panel.ts +4 -3
- package/src/layouts/sidebar/ComponentListPanel.vue +6 -2
- package/src/layouts/sidebar/Sidebar.vue +5 -3
- package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +5 -2
- package/src/layouts/sidebar/code-block/useContentMenu.ts +14 -2
- package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +3 -0
- package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +3 -3
- package/src/layouts/sidebar/data-source/useContentMenu.ts +14 -2
- package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
- package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
- package/src/layouts/sidebar/layer/LayerPanel.vue +5 -2
- package/src/layouts/sidebar/layer/use-click.ts +3 -3
- package/src/layouts/sidebar/layer/use-node-status.ts +2 -2
- package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
- package/src/layouts/workspace/viewer/Stage.vue +80 -10
- package/src/layouts/workspace/viewer/ViewerMenu.vue +7 -7
- package/src/plugin.ts +35 -25
- package/src/services/codeBlock.ts +4 -0
- package/src/services/dataSource.ts +3 -0
- package/src/services/dep.ts +292 -47
- package/src/services/editor.ts +383 -120
- package/src/services/events.ts +8 -7
- package/src/services/history.ts +22 -1
- package/src/services/keybinding.ts +3 -3
- package/src/services/ui.ts +26 -5
- package/src/theme/code-block.scss +0 -37
- package/src/theme/display-conds.scss +4 -0
- package/src/theme/event.scss +25 -33
- package/src/theme/floating-box.scss +9 -1
- package/src/theme/framework.scss +4 -1
- package/src/theme/layer-node-content.scss +14 -0
- package/src/theme/nav-menu.scss +5 -1
- package/src/theme/props-panel.scss +17 -3
- package/src/theme/scroll-bar.scss +64 -0
- package/src/theme/theme.scss +3 -0
- package/src/theme/themes/magic-admin/index.scss +109 -9
- package/src/theme/ui-select.scss +9 -0
- package/src/type.ts +216 -6
- package/src/utils/code-block.ts +1 -0
- package/src/utils/config.ts +9 -1
- package/src/utils/const.ts +3 -3
- package/src/utils/content-menu.ts +2 -2
- package/src/utils/data-source/index.ts +31 -12
- package/src/utils/dep/collect-worker-client.ts +215 -0
- package/src/utils/dep/idle-task.ts +104 -35
- package/src/utils/dep/worker.ts +113 -9
- package/src/utils/event.ts +237 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/monaco-editor.ts +27 -0
- package/src/utils/operator.ts +2 -2
- package/src/utils/props.ts +61 -122
- package/src/utils/type-match-rules.ts +697 -0
- package/types/headless.d.ts +17 -0
- package/types/index.d.ts +1199 -724
- package/src/fields/StyleSetter/icons/align-items/index copy.ts +0 -5
package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { useServices } from "../../hooks/use-services.js";
|
|
2
1
|
import CodeEditor_default from "../CodeEditor.js";
|
|
3
2
|
import CompareForm_default from "../../components/CompareForm.js";
|
|
4
3
|
import { TMagicButton, TMagicDialog, TMagicRadioButton, TMagicRadioGroup, TMagicTag } from "@tmagic/design";
|
|
@@ -21,14 +20,14 @@ var _hoisted_7 = {
|
|
|
21
20
|
key: 0,
|
|
22
21
|
class: "m-editor-history-diff-dialog-tip"
|
|
23
22
|
};
|
|
24
|
-
var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default =
|
|
23
|
+
var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
25
24
|
name: "MEditorHistoryDiffDialog",
|
|
26
25
|
__name: "HistoryDiffDialog",
|
|
27
26
|
props: {
|
|
28
|
-
services: {
|
|
29
|
-
extendState: {},
|
|
27
|
+
services: {},
|
|
30
28
|
loadConfig: {},
|
|
31
29
|
width: { default: "900px" },
|
|
30
|
+
size: {},
|
|
32
31
|
isConfirm: { type: Boolean },
|
|
33
32
|
onConfirm: {},
|
|
34
33
|
selfDiffFieldTypes: {}
|
|
@@ -65,6 +64,20 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
65
64
|
};
|
|
66
65
|
const dialogTitle = computed(() => props.onConfirm ? "确认回滚" : "查看修改差异");
|
|
67
66
|
const hasCurrent = computed(() => payload.value?.currentValue !== void 0 && payload.value?.currentValue !== null);
|
|
67
|
+
/** 是否存在该步「修改后的值」:不存在(如仅删除)时「与修改前对比」无意义,置灰禁用。 */
|
|
68
|
+
const hasValue = computed(() => payload.value?.value !== void 0 && payload.value?.value !== null);
|
|
69
|
+
/** 指定模式当前是否可用:before 依赖「修改后的值」,current 依赖「当前值」。 */
|
|
70
|
+
const isModeAvailable = (m) => m === "current" ? hasCurrent.value : hasValue.value;
|
|
71
|
+
/**
|
|
72
|
+
* 计算 open 时的初始对比模式:
|
|
73
|
+
* - 调用方通过 payload.mode 指定且该模式可用时,优先使用指定模式;
|
|
74
|
+
* - 否则没有「修改后的值」但有当前值时(「与修改前对比」不可用),默认进入「与当前对比」;
|
|
75
|
+
* - 其余情况默认「与修改前对比」。
|
|
76
|
+
*/
|
|
77
|
+
const resolveInitialMode = (specified) => {
|
|
78
|
+
if (specified && isModeAvailable(specified)) return specified;
|
|
79
|
+
return !hasValue.value && hasCurrent.value ? "current" : "before";
|
|
80
|
+
};
|
|
68
81
|
/** 左侧(旧/参照)值 */
|
|
69
82
|
const leftValue = computed(() => {
|
|
70
83
|
if (!payload.value) return {};
|
|
@@ -107,7 +120,7 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
107
120
|
});
|
|
108
121
|
const open = (p) => {
|
|
109
122
|
payload.value = p;
|
|
110
|
-
mode.value =
|
|
123
|
+
mode.value = resolveInitialMode(p.mode);
|
|
111
124
|
viewMode.value = "form";
|
|
112
125
|
visible.value = true;
|
|
113
126
|
};
|
|
@@ -199,10 +212,13 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
199
212
|
size: "small",
|
|
200
213
|
class: "m-editor-history-diff-dialog-mode"
|
|
201
214
|
}, {
|
|
202
|
-
default: withCtx(() => [createVNode(unref(TMagicRadioButton), {
|
|
215
|
+
default: withCtx(() => [createVNode(unref(TMagicRadioButton), {
|
|
216
|
+
value: "before",
|
|
217
|
+
disabled: !hasValue.value
|
|
218
|
+
}, {
|
|
203
219
|
default: withCtx(() => [..._cache[7] || (_cache[7] = [createTextVNode("与修改前对比", -1)])]),
|
|
204
220
|
_: 1
|
|
205
|
-
}), createVNode(unref(TMagicRadioButton), {
|
|
221
|
+
}, 8, ["disabled"]), createVNode(unref(TMagicRadioButton), {
|
|
206
222
|
value: "current",
|
|
207
223
|
disabled: !hasCurrent.value
|
|
208
224
|
}, {
|
|
@@ -236,10 +252,10 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
236
252
|
"data-source-type": payload.value.dataSourceType,
|
|
237
253
|
value: rightValue.value,
|
|
238
254
|
"last-value": leftValue.value,
|
|
239
|
-
"extend-state": __props.extendState,
|
|
240
255
|
"load-config": __props.loadConfig,
|
|
241
256
|
"self-diff-field-types": __props.selfDiffFieldTypes,
|
|
242
257
|
services: props.services,
|
|
258
|
+
size: props.size,
|
|
243
259
|
height: "70vh"
|
|
244
260
|
}, null, 8, [
|
|
245
261
|
"category",
|
|
@@ -247,10 +263,10 @@ var HistoryDiffDialog_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
247
263
|
"data-source-type",
|
|
248
264
|
"value",
|
|
249
265
|
"last-value",
|
|
250
|
-
"extend-state",
|
|
251
266
|
"load-config",
|
|
252
267
|
"self-diff-field-types",
|
|
253
|
-
"services"
|
|
268
|
+
"services",
|
|
269
|
+
"size"
|
|
254
270
|
])) : (openBlock(), createBlock(CodeEditor_default, {
|
|
255
271
|
key: 2,
|
|
256
272
|
type: "diff",
|
package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -10,7 +10,7 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
|
|
|
10
10
|
import { Clock, Close } from "@element-plus/icons-vue";
|
|
11
11
|
//#region packages/editor/src/layouts/history-list/HistoryListPanel.vue?vue&type=script&setup=true&lang.ts
|
|
12
12
|
var _hoisted_1 = { class: "m-editor-history-list" };
|
|
13
|
-
var HistoryListPanel_vue_vue_type_script_setup_true_lang_default =
|
|
13
|
+
var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
14
14
|
name: "MEditorHistoryListPanel",
|
|
15
15
|
__name: "HistoryListPanel",
|
|
16
16
|
setup(__props) {
|
|
@@ -62,12 +62,6 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
62
62
|
watch([disabledDataSource, disabledCodeBlock], ([dsDisabled, cbDisabled]) => {
|
|
63
63
|
if (activeTab.value === "data-source" && dsDisabled || activeTab.value === "code-block" && cbDisabled) activeTab.value = "page";
|
|
64
64
|
});
|
|
65
|
-
/**
|
|
66
|
-
* 通过 inject 拿到 Editor 顶层注入的 `extendFormState`,转交给 HistoryDiffDialog
|
|
67
|
-
* 内部的 CompareForm,使差异对比表单的 filterFunction 能拿到完整的业务上下文。
|
|
68
|
-
* 未提供时为 undefined,CompareForm/MForm 会跳过 extendState 处理。
|
|
69
|
-
*/
|
|
70
|
-
const extendFormState = inject("extendFormState", void 0);
|
|
71
65
|
const { expanded, toggleGroup, pageGroups, dataSourceGroups, codeBlockGroups, pageGroupsDisplay, dataSourceGroupsByTarget, codeBlockGroupsByTarget } = useHistoryList();
|
|
72
66
|
/**
|
|
73
67
|
* 当前活动页的「加载/初始」标记记录(设置 root 时生成),透传给 PageTab 的底部初始行展示。
|
|
@@ -149,9 +143,9 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
149
143
|
/**
|
|
150
144
|
* 「单步回滚」与「查看差异」的完整逻辑收敛到 useHistoryRevert,面板与业务方共用:
|
|
151
145
|
* 二者均由 useHistoryRevert 内部按需动态挂载 HistoryDiffDialog,
|
|
152
|
-
* 业务方亦可直接 import useHistoryRevert(services) 调用,无需自行挂载任何弹窗。
|
|
146
|
+
* 业务方亦可直接 import useHistoryRevert(options, services) 调用,无需自行挂载任何弹窗。
|
|
153
147
|
*/
|
|
154
|
-
const { onPageRevert, onDataSourceRevert, onCodeBlockRevert, onPageDiff, onDataSourceDiff, onCodeBlockDiff } = useHistoryRevert(
|
|
148
|
+
const { onPageRevert, onDataSourceRevert, onCodeBlockRevert, onPageDiff, onDataSourceDiff, onCodeBlockDiff } = useHistoryRevert({}, services);
|
|
155
149
|
/**
|
|
156
150
|
* 把内存中(已清空对应类别后的)历史状态重新写回 IndexedDB,
|
|
157
151
|
* 使本地持久化的那份与内存保持一致——即「连同本地保存的一并删除」。
|
|
@@ -227,7 +221,8 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
227
221
|
default: withCtx(() => [
|
|
228
222
|
(openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(guardReactiveProps(unref(tabPaneComponent)?.props({
|
|
229
223
|
name: "page",
|
|
230
|
-
label: `${pageName.value} (${unref(pageGroups).length})
|
|
224
|
+
label: `${pageName.value} (${unref(pageGroups).length})`,
|
|
225
|
+
lazy: true
|
|
231
226
|
}) || {})), {
|
|
232
227
|
default: withCtx(() => [createVNode(PageTab_default, {
|
|
233
228
|
list: unref(pageGroupsDisplay),
|
|
@@ -252,7 +247,8 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
252
247
|
}, 16)),
|
|
253
248
|
!disabledDataSource.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(mergeProps({ key: 0 }, unref(tabPaneComponent)?.props({
|
|
254
249
|
name: "data-source",
|
|
255
|
-
label: `${dataSourceName.value} (${unref(dataSourceGroups).length})
|
|
250
|
+
label: `${dataSourceName.value} (${unref(dataSourceGroups).length})`,
|
|
251
|
+
lazy: true
|
|
256
252
|
}) || {})), {
|
|
257
253
|
default: withCtx(() => [createVNode(BucketTab_default, {
|
|
258
254
|
config: dataSourceConfig.value,
|
|
@@ -276,7 +272,8 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
276
272
|
}, 16)) : createCommentVNode("v-if", true),
|
|
277
273
|
!disabledCodeBlock.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), normalizeProps(mergeProps({ key: 1 }, unref(tabPaneComponent)?.props({
|
|
278
274
|
name: "code-block",
|
|
279
|
-
label: `${codeBlockName.value} (${unref(codeBlockGroups).length})
|
|
275
|
+
label: `${codeBlockName.value} (${unref(codeBlockGroups).length})`,
|
|
276
|
+
lazy: true
|
|
280
277
|
}) || {})), {
|
|
281
278
|
default: withCtx(() => [createVNode(BucketTab_default, {
|
|
282
279
|
config: codeBlockConfig.value,
|
|
@@ -301,7 +298,8 @@ var HistoryListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
|
|
|
301
298
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(extraTabs), (tab) => {
|
|
302
299
|
return openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), mergeProps({ key: tab.name }, { ref_for: true }, unref(tabPaneComponent)?.props({
|
|
303
300
|
name: tab.name,
|
|
304
|
-
label: resolveTabLabel(tab)
|
|
301
|
+
label: resolveTabLabel(tab),
|
|
302
|
+
lazy: true
|
|
305
303
|
}) || {}), {
|
|
306
304
|
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(tab.component), mergeProps({ ref_for: true }, tab.props || {}, toHandlers(tab.listeners || {})), null, 16))]),
|
|
307
305
|
_: 2
|
|
@@ -13,7 +13,7 @@ var _hoisted_4 = {
|
|
|
13
13
|
class: "m-editor-history-list-item-actions"
|
|
14
14
|
};
|
|
15
15
|
var _hoisted_5 = ["title"];
|
|
16
|
-
var InitialRow_vue_vue_type_script_setup_true_lang_default =
|
|
16
|
+
var InitialRow_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
17
|
name: "MEditorHistoryListInitialRow",
|
|
18
18
|
__name: "InitialRow",
|
|
19
19
|
props: {
|
|
@@ -13,7 +13,7 @@ var _hoisted_2 = {
|
|
|
13
13
|
class: "m-editor-history-list-toolbar"
|
|
14
14
|
};
|
|
15
15
|
var _hoisted_3 = { class: "m-editor-history-list-ul" };
|
|
16
|
-
var PageTab_vue_vue_type_script_setup_true_lang_default =
|
|
16
|
+
var PageTab_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
17
|
name: "MEditorHistoryListPageTab",
|
|
18
18
|
__name: "PageTab",
|
|
19
19
|
props: {
|
|
@@ -181,4 +181,4 @@ var confirmHistoryAction = async (message) => {
|
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
183
|
//#endregion
|
|
184
|
-
export { confirmHistoryAction, describePageGroup, describePageStep, describeStep, formatHistoryFullTime, formatHistoryTime, isHistoryGroupExpanded, isPageStepRevertable, isSingleDiffStepRevertable, opLabel, sourceLabel, toRowGroup };
|
|
184
|
+
export { confirmHistoryAction, describePageGroup, describePageStep, describeStep, formatHistoryFullTime, formatHistoryTime, groupOperator, groupSource, groupTimestamp, isHistoryGroupExpanded, isPageStepRevertable, isSingleDiffStepRevertable, opLabel, sourceLabel, toRowGroup };
|
|
@@ -43,9 +43,10 @@ var mountHistoryDiffDialog = async (options) => {
|
|
|
43
43
|
const app = createApp(historyDiffDialog, {
|
|
44
44
|
services: options.services,
|
|
45
45
|
isConfirm: options.isConfirm,
|
|
46
|
-
extendState: options.extendState,
|
|
47
46
|
loadConfig: options.loadConfig,
|
|
48
47
|
selfDiffFieldTypes: options.selfDiffFieldTypes,
|
|
48
|
+
width: options.width,
|
|
49
|
+
size: options.size ?? options.services?.uiService?.get("propsPanelSize"),
|
|
49
50
|
onClose: options.onClose
|
|
50
51
|
});
|
|
51
52
|
if (options.appContext) Object.assign(app._context, options.appContext);
|
|
@@ -59,6 +60,7 @@ var mountHistoryDiffDialog = async (options) => {
|
|
|
59
60
|
}, 300);
|
|
60
61
|
};
|
|
61
62
|
return {
|
|
63
|
+
app,
|
|
62
64
|
instance,
|
|
63
65
|
destroy
|
|
64
66
|
};
|
|
@@ -116,15 +118,14 @@ var viewHistoryDiffDialog = async (payload, options) => {
|
|
|
116
118
|
* ```ts
|
|
117
119
|
* import { useHistoryRevert } from '@tmagic/editor';
|
|
118
120
|
*
|
|
119
|
-
* const { onPageRevert, onPageDiff } = useHistoryRevert(editorRef.value); // editorRef.value 即 Editor 暴露的 services
|
|
121
|
+
* const { onPageRevert, onPageDiff } = useHistoryRevert({}, editorRef.value); // editorRef.value 即 Editor 暴露的 services
|
|
120
122
|
* await onPageRevert(index); // 弹出差异 / 二次确认弹窗后回滚
|
|
121
123
|
* onPageDiff(index); // 弹出只读差异弹窗查看前后值差异
|
|
122
124
|
* ```
|
|
123
125
|
*/
|
|
124
|
-
var useHistoryRevert = (
|
|
125
|
-
const { editorService, dataSourceService, codeBlockService, historyService } = services;
|
|
126
|
+
var useHistoryRevert = (options = {}, services) => {
|
|
126
127
|
const appContext = options.appContext ?? getCurrentInstance()?.appContext ?? null;
|
|
127
|
-
const {
|
|
128
|
+
const { dialogWidth } = options;
|
|
128
129
|
/** 目标数据已被删除、无法回滚时的统一提示。 */
|
|
129
130
|
const showRevertTargetMissing = () => {
|
|
130
131
|
tMagicMessage.error("回滚失败:该记录对应的数据已被删除");
|
|
@@ -134,7 +135,7 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
134
135
|
* 不弹差异弹窗,改用一个普通确认框替代「确定回滚」按钮,避免点击后无任何提示直接执行。
|
|
135
136
|
* 用户取消时返回 false,调用方据此中止回滚。
|
|
136
137
|
*/
|
|
137
|
-
const confirmRevert = () => confirmHistoryAction("
|
|
138
|
+
const confirmRevert = () => confirmHistoryAction("确定回滚该步骤吗?");
|
|
138
139
|
/**
|
|
139
140
|
* 「回滚」统一确认入口:可差异对比的步骤动态挂载 HistoryDiffDialog 走差异确认弹窗,
|
|
140
141
|
* 无法对比的步骤(add / remove / 多节点更新)回退到普通二次确认框。
|
|
@@ -143,30 +144,31 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
143
144
|
const runRevert = (payload, extra) => {
|
|
144
145
|
if (payload) return confirmRevertWithDiffDialog(payload, {
|
|
145
146
|
appContext,
|
|
146
|
-
extendState,
|
|
147
147
|
services,
|
|
148
|
-
...extra
|
|
148
|
+
...extra,
|
|
149
|
+
width: extra?.width ?? dialogWidth,
|
|
150
|
+
size: extra?.size
|
|
149
151
|
});
|
|
150
152
|
return confirmRevert();
|
|
151
153
|
};
|
|
152
154
|
const buildPageDiffPayload = (index) => buildDiffPayload({
|
|
153
155
|
category: "node",
|
|
154
|
-
groups: () => historyService.getHistoryGroups("page", editorService.get("page")?.id),
|
|
155
|
-
getCurrent: (id) => editorService.getNodeById(id),
|
|
156
|
+
groups: () => services?.historyService.getHistoryGroups("page", services?.editorService.get("page")?.id) ?? [],
|
|
157
|
+
getCurrent: (id) => services?.editorService.getNodeById(id),
|
|
156
158
|
resolveType: (n, o) => n.type || o.type || "",
|
|
157
159
|
resolveLabel: (n, o) => n.name || o.name || n.type || o.type || ""
|
|
158
160
|
}, index);
|
|
159
161
|
const buildDataSourceDiffPayload = (id, index) => buildDiffPayload({
|
|
160
162
|
category: "data-source",
|
|
161
|
-
groups: () => historyService.getHistoryGroups("dataSource"),
|
|
162
|
-
getCurrent: (id) => dataSourceService.getDataSourceById(`${id}`),
|
|
163
|
+
groups: () => services?.historyService.getHistoryGroups("dataSource") ?? [],
|
|
164
|
+
getCurrent: (id) => services?.dataSourceService.getDataSourceById(`${id}`),
|
|
163
165
|
resolveType: (n, o) => n.type || o.type || "base",
|
|
164
166
|
resolveLabel: (n, o, id) => n.title || o.title || `${id}`
|
|
165
167
|
}, index, id);
|
|
166
168
|
const buildCodeBlockDiffPayload = (id, index) => buildDiffPayload({
|
|
167
169
|
category: "code-block",
|
|
168
|
-
groups: () => historyService.getHistoryGroups("codeBlock"),
|
|
169
|
-
getCurrent: (id) => codeBlockService.getCodeContentById(id),
|
|
170
|
+
groups: () => services?.historyService.getHistoryGroups("codeBlock") ?? [],
|
|
171
|
+
getCurrent: (id) => services?.codeBlockService.getCodeContentById(id),
|
|
170
172
|
resolveLabel: (n, o, id) => n.name || o.name || `${id}`
|
|
171
173
|
}, index, id);
|
|
172
174
|
/**
|
|
@@ -176,45 +178,45 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
176
178
|
* add(回滚即删除)即使目标已不在,也已达成「删除」目的,不视为失败。
|
|
177
179
|
*/
|
|
178
180
|
const isPageRevertTargetMissing = (index) => {
|
|
179
|
-
const step = historyService.getStepList("page", editorService.get("page")?.id)[index]?.step;
|
|
181
|
+
const step = services?.historyService.getStepList("page", services?.editorService.get("page")?.id)[index]?.step;
|
|
180
182
|
if (!step) return false;
|
|
181
183
|
if (step.opType === "update") return (step.diff ?? []).some((item) => {
|
|
182
184
|
const id = item.newSchema?.id ?? item.oldSchema?.id;
|
|
183
|
-
return id !== void 0 && !editorService.getNodeById(id, false);
|
|
185
|
+
return id !== void 0 && !services?.editorService.getNodeById(id, false);
|
|
184
186
|
});
|
|
185
|
-
if (step.opType === "remove") return (step.diff ?? []).some((item) => item.parentId !== void 0 && !editorService.getNodeById(item.parentId, false));
|
|
187
|
+
if (step.opType === "remove") return (step.diff ?? []).some((item) => item.parentId !== void 0 && !services?.editorService.getNodeById(item.parentId, false));
|
|
186
188
|
return false;
|
|
187
189
|
};
|
|
188
190
|
/** 数据源 update 步骤回滚时,对应数据源必须仍存在(已删除则无处写回旧值)。 */
|
|
189
191
|
const isDataSourceRevertTargetMissing = (id, index) => {
|
|
190
|
-
const step = historyService.getStepList("dataSource", id)[index]?.step;
|
|
191
|
-
return Boolean(step?.opType === "update" && !dataSourceService.getDataSourceById(`${id}`));
|
|
192
|
+
const step = services?.historyService.getStepList("dataSource", id)[index]?.step;
|
|
193
|
+
return Boolean(step?.opType === "update" && !services?.dataSourceService.getDataSourceById(`${id}`));
|
|
192
194
|
};
|
|
193
195
|
/** 代码块 update 步骤回滚时,对应代码块必须仍存在(已删除则无处写回旧值)。 */
|
|
194
196
|
const isCodeBlockRevertTargetMissing = (id, index) => {
|
|
195
|
-
const step = historyService.getStepList("codeBlock", id)[index]?.step;
|
|
196
|
-
return Boolean(step?.opType === "update" && !codeBlockService.getCodeContentById(id));
|
|
197
|
+
const step = services?.historyService.getStepList("codeBlock", id)[index]?.step;
|
|
198
|
+
return Boolean(step?.opType === "update" && !services?.codeBlockService.getCodeContentById(id));
|
|
197
199
|
};
|
|
198
200
|
const onPageRevert = (index) => {
|
|
199
201
|
if (isPageRevertTargetMissing(index)) {
|
|
200
202
|
showRevertTargetMissing();
|
|
201
203
|
return Promise.resolve(null);
|
|
202
204
|
}
|
|
203
|
-
return runRevert(buildPageDiffPayload(index)).then((result) => result ? editorService.revertPageStep(index) : null);
|
|
205
|
+
return runRevert(buildPageDiffPayload(index), {}).then((result) => result ? services?.editorService.revertPageStep(index) : null);
|
|
204
206
|
};
|
|
205
207
|
const onDataSourceRevert = (id, index) => {
|
|
206
208
|
if (isDataSourceRevertTargetMissing(id, index)) {
|
|
207
209
|
showRevertTargetMissing();
|
|
208
210
|
return Promise.resolve(null);
|
|
209
211
|
}
|
|
210
|
-
return runRevert(buildDataSourceDiffPayload(id, index)).then((result) => result ? dataSourceService.revert(id, index) : null);
|
|
212
|
+
return runRevert(buildDataSourceDiffPayload(id, index)).then((result) => result ? services?.dataSourceService.revert(id, index) : null);
|
|
211
213
|
};
|
|
212
214
|
const onCodeBlockRevert = (id, index) => {
|
|
213
215
|
if (isCodeBlockRevertTargetMissing(id, index)) {
|
|
214
216
|
showRevertTargetMissing();
|
|
215
217
|
return Promise.resolve(null);
|
|
216
218
|
}
|
|
217
|
-
return runRevert(buildCodeBlockDiffPayload(id, index)).then((result) => result ? codeBlockService.revert(id, index) : null);
|
|
219
|
+
return runRevert(buildCodeBlockDiffPayload(id, index)).then((result) => result ? services?.codeBlockService.revert(id, index) : null);
|
|
218
220
|
};
|
|
219
221
|
/**
|
|
220
222
|
* 「查看差异」:可差异对比的步骤(单实体 update)动态挂载只读 HistoryDiffDialog 展示前后值差异,
|
|
@@ -224,24 +226,24 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
224
226
|
const payload = buildPageDiffPayload(index);
|
|
225
227
|
if (payload) return viewHistoryDiffDialog(payload, {
|
|
226
228
|
appContext,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
+
services,
|
|
230
|
+
width: dialogWidth
|
|
229
231
|
});
|
|
230
232
|
};
|
|
231
233
|
const onDataSourceDiff = (id, index) => {
|
|
232
234
|
const payload = buildDataSourceDiffPayload(id, index);
|
|
233
235
|
if (payload) return viewHistoryDiffDialog(payload, {
|
|
234
236
|
appContext,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
+
services,
|
|
238
|
+
width: dialogWidth
|
|
237
239
|
});
|
|
238
240
|
};
|
|
239
241
|
const onCodeBlockDiff = (id, index) => {
|
|
240
242
|
const payload = buildCodeBlockDiffPayload(id, index);
|
|
241
243
|
if (payload) return viewHistoryDiffDialog(payload, {
|
|
242
244
|
appContext,
|
|
243
|
-
|
|
244
|
-
|
|
245
|
+
services,
|
|
246
|
+
width: dialogWidth
|
|
245
247
|
});
|
|
246
248
|
};
|
|
247
249
|
/**
|
|
@@ -267,7 +269,9 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
267
269
|
}
|
|
268
270
|
if (!await runRevert(revertOptions.diffPayload ?? null, {
|
|
269
271
|
loadConfig: revertOptions.loadConfig,
|
|
270
|
-
selfDiffFieldTypes: revertOptions.selfDiffFieldTypes
|
|
272
|
+
selfDiffFieldTypes: revertOptions.selfDiffFieldTypes,
|
|
273
|
+
width: revertOptions.width,
|
|
274
|
+
size: revertOptions.size
|
|
271
275
|
})) return null;
|
|
272
276
|
return await revertOptions.revert();
|
|
273
277
|
};
|
|
@@ -278,9 +282,10 @@ var useHistoryRevert = (services, options = {}) => {
|
|
|
278
282
|
const viewDiff = (payload, extra) => {
|
|
279
283
|
if (payload) return viewHistoryDiffDialog(payload, {
|
|
280
284
|
appContext,
|
|
281
|
-
extendState,
|
|
282
285
|
services,
|
|
283
|
-
...extra
|
|
286
|
+
...extra,
|
|
287
|
+
width: extra?.width ?? dialogWidth,
|
|
288
|
+
size: extra?.size
|
|
284
289
|
});
|
|
285
290
|
};
|
|
286
291
|
return {
|
|
@@ -16,7 +16,7 @@ var _hoisted_2 = {
|
|
|
16
16
|
key: 1,
|
|
17
17
|
style: { "width": "21px" }
|
|
18
18
|
};
|
|
19
|
-
var AddButton_vue_vue_type_script_setup_true_lang_default =
|
|
19
|
+
var AddButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
20
20
|
name: "MEditorPageBarAddButton",
|
|
21
21
|
__name: "AddButton",
|
|
22
22
|
setup(__props) {
|
|
@@ -13,7 +13,7 @@ var _hoisted_1 = { class: "m-editor-page-bar-tabs" };
|
|
|
13
13
|
var _hoisted_2 = ["data-page-id", "onClick"];
|
|
14
14
|
var _hoisted_3 = { class: "m-editor-page-bar-title" };
|
|
15
15
|
var _hoisted_4 = ["title"];
|
|
16
|
-
var PageBar_vue_vue_type_script_setup_true_lang_default =
|
|
16
|
+
var PageBar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
17
|
name: "MEditorPageBar",
|
|
18
18
|
__name: "PageBar",
|
|
19
19
|
props: {
|
package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -13,7 +13,7 @@ var _hoisted_2 = {
|
|
|
13
13
|
class: "m-editor-page-bar-items",
|
|
14
14
|
ref: "itemsContainer"
|
|
15
15
|
};
|
|
16
|
-
var PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default =
|
|
16
|
+
var PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
17
17
|
name: "MEditorPageBarScrollContainer",
|
|
18
18
|
__name: "PageBarScrollContainer",
|
|
19
19
|
props: {
|
|
@@ -11,7 +11,7 @@ var _hoisted_1 = {
|
|
|
11
11
|
};
|
|
12
12
|
var _hoisted_2 = { class: "page-bar-popover-wrapper" };
|
|
13
13
|
var _hoisted_3 = { class: "page-bar-popover-inner" };
|
|
14
|
-
var PageList_vue_vue_type_script_setup_true_lang_default =
|
|
14
|
+
var PageList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
15
15
|
name: "MEditorPageList",
|
|
16
16
|
__name: "PageList",
|
|
17
17
|
props: { list: {} },
|
|
@@ -5,13 +5,13 @@ import { Teleport, createBlock, createCommentVNode, createElementBlock, createVN
|
|
|
5
5
|
import { Search } from "@element-plus/icons-vue";
|
|
6
6
|
//#region packages/editor/src/layouts/page-bar/Search.vue?vue&type=script&setup=true&lang.ts
|
|
7
7
|
var _hoisted_1 = { class: "m-editor-page-bar-item m-editor-page-bar-item-icon m-editor-page-bar-search" };
|
|
8
|
-
var Search_vue_vue_type_script_setup_true_lang_default =
|
|
8
|
+
var Search_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
9
9
|
__name: "Search",
|
|
10
10
|
props: {
|
|
11
11
|
"query": {},
|
|
12
12
|
"queryModifiers": {}
|
|
13
13
|
},
|
|
14
|
-
emits:
|
|
14
|
+
emits: /*@__PURE__*/ mergeModels(["search"], ["update:query"]),
|
|
15
15
|
setup(__props, { emit: __emit }) {
|
|
16
16
|
const emit = __emit;
|
|
17
17
|
const query = useModel(__props, "query");
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import { useEditorFormContext } from "../../hooks/use-form-context.js";
|
|
1
2
|
import { useServices } from "../../hooks/use-services.js";
|
|
2
3
|
import { useEditorContentHeight } from "../../hooks/use-editor-content-height.js";
|
|
3
4
|
import Icon_default from "../../components/Icon.js";
|
|
4
5
|
import CodeEditor_default from "../CodeEditor.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { ENABLE_PROPS_FORM_VALIDATE } from "../../editorProps.js";
|
|
7
|
+
import { MForm, validateForm } from "@tmagic/form";
|
|
8
|
+
import { TMagicButton, TMagicScrollbar, tMagicMessage } from "@tmagic/design";
|
|
9
|
+
import { filterXSS } from "@tmagic/utils";
|
|
10
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, inject, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderSlot, unref, useTemplateRef, withCtx } from "vue";
|
|
8
11
|
import { Document } from "@element-plus/icons-vue";
|
|
9
12
|
//#region packages/editor/src/layouts/props-panel/FormPanel.vue?vue&type=script&setup=true&lang.ts
|
|
10
13
|
var _hoisted_1 = { class: "m-editor-props-form-panel" };
|
|
11
|
-
var FormPanel_vue_vue_type_script_setup_true_lang_default =
|
|
14
|
+
var FormPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
15
|
name: "MEditorFormPanel",
|
|
13
16
|
__name: "FormPanel",
|
|
14
17
|
props: {
|
|
@@ -17,8 +20,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
17
20
|
disabledShowSrc: { type: Boolean },
|
|
18
21
|
labelWidth: {},
|
|
19
22
|
codeValueKey: {},
|
|
20
|
-
labelPosition: {}
|
|
21
|
-
extendState: { type: Function }
|
|
23
|
+
labelPosition: {}
|
|
22
24
|
},
|
|
23
25
|
emits: [
|
|
24
26
|
"submit",
|
|
@@ -30,20 +32,15 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
30
32
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
31
33
|
const props = __props;
|
|
32
34
|
const emit = __emit;
|
|
35
|
+
const enablePropsFormValidate = inject(ENABLE_PROPS_FORM_VALIDATE, false);
|
|
33
36
|
const services = useServices();
|
|
34
|
-
const {
|
|
37
|
+
const { uiService } = services;
|
|
35
38
|
const codeOptions = inject("codeOptions", {});
|
|
36
39
|
const showSrc = ref(false);
|
|
37
40
|
const propsPanelSize = computed(() => uiService.get("propsPanelSize") || "small");
|
|
38
41
|
const { height: editorContentHeight } = useEditorContentHeight();
|
|
39
|
-
const
|
|
42
|
+
const formContext = useEditorFormContext(() => services);
|
|
40
43
|
const configFormRef = useTemplateRef("configForm");
|
|
41
|
-
watchEffect(() => {
|
|
42
|
-
if (configFormRef.value) {
|
|
43
|
-
configFormRef.value.formState.stage = stage.value;
|
|
44
|
-
configFormRef.value.formState.services = services;
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
44
|
const internalInstance = getCurrentInstance();
|
|
48
45
|
onMounted(() => {
|
|
49
46
|
emit("mounted", internalInstance?.proxy);
|
|
@@ -53,16 +50,47 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
53
50
|
});
|
|
54
51
|
const submit = async (v, eventData) => {
|
|
55
52
|
try {
|
|
56
|
-
|
|
53
|
+
const values = await configFormRef.value?.submitForm();
|
|
54
|
+
emit("submit", values, eventData);
|
|
57
55
|
} catch (e) {
|
|
58
|
-
emit("submit
|
|
56
|
+
if (enablePropsFormValidate) emit("submit", v, eventData, e);
|
|
57
|
+
else emit("submit-error", e);
|
|
59
58
|
}
|
|
60
59
|
};
|
|
61
60
|
const errorHandler = (e) => {
|
|
62
61
|
emit("form-error", e);
|
|
63
62
|
};
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
/**
|
|
64
|
+
* 将校验错误文案安全地转为用于弹窗展示的 HTML。
|
|
65
|
+
*
|
|
66
|
+
* 文案形如 `字段 -> 主文案\n\n建议`,多条以结构性 `<br>` 拼接。为在保留换行排版的同时
|
|
67
|
+
* 避免 `${value}`/字段名中可能夹带的 HTML 造成 XSS:先按结构性 `<br>` 拆分,对每段做 HTML
|
|
68
|
+
* 转义后再把段内换行 `\n` 替换为 `<br>`,最后用 `<br>` 拼回。
|
|
69
|
+
*/
|
|
70
|
+
const formatValidateErrorHtml = (error) => error.split(/<br\s*\/?>/i).map((segment) => filterXSS(segment).replaceAll("\n", "<br>")).join("<br>");
|
|
71
|
+
const saveCode = async (values) => {
|
|
72
|
+
const newValues = props.codeValueKey ? { [props.codeValueKey]: values } : values;
|
|
73
|
+
if (!enablePropsFormValidate) {
|
|
74
|
+
emit("submit", newValues);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const error = await validateForm({
|
|
79
|
+
config: props.config,
|
|
80
|
+
typeMatchValid: true,
|
|
81
|
+
initValues: newValues,
|
|
82
|
+
context: formContext.value
|
|
83
|
+
});
|
|
84
|
+
if (error) tMagicMessage({
|
|
85
|
+
type: "error",
|
|
86
|
+
message: formatValidateErrorHtml(error),
|
|
87
|
+
dangerouslyUseHTMLString: true
|
|
88
|
+
});
|
|
89
|
+
emit("submit", newValues, void 0, error ? new Error(error) : void 0);
|
|
90
|
+
} catch (e) {
|
|
91
|
+
console.error("validateForm error", e);
|
|
92
|
+
emit("submit", newValues, void 0, e instanceof Error ? e : new Error(String(e)));
|
|
93
|
+
}
|
|
66
94
|
};
|
|
67
95
|
__expose({
|
|
68
96
|
configForm: configFormRef,
|
|
@@ -81,7 +109,9 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
81
109
|
size: propsPanelSize.value,
|
|
82
110
|
"init-values": __props.values,
|
|
83
111
|
config: __props.config,
|
|
84
|
-
"
|
|
112
|
+
"type-match-valid": true,
|
|
113
|
+
context: unref(formContext),
|
|
114
|
+
"validate-on-init": true,
|
|
85
115
|
onChange: submit,
|
|
86
116
|
onError: errorHandler
|
|
87
117
|
}, null, 8, [
|
|
@@ -92,7 +122,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
92
122
|
"size",
|
|
93
123
|
"init-values",
|
|
94
124
|
"config",
|
|
95
|
-
"
|
|
125
|
+
"context"
|
|
96
126
|
])]),
|
|
97
127
|
_: 1
|
|
98
128
|
}),
|