@tmagic/editor 1.0.0-rc.3 → 1.0.0-rc.4

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.
Files changed (58) hide show
  1. package/coverage/clover.xml +361 -324
  2. package/coverage/coverage-final.json +7 -7
  3. package/coverage/lcov-report/index.html +39 -39
  4. package/coverage/lcov-report/src/Editor.vue.html +1 -1
  5. package/coverage/lcov-report/src/components/ContentMenu.vue.html +11 -11
  6. package/coverage/lcov-report/src/components/Icon.vue.html +2 -2
  7. package/coverage/lcov-report/src/components/ScrollViewer.vue.html +1 -1
  8. package/coverage/lcov-report/src/components/ToolButton.vue.html +25 -25
  9. package/coverage/lcov-report/src/components/index.html +5 -5
  10. package/coverage/lcov-report/src/index.html +1 -1
  11. package/coverage/lcov-report/src/layouts/AddPageBox.vue.html +1 -1
  12. package/coverage/lcov-report/src/layouts/Framework.vue.html +1 -1
  13. package/coverage/lcov-report/src/layouts/NavMenu.vue.html +1 -1
  14. package/coverage/lcov-report/src/layouts/PropsPanel.vue.html +1 -1
  15. package/coverage/lcov-report/src/layouts/Resizer.vue.html +1 -1
  16. package/coverage/lcov-report/src/layouts/index.html +1 -1
  17. package/coverage/lcov-report/src/layouts/sidebar/ComponentListPanel.vue.html +1 -1
  18. package/coverage/lcov-report/src/layouts/sidebar/LayerMenu.vue.html +17 -17
  19. package/coverage/lcov-report/src/layouts/sidebar/LayerPanel.vue.html +1 -1
  20. package/coverage/lcov-report/src/layouts/sidebar/Sidebar.vue.html +1 -1
  21. package/coverage/lcov-report/src/layouts/sidebar/TabPane.vue.html +2 -2
  22. package/coverage/lcov-report/src/layouts/sidebar/index.html +19 -19
  23. package/coverage/lcov-report/src/layouts/workspace/PageBar.vue.html +1 -1
  24. package/coverage/lcov-report/src/layouts/workspace/Stage.vue.html +1 -1
  25. package/coverage/lcov-report/src/layouts/workspace/ViewerMenu.vue.html +69 -33
  26. package/coverage/lcov-report/src/layouts/workspace/Workspace.vue.html +79 -34
  27. package/coverage/lcov-report/src/layouts/workspace/index.html +28 -28
  28. package/coverage/lcov-report/src/services/BaseService.ts.html +2 -2
  29. package/coverage/lcov-report/src/services/componentList.ts.html +1 -1
  30. package/coverage/lcov-report/src/services/editor.ts.html +100 -10
  31. package/coverage/lcov-report/src/services/events.ts.html +1 -1
  32. package/coverage/lcov-report/src/services/history.ts.html +1 -1
  33. package/coverage/lcov-report/src/services/index.html +15 -15
  34. package/coverage/lcov-report/src/services/props.ts.html +1 -1
  35. package/coverage/lcov-report/src/services/ui.ts.html +1 -1
  36. package/coverage/lcov-report/src/type.ts.html +1 -1
  37. package/coverage/lcov-report/src/utils/compose.ts.html +1 -1
  38. package/coverage/lcov-report/src/utils/config.ts.html +1 -1
  39. package/coverage/lcov-report/src/utils/editor.ts.html +1 -1
  40. package/coverage/lcov-report/src/utils/index.html +1 -1
  41. package/coverage/lcov-report/src/utils/index.ts.html +1 -1
  42. package/coverage/lcov-report/src/utils/logger.ts.html +1 -1
  43. package/coverage/lcov-report/src/utils/props.ts.html +1 -1
  44. package/coverage/lcov-report/src/utils/scroll-viewer.ts.html +1 -1
  45. package/coverage/lcov-report/src/utils/undo-redo.ts.html +1 -1
  46. package/coverage/lcov.info +782 -683
  47. package/dist/tmagic-editor.es.js +75 -32
  48. package/dist/tmagic-editor.es.js.map +1 -1
  49. package/dist/tmagic-editor.umd.js +74 -31
  50. package/dist/tmagic-editor.umd.js.map +1 -1
  51. package/dist/types/src/services/BaseService.d.ts +1 -1
  52. package/package.json +7 -7
  53. package/src/components/ContentMenu.vue +1 -1
  54. package/src/layouts/sidebar/TabPane.vue +1 -1
  55. package/src/layouts/workspace/ViewerMenu.vue +14 -2
  56. package/src/layouts/workspace/Workspace.vue +38 -23
  57. package/src/services/BaseService.ts +1 -1
  58. package/src/services/editor.ts +31 -1
