@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.
@@ -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<void>;
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.4",
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.4",
47
- "@tmagic/form": "1.1.0-beta.4",
48
- "@tmagic/schema": "1.1.0-beta.4",
49
- "@tmagic/stage": "1.1.0-beta.4",
50
- "@tmagic/utils": "1.1.0-beta.4",
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.4",
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);
@@ -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,
@@ -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, getDefaultPropsValue } from '@editor/utils/props';
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(['setPropsConfig', 'getPropsConfig', 'setPropsValue', 'getPropsValue', 'createId', 'setNewItemId']);
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 = cloneDeep(defaultValue as any);
103
-
104
- await this.setNewItemId(data);
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
- ...getDefaultPropsValue(type, await this.createId(type)),
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
 
@@ -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
- };