@tmagic/editor 1.1.0-beta.4 → 1.1.0-beta.5
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/tmagic-editor.es.js +46 -21
- package/dist/tmagic-editor.es.js.map +1 -1
- package/dist/tmagic-editor.umd.js +45 -21
- package/dist/tmagic-editor.umd.js.map +1 -1
- package/dist/types/src/services/props.d.ts +19 -1
- package/dist/types/src/utils/props.d.ts +0 -20
- package/package.json +7 -7
- package/src/layouts/sidebar/LayerPanel.vue +11 -2
- package/src/services/editor.ts +4 -3
- package/src/services/props.ts +45 -6
- package/src/utils/props.ts +0 -22
|
@@ -35,7 +35,25 @@ declare class Props extends BaseService {
|
|
|
35
35
|
* 将组件与组件的子元素配置中的id都设置成一个新的ID
|
|
36
36
|
* @param {Object} config 组件配置
|
|
37
37
|
*/
|
|
38
|
-
setNewItemId(config: MNode, parent?: MPage): Promise<
|
|
38
|
+
setNewItemId(config: MNode, parent?: MPage): Promise<MNode>;
|
|
39
|
+
/**
|
|
40
|
+
* 获取默认属性配置
|
|
41
|
+
* @param type 组件类型
|
|
42
|
+
* @returns Object
|
|
43
|
+
*/
|
|
44
|
+
getDefaultPropsValue(type: string): Promise<{
|
|
45
|
+
type: string;
|
|
46
|
+
layout: string;
|
|
47
|
+
style: {};
|
|
48
|
+
name: string;
|
|
49
|
+
items: never[];
|
|
50
|
+
} | {
|
|
51
|
+
type: string;
|
|
52
|
+
style: {};
|
|
53
|
+
name: string;
|
|
54
|
+
layout?: undefined;
|
|
55
|
+
items?: undefined;
|
|
56
|
+
}>;
|
|
39
57
|
}
|
|
40
58
|
export declare type PropsService = Props;
|
|
41
59
|
declare const _default: Props;
|
|
@@ -36,23 +36,3 @@ export declare const fillConfig: (config?: FormConfig) => {
|
|
|
36
36
|
})[];
|
|
37
37
|
}[];
|
|
38
38
|
export declare const DEFAULT_CONFIG: FormConfig;
|
|
39
|
-
/**
|
|
40
|
-
* 获取默认属性配置
|
|
41
|
-
* @param type 组件类型
|
|
42
|
-
* @returns Object
|
|
43
|
-
*/
|
|
44
|
-
export declare const getDefaultPropsValue: (type: string, id: string) => {
|
|
45
|
-
type: string;
|
|
46
|
-
id: string;
|
|
47
|
-
layout: string;
|
|
48
|
-
style: {};
|
|
49
|
-
name: string;
|
|
50
|
-
items: never[];
|
|
51
|
-
} | {
|
|
52
|
-
type: string;
|
|
53
|
-
id: string;
|
|
54
|
-
style: {};
|
|
55
|
-
name: string;
|
|
56
|
-
layout?: undefined;
|
|
57
|
-
items?: undefined;
|
|
58
|
-
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.1.0-beta.
|
|
2
|
+
"version": "1.1.0-beta.5",
|
|
3
3
|
"name": "@tmagic/editor",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"dist/*",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@babel/core": "^7.18.0",
|
|
45
45
|
"@element-plus/icons-vue": "^2.0.6",
|
|
46
|
-
"@tmagic/core": "1.1.0-beta.
|
|
47
|
-
"@tmagic/form": "1.1.0-beta.
|
|
48
|
-
"@tmagic/schema": "1.1.0-beta.
|
|
49
|
-
"@tmagic/stage": "1.1.0-beta.
|
|
50
|
-
"@tmagic/utils": "1.1.0-beta.
|
|
46
|
+
"@tmagic/core": "1.1.0-beta.5",
|
|
47
|
+
"@tmagic/form": "1.1.0-beta.5",
|
|
48
|
+
"@tmagic/schema": "1.1.0-beta.5",
|
|
49
|
+
"@tmagic/stage": "1.1.0-beta.5",
|
|
50
|
+
"@tmagic/utils": "1.1.0-beta.5",
|
|
51
51
|
"buffer": "^6.0.3",
|
|
52
52
|
"color": "^3.1.3",
|
|
53
53
|
"element-plus": "^2.2.6",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"vue": "^3.2.0"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@tmagic/form": "1.1.0-beta.
|
|
63
|
+
"@tmagic/form": "1.1.0-beta.5",
|
|
64
64
|
"element-plus": "^2.2.6",
|
|
65
65
|
"monaco-editor": "^0.32.1",
|
|
66
66
|
"vue": "^3.2.0"
|
|
@@ -61,11 +61,12 @@ import type { ElTree } from 'element-plus';
|
|
|
61
61
|
import { throttle } from 'lodash-es';
|
|
62
62
|
|
|
63
63
|
import type { MNode, MPage } from '@tmagic/schema';
|
|
64
|
-
import { NodeType } from '@tmagic/schema';
|
|
64
|
+
import { MContainer, NodeType } from '@tmagic/schema';
|
|
65
65
|
import StageCore from '@tmagic/stage';
|
|
66
66
|
|
|
67
67
|
import type { EditorService } from '@editor/services/editor';
|
|
68
68
|
import type { Services } from '@editor/type';
|
|
69
|
+
import { Layout } from '@editor/type';
|
|
69
70
|
|
|
70
71
|
import LayerMenu from './LayerMenu.vue';
|
|
71
72
|
|
|
@@ -104,8 +105,16 @@ const useDrop = (tree: Ref<InstanceType<typeof ElTree> | undefined>, editorServi
|
|
|
104
105
|
return false;
|
|
105
106
|
},
|
|
106
107
|
|
|
107
|
-
handleDragEnd() {
|
|
108
|
+
async handleDragEnd(e: any) {
|
|
108
109
|
if (!tree.value) return;
|
|
110
|
+
const { data: node } = e;
|
|
111
|
+
const parent = editorService?.getParentById(node.id, false) as MContainer;
|
|
112
|
+
const layout = await editorService?.getLayout(parent);
|
|
113
|
+
node.style.position = layout;
|
|
114
|
+
if (layout === Layout.RELATIVE) {
|
|
115
|
+
node.style.top = 0;
|
|
116
|
+
node.style.left = 0;
|
|
117
|
+
}
|
|
109
118
|
const { data } = tree.value;
|
|
110
119
|
const [page] = data as [MPage];
|
|
111
120
|
editorService?.update(page);
|
package/src/services/editor.ts
CHANGED
|
@@ -321,10 +321,11 @@ class Editor extends BaseService {
|
|
|
321
321
|
this.pushHistoryState();
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
stage?.select(newNode.id);
|
|
325
|
-
|
|
326
324
|
if (isPage) {
|
|
327
325
|
this.state.pageLength += 1;
|
|
326
|
+
} else {
|
|
327
|
+
// 新增页面,这个时候页面还有渲染出来,此时select会出错,在runtime-ready的时候回去select
|
|
328
|
+
stage?.select(newNode.id);
|
|
328
329
|
}
|
|
329
330
|
|
|
330
331
|
this.emit('add', newNode);
|
|
@@ -506,7 +507,7 @@ class Editor extends BaseService {
|
|
|
506
507
|
return;
|
|
507
508
|
}
|
|
508
509
|
|
|
509
|
-
await propsService.setNewItemId(config, this.get('root'));
|
|
510
|
+
config = await propsService.setNewItemId(config, this.get('root'));
|
|
510
511
|
if (config.style) {
|
|
511
512
|
config.style = {
|
|
512
513
|
...config.style,
|
package/src/services/props.ts
CHANGED
|
@@ -25,7 +25,7 @@ import { NodeType } from '@tmagic/schema';
|
|
|
25
25
|
import { isPop, toLine } from '@tmagic/utils';
|
|
26
26
|
|
|
27
27
|
import type { PropsState } from '@editor/type';
|
|
28
|
-
import { DEFAULT_CONFIG, fillConfig
|
|
28
|
+
import { DEFAULT_CONFIG, fillConfig } from '@editor/utils/props';
|
|
29
29
|
|
|
30
30
|
import BaseService from './BaseService';
|
|
31
31
|
|
|
@@ -36,7 +36,15 @@ class Props extends BaseService {
|
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
constructor() {
|
|
39
|
-
super([
|
|
39
|
+
super([
|
|
40
|
+
'setPropsConfig',
|
|
41
|
+
'getPropsConfig',
|
|
42
|
+
'setPropsValue',
|
|
43
|
+
'getPropsValue',
|
|
44
|
+
'createId',
|
|
45
|
+
'setNewItemId',
|
|
46
|
+
'getDefaultPropsValue',
|
|
47
|
+
]);
|
|
40
48
|
}
|
|
41
49
|
|
|
42
50
|
public setPropsConfigs(configs: Record<string, FormConfig>) {
|
|
@@ -99,12 +107,20 @@ class Props extends BaseService {
|
|
|
99
107
|
return value;
|
|
100
108
|
}
|
|
101
109
|
|
|
102
|
-
const data =
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
const [id, defaultPropsValue, data] = await Promise.all([
|
|
111
|
+
this.createId(type),
|
|
112
|
+
this.getDefaultPropsValue(type),
|
|
113
|
+
this.setNewItemId(
|
|
114
|
+
cloneDeep({
|
|
115
|
+
type,
|
|
116
|
+
...defaultValue,
|
|
117
|
+
} as any),
|
|
118
|
+
),
|
|
119
|
+
]);
|
|
105
120
|
|
|
106
121
|
return {
|
|
107
|
-
|
|
122
|
+
id,
|
|
123
|
+
...defaultPropsValue,
|
|
108
124
|
...mergeWith(cloneDeep(this.state.propsValueMap[type] || {}), data),
|
|
109
125
|
};
|
|
110
126
|
}
|
|
@@ -133,6 +149,29 @@ class Props extends BaseService {
|
|
|
133
149
|
await this.setNewItemId(item, config as MPage);
|
|
134
150
|
}
|
|
135
151
|
}
|
|
152
|
+
|
|
153
|
+
return config;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* 获取默认属性配置
|
|
158
|
+
* @param type 组件类型
|
|
159
|
+
* @returns Object
|
|
160
|
+
*/
|
|
161
|
+
public async getDefaultPropsValue(type: string) {
|
|
162
|
+
return ['page', 'container'].includes(type)
|
|
163
|
+
? {
|
|
164
|
+
type,
|
|
165
|
+
layout: 'absolute',
|
|
166
|
+
style: {},
|
|
167
|
+
name: type,
|
|
168
|
+
items: [],
|
|
169
|
+
}
|
|
170
|
+
: {
|
|
171
|
+
type,
|
|
172
|
+
style: {},
|
|
173
|
+
name: type,
|
|
174
|
+
};
|
|
136
175
|
}
|
|
137
176
|
}
|
|
138
177
|
|
package/src/utils/props.ts
CHANGED
|
@@ -237,25 +237,3 @@ export const fillConfig = (config: FormConfig = []) => [
|
|
|
237
237
|
|
|
238
238
|
// 默认组件属性表单配置
|
|
239
239
|
export const DEFAULT_CONFIG: FormConfig = fillConfig([]);
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* 获取默认属性配置
|
|
243
|
-
* @param type 组件类型
|
|
244
|
-
* @returns Object
|
|
245
|
-
*/
|
|
246
|
-
export const getDefaultPropsValue = (type: string, id: string) =>
|
|
247
|
-
['page', 'container'].includes(type)
|
|
248
|
-
? {
|
|
249
|
-
type,
|
|
250
|
-
id,
|
|
251
|
-
layout: 'absolute',
|
|
252
|
-
style: {},
|
|
253
|
-
name: type,
|
|
254
|
-
items: [],
|
|
255
|
-
}
|
|
256
|
-
: {
|
|
257
|
-
type,
|
|
258
|
-
id,
|
|
259
|
-
style: {},
|
|
260
|
-
name: type,
|
|
261
|
-
};
|