@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
|
@@ -1,31 +1,34 @@
|
|
|
1
|
+
import { useEditorFormContext } from "./hooks/use-form-context.js";
|
|
1
2
|
import props_default from "./services/props.js";
|
|
2
3
|
import history_default from "./services/history.js";
|
|
3
4
|
import storage_default from "./services/storage.js";
|
|
4
5
|
import editor_default from "./services/editor.js";
|
|
5
6
|
import ui_default from "./services/ui.js";
|
|
7
|
+
import codeBlock_default from "./services/codeBlock.js";
|
|
8
|
+
import dataSource_default from "./services/dataSource.js";
|
|
9
|
+
import events_default from "./services/events.js";
|
|
6
10
|
import Framework_default from "./layouts/Framework.js";
|
|
7
11
|
import NavMenu_default from "./layouts/NavMenu.js";
|
|
12
|
+
import { ENABLE_PROPS_FORM_VALIDATE, defaultEditorProps } from "./editorProps.js";
|
|
8
13
|
import PropsPanel_default from "./layouts/props-panel/PropsPanel.js";
|
|
9
14
|
import keybinding_config_default from "./utils/keybinding-config.js";
|
|
10
15
|
import Sidebar_default from "./layouts/sidebar/Sidebar.js";
|
|
11
16
|
import Workspace_default from "./layouts/workspace/Workspace.js";
|
|
12
|
-
import codeBlock_default from "./services/codeBlock.js";
|
|
13
17
|
import componentList_default from "./services/componentList.js";
|
|
14
|
-
import dataSource_default from "./services/dataSource.js";
|
|
15
18
|
import dep_default from "./services/dep.js";
|
|
16
|
-
import events_default from "./services/events.js";
|
|
17
19
|
import keybinding_default from "./services/keybinding.js";
|
|
18
20
|
import stageOverlay_default from "./services/stageOverlay.js";
|
|
19
|
-
import { defaultEditorProps } from "./editorProps.js";
|
|
20
21
|
import { initServiceEvents, initServiceState } from "./initService.js";
|
|
22
|
+
import { FORM_CONTEXT_KEY } from "@tmagic/form";
|
|
21
23
|
import { M_THEME_KEY } from "@tmagic/design";
|
|
22
24
|
import { computed, createBlock, createVNode, defineComponent, mergeDefaults, openBlock, provide, renderSlot, unref, withCtx } from "vue";
|
|
23
25
|
import { EventEmitter } from "events";
|
|
24
26
|
//#region packages/editor/src/Editor.vue?vue&type=script&setup=true&lang.ts
|
|
25
|
-
var Editor_vue_vue_type_script_setup_true_lang_default =
|
|
27
|
+
var Editor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
26
28
|
name: "MEditor",
|
|
27
29
|
__name: "Editor",
|
|
28
|
-
props:
|
|
30
|
+
props: /*@__PURE__*/ mergeDefaults({
|
|
31
|
+
isLargeStageContainer: { type: Boolean },
|
|
29
32
|
theme: {},
|
|
30
33
|
modelValue: {},
|
|
31
34
|
componentGroupList: {},
|
|
@@ -49,6 +52,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
49
52
|
containerHighlightClassName: {},
|
|
50
53
|
containerHighlightDuration: {},
|
|
51
54
|
containerHighlightType: {},
|
|
55
|
+
containerHighlightAddOnly: { type: Boolean },
|
|
52
56
|
stageRect: {},
|
|
53
57
|
codeOptions: {},
|
|
54
58
|
disabledDragStart: { type: Boolean },
|
|
@@ -58,6 +62,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
58
62
|
disabledPageFragment: { type: Boolean },
|
|
59
63
|
disabledFlashTip: { type: Boolean },
|
|
60
64
|
disabledStageOverlay: { type: Boolean },
|
|
65
|
+
enablePropsFormValidate: { type: Boolean },
|
|
61
66
|
disabledShowSrc: { type: Boolean },
|
|
62
67
|
disabledDataSource: { type: Boolean },
|
|
63
68
|
disabledCodeBlock: { type: Boolean },
|
|
@@ -72,7 +77,6 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
72
77
|
canDropIn: { type: Function },
|
|
73
78
|
beforeDblclick: { type: Function },
|
|
74
79
|
beforeLayerNodeDblclick: { type: Function },
|
|
75
|
-
extendFormState: { type: Function },
|
|
76
80
|
historyListExtraTabs: {},
|
|
77
81
|
pageBarSortOptions: {},
|
|
78
82
|
pageFilterFunction: { type: Function }
|
|
@@ -118,6 +122,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
118
122
|
containerHighlightClassName: props.containerHighlightClassName,
|
|
119
123
|
containerHighlightDuration: props.containerHighlightDuration,
|
|
120
124
|
containerHighlightType: props.containerHighlightType,
|
|
125
|
+
containerHighlightAddOnly: props.containerHighlightAddOnly,
|
|
121
126
|
disabledDragStart: props.disabledDragStart,
|
|
122
127
|
renderType: props.renderType,
|
|
123
128
|
guidesOptions: props.guidesOptions,
|
|
@@ -130,12 +135,17 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
130
135
|
provide("services", services);
|
|
131
136
|
provide("codeOptions", props.codeOptions);
|
|
132
137
|
provide("stageOptions", stageOptions);
|
|
138
|
+
/** 是否启用「属性配置表单校验」联动能力,供 PropsPanel / FormPanel 判断校验失败时是否仍更新节点并记录错误 */
|
|
139
|
+
provide(ENABLE_PROPS_FORM_VALIDATE, props.enablePropsFormValidate ?? false);
|
|
133
140
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
141
|
+
* 编辑器注入给整棵表单树的业务上下文(`services` / `stage`),属性面板、对比表单、
|
|
142
|
+
* 侧边栏里的嵌套 MForm 都通过 inject 自动继承。
|
|
143
|
+
*
|
|
144
|
+
* 业务方要追加自己的字段,在 `<MEditor>` 外层再 `provide(FORM_CONTEXT_KEY, computed(...))`
|
|
145
|
+
* 即可,配置回调统一通过 `mForm.xxx` 读取。
|
|
137
146
|
*/
|
|
138
|
-
provide(
|
|
147
|
+
provide(FORM_CONTEXT_KEY, useEditorFormContext(() => services));
|
|
148
|
+
provide("isLargeStageContainer", computed(() => props.isLargeStageContainer));
|
|
139
149
|
/**
|
|
140
150
|
* 把历史记录面板的自定义扩展 tab 提供给深层的 HistoryListPanel(它挂在 NavMenu 中,
|
|
141
151
|
* 以 markRaw component 形式渲染,无法直接通过 props 透传)。业务方可借此在历史记录
|
|
@@ -229,7 +239,6 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
229
239
|
"custom-content-menu"
|
|
230
240
|
])])]),
|
|
231
241
|
"props-panel": withCtx(() => [renderSlot(_ctx.$slots, "props-panel", {}, () => [createVNode(PropsPanel_default, {
|
|
232
|
-
"extend-state": __props.extendFormState,
|
|
233
242
|
"disabled-show-src": __props.disabledShowSrc,
|
|
234
243
|
onMounted: propsPanelMountedHandler,
|
|
235
244
|
onUnmounted: propsPanelUnmountedHandler,
|
|
@@ -238,7 +247,7 @@ var Editor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
|
|
|
238
247
|
}, {
|
|
239
248
|
"props-panel-header": withCtx(() => [renderSlot(_ctx.$slots, "props-panel-header")]),
|
|
240
249
|
_: 3
|
|
241
|
-
}, 8, ["
|
|
250
|
+
}, 8, ["disabled-show-src"])])]),
|
|
242
251
|
empty: withCtx(() => [renderSlot(_ctx.$slots, "empty", { editorService: unref(editor_default) })]),
|
|
243
252
|
"content-after": withCtx(() => [renderSlot(_ctx.$slots, "content-after")]),
|
|
244
253
|
footer: withCtx(() => [renderSlot(_ctx.$slots, "footer")]),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getEditorConfig } from "../utils/config.js";
|
|
2
|
+
import { getCodeBlockFormConfig } from "../utils/code-block.js";
|
|
2
3
|
import { useServices } from "../hooks/use-services.js";
|
|
3
4
|
import { useWindowRect } from "../hooks/use-window-rect.js";
|
|
4
5
|
import { useEditorContentHeight } from "../hooks/use-editor-content-height.js";
|
|
5
6
|
import { useNextFloatBoxPosition } from "../hooks/use-next-float-box-position.js";
|
|
6
|
-
import { getCodeBlockFormConfig } from "../utils/code-block.js";
|
|
7
7
|
import CodeEditor_default from "../layouts/CodeEditor.js";
|
|
8
8
|
import FloatingBox_default from "./FloatingBox.js";
|
|
9
9
|
import { MFormBox } from "@tmagic/form";
|
|
@@ -17,10 +17,10 @@ var _hoisted_1 = { style: {
|
|
|
17
17
|
var _hoisted_2 = { style: { "flex": "1" } };
|
|
18
18
|
var _hoisted_3 = { style: { "flex": "1" } };
|
|
19
19
|
var _hoisted_4 = { class: "dialog-footer" };
|
|
20
|
-
var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default =
|
|
20
|
+
var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
21
21
|
name: "MEditorCodeBlockEditor",
|
|
22
22
|
__name: "CodeBlockEditor",
|
|
23
|
-
props:
|
|
23
|
+
props: /*@__PURE__*/ mergeModels({
|
|
24
24
|
content: {},
|
|
25
25
|
disabled: { type: Boolean },
|
|
26
26
|
isDataSource: { type: Boolean },
|
|
@@ -34,7 +34,7 @@ var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
|
|
|
34
34
|
},
|
|
35
35
|
"visibleModifiers": {}
|
|
36
36
|
}),
|
|
37
|
-
emits:
|
|
37
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
38
38
|
"submit",
|
|
39
39
|
"close",
|
|
40
40
|
"open"
|
|
@@ -119,7 +119,9 @@ var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
|
|
|
119
119
|
const closedHandler = () => {
|
|
120
120
|
changedValue.value = void 0;
|
|
121
121
|
};
|
|
122
|
-
const
|
|
122
|
+
const parentFloating = inject("parentFloating", ref(null));
|
|
123
|
+
const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
|
|
124
|
+
const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
|
|
123
125
|
watch(boxVisible, (visible) => {
|
|
124
126
|
nextTick(() => {
|
|
125
127
|
if (!visible) emit("close");
|
|
@@ -145,7 +147,9 @@ var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
|
|
|
145
147
|
"onUpdate:width": _cache[2] || (_cache[2] = ($event) => width.value = $event),
|
|
146
148
|
height: unref(codeBlockEditorHeight),
|
|
147
149
|
"onUpdate:height": _cache[3] || (_cache[3] = ($event) => isRef(codeBlockEditorHeight) ? codeBlockEditorHeight.value = $event : null),
|
|
150
|
+
"body-style": { padding: "0 16px" },
|
|
148
151
|
title: __props.content.name ? `${__props.disabled ? "查看" : "编辑"}${__props.content.name}` : "新增代码",
|
|
152
|
+
"framework-width": frameworkWidth.value,
|
|
149
153
|
position: unref(boxPosition),
|
|
150
154
|
"before-close": beforeClose
|
|
151
155
|
}, {
|
|
@@ -187,6 +191,7 @@ var CodeBlockEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
|
|
|
187
191
|
"width",
|
|
188
192
|
"height",
|
|
189
193
|
"title",
|
|
194
|
+
"framework-width",
|
|
190
195
|
"position"
|
|
191
196
|
]),
|
|
192
197
|
(openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(unref(TMagicDialog), {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { error } from "../utils/logger.js";
|
|
2
|
-
import { MForm } from "@tmagic/form";
|
|
2
|
+
import { MForm, defineFormItem } from "@tmagic/form";
|
|
3
3
|
import { computed, createBlock, defineComponent, openBlock, unref, useTemplateRef } from "vue";
|
|
4
4
|
//#region packages/editor/src/components/CodeParams.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var CodeParams_vue_vue_type_script_setup_true_lang_default =
|
|
5
|
+
var CodeParams_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
6
6
|
name: "MEditorCodeParams",
|
|
7
7
|
__name: "CodeParams",
|
|
8
8
|
props: {
|
|
@@ -19,13 +19,13 @@ var CodeParams_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
19
19
|
const props = __props;
|
|
20
20
|
const emit = __emit;
|
|
21
21
|
const formRef = useTemplateRef("form");
|
|
22
|
-
const getFormConfig = (items = []) => [{
|
|
22
|
+
const getFormConfig = (items = []) => [defineFormItem({
|
|
23
23
|
type: "fieldset",
|
|
24
24
|
items,
|
|
25
25
|
legend: "参数",
|
|
26
|
-
|
|
26
|
+
labelPosition: "top",
|
|
27
27
|
name: props.name
|
|
28
|
-
}];
|
|
28
|
+
})];
|
|
29
29
|
const codeParamsConfig = computed(() => getFormConfig(props.paramsConfig.map(({ name, text, extra, ...config }) => {
|
|
30
30
|
let { type } = config;
|
|
31
31
|
if (typeof type === "function") type = type(void 0, { model: props.model[props.name] });
|
|
@@ -48,7 +48,8 @@ var CodeParams_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
48
48
|
*/
|
|
49
49
|
const onParamsChangeHandler = async (v, eventData) => {
|
|
50
50
|
try {
|
|
51
|
-
|
|
51
|
+
const value = await formRef.value?.submitForm(true);
|
|
52
|
+
emit("change", value, eventData);
|
|
52
53
|
} catch (e) {
|
|
53
54
|
error(e);
|
|
54
55
|
}
|
|
@@ -1,68 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getCodeBlockFormConfig } from "../utils/code-block.js";
|
|
1
|
+
import { useCompareForm } from "../hooks/use-compare-form.js";
|
|
3
2
|
import { MForm } from "@tmagic/form";
|
|
4
3
|
import { HookType } from "@tmagic/core";
|
|
5
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent,
|
|
4
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeStyle, openBlock, unref } from "vue";
|
|
6
5
|
import { isEqual } from "lodash-es";
|
|
7
6
|
//#region packages/editor/src/components/CompareForm.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
-
var CompareForm_vue_vue_type_script_setup_true_lang_default =
|
|
7
|
+
var CompareForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
9
8
|
name: "MEditorCompareForm",
|
|
10
9
|
__name: "CompareForm",
|
|
11
10
|
props: {
|
|
12
11
|
value: {},
|
|
13
|
-
lastValue: {},
|
|
14
12
|
type: {},
|
|
15
13
|
category: { default: "node" },
|
|
16
14
|
dataSourceType: {},
|
|
17
15
|
labelWidth: { default: "120px" },
|
|
18
16
|
height: {},
|
|
19
|
-
|
|
17
|
+
size: {},
|
|
20
18
|
loadConfig: {},
|
|
21
|
-
services: {
|
|
19
|
+
services: {},
|
|
20
|
+
lastValue: {},
|
|
21
|
+
selfDiffFieldTypes: {}
|
|
22
22
|
},
|
|
23
23
|
setup(__props, { expose: __expose }) {
|
|
24
24
|
const props = __props;
|
|
25
|
-
const {
|
|
26
|
-
provide("services", props.services);
|
|
27
|
-
const config = ref([]);
|
|
28
|
-
/** vs-code 编辑器的 monaco 配置项,沿用 Editor 顶层 provide('codeOptions', ...) 的注入。 */
|
|
29
|
-
const codeOptions = inject("codeOptions", {});
|
|
30
|
-
/** 将代码块的 content 字段统一成字符串,便于在表单/对比中展示 */
|
|
31
|
-
const normalizeCodeBlockValue = (v) => {
|
|
32
|
-
if (!v) return {};
|
|
33
|
-
const next = { ...v };
|
|
34
|
-
if (next.content && typeof next.content !== "string") try {
|
|
35
|
-
next.content = next.content.toString();
|
|
36
|
-
} catch {
|
|
37
|
-
next.content = "";
|
|
38
|
-
}
|
|
39
|
-
return next;
|
|
40
|
-
};
|
|
41
|
-
const currentValues = computed(() => {
|
|
42
|
-
if (props.category === "code-block") return normalizeCodeBlockValue(props.value);
|
|
43
|
-
return props.value || {};
|
|
44
|
-
});
|
|
25
|
+
const { config, currentValues, wrapperStyle, formContext, loadConfig, formRef, normalizeCodeBlockValue } = useCompareForm(props);
|
|
45
26
|
const lastValuesProcessed = computed(() => {
|
|
46
27
|
if (props.category === "code-block") return normalizeCodeBlockValue(props.lastValue);
|
|
47
28
|
return props.lastValue || {};
|
|
48
29
|
});
|
|
49
30
|
/**
|
|
50
|
-
* 外层包裹层的样式:当传入 `height` 时启用固定高度 + 内部滚动,
|
|
51
|
-
* 这样滚动条会出现在 CompareForm 内部,避免父容器(如 Dialog)自身也产生滚动。
|
|
52
|
-
*/
|
|
53
|
-
const wrapperStyle = computed(() => {
|
|
54
|
-
if (!props.height) return void 0;
|
|
55
|
-
return {
|
|
56
|
-
height: props.height,
|
|
57
|
-
overflow: "auto"
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
/**
|
|
61
31
|
* `code-select` 字段在历史数据中存在两种"语义为空"的形态:
|
|
62
32
|
* - 字符串 `''`(旧数据 / 用户从未配置过钩子);
|
|
63
|
-
* - `{ hookType: HookType.CODE, hookData: [] }
|
|
64
|
-
*
|
|
65
|
-
* `props.model[props.name] = { hookType: HookType.CODE, hookData: [] }`)。
|
|
33
|
+
* - `{ hookType: HookType.CODE, hookData: [] }`(`normalizeCodeSelectValue`
|
|
34
|
+
* 写入的默认结构)。
|
|
66
35
|
*
|
|
67
36
|
* 直接 `isEqual` 会把两者判为不等,从而在历史对比里对每个未配置过钩子的组件
|
|
68
37
|
* 都展示一份"差异",体验很糟糕。这里把它们视为相等,跳过对比。
|
|
@@ -80,80 +49,6 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
80
49
|
}
|
|
81
50
|
return !isEqual(curValue, lastValue);
|
|
82
51
|
};
|
|
83
|
-
const removeStyleDisplayConfig = (formConfig) => formConfig.map((item) => {
|
|
84
|
-
if (!("type" in item)) return item;
|
|
85
|
-
if (item?.type !== "tab" || !Array.isArray(item.items)) return item;
|
|
86
|
-
return {
|
|
87
|
-
...item,
|
|
88
|
-
items: item.items.map((tabPane) => {
|
|
89
|
-
if (tabPane?.title !== "样式" || !Array.isArray(tabPane.items)) return tabPane;
|
|
90
|
-
return {
|
|
91
|
-
...tabPane,
|
|
92
|
-
display: true
|
|
93
|
-
};
|
|
94
|
-
})
|
|
95
|
-
};
|
|
96
|
-
});
|
|
97
|
-
/**
|
|
98
|
-
* 内置的默认 FormConfig 加载逻辑:按 `category` 从对应 service / 工具取配置。
|
|
99
|
-
* 作为 ctx.defaultLoadConfig 透传给自定义 `loadConfig`,方便复用与二次加工。
|
|
100
|
-
*/
|
|
101
|
-
const defaultLoadConfig = async () => {
|
|
102
|
-
switch (props.category) {
|
|
103
|
-
case "node":
|
|
104
|
-
if (!props.type) return [];
|
|
105
|
-
return removeStyleDisplayConfig(await propsService.getPropsConfig(props.type, { node: props.value }));
|
|
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);
|
|
110
|
-
case "code-block": return getCodeBlockFormConfig({
|
|
111
|
-
paramColConfig: codeBlockService.getParamsColConfig(),
|
|
112
|
-
isDataSource: () => Boolean(props.dataSourceType),
|
|
113
|
-
dataSourceType: () => props.dataSourceType,
|
|
114
|
-
codeOptions,
|
|
115
|
-
editable: false
|
|
116
|
-
});
|
|
117
|
-
default: return [];
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
const loadConfig = async () => {
|
|
121
|
-
if (props.loadConfig) {
|
|
122
|
-
config.value = await props.loadConfig({
|
|
123
|
-
category: props.category,
|
|
124
|
-
type: props.type,
|
|
125
|
-
dataSourceType: props.dataSourceType,
|
|
126
|
-
defaultLoadConfig
|
|
127
|
-
});
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
config.value = await defaultLoadConfig();
|
|
131
|
-
};
|
|
132
|
-
watch([
|
|
133
|
-
() => props.category,
|
|
134
|
-
() => props.type,
|
|
135
|
-
() => props.dataSourceType,
|
|
136
|
-
() => props.loadConfig
|
|
137
|
-
], () => {
|
|
138
|
-
loadConfig();
|
|
139
|
-
}, { immediate: true });
|
|
140
|
-
const formRef = useTemplateRef("form");
|
|
141
|
-
/**
|
|
142
|
-
* 把 services / stage 注入 MForm 的 formState,避免 propsService 注入的表单配置中
|
|
143
|
-
* 形如 `display: ({ services }) => services.uiService.get(...)` 的 filterFunction
|
|
144
|
-
* 在执行时拿不到 `formState.services` 而报错。
|
|
145
|
-
*
|
|
146
|
-
* 与 props-panel/FormPanel.vue 中的注入方式保持一致:
|
|
147
|
-
* - services:整个 useServices() 返回的服务集合;
|
|
148
|
-
* - stage:当前 editorService.get('stage') 的最新值。
|
|
149
|
-
*/
|
|
150
|
-
const stage = computed(() => editorService.get("stage"));
|
|
151
|
-
watchEffect(() => {
|
|
152
|
-
if (formRef.value) {
|
|
153
|
-
formRef.value.formState.stage = stage.value;
|
|
154
|
-
formRef.value.formState.services = props.services;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
52
|
__expose({
|
|
158
53
|
form: formRef,
|
|
159
54
|
config,
|
|
@@ -162,25 +57,29 @@ var CompareForm_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
162
57
|
return (_ctx, _cache) => {
|
|
163
58
|
return openBlock(), createElementBlock("div", {
|
|
164
59
|
class: "m-editor-compare-form-wrapper",
|
|
165
|
-
style: normalizeStyle(wrapperStyle
|
|
166
|
-
}, [config.
|
|
60
|
+
style: normalizeStyle(unref(wrapperStyle))
|
|
61
|
+
}, [unref(config).length ? (openBlock(), createBlock(unref(MForm), {
|
|
167
62
|
key: 0,
|
|
168
63
|
ref: "form",
|
|
169
64
|
class: "m-editor-compare-form",
|
|
170
|
-
config: config
|
|
171
|
-
"init-values": currentValues
|
|
65
|
+
config: unref(config),
|
|
66
|
+
"init-values": unref(currentValues),
|
|
172
67
|
"last-values": lastValuesProcessed.value,
|
|
173
68
|
"is-compare": true,
|
|
174
69
|
disabled: true,
|
|
175
70
|
"label-width": __props.labelWidth,
|
|
176
|
-
|
|
177
|
-
"show-diff": showDiff
|
|
71
|
+
context: unref(formContext),
|
|
72
|
+
"show-diff": showDiff,
|
|
73
|
+
"self-diff-field-types": __props.selfDiffFieldTypes,
|
|
74
|
+
size: __props.size
|
|
178
75
|
}, null, 8, [
|
|
179
76
|
"config",
|
|
180
77
|
"init-values",
|
|
181
78
|
"last-values",
|
|
182
79
|
"label-width",
|
|
183
|
-
"
|
|
80
|
+
"context",
|
|
81
|
+
"self-diff-field-types",
|
|
82
|
+
"size"
|
|
184
83
|
])) : createCommentVNode("v-if", true)], 4);
|
|
185
84
|
};
|
|
186
85
|
}
|
|
@@ -2,7 +2,7 @@ import ToolButton_default from "./ToolButton.js";
|
|
|
2
2
|
import { useThemeClass, useZIndex } from "@tmagic/design";
|
|
3
3
|
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, resolveComponent, unref, useTemplateRef, vShow, withCtx, withDirectives, withModifiers } from "vue";
|
|
4
4
|
//#region packages/editor/src/components/ContentMenu.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var ContentMenu_vue_vue_type_script_setup_true_lang_default =
|
|
5
|
+
var ContentMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
6
6
|
name: "MEditorContentMenu",
|
|
7
7
|
__name: "ContentMenu",
|
|
8
8
|
props: {
|
|
@@ -66,15 +66,29 @@ var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
66
66
|
if (contains(target)) return;
|
|
67
67
|
hide();
|
|
68
68
|
};
|
|
69
|
+
const fixPosition = () => {
|
|
70
|
+
const menu = menuEl.value;
|
|
71
|
+
if (!menu || !visible.value) return;
|
|
72
|
+
const menuHeight = menu.clientHeight;
|
|
73
|
+
const menuWidth = menu.clientWidth;
|
|
74
|
+
let { top, left } = menuPosition.value;
|
|
75
|
+
if (top + menuHeight > document.body.clientHeight) top = Math.max(0, document.body.clientHeight - menuHeight);
|
|
76
|
+
if (left + menuWidth > document.body.clientWidth) left = Math.max(0, document.body.clientWidth - menuWidth);
|
|
77
|
+
if (top !== menuPosition.value.top || left !== menuPosition.value.left) menuPosition.value = {
|
|
78
|
+
top,
|
|
79
|
+
left
|
|
80
|
+
};
|
|
81
|
+
};
|
|
69
82
|
const setPosition = (e) => {
|
|
70
|
-
const menuHeight = menuEl.value?.clientHeight || 0;
|
|
71
|
-
let top = e.clientY;
|
|
72
|
-
if (menuHeight + e.clientY > document.body.clientHeight) top = document.body.clientHeight - menuHeight;
|
|
73
83
|
menuPosition.value = {
|
|
74
|
-
top,
|
|
84
|
+
top: e.clientY,
|
|
75
85
|
left: e.clientX
|
|
76
86
|
};
|
|
87
|
+
fixPosition();
|
|
77
88
|
};
|
|
89
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
90
|
+
fixPosition();
|
|
91
|
+
});
|
|
78
92
|
const show = (e) => {
|
|
79
93
|
visible.value = true;
|
|
80
94
|
nextTick(() => {
|
|
@@ -103,10 +117,12 @@ var ContentMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
103
117
|
emit("mouseenter");
|
|
104
118
|
};
|
|
105
119
|
onMounted(() => {
|
|
120
|
+
if (menuEl.value) resizeObserver.observe(menuEl.value);
|
|
106
121
|
if (props.isSubMenu) return;
|
|
107
122
|
globalThis.addEventListener("mousedown", outsideClickHideHandler, true);
|
|
108
123
|
});
|
|
109
124
|
onBeforeUnmount(() => {
|
|
125
|
+
resizeObserver.disconnect();
|
|
110
126
|
if (props.isSubMenu) return;
|
|
111
127
|
globalThis.removeEventListener("mousedown", outsideClickHideHandler, true);
|
|
112
128
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { useServices } from "../hooks/use-services.js";
|
|
2
1
|
import Icon_default from "./Icon.js";
|
|
3
2
|
import { TMagicButton, useThemeClass, useZIndex } from "@tmagic/design";
|
|
4
|
-
import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, mergeModels,
|
|
3
|
+
import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeStyle, onBeforeUnmount, openBlock, provide, ref, renderSlot, toDisplayString, unref, useModel, useTemplateRef, watch, withCtx } from "vue";
|
|
5
4
|
import { Close } from "@element-plus/icons-vue";
|
|
6
5
|
import VanillaMoveable from "moveable";
|
|
7
6
|
//#region packages/editor/src/components/FloatingBox.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -9,14 +8,17 @@ var _hoisted_1 = {
|
|
|
9
8
|
ref: "title",
|
|
10
9
|
class: "m-editor-float-box-title"
|
|
11
10
|
};
|
|
12
|
-
var FloatingBox_vue_vue_type_script_setup_true_lang_default =
|
|
11
|
+
var FloatingBox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
13
12
|
__name: "FloatingBox",
|
|
14
|
-
props:
|
|
13
|
+
props: /*@__PURE__*/ mergeModels({
|
|
15
14
|
position: { default: () => ({
|
|
16
15
|
left: 0,
|
|
17
16
|
top: 0
|
|
18
17
|
}) },
|
|
19
18
|
title: { default: "" },
|
|
19
|
+
bodyStyle: {},
|
|
20
|
+
initialStyle: { default: () => ({}) },
|
|
21
|
+
frameworkWidth: { default: 0 },
|
|
20
22
|
beforeClose: {}
|
|
21
23
|
}, {
|
|
22
24
|
"width": { default: 0 },
|
|
@@ -54,19 +56,51 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
54
56
|
if (targetEl.value) return targetEl.value.clientHeight - titleHeight.value;
|
|
55
57
|
return "auto";
|
|
56
58
|
});
|
|
57
|
-
const { uiService } = useServices();
|
|
58
|
-
const frameworkWidth = computed(() => uiService.get("frameworkRect").width || 0);
|
|
59
59
|
const style = computed(() => {
|
|
60
60
|
let { left } = props.position;
|
|
61
|
-
|
|
61
|
+
const frameworkWidth = props.frameworkWidth || globalThis.window?.innerWidth || 0;
|
|
62
|
+
if (width.value && frameworkWidth) left = left + width.value > frameworkWidth ? frameworkWidth - width.value : left;
|
|
62
63
|
return {
|
|
63
64
|
left: `${left}px`,
|
|
64
65
|
top: `${props.position.top}px`,
|
|
65
66
|
width: width.value ? `${width.value}px` : "auto",
|
|
66
|
-
height: height.value ? `${height.value}px` : "auto"
|
|
67
|
+
height: height.value ? `${height.value}px` : "auto",
|
|
68
|
+
...props.initialStyle
|
|
67
69
|
};
|
|
68
70
|
});
|
|
69
71
|
let moveable = null;
|
|
72
|
+
let dragMask = null;
|
|
73
|
+
let dragMaskVisible = false;
|
|
74
|
+
const bindDragMaskSafety = () => {
|
|
75
|
+
globalThis.window?.addEventListener("pointerup", hideDragMask, true);
|
|
76
|
+
globalThis.window?.addEventListener("blur", hideDragMask);
|
|
77
|
+
globalThis.document?.addEventListener("visibilitychange", hideDragMask);
|
|
78
|
+
};
|
|
79
|
+
const unbindDragMaskSafety = () => {
|
|
80
|
+
globalThis.window?.removeEventListener("pointerup", hideDragMask, true);
|
|
81
|
+
globalThis.window?.removeEventListener("blur", hideDragMask);
|
|
82
|
+
globalThis.document?.removeEventListener("visibilitychange", hideDragMask);
|
|
83
|
+
};
|
|
84
|
+
const showDragMask = () => {
|
|
85
|
+
if (dragMaskVisible) return;
|
|
86
|
+
if (!dragMask) {
|
|
87
|
+
dragMask = globalThis.document.createElement("div");
|
|
88
|
+
dragMask.className = "m-editor-float-box-drag-mask";
|
|
89
|
+
}
|
|
90
|
+
globalThis.document.body.appendChild(dragMask);
|
|
91
|
+
dragMaskVisible = true;
|
|
92
|
+
bindDragMaskSafety();
|
|
93
|
+
const setMaskZIndex = () => {
|
|
94
|
+
if (dragMask) dragMask.style.zIndex = `${curZIndex.value + 1}`;
|
|
95
|
+
};
|
|
96
|
+
setMaskZIndex();
|
|
97
|
+
nextTick(setMaskZIndex);
|
|
98
|
+
};
|
|
99
|
+
const hideDragMask = () => {
|
|
100
|
+
unbindDragMaskSafety();
|
|
101
|
+
dragMask?.parentNode?.removeChild(dragMask);
|
|
102
|
+
dragMaskVisible = false;
|
|
103
|
+
};
|
|
70
104
|
const initMoveable = () => {
|
|
71
105
|
moveable = new VanillaMoveable(globalThis.document.body, {
|
|
72
106
|
className: "m-editor-floating-box-moveable",
|
|
@@ -89,6 +123,10 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
89
123
|
position: "css"
|
|
90
124
|
}
|
|
91
125
|
});
|
|
126
|
+
moveable.on("drag", showDragMask);
|
|
127
|
+
moveable.on("resize", showDragMask);
|
|
128
|
+
moveable.on("dragEnd", hideDragMask);
|
|
129
|
+
moveable.on("resizeEnd", hideDragMask);
|
|
92
130
|
moveable.on("drag", (e) => {
|
|
93
131
|
e.target.style.transform = e.transform;
|
|
94
132
|
});
|
|
@@ -101,6 +139,7 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
101
139
|
});
|
|
102
140
|
};
|
|
103
141
|
const destroyMoveable = () => {
|
|
142
|
+
hideDragMask();
|
|
104
143
|
moveable?.destroy();
|
|
105
144
|
moveable = null;
|
|
106
145
|
};
|
|
@@ -114,7 +153,10 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
114
153
|
height.value = targetRect.height;
|
|
115
154
|
initMoveable();
|
|
116
155
|
}
|
|
117
|
-
if (titleEl.value)
|
|
156
|
+
if (titleEl.value) {
|
|
157
|
+
const titleRect = titleEl.value.getBoundingClientRect();
|
|
158
|
+
titleHeight.value = titleRect.height;
|
|
159
|
+
}
|
|
118
160
|
} else destroyMoveable();
|
|
119
161
|
}, { immediate: true });
|
|
120
162
|
onBeforeUnmount(() => {
|
|
@@ -140,15 +182,16 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
140
182
|
return visible.value ? (openBlock(), createBlock(Teleport, {
|
|
141
183
|
key: 0,
|
|
142
184
|
to: "body"
|
|
143
|
-
}, [createElementVNode("div", {
|
|
185
|
+
}, [createElementVNode("div", mergeProps({
|
|
144
186
|
ref: "target",
|
|
145
|
-
class:
|
|
146
|
-
|
|
187
|
+
class: ["m-editor-float-box", unref(themeClass)]
|
|
188
|
+
}, _ctx.$attrs, {
|
|
189
|
+
style: {
|
|
147
190
|
...style.value,
|
|
148
191
|
zIndex: curZIndex.value
|
|
149
|
-
}
|
|
192
|
+
},
|
|
150
193
|
onMousedown: nextZIndex
|
|
151
|
-
}, [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", null, toDisplayString(__props.title), 1)]), createElementVNode("div", null, [createVNode(unref(TMagicButton), {
|
|
194
|
+
}), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", null, toDisplayString(__props.title), 1)]), createElementVNode("div", null, [createVNode(unref(TMagicButton), {
|
|
152
195
|
link: "",
|
|
153
196
|
size: "small",
|
|
154
197
|
onClick: closeHandler
|
|
@@ -157,8 +200,11 @@ var FloatingBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
|
|
|
157
200
|
_: 1
|
|
158
201
|
})])], 512), createElementVNode("div", {
|
|
159
202
|
class: "m-editor-float-box-body",
|
|
160
|
-
style: normalizeStyle({
|
|
161
|
-
|
|
203
|
+
style: normalizeStyle({
|
|
204
|
+
height: `${bodyHeight.value}px`,
|
|
205
|
+
...__props.bodyStyle
|
|
206
|
+
})
|
|
207
|
+
}, [renderSlot(_ctx.$slots, "body")], 4)], 16)])) : createCommentVNode("v-if", true);
|
|
162
208
|
};
|
|
163
209
|
}
|
|
164
210
|
});
|
|
@@ -3,7 +3,7 @@ import { createBlock, createElementBlock, createElementVNode, createVNode, defin
|
|
|
3
3
|
import { Edit } from "@element-plus/icons-vue";
|
|
4
4
|
//#region packages/editor/src/components/Icon.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _hoisted_1 = ["src"];
|
|
6
|
-
var Icon_vue_vue_type_script_setup_true_lang_default =
|
|
6
|
+
var Icon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
7
7
|
name: "MEditorIcon",
|
|
8
8
|
__name: "Icon",
|
|
9
9
|
props: { icon: {} },
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { useGetSo } from "../hooks/use-getso.js";
|
|
2
2
|
import { createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, useTemplateRef } from "vue";
|
|
3
3
|
//#region packages/editor/src/components/Resizer.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
-
var Resizer_vue_vue_type_script_setup_true_lang_default =
|
|
4
|
+
var Resizer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
5
5
|
name: "MEditorResizer",
|
|
6
6
|
__name: "Resizer",
|
|
7
7
|
emits: ["change"],
|
|
8
8
|
setup(__props, { emit: __emit }) {
|
|
9
9
|
const emit = __emit;
|
|
10
|
-
const
|
|
10
|
+
const targetEl = useTemplateRef("target");
|
|
11
|
+
const { isDragging } = useGetSo(targetEl, emit);
|
|
11
12
|
return (_ctx, _cache) => {
|
|
12
13
|
return openBlock(), createElementBlock("span", {
|
|
13
14
|
ref: "target",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ScrollBar_vue_vue_type_script_setup_true_lang_default from "./ScrollBar.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
-
/* empty css */
|
|
3
2
|
//#region packages/editor/src/components/ScrollBar.vue
|
|
4
3
|
var ScrollBar_default = ScrollBar_vue_vue_type_script_setup_true_lang_default;
|
|
5
4
|
//#endregion
|