@@ -27,7 +27,7 @@ import { EventEmitter } from 'events';
27
27
  * editorService.afterAdd();
28
28
  * }
29
29
  *
30
- * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after最后一个参数则是原方法的return值;
30
+ * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after第一个参数则是原方法的return值;
31
31
  * 如需终止后续方法调用可以return new Error();
32
32
  *
33
33
  * 方法2:
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0-rc.3",
2
+ "version": "1.0.0-rc.4",
3
3
  "name": "@tmagic/editor",
4
4
  "sideEffects": [
5
5
  "dist/*",
@@ -45,11 +45,11 @@
45
45
  "dependencies": {
46
46
  "@babel/core": "^7.18.0",
47
47
  "@element-plus/icons": "0.0.11",
48
- "@tmagic/core": "^1.0.0-rc.3",
49
- "@tmagic/form": "^1.0.0-rc.3",
50
- "@tmagic/schema": "^1.0.0-rc.3",
51
- "@tmagic/stage": "^1.0.0-rc.3",
52
- "@tmagic/utils": "^1.0.0-rc.3",
48
+ "@tmagic/core": "^1.0.0-rc.4",
49
+ "@tmagic/form": "^1.0.0-rc.4",
50
+ "@tmagic/schema": "^1.0.0-rc.4",
51
+ "@tmagic/stage": "^1.0.0-rc.4",
52
+ "@tmagic/utils": "^1.0.0-rc.4",
53
53
  "buffer": "^6.0.3",
54
54
  "color": "^3.1.3",
55
55
  "element-plus": "^2.2.0",
@@ -88,5 +88,5 @@
88
88
  "vite-plugin-dts": "^0.9.6",
89
89
  "vue-tsc": "^0.0.24"
90
90
  },
91
- "gitHead": "d9f6ca25a0a6efba35d183e643a306e164b74af7"
91
+ "gitHead": "28d5ad4573a27fa240f5e7d0902d3368e8d936b6"
92
92
  }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div v-if="menuData.length" v-show="visible" class="magic-editor-content-menu" ref="menu" :style="menuStyle">
2
+ <div v-if="menuData.length && visible" class="magic-editor-content-menu" ref="menu" :style="menuStyle">
3
3
  <div>
4
4
  <tool-button
5
5
  v-for="(item, index) in menuData"
