@tmagic/editor 1.1.0-beta.5 → 1.1.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/style.css +4 -0
- package/dist/{tmagic-editor.es.js → tmagic-editor.mjs} +1417 -1228
- package/dist/tmagic-editor.mjs.map +1 -0
- package/dist/tmagic-editor.umd.js +1433 -1242
- package/dist/tmagic-editor.umd.js.map +1 -1
- package/package.json +21 -19
- package/src/Editor.vue +14 -12
- package/src/components/ContentMenu.vue +87 -99
- package/src/components/Icon.vue +1 -1
- package/src/components/ScrollViewer.vue +1 -1
- package/src/components/ToolButton.vue +150 -167
- package/src/fields/UISelect.vue +49 -70
- package/src/index.ts +2 -1
- package/src/layouts/AddPageBox.vue +2 -2
- package/src/layouts/Framework.vue +1 -1
- package/src/layouts/NavMenu.vue +2 -2
- package/src/layouts/PropsPanel.vue +1 -1
- package/src/layouts/Resizer.vue +1 -1
- package/src/layouts/sidebar/ComponentListPanel.vue +2 -2
- package/src/layouts/sidebar/LayerMenu.vue +2 -2
- package/src/layouts/sidebar/LayerPanel.vue +3 -3
- package/src/layouts/sidebar/Sidebar.vue +1 -1
- package/src/layouts/sidebar/TabPane.vue +2 -2
- package/src/layouts/workspace/PageBar.vue +63 -192
- package/src/layouts/workspace/PageBarScrollContainer.vue +111 -0
- package/src/layouts/workspace/Stage.vue +195 -222
- package/src/layouts/workspace/ViewerMenu.vue +140 -147
- package/src/layouts/workspace/Workspace.vue +11 -11
- package/src/services/BaseService.ts +1 -1
- package/src/services/componentList.ts +3 -3
- package/src/services/editor.ts +137 -139
- package/src/services/events.ts +1 -1
- package/src/services/history.ts +1 -1
- package/src/services/props.ts +18 -5
- package/src/services/storage.ts +133 -0
- package/src/services/ui.ts +2 -2
- package/src/theme/component-list-panel.scss +5 -0
- package/src/type.ts +22 -6
- package/src/utils/config.ts +1 -1
- package/src/utils/editor.ts +18 -11
- package/src/utils/operator.ts +163 -0
- package/src/utils/props.ts +2 -2
- package/src/utils/scroll-viewer.ts +1 -1
- package/tsconfig.build.json +13 -0
- package/{dist/types/src → types}/Editor.vue.d.ts +7 -8
- package/types/components/ContentMenu.vue.d.ts +116 -0
- package/types/components/Icon.vue.d.ts +13 -0
- package/types/components/ScrollViewer.vue.d.ts +22 -0
- package/types/components/ToolButton.vue.d.ts +109 -0
- package/types/fields/Code.vue.d.ts +23 -0
- package/{dist/types/src → types}/fields/CodeLink.vue.d.ts +4 -6
- package/types/fields/UISelect.vue.d.ts +83 -0
- package/{dist/types/src → types}/index.d.ts +4 -1
- package/types/layouts/AddPageBox.vue.d.ts +4 -0
- package/{dist/types/src → types}/layouts/CodeEditor.vue.d.ts +11 -13
- package/types/layouts/Framework.vue.d.ts +22 -0
- package/types/layouts/NavMenu.vue.d.ts +25 -0
- package/types/layouts/PropsPanel.vue.d.ts +245 -0
- package/types/layouts/Resizer.vue.d.ts +12 -0
- package/types/layouts/sidebar/ComponentListPanel.vue.d.ts +14 -0
- package/types/layouts/sidebar/LayerMenu.vue.d.ts +100 -0
- package/types/layouts/sidebar/LayerPanel.vue.d.ts +1099 -0
- package/{dist/types/src → types}/layouts/sidebar/Sidebar.vue.d.ts +3 -5
- package/types/layouts/sidebar/TabPane.vue.d.ts +14 -0
- package/types/layouts/workspace/PageBar.vue.d.ts +54 -0
- package/types/layouts/workspace/PageBarScrollContainer.vue.d.ts +48 -0
- package/types/layouts/workspace/Stage.vue.d.ts +46 -0
- package/types/layouts/workspace/ViewerMenu.vue.d.ts +88 -0
- package/types/layouts/workspace/Workspace.vue.d.ts +6 -0
- package/{dist/types/src → types}/services/BaseService.d.ts +0 -0
- package/types/services/componentList.d.ts +14 -0
- package/{dist/types/src → types}/services/editor.d.ts +22 -12
- package/{dist/types/src → types}/services/events.d.ts +0 -0
- package/{dist/types/src → types}/services/history.d.ts +0 -0
- package/{dist/types/src → types}/services/props.d.ts +6 -0
- package/types/services/storage.d.ts +56 -0
- package/{dist/types/src → types}/services/ui.d.ts +1 -1
- package/{dist/types/src → types}/type.d.ts +15 -0
- package/{dist/types/src → types}/utils/compose.d.ts +1 -1
- package/{dist/types/src → types}/utils/config.d.ts +0 -0
- package/{dist/types/src → types}/utils/editor.d.ts +6 -3
- package/{dist/types/src → types}/utils/index.d.ts +0 -0
- package/{dist/types/src → types}/utils/logger.d.ts +0 -0
- package/types/utils/operator.d.ts +27 -0
- package/{dist/types/src → types}/utils/polyfills.d.ts +0 -0
- package/{dist/types/src → types}/utils/props.d.ts +2 -2
- package/{dist/types/src → types}/utils/scroll-viewer.d.ts +0 -0
- package/{dist/types/src → types}/utils/undo-redo.d.ts +0 -0
- package/dist/tmagic-editor.es.js.map +0 -1
- package/dist/types/src/components/Icon.vue.d.ts +0 -14
- package/dist/types/src/components/ScrollViewer.vue.d.ts +0 -24
- package/dist/types/src/fields/Code.vue.d.ts +0 -25
- package/dist/types/src/layouts/AddPageBox.vue.d.ts +0 -5
- package/dist/types/src/layouts/Framework.vue.d.ts +0 -24
- package/dist/types/src/layouts/NavMenu.vue.d.ts +0 -27
- package/dist/types/src/layouts/PropsPanel.vue.d.ts +0 -13
- package/dist/types/src/layouts/Resizer.vue.d.ts +0 -14
- package/dist/types/src/layouts/sidebar/ComponentListPanel.vue.d.ts +0 -16
- package/dist/types/src/layouts/sidebar/TabPane.vue.d.ts +0 -16
- package/dist/types/src/layouts/workspace/Workspace.vue.d.ts +0 -8
- package/dist/types/src/shims-vue.d.ts +0 -6
- package/dist/types/src/vite-env.d.ts +0 -1
- package/src/vite-env.d.ts +0 -1
package/src/type.ts
CHANGED
|
@@ -23,12 +23,13 @@ import type { Id, MApp, MContainer, MNode, MPage } from '@tmagic/schema';
|
|
|
23
23
|
import type StageCore from '@tmagic/stage';
|
|
24
24
|
import type { MoveableOptions } from '@tmagic/stage';
|
|
25
25
|
|
|
26
|
-
import type { ComponentListService } from '
|
|
27
|
-
import type { EditorService } from '
|
|
28
|
-
import type { EventsService } from '
|
|
29
|
-
import type { HistoryService } from '
|
|
30
|
-
import type { PropsService } from '
|
|
31
|
-
import type {
|
|
26
|
+
import type { ComponentListService } from './services/componentList';
|
|
27
|
+
import type { EditorService } from './services/editor';
|
|
28
|
+
import type { EventsService } from './services/events';
|
|
29
|
+
import type { HistoryService } from './services/history';
|
|
30
|
+
import type { PropsService } from './services/props';
|
|
31
|
+
import type { StorageService } from './services/storage';
|
|
32
|
+
import type { UiService } from './services/ui';
|
|
32
33
|
|
|
33
34
|
export type BeforeAdd = (config: MNode, parent: MContainer) => Promise<MNode> | MNode;
|
|
34
35
|
export type GetConfig = (config: FormConfig) => Promise<FormConfig> | FormConfig;
|
|
@@ -40,6 +41,7 @@ export interface InstallOptions {
|
|
|
40
41
|
export interface Services {
|
|
41
42
|
editorService: EditorService;
|
|
42
43
|
historyService: HistoryService;
|
|
44
|
+
storageService: StorageService;
|
|
43
45
|
eventsService: EventsService;
|
|
44
46
|
propsService: PropsService;
|
|
45
47
|
componentListService: ComponentListService;
|
|
@@ -64,6 +66,7 @@ export interface StoreState {
|
|
|
64
66
|
parent: MContainer | null;
|
|
65
67
|
node: MNode | null;
|
|
66
68
|
highlightNode: MNode | null;
|
|
69
|
+
nodes: MNode[];
|
|
67
70
|
stage: StageCore | null;
|
|
68
71
|
modifiedNodeIds: Map<Id, Id>;
|
|
69
72
|
pageLength: number;
|
|
@@ -129,6 +132,19 @@ export interface AddMNode {
|
|
|
129
132
|
[key: string]: any;
|
|
130
133
|
}
|
|
131
134
|
|
|
135
|
+
export interface PastePosition {
|
|
136
|
+
left?: number;
|
|
137
|
+
top?: number;
|
|
138
|
+
/**
|
|
139
|
+
* 粘贴位置X方向偏移量
|
|
140
|
+
*/
|
|
141
|
+
offsetX?: number;
|
|
142
|
+
/**
|
|
143
|
+
* 粘贴位置Y方向偏移量
|
|
144
|
+
*/
|
|
145
|
+
offsetY?: number;
|
|
146
|
+
}
|
|
147
|
+
|
|
132
148
|
/**
|
|
133
149
|
* 菜单按钮
|
|
134
150
|
*/
|
package/src/utils/config.ts
CHANGED
package/src/utils/editor.ts
CHANGED
|
@@ -21,7 +21,7 @@ import { NodeType } from '@tmagic/schema';
|
|
|
21
21
|
import type StageCore from '@tmagic/stage';
|
|
22
22
|
import { getNodePath, isNumber, isPage, isPop } from '@tmagic/utils';
|
|
23
23
|
|
|
24
|
-
import { Layout } from '
|
|
24
|
+
import { Layout } from '../type';
|
|
25
25
|
|
|
26
26
|
export const COPY_STORAGE_KEY = '$MagicEditorCopyData';
|
|
27
27
|
|
|
@@ -88,10 +88,10 @@ export const getRelativeStyle = (style: Record<string, any> = {}): Record<string
|
|
|
88
88
|
left: 0,
|
|
89
89
|
});
|
|
90
90
|
|
|
91
|
-
const getMiddleTop = (
|
|
92
|
-
let height = style
|
|
91
|
+
const getMiddleTop = (node: MNode, parentNode: MNode, stage: StageCore | null) => {
|
|
92
|
+
let height = node.style?.height || 0;
|
|
93
93
|
|
|
94
|
-
if (!stage || typeof style
|
|
94
|
+
if (!stage || typeof node.style?.top !== 'undefined' || !parentNode.style) return node.style?.top;
|
|
95
95
|
|
|
96
96
|
if (!isNumber(height)) {
|
|
97
97
|
height = 0;
|
|
@@ -103,20 +103,15 @@ const getMiddleTop = (style: Record<string, any> = {}, parentNode: MNode, stage:
|
|
|
103
103
|
const { scrollTop = 0, wrapperHeight } = stage.mask;
|
|
104
104
|
return (wrapperHeight - height) / 2 + scrollTop;
|
|
105
105
|
}
|
|
106
|
+
|
|
106
107
|
return (parentHeight - height) / 2;
|
|
107
108
|
};
|
|
108
109
|
|
|
109
|
-
export const getInitPositionStyle = (
|
|
110
|
-
style: Record<string, any> = {},
|
|
111
|
-
layout: Layout,
|
|
112
|
-
parentNode: MNode,
|
|
113
|
-
stage: StageCore,
|
|
114
|
-
) => {
|
|
110
|
+
export const getInitPositionStyle = (style: Record<string, any> = {}, layout: Layout) => {
|
|
115
111
|
if (layout === Layout.ABSOLUTE) {
|
|
116
112
|
return {
|
|
117
113
|
...style,
|
|
118
114
|
position: 'absolute',
|
|
119
|
-
top: getMiddleTop(style, parentNode, stage),
|
|
120
115
|
};
|
|
121
116
|
}
|
|
122
117
|
|
|
@@ -230,3 +225,15 @@ export const fixNodeLeft = (config: MNode, parent: MContainer, doc?: Document) =
|
|
|
230
225
|
|
|
231
226
|
return config.style.left;
|
|
232
227
|
};
|
|
228
|
+
|
|
229
|
+
export const fixNodePosition = (config: MNode, parent: MContainer, stage: StageCore | null) => {
|
|
230
|
+
if (config.style?.position !== 'absolute') {
|
|
231
|
+
return config.style;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
...(config.style || {}),
|
|
236
|
+
top: getMiddleTop(config, parent, stage),
|
|
237
|
+
left: fixNodeLeft(config, parent, stage?.renderer.contentWindow?.document),
|
|
238
|
+
};
|
|
239
|
+
};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { toRaw } from 'vue';
|
|
2
|
+
import { cloneDeep, isEmpty } from 'lodash-es';
|
|
3
|
+
|
|
4
|
+
import { Id, MApp, MContainer, MNode, NodeType } from '@tmagic/schema';
|
|
5
|
+
import StageCore from '@tmagic/stage';
|
|
6
|
+
import { isPage } from '@tmagic/utils';
|
|
7
|
+
|
|
8
|
+
import editorService from '../services/editor';
|
|
9
|
+
import historyService from '../services/history';
|
|
10
|
+
import propsService from '../services/props';
|
|
11
|
+
import { AddMNode, PastePosition } from '../type';
|
|
12
|
+
import { generatePageNameByApp, getInitPositionStyle, getNodeIndex } from '../utils/editor';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 粘贴前置操作:返回分配了新id以及校准了坐标的配置
|
|
16
|
+
* @param position 粘贴的坐标
|
|
17
|
+
* @param config 待粘贴的元素配置(复制时保存的那份配置)
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export const beforePaste = async (position: PastePosition, config: MNode[]): Promise<MNode[]> => {
|
|
21
|
+
if (!config[0]?.style) return config;
|
|
22
|
+
const curNode = editorService.get<MContainer>('node');
|
|
23
|
+
// 将数组中第一个元素的坐标作为参照点
|
|
24
|
+
const { left: referenceLeft, top: referenceTop } = config[0].style;
|
|
25
|
+
// 坐标校准后的粘贴数据
|
|
26
|
+
const pasteConfigs: MNode[] = await Promise.all(
|
|
27
|
+
config.map(async (configItem: MNode): Promise<MNode> => {
|
|
28
|
+
// 解构 position 对象,从 position 删除 offsetX、offsetY字段
|
|
29
|
+
const { offsetX = 0, offsetY = 0, ...positionClone } = position;
|
|
30
|
+
let pastePosition = positionClone;
|
|
31
|
+
|
|
32
|
+
if (!isEmpty(pastePosition) && curNode.items) {
|
|
33
|
+
// 如果没有传入粘贴坐标则可能为键盘操作,不再转换
|
|
34
|
+
// 如果粘贴时选中了容器,则将元素粘贴到容器内,坐标需要转换为相对于容器的坐标
|
|
35
|
+
pastePosition = getPositionInContainer(pastePosition, curNode.id);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 将所有待粘贴元素坐标相对于多选第一个元素坐标重新计算,以保证多选粘贴后元素间距不变
|
|
39
|
+
if (pastePosition.left && configItem.style?.left) {
|
|
40
|
+
pastePosition.left = configItem.style.left - referenceLeft + pastePosition.left;
|
|
41
|
+
}
|
|
42
|
+
if (pastePosition.top && configItem.style?.top) {
|
|
43
|
+
pastePosition.top = configItem.style?.top - referenceTop + pastePosition.top;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const pasteConfig = await propsService.setNewItemId(configItem, editorService.get('root'));
|
|
47
|
+
|
|
48
|
+
if (pasteConfig.style) {
|
|
49
|
+
const { left, top } = pasteConfig.style;
|
|
50
|
+
// 判断能转换为数字时,做粘贴偏移量计算
|
|
51
|
+
if (typeof left === 'number' || (!!left && !isNaN(Number(left)))) {
|
|
52
|
+
pasteConfig.style.left = Number(left) + offsetX;
|
|
53
|
+
}
|
|
54
|
+
if (typeof top === 'number' || (!!top && !isNaN(Number(top)))) {
|
|
55
|
+
pasteConfig.style.top = Number(top) + offsetY;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
pasteConfig.style = {
|
|
59
|
+
...pasteConfig.style,
|
|
60
|
+
...pastePosition,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (isPage(pasteConfig)) {
|
|
64
|
+
pasteConfig.name = generatePageNameByApp(editorService.get('root'));
|
|
65
|
+
}
|
|
66
|
+
return pasteConfig as MNode;
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
return pasteConfigs;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 将元素粘贴到容器内时,将相对于画布坐标转换为相对于容器的坐标
|
|
74
|
+
* @param position PastePosition 粘贴时相对于画布的坐标
|
|
75
|
+
* @param id 元素id
|
|
76
|
+
* @returns PastePosition 转换后的坐标
|
|
77
|
+
*/
|
|
78
|
+
export const getPositionInContainer = (position: PastePosition = {}, id: Id) => {
|
|
79
|
+
let { left = 0, top = 0 } = position;
|
|
80
|
+
const parentEl = editorService.get<StageCore>('stage')?.renderer?.contentWindow?.document.getElementById(`${id}`);
|
|
81
|
+
const parentElRect = parentEl?.getBoundingClientRect();
|
|
82
|
+
left = left - (parentElRect?.left || 0);
|
|
83
|
+
top = top - (parentElRect?.top || 0);
|
|
84
|
+
return {
|
|
85
|
+
left,
|
|
86
|
+
top,
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* 删除前置操作:实现了在编辑器中删除元素节点,并返回父级元素信息以供stage更新
|
|
92
|
+
* @param node 待删除的节点
|
|
93
|
+
* @returns 父级元素,root根元素
|
|
94
|
+
*/
|
|
95
|
+
export const beforeRemove = async (node: MNode): Promise<MContainer | void> => {
|
|
96
|
+
if (!node?.id) return;
|
|
97
|
+
|
|
98
|
+
const stage = editorService.get<StageCore | null>('stage');
|
|
99
|
+
const root = editorService.get<MApp | null>('root');
|
|
100
|
+
|
|
101
|
+
if (!root) throw new Error('没有root');
|
|
102
|
+
|
|
103
|
+
const { parent, node: curNode } = editorService.getNodeInfo(node.id, false);
|
|
104
|
+
|
|
105
|
+
if (!parent || !curNode) throw new Error('找不要删除的节点');
|
|
106
|
+
|
|
107
|
+
const index = getNodeIndex(curNode, parent);
|
|
108
|
+
|
|
109
|
+
if (typeof index !== 'number' || index === -1) throw new Error('找不要删除的节点');
|
|
110
|
+
// 从配置中删除元素
|
|
111
|
+
parent.items?.splice(index, 1);
|
|
112
|
+
|
|
113
|
+
// 通知stage更新
|
|
114
|
+
stage?.remove({ id: node.id, root: cloneDeep(root) });
|
|
115
|
+
|
|
116
|
+
if (node.type === NodeType.PAGE) {
|
|
117
|
+
editorService.state.pageLength -= 1;
|
|
118
|
+
|
|
119
|
+
if (root.items[0]) {
|
|
120
|
+
await editorService.select(root.items[0]);
|
|
121
|
+
stage?.select(root.items[0].id);
|
|
122
|
+
} else {
|
|
123
|
+
editorService.set('node', null);
|
|
124
|
+
editorService.set('nodes', []);
|
|
125
|
+
editorService.set('parent', null);
|
|
126
|
+
editorService.set('page', null);
|
|
127
|
+
editorService.set('stage', null);
|
|
128
|
+
editorService.set('highlightNode', null);
|
|
129
|
+
editorService.resetModifiedNodeId();
|
|
130
|
+
historyService.reset();
|
|
131
|
+
|
|
132
|
+
editorService.emit('remove', node);
|
|
133
|
+
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
await editorService.select(parent);
|
|
138
|
+
stage?.select(parent.id);
|
|
139
|
+
}
|
|
140
|
+
return parent;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export const getAddParent = (addNode: AddMNode | MNode[]) => {
|
|
144
|
+
const curNode = editorService.get<MContainer>('node');
|
|
145
|
+
|
|
146
|
+
let parentNode;
|
|
147
|
+
if (!Array.isArray(addNode) && isPage(addNode as MNode)) {
|
|
148
|
+
parentNode = editorService.get<MApp>('root');
|
|
149
|
+
} else if (curNode.items) {
|
|
150
|
+
parentNode = curNode;
|
|
151
|
+
} else {
|
|
152
|
+
parentNode = editorService.getParentById(curNode.id, false);
|
|
153
|
+
}
|
|
154
|
+
return parentNode;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export const getDefaultConfig = async (addNode: AddMNode, parentNode: MContainer) => {
|
|
158
|
+
const { type, inputEvent, ...config } = addNode;
|
|
159
|
+
const layout = await editorService.getLayout(toRaw(parentNode), addNode as MNode);
|
|
160
|
+
const newNode = { ...toRaw(await propsService.getPropsValue(type, config)) };
|
|
161
|
+
newNode.style = getInitPositionStyle(newNode.style, layout);
|
|
162
|
+
return newNode;
|
|
163
|
+
};
|
package/src/utils/props.ts
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
|
|
19
19
|
import { FormConfig, FormState } from '@tmagic/form';
|
|
20
20
|
|
|
21
|
-
import editorService from '
|
|
22
|
-
import eventsService from '
|
|
21
|
+
import editorService from '../services/editor';
|
|
22
|
+
import eventsService from '../services/events';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* 统一为组件属性表单加上事件、高级、样式配置
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { DefineComponent, ComponentOptionsMixin, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes } from '@vue/runtime-core';
|
|
2
1
|
import { PropType } from 'vue';
|
|
3
2
|
import type { FormConfig } from '@tmagic/form';
|
|
4
3
|
import type { MApp, MNode } from '@tmagic/schema';
|
|
5
4
|
import type StageCore from '@tmagic/stage';
|
|
6
5
|
import { MoveableOptions } from '@tmagic/stage';
|
|
7
6
|
import type { ComponentGroup, MenuBarData, MenuItem, Services, SideBarData, StageRect } from './type';
|
|
8
|
-
declare const _default: DefineComponent<{
|
|
7
|
+
declare const _default: import("vue").DefineComponent<{
|
|
9
8
|
/** 页面初始值 */
|
|
10
9
|
modelValue: {
|
|
11
10
|
type: PropType<MApp>;
|
|
@@ -62,11 +61,11 @@ declare const _default: DefineComponent<{
|
|
|
62
61
|
};
|
|
63
62
|
/** 画布中组件选中框的移动范围 */
|
|
64
63
|
moveableOptions: {
|
|
65
|
-
type: PropType<MoveableOptions | ((core?: StageCore
|
|
64
|
+
type: PropType<MoveableOptions | ((core?: StageCore) => MoveableOptions)>;
|
|
66
65
|
};
|
|
67
66
|
/** 编辑器初始化时默认选中的组件ID */
|
|
68
67
|
defaultSelected: {
|
|
69
|
-
type: (
|
|
68
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
70
69
|
};
|
|
71
70
|
canSelect: {
|
|
72
71
|
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
@@ -94,7 +93,7 @@ declare const _default: DefineComponent<{
|
|
|
94
93
|
updateDragEl: {
|
|
95
94
|
type: PropType<(el: HTMLDivElement, target: HTMLElement) => void>;
|
|
96
95
|
};
|
|
97
|
-
}, Services, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ("props-panel-mounted" | "update:modelValue")[], "props-panel-mounted" | "update:modelValue", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
96
|
+
}, Services, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("props-panel-mounted" | "update:modelValue")[], "props-panel-mounted" | "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
98
97
|
/** 页面初始值 */
|
|
99
98
|
modelValue: {
|
|
100
99
|
type: PropType<MApp>;
|
|
@@ -151,11 +150,11 @@ declare const _default: DefineComponent<{
|
|
|
151
150
|
};
|
|
152
151
|
/** 画布中组件选中框的移动范围 */
|
|
153
152
|
moveableOptions: {
|
|
154
|
-
type: PropType<MoveableOptions | ((core?: StageCore
|
|
153
|
+
type: PropType<MoveableOptions | ((core?: StageCore) => MoveableOptions)>;
|
|
155
154
|
};
|
|
156
155
|
/** 编辑器初始化时默认选中的组件ID */
|
|
157
156
|
defaultSelected: {
|
|
158
|
-
type: (
|
|
157
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
159
158
|
};
|
|
160
159
|
canSelect: {
|
|
161
160
|
type: PropType<(el: HTMLElement) => boolean | Promise<boolean>>;
|
|
@@ -188,9 +187,9 @@ declare const _default: DefineComponent<{
|
|
|
188
187
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
189
188
|
}, {
|
|
190
189
|
menu: MenuBarData;
|
|
190
|
+
codeOptions: Record<string, any>;
|
|
191
191
|
layerContentMenu: MenuItem[];
|
|
192
192
|
stageContentMenu: MenuItem[];
|
|
193
|
-
codeOptions: Record<string, any>;
|
|
194
193
|
modelValue: MApp;
|
|
195
194
|
componentGroupList: ComponentGroup[];
|
|
196
195
|
autoScrollIntoView: boolean;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { nextTick } from 'vue';
|
|
2
|
+
import { MenuItem } from '../type';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
new (...args: any[]): {
|
|
5
|
+
$: import("vue").ComponentInternalInstance;
|
|
6
|
+
$data: {};
|
|
7
|
+
$props: Partial<{
|
|
8
|
+
menuData: MenuItem[];
|
|
9
|
+
isSubMenu: boolean;
|
|
10
|
+
}> & Omit<Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
11
|
+
menuData?: MenuItem[] | undefined;
|
|
12
|
+
isSubMenu?: boolean | undefined;
|
|
13
|
+
}>, {
|
|
14
|
+
menuData: () => never[];
|
|
15
|
+
isSubMenu: boolean;
|
|
16
|
+
}>>> & {
|
|
17
|
+
onHide?: ((...args: any[]) => any) | undefined;
|
|
18
|
+
onShow?: ((...args: any[]) => any) | undefined;
|
|
19
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "menuData" | "isSubMenu">;
|
|
20
|
+
$attrs: {
|
|
21
|
+
[x: string]: unknown;
|
|
22
|
+
};
|
|
23
|
+
$refs: {
|
|
24
|
+
[x: string]: unknown;
|
|
25
|
+
};
|
|
26
|
+
$slots: Readonly<{
|
|
27
|
+
[name: string]: import("vue").Slot | undefined;
|
|
28
|
+
}>;
|
|
29
|
+
$root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
30
|
+
$parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
31
|
+
$emit: (event: "hide" | "show", ...args: any[]) => void;
|
|
32
|
+
$el: any;
|
|
33
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
34
|
+
menuData?: MenuItem[] | undefined;
|
|
35
|
+
isSubMenu?: boolean | undefined;
|
|
36
|
+
}>, {
|
|
37
|
+
menuData: () => never[];
|
|
38
|
+
isSubMenu: boolean;
|
|
39
|
+
}>>> & {
|
|
40
|
+
onHide?: ((...args: any[]) => any) | undefined;
|
|
41
|
+
onShow?: ((...args: any[]) => any) | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
hide: () => void;
|
|
44
|
+
show: (e: MouseEvent) => void;
|
|
45
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("hide" | "show")[], string, {
|
|
46
|
+
menuData: MenuItem[];
|
|
47
|
+
isSubMenu: boolean;
|
|
48
|
+
}> & {
|
|
49
|
+
beforeCreate?: ((() => void) | (() => void)[]) | undefined;
|
|
50
|
+
created?: ((() => void) | (() => void)[]) | undefined;
|
|
51
|
+
beforeMount?: ((() => void) | (() => void)[]) | undefined;
|
|
52
|
+
mounted?: ((() => void) | (() => void)[]) | undefined;
|
|
53
|
+
beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
|
|
54
|
+
updated?: ((() => void) | (() => void)[]) | undefined;
|
|
55
|
+
activated?: ((() => void) | (() => void)[]) | undefined;
|
|
56
|
+
deactivated?: ((() => void) | (() => void)[]) | undefined;
|
|
57
|
+
beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
|
|
58
|
+
beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
|
|
59
|
+
destroyed?: ((() => void) | (() => void)[]) | undefined;
|
|
60
|
+
unmounted?: ((() => void) | (() => void)[]) | undefined;
|
|
61
|
+
renderTracked?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
|
|
62
|
+
renderTriggered?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
|
|
63
|
+
errorCaptured?: (((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void)[]) | undefined;
|
|
64
|
+
};
|
|
65
|
+
$forceUpdate: () => void;
|
|
66
|
+
$nextTick: typeof nextTick;
|
|
67
|
+
$watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
|
|
68
|
+
} & Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
69
|
+
menuData?: MenuItem[] | undefined;
|
|
70
|
+
isSubMenu?: boolean | undefined;
|
|
71
|
+
}>, {
|
|
72
|
+
menuData: () => never[];
|
|
73
|
+
isSubMenu: boolean;
|
|
74
|
+
}>>> & {
|
|
75
|
+
onHide?: ((...args: any[]) => any) | undefined;
|
|
76
|
+
onShow?: ((...args: any[]) => any) | undefined;
|
|
77
|
+
} & import("vue").ShallowUnwrapRef<{
|
|
78
|
+
hide: () => void;
|
|
79
|
+
show: (e: MouseEvent) => void;
|
|
80
|
+
}> & {} & import("vue").ComponentCustomProperties;
|
|
81
|
+
__isFragment?: undefined;
|
|
82
|
+
__isTeleport?: undefined;
|
|
83
|
+
__isSuspense?: undefined;
|
|
84
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
85
|
+
menuData?: MenuItem[] | undefined;
|
|
86
|
+
isSubMenu?: boolean | undefined;
|
|
87
|
+
}>, {
|
|
88
|
+
menuData: () => never[];
|
|
89
|
+
isSubMenu: boolean;
|
|
90
|
+
}>>> & {
|
|
91
|
+
onHide?: ((...args: any[]) => any) | undefined;
|
|
92
|
+
onShow?: ((...args: any[]) => any) | undefined;
|
|
93
|
+
}, {
|
|
94
|
+
hide: () => void;
|
|
95
|
+
show: (e: MouseEvent) => void;
|
|
96
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("hide" | "show")[], "hide" | "show", {
|
|
97
|
+
menuData: MenuItem[];
|
|
98
|
+
isSubMenu: boolean;
|
|
99
|
+
}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
100
|
+
$slots: {};
|
|
101
|
+
});
|
|
102
|
+
export default _default;
|
|
103
|
+
declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
104
|
+
declare type __VLS_TypePropsToRuntimeProps<T> = {
|
|
105
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
106
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
107
|
+
} : {
|
|
108
|
+
type: import('vue').PropType<T[K]>;
|
|
109
|
+
required: true;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
declare type __VLS_WithDefaults<P, D> = {
|
|
113
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? P[K] & {
|
|
114
|
+
default: D[K];
|
|
115
|
+
} : P[K];
|
|
116
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component, PropType, toRaw } from 'vue';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<{
|
|
3
|
+
icon: {
|
|
4
|
+
type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
|
|
5
|
+
};
|
|
6
|
+
}, {
|
|
7
|
+
toRaw: typeof toRaw;
|
|
8
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
icon: {
|
|
10
|
+
type: PropType<string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>>;
|
|
11
|
+
};
|
|
12
|
+
}>>, {}>;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{
|
|
2
|
+
width: NumberConstructor;
|
|
3
|
+
height: NumberConstructor;
|
|
4
|
+
zoom: {
|
|
5
|
+
type: NumberConstructor;
|
|
6
|
+
default: number;
|
|
7
|
+
};
|
|
8
|
+
}, {
|
|
9
|
+
container: import("vue").Ref<HTMLDivElement | undefined>;
|
|
10
|
+
el: import("vue").Ref<HTMLDivElement | undefined>;
|
|
11
|
+
style: import("vue").ComputedRef<string>;
|
|
12
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
13
|
+
width: NumberConstructor;
|
|
14
|
+
height: NumberConstructor;
|
|
15
|
+
zoom: {
|
|
16
|
+
type: NumberConstructor;
|
|
17
|
+
default: number;
|
|
18
|
+
};
|
|
19
|
+
}>>, {
|
|
20
|
+
zoom: number;
|
|
21
|
+
}>;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import type { MenuButton, MenuComponent } from '../type';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
new (...args: any[]): {
|
|
5
|
+
$: import("vue").ComponentInternalInstance;
|
|
6
|
+
$data: {};
|
|
7
|
+
$props: Partial<{
|
|
8
|
+
data: string | MenuButton | MenuComponent;
|
|
9
|
+
eventType: "click" | "mousedown" | "mouseup";
|
|
10
|
+
}> & Omit<Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
data: {
|
|
12
|
+
type: PropType<string | MenuButton | MenuComponent>;
|
|
13
|
+
require: boolean;
|
|
14
|
+
default: () => {
|
|
15
|
+
type: string;
|
|
16
|
+
display: boolean;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
eventType: {
|
|
20
|
+
type: PropType<"click" | "mousedown" | "mouseup">;
|
|
21
|
+
default: string;
|
|
22
|
+
};
|
|
23
|
+
}>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "data" | "eventType">;
|
|
24
|
+
$attrs: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
};
|
|
27
|
+
$refs: {
|
|
28
|
+
[x: string]: unknown;
|
|
29
|
+
};
|
|
30
|
+
$slots: Readonly<{
|
|
31
|
+
[name: string]: import("vue").Slot | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
$root: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
34
|
+
$parent: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null;
|
|
35
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
36
|
+
$el: any;
|
|
37
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
38
|
+
data: {
|
|
39
|
+
type: PropType<string | MenuButton | MenuComponent>;
|
|
40
|
+
require: boolean;
|
|
41
|
+
default: () => {
|
|
42
|
+
type: string;
|
|
43
|
+
display: boolean;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
eventType: {
|
|
47
|
+
type: PropType<"click" | "mousedown" | "mouseup">;
|
|
48
|
+
default: string;
|
|
49
|
+
};
|
|
50
|
+
}>>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
|
51
|
+
data: string | MenuButton | MenuComponent;
|
|
52
|
+
eventType: "click" | "mousedown" | "mouseup";
|
|
53
|
+
}> & {
|
|
54
|
+
beforeCreate?: ((() => void) | (() => void)[]) | undefined;
|
|
55
|
+
created?: ((() => void) | (() => void)[]) | undefined;
|
|
56
|
+
beforeMount?: ((() => void) | (() => void)[]) | undefined;
|
|
57
|
+
mounted?: ((() => void) | (() => void)[]) | undefined;
|
|
58
|
+
beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
|
|
59
|
+
updated?: ((() => void) | (() => void)[]) | undefined;
|
|
60
|
+
activated?: ((() => void) | (() => void)[]) | undefined;
|
|
61
|
+
deactivated?: ((() => void) | (() => void)[]) | undefined;
|
|
62
|
+
beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
|
|
63
|
+
beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
|
|
64
|
+
destroyed?: ((() => void) | (() => void)[]) | undefined;
|
|
65
|
+
unmounted?: ((() => void) | (() => void)[]) | undefined;
|
|
66
|
+
renderTracked?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
|
|
67
|
+
renderTriggered?: (((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[]) | undefined;
|
|
68
|
+
errorCaptured?: (((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void)[]) | undefined;
|
|
69
|
+
};
|
|
70
|
+
$forceUpdate: () => void;
|
|
71
|
+
$nextTick: typeof import("vue").nextTick;
|
|
72
|
+
$watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
|
|
73
|
+
} & Readonly<import("vue").ExtractPropTypes<{
|
|
74
|
+
data: {
|
|
75
|
+
type: PropType<string | MenuButton | MenuComponent>;
|
|
76
|
+
require: boolean;
|
|
77
|
+
default: () => {
|
|
78
|
+
type: string;
|
|
79
|
+
display: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
eventType: {
|
|
83
|
+
type: PropType<"click" | "mousedown" | "mouseup">;
|
|
84
|
+
default: string;
|
|
85
|
+
};
|
|
86
|
+
}>> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties;
|
|
87
|
+
__isFragment?: undefined;
|
|
88
|
+
__isTeleport?: undefined;
|
|
89
|
+
__isSuspense?: undefined;
|
|
90
|
+
} & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
|
|
91
|
+
data: {
|
|
92
|
+
type: PropType<string | MenuButton | MenuComponent>;
|
|
93
|
+
require: boolean;
|
|
94
|
+
default: () => {
|
|
95
|
+
type: string;
|
|
96
|
+
display: boolean;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
eventType: {
|
|
100
|
+
type: PropType<"click" | "mousedown" | "mouseup">;
|
|
101
|
+
default: string;
|
|
102
|
+
};
|
|
103
|
+
}>>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
|
104
|
+
data: string | MenuButton | MenuComponent;
|
|
105
|
+
eventType: "click" | "mousedown" | "mouseup";
|
|
106
|
+
}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
|
107
|
+
$slots: {};
|
|
108
|
+
});
|
|
109
|
+
export default _default;
|