@@ -30,7 +30,7 @@ export default defineComponent({
30
30
 
31
31
  props: {
32
32
  data: {
33
- type: Object as PropType<SideItem>,
33
+ type: [Object, String] as PropType<SideItem>,
34
34
  },
35
35
  },
36
36
 
@@ -69,8 +69,20 @@ export default defineComponent({
69
69
  text: '粘贴',
70
70
  display: () => canPaste.value,
71
71
  handler: () => {
72
- const top = menu.value?.$el.offsetTop || 0;
73
- const left = menu.value?.$el.offsetLeft || 0;
72
+ const stage = editorService?.get<StageCore>('stage');
73
+
74
+ const rect = menu.value?.$el.getBoundingClientRect();
75
+ const parentRect = stage?.container?.getBoundingClientRect();
76
+ let left = (rect?.left || 0) - (parentRect?.left || 0);
77
+ let top = (rect?.top || 0) - (parentRect?.top || 0);
78
+
79
+ if (node.value?.items && stage) {
80
+ const parentEl = stage.renderer.contentWindow?.document.getElementById(`${node.value.id}`);
81
+ const parentElRect = parentEl?.getBoundingClientRect();
82
+ left = left - (parentElRect?.left || 0);
83
+ top = top - (parentElRect?.top || 0);
84
+ }
85
+
74
86
  editorService?.paste({ left, top });
75
87
  },
76
88
  },
@@ -82,10 +82,6 @@ export default defineComponent({
82
82
  const ctrl = isMac ? 'meta' : 'ctrl';
83
83
 
84
84
  keycon
85
- .keydown((e) => {
86
- console.log(e);
87
- e.inputEvent.preventDefault();
88
- })
89
85
  .keyup('delete', (e) => {
90
86
  e.inputEvent.preventDefault();
91
87
  if (!node.value || isPage(node.value)) return;
@@ -96,63 +92,82 @@ export default defineComponent({
96
92
  if (!node.value || isPage(node.value)) return;
97
93
  services?.editorService.remove(node.value);
98
94
  })
99
- .keydown([ctrl, 'c'], () => {
95
+ .keydown([ctrl, 'c'], (e) => {
96
+ e.inputEvent.preventDefault();
100
97
  node.value && services?.editorService.copy(node.value);
101
98
  })
102
- .keydown([ctrl, 'v'], () => {
99
+ .keydown([ctrl, 'v'], (e) => {
100
+ e.inputEvent.preventDefault();
103
101
  node.value && services?.editorService.paste();
104
102
  })
105
- .keydown([ctrl, 'x'], () => {
103
+ .keydown([ctrl, 'x'], (e) => {
104
+ e.inputEvent.preventDefault();
106
105
  if (!node.value || isPage(node.value)) return;
107
106
  services?.editorService.copy(node.value);
108
107
  services?.editorService.remove(node.value);
109
108
  })
110
- .keydown([ctrl, 'z'], () => {
109
+ .keydown([ctrl, 'z'], (e) => {
110
+ e.inputEvent.preventDefault();
111
111
  services?.editorService.undo();
112
112
  })
113
- .keydown([ctrl, 'shift', 'z'], () => {
113
+ .keydown([ctrl, 'shift', 'z'], (e) => {
114
+ e.inputEvent.preventDefault();
114
115
  services?.editorService.redo();
115
116
  })
116
- .keydown('up', () => {
117
+ .keydown('up', (e) => {
118
+ e.inputEvent.preventDefault();
117
119
  services?.editorService.move(0, -1);
118
120
  })
119
- .keydown('down', () => {
121
+ .keydown('down', (e) => {
122
+ e.inputEvent.preventDefault();
120
123
  services?.editorService.move(0, 1);
121
124
  })
122
- .keydown('left', () => {
125
+ .keydown('left', (e) => {
126
+ e.inputEvent.preventDefault();
123
127
  services?.editorService.move(-1, 0);
124
128
  })
125
- .keydown('right', () => {
129
+ .keydown('right', (e) => {
130
+ e.inputEvent.preventDefault();
126
131
  services?.editorService.move(1, 0);
127
132
  })
128
- .keydown([ctrl, 'up'], () => {
133
+ .keydown([ctrl, 'up'], (e) => {
134
+ e.inputEvent.preventDefault();
129
135
  services?.editorService.move(0, -10);
130
136
  })
131
- .keydown([ctrl, 'down'], () => {
137
+ .keydown([ctrl, 'down'], (e) => {
138
+ e.inputEvent.preventDefault();
132
139
  services?.editorService.move(0, 10);
133
140
  })
134
- .keydown([ctrl, 'left'], () => {
141
+ .keydown([ctrl, 'left'], (e) => {
142
+ e.inputEvent.preventDefault();
135
143
  services?.editorService.move(-10, 0);
136
144
  })
137
- .keydown([ctrl, 'right'], () => {
145
+ .keydown([ctrl, 'right'], (e) => {
146
+ e.inputEvent.preventDefault();
138
147
  services?.editorService.move(10, 0);
139
148
  })
140
- .keydown('tab', () => {
149
+ .keydown('tab', (e) => {
150
+ e.inputEvent.preventDefault();
141
151
  services?.editorService.selectNextNode();
142
152
  })
143
- .keydown([ctrl, 'tab'], () => {
153
+ .keydown([ctrl, 'tab'], (e) => {
154
+ e.inputEvent.preventDefault();
144
155
  services?.editorService.selectNextPage();
145
156
  })
146
- .keydown([ctrl, '='], () => {
157
+ .keydown([ctrl, '='], (e) => {
158
+ e.inputEvent.preventDefault();
147
159
  services?.uiService.zoom(0.1);
148
160
  })
149
- .keydown([ctrl, 'numpadplus'], () => {
161
+ .keydown([ctrl, 'numpadplus'], (e) => {
162
+ e.inputEvent.preventDefault();
150
163
  services?.uiService.zoom(0.1);
151
164
  })
152
- .keydown([ctrl, '-'], () => {
165
+ .keydown([ctrl, '-'], (e) => {
166
+ e.inputEvent.preventDefault();
153
167
  services?.uiService.zoom(-0.1);
154
168
  })
155
- .keydown([ctrl, 'numpad-'], () => {
169
+ .keydown([ctrl, 'numpad-'], (e) => {
170
+ e.inputEvent.preventDefault();
156
171
  services?.uiService.zoom(-0.1);
157
172
  });
158
173
  });
@@ -91,7 +91,7 @@ const doAction = async (
91
91
  * editorService.afterAdd();
92
92
  * }
93
93
  *
94
- * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after最后一个参数则是原方法的return值;
94
+ * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after第一个参数则是原方法的return值;
95
95
  * 如需终止后续方法调用可以return new Error();
96
96
  *
97
97
  * 方法2:
@@ -33,6 +33,7 @@ import {
33
33
  change2Fixed,
34
34
  COPY_STORAGE_KEY,
35
35
  Fixed2Other,
36
+ generatePageNameByApp,
36
37
  getNodeIndex,
37
38
  initPosition,
38
39
  isFixed,
@@ -194,6 +195,20 @@ class Editor extends BaseService {
194
195
  historyService.empty();
195
196
  }
196
197
 
198
+ if (node?.id) {
199
+ this.get<StageCore>('stage')
200
+ ?.renderer.runtime?.getApp?.()
201
+ ?.emit(
202
+ 'editor:select',
203
+ {
204
+ node,
205
+ page,
206
+ parent,
207
+ },
208
+ getNodePath(node.id, this.get<MApp>('root').items),
209
+ );
210
+ }
211
+
197
212
  this.emit('select', node);
198
213
 
199
214
  return node!;
@@ -488,6 +503,10 @@ class Editor extends BaseService {
488
503
  };
489
504
  }
490
505
 
506
+ if (isPage(config)) {
507
+ config.name = generatePageNameByApp(this.get('root'));
508
+ }
509
+
491
510
  return await this.add(config);
492
511
  }
493
512
 
@@ -504,7 +523,18 @@ class Editor extends BaseService {
504
523
  return;
505
524
  }
506
525
 
507
- if (parent.style?.width && node.style?.width) {
526
+ if (!node.style) return;
527
+
528
+ const stage = this.get<StageCore>('stage');
529
+ const doc = stage?.renderer.contentWindow?.document;
530
+
531
+ if (doc) {
532
+ const parentEl = doc.getElementById(`${parent.id}`);
533
+ const el = doc.getElementById(`${node.id}`);
534
+ if (parentEl && el) {
535
+ node.style.left = (parentEl.clientWidth - el.clientWidth) / 2;
536
+ }
537
+ } else if (parent.style && isNumber(parent.style?.width) && isNumber(node.style?.width)) {
508
538
  node.style.left = (parent.style.width - node.style.width) / 2;
509
539
  }
510
540