@tmagic/editor 1.0.0-rc.1 → 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 (69) hide show
  1. package/coverage/clover.xml +476 -443
  2. package/coverage/coverage-final.json +10 -10
  3. package/coverage/lcov-report/index.html +55 -55
  4. package/coverage/lcov-report/src/Editor.vue.html +36 -9
  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 +14 -14
  11. package/coverage/lcov-report/src/layouts/AddPageBox.vue.html +1 -1
  12. package/coverage/lcov-report/src/layouts/Framework.vue.html +48 -9
  13. package/coverage/lcov-report/src/layouts/NavMenu.vue.html +1 -1
  14. package/coverage/lcov-report/src/layouts/PropsPanel.vue.html +2 -2
  15. package/coverage/lcov-report/src/layouts/Resizer.vue.html +1 -1
  16. package/coverage/lcov-report/src/layouts/index.html +15 -15
  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 +13 -4
  25. package/coverage/lcov-report/src/layouts/workspace/ViewerMenu.vue.html +69 -33
  26. package/coverage/lcov-report/src/layouts/workspace/Workspace.vue.html +73 -10
  27. package/coverage/lcov-report/src/layouts/workspace/index.html +32 -32
  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 +1203 -1065
  47. package/dist/style.css +3 -3
  48. package/dist/tmagic-editor.es.js +86 -1233
  49. package/dist/tmagic-editor.es.js.map +1 -1
  50. package/dist/tmagic-editor.umd.js +87 -1234
  51. package/dist/tmagic-editor.umd.js.map +1 -1
  52. package/dist/types/src/Editor.vue.d.ts +14 -0
  53. package/dist/types/src/layouts/Framework.vue.d.ts +15 -3
  54. package/dist/types/src/layouts/workspace/Workspace.vue.d.ts +5 -1
  55. package/dist/types/src/services/BaseService.d.ts +1 -1
  56. package/package.json +16 -8
  57. package/src/Editor.vue +10 -1
  58. package/src/components/ContentMenu.vue +1 -1
  59. package/src/layouts/CodeEditor.vue +1 -4
  60. package/src/layouts/Framework.vue +14 -1
  61. package/src/layouts/PropsPanel.vue +1 -1
  62. package/src/layouts/sidebar/TabPane.vue +1 -1
  63. package/src/layouts/workspace/Stage.vue +3 -0
  64. package/src/layouts/workspace/ViewerMenu.vue +14 -2
  65. package/src/layouts/workspace/Workspace.vue +21 -0
  66. package/src/services/BaseService.ts +1 -1
  67. package/src/services/editor.ts +31 -1
  68. package/src/theme/props-panel.scss +6 -4
  69. package/src/utils/polyfills.ts +5 -19
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">69.23% </span>
26
+ <span class="strong">41.66% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/52</span>
28
+ <span class='fraction'>25/60</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">22.35% </span>
33
+ <span class="strong">8.57% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>19/85</span>
35
+ <span class='fraction'>12/140</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">60% </span>
40
+ <span class="strong">16% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/25</span>
42
+ <span class='fraction'>4/25</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">68.08% </span>
47
+ <span class="strong">41.81% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>32/47</span>
49
+ <span class='fraction'>23/55</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -212,7 +212,19 @@
212
212
  <a name='L147'></a><a href='#L147'>147</a>
213
213
  <a name='L148'></a><a href='#L148'>148</a>
214
214
  <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
216
228
  <span class="cline-any cline-neutral">&nbsp;</span>
217
229
  <span class="cline-any cline-neutral">&nbsp;</span>
218
230
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -264,7 +276,7 @@
264
276
  <span class="cline-any cline-neutral">&nbsp;</span>
265
277
  <span class="cline-any cline-neutral">&nbsp;</span>
266
278
  <span class="cline-any cline-neutral">&nbsp;</span>
267
- <span class="cline-any cline-yes">2x</span>
279
+ <span class="cline-any cline-no">&nbsp;</span>
268
280
  <span class="cline-any cline-neutral">&nbsp;</span>
269
281
  <span class="cline-any cline-no">&nbsp;</span>
270
282
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -281,23 +293,35 @@
281
293
  <span class="cline-any cline-neutral">&nbsp;</span>
282
294
  <span class="cline-any cline-neutral">&nbsp;</span>
283
295
  <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-yes">2x</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
285
297
  <span class="cline-any cline-neutral">&nbsp;</span>
286
298
  <span class="cline-any cline-no">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-no">&nbsp;</span>
301
+ <span class="cline-any cline-no">&nbsp;</span>
302
+ <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-no">&nbsp;</span>
306
+ <span class="cline-any cline-no">&nbsp;</span>
307
+ <span class="cline-any cline-no">&nbsp;</span>
287
308
  <span class="cline-any cline-no">&nbsp;</span>
288
309
  <span class="cline-any cline-no">&nbsp;</span>
289
310
  <span class="cline-any cline-neutral">&nbsp;</span>
290
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-no">&nbsp;</span>
291
313
  <span class="cline-any cline-neutral">&nbsp;</span>
292
314
  <span class="cline-any cline-neutral">&nbsp;</span>
293
315
  <span class="cline-any cline-neutral">&nbsp;</span>
294
- <span class="cline-any cline-yes">2x</span>
295
316
  <span class="cline-any cline-neutral">&nbsp;</span>
296
317
  <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-no">&nbsp;</span>
297
319
  <span class="cline-any cline-neutral">&nbsp;</span>
298
320
  <span class="cline-any cline-neutral">&nbsp;</span>
299
321
  <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-yes">2x</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
301
325
  <span class="cline-any cline-neutral">&nbsp;</span>
302
326
  <span class="cline-any cline-no">&nbsp;</span>
303
327
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -306,7 +330,7 @@
306
330
  <span class="cline-any cline-neutral">&nbsp;</span>
307
331
  <span class="cline-any cline-neutral">&nbsp;</span>
308
332
  <span class="cline-any cline-neutral">&nbsp;</span>
309
- <span class="cline-any cline-yes">2x</span>
333
+ <span class="cline-any cline-no">&nbsp;</span>
310
334
  <span class="cline-any cline-neutral">&nbsp;</span>
311
335
  <span class="cline-any cline-no">&nbsp;</span>
312
336
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -314,7 +338,7 @@
314
338
  <span class="cline-any cline-neutral">&nbsp;</span>
315
339
  <span class="cline-any cline-neutral">&nbsp;</span>
316
340
  <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-yes">2x</span>
341
+ <span class="cline-any cline-no">&nbsp;</span>
318
342
  <span class="cline-any cline-neutral">&nbsp;</span>
319
343
  <span class="cline-any cline-no">&nbsp;</span>
320
344
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -322,7 +346,7 @@
322
346
  <span class="cline-any cline-neutral">&nbsp;</span>
323
347
  <span class="cline-any cline-neutral">&nbsp;</span>
324
348
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-yes">2x</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
326
350
  <span class="cline-any cline-neutral">&nbsp;</span>
327
351
  <span class="cline-any cline-no">&nbsp;</span>
328
352
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -330,13 +354,13 @@
330
354
  <span class="cline-any cline-neutral">&nbsp;</span>
331
355
  <span class="cline-any cline-neutral">&nbsp;</span>
332
356
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">2x</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
334
358
  <span class="cline-any cline-neutral">&nbsp;</span>
335
359
  <span class="cline-any cline-neutral">&nbsp;</span>
336
360
  <span class="cline-any cline-neutral">&nbsp;</span>
337
361
  <span class="cline-any cline-neutral">&nbsp;</span>
338
362
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">2x</span>
363
+ <span class="cline-any cline-no">&nbsp;</span>
340
364
  <span class="cline-any cline-neutral">&nbsp;</span>
341
365
  <span class="cline-any cline-no">&nbsp;</span>
342
366
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -386,9 +410,9 @@ export default defineComponent({
386
410
  const canPaste = ref(false);
387
411
  const canCenter = ref(false);
388
412
  &nbsp;
389
- const node = computed(() =&gt; editorService?.get('node'));
413
+ const node = computed(<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >e</span>ditorService?</span>.get('node'));
390
414
  const parent = computed(() =&gt; editorService?.get('parent'));
391
- const isPage = computed(() =&gt; node.value<span class="branch-1 cbranch-no" title="branch not covered" >?.type === N</span>odeType.PAGE);
415
+ const isPage = computed(<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >n</span>ode.</span>value?.type === NodeType.PAGE);
392
416
  &nbsp;
393
417
  onMounted(() =&gt; {
394
418
  const data = globalThis.localStorage.getItem(COPY_STORAGE_KEY);
@@ -413,7 +437,7 @@ export default defineComponent({
413
437
  {
414
438
  type: 'button',
415
439
  text: '水平居中',
416
- display: () =&gt; canCenter.value,
440
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >c</span>anCenter.</span>value,
417
441
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
418
442
  <span class="cstat-no" title="statement not covered" > node.</span>value &amp;&amp; editorService?.alignCenter(node.value);
419
443
  },
@@ -430,23 +454,35 @@ export default defineComponent({
430
454
  {
431
455
  type: 'button',
432
456
  text: '粘贴',
433
- display: () =&gt; canPaste.value,
457
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >c</span>anPaste.</span>value,
434
458
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
435
- const top = <span class="cstat-no" title="statement not covered" >menu.value?.$el.offsetTop || 0;</span>
436
- const left = <span class="cstat-no" title="statement not covered" >menu.value?.$el.offsetLeft || 0;</span>
459
+ const stage = <span class="cstat-no" title="statement not covered" >editorService?</span>.get&lt;StageCore&gt;('stage');
460
+ &nbsp;
461
+ const rect = <span class="cstat-no" title="statement not covered" >menu.value?.$</span>el.getBoundingClientRect();
462
+ const parentRect = <span class="cstat-no" title="statement not covered" >stage?.container?.g</span>etBoundingClientRect();
463
+ let left = <span class="cstat-no" title="statement not covered" >(r</span>ect?.left || 0) - (parentRect?.left || 0);
464
+ let top = <span class="cstat-no" title="statement not covered" >(r</span>ect?.top || 0) - (parentRect?.top || 0);
465
+ &nbsp;
466
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (node.value?.items &amp;&amp; stage) {</span>
467
+ const parentEl = <span class="cstat-no" title="statement not covered" >stage.renderer.contentWindow?.d</span>ocument.getElementById(`${node.value.id}`);
468
+ const parentElRect = <span class="cstat-no" title="statement not covered" >parentEl?</span>.getBoundingClientRect();
469
+ <span class="cstat-no" title="statement not covered" > left </span>= left - (parentElRect?.left || 0);
470
+ <span class="cstat-no" title="statement not covered" > top </span>= top - (parentElRect?.top || 0);
471
+ }
472
+ &nbsp;
437
473
  <span class="cstat-no" title="statement not covered" > editorService?</span>.paste({ left, top });
438
474
  },
439
475
  },
440
476
  {
441
477
  type: 'divider',
442
478
  direction: 'horizontal',
443
- display: () =&gt; !isPage.value,
479
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
444
480
  },
445
481
  {
446
482
  type: 'button',
447
483
  text: '上移一层',
448
484
  icon: markRaw(Top),
449
- display: () =&gt; !isPage.value,
485
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
450
486
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
451
487
  <span class="cstat-no" title="statement not covered" > editorService?</span>.moveLayer(1);
452
488
  },
@@ -455,7 +491,7 @@ export default defineComponent({
455
491
  type: 'button',
456
492
  text: '下移一层',
457
493
  icon: markRaw(Bottom),
458
- display: () =&gt; !isPage.value,
494
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
459
495
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
460
496
  <span class="cstat-no" title="statement not covered" > editorService?</span>.moveLayer(-1);
461
497
  },
@@ -463,7 +499,7 @@ export default defineComponent({
463
499
  {
464
500
  type: 'button',
465
501
  text: '置顶',
466
- display: () =&gt; !isPage.value,
502
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
467
503
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
468
504
  <span class="cstat-no" title="statement not covered" > editorService?</span>.moveLayer(LayerOffset.TOP);
469
505
  },
@@ -471,7 +507,7 @@ export default defineComponent({
471
507
  {
472
508
  type: 'button',
473
509
  text: '置底',
474
- display: () =&gt; !isPage.value,
510
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
475
511
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
476
512
  <span class="cstat-no" title="statement not covered" > editorService?</span>.moveLayer(LayerOffset.BOTTOM);
477
513
  },
@@ -479,13 +515,13 @@ export default defineComponent({
479
515
  {
480
516
  type: 'divider',
481
517
  direction: 'horizontal',
482
- display: () =&gt; !isPage.value,
518
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
483
519
  },
484
520
  {
485
521
  type: 'button',
486
522
  text: '删除',
487
523
  icon: Delete,
488
- display: () =&gt; !isPage.value,
524
+ display: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >!</span>i</span>sPage.value,
489
525
  handler: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
490
526
  <span class="cstat-no" title="statement not covered" > node.</span>value &amp;&amp; editorService?.remove(node.value);
491
527
  },
@@ -517,7 +553,7 @@ export default defineComponent({
517
553
  <div class='footer quiet pad2 space-top1 center small'>
518
554
  Code coverage generated by
519
555
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
520
- at Wed May 18 2022 17:42:38 GMT+0800 (China Standard Time)
556
+ at Tue May 31 2022 12:01:20 GMT+0800 (China Standard Time)
521
557
  </div>
522
558
  <script src="../../../prettify.js"></script>
523
559
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">29.68% </span>
26
+ <span class="strong">27.63% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>19/64</span>
28
+ <span class='fraction'>21/76</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">6.48% </span>
33
+ <span class="strong">7.4% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>7/108</span>
35
+ <span class='fraction'>10/135</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">12.5% </span>
40
+ <span class="strong">10.71% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>3/24</span>
42
+ <span class='fraction'>3/28</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">31.14% </span>
47
+ <span class="strong">29.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>19/61</span>
49
+ <span class='fraction'>21/72</span>
50
50
  </div>
51
51
 
52
52
 
@@ -230,7 +230,29 @@
230
230
  <a name='L165'></a><a href='#L165'>165</a>
231
231
  <a name='L166'></a><a href='#L166'>166</a>
232
232
  <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
234
256
  <span class="cline-any cline-neutral">&nbsp;</span>
235
257
  <span class="cline-any cline-neutral">&nbsp;</span>
236
258
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -288,6 +310,7 @@
288
310
  <span class="cline-any cline-neutral">&nbsp;</span>
289
311
  <span class="cline-any cline-neutral">&nbsp;</span>
290
312
  <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
314
  <span class="cline-any cline-yes">1x</span>
292
315
  <span class="cline-any cline-yes">1x</span>
293
316
  <span class="cline-any cline-yes">1x</span>
@@ -298,6 +321,11 @@
298
321
  <span class="cline-any cline-neutral">&nbsp;</span>
299
322
  <span class="cline-any cline-neutral">&nbsp;</span>
300
323
  <span class="cline-any cline-yes">1x</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-yes">1x</span>
328
+ <span class="cline-any cline-yes">1x</span>
301
329
  <span class="cline-any cline-yes">1x</span>
302
330
  <span class="cline-any cline-neutral">&nbsp;</span>
303
331
  <span class="cline-any cline-yes">1x</span>
@@ -315,6 +343,11 @@
315
343
  <span class="cline-any cline-neutral">&nbsp;</span>
316
344
  <span class="cline-any cline-no">&nbsp;</span>
317
345
  <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-no">&nbsp;</span>
318
351
  <span class="cline-any cline-neutral">&nbsp;</span>
319
352
  <span class="cline-any cline-neutral">&nbsp;</span>
320
353
  <span class="cline-any cline-no">&nbsp;</span>
@@ -383,10 +416,19 @@
383
416
  <span class="cline-any cline-no">&nbsp;</span>
384
417
  <span class="cline-any cline-neutral">&nbsp;</span>
385
418
  <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
427
  <span class="cline-any cline-neutral">&nbsp;</span>
387
428
  <span class="cline-any cline-yes">1x</span>
388
429
  <span class="cline-any cline-no">&nbsp;</span>
389
430
  <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-no">&nbsp;</span>
390
432
  <span class="cline-any cline-neutral">&nbsp;</span>
391
433
  <span class="cline-any cline-neutral">&nbsp;</span>
392
434
  <span class="cline-any cline-yes">1x</span>
@@ -402,6 +444,7 @@
402
444
  &lt;magic-stage
403
445
  :key="page?.id"
404
446
  :runtime-url="runtimeUrl"
447
+ :auto-scroll-into-view="autoScrollIntoView"
405
448
  :render="render"
406
449
  :moveable-options="moveableOptions"
407
450
  :can-select="canSelect"
@@ -440,6 +483,7 @@ export default defineComponent({
440
483
  &nbsp;
441
484
  props: {
442
485
  runtimeUrl: String,
486
+ autoScrollIntoView: Boolean,
443
487
  &nbsp;
444
488
  render: {
445
489
  type: Function as PropType&lt;() =&gt; HTMLDivElement&gt;,
@@ -463,9 +507,14 @@ export default defineComponent({
463
507
  const mouseenterHandler = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
464
508
  <span class="cstat-no" title="statement not covered" > workspace.</span>value?.focus();
465
509
  };
510
+ &nbsp;
511
+ const mouseleaveHandler = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
512
+ <span class="cstat-no" title="statement not covered" > workspace.</span>value?.blur();
513
+ };
466
514
  &nbsp;
467
515
  onMounted(() =&gt; {
468
516
  workspace.value<span class="branch-0 cbranch-no" title="branch not covered" >?.a</span>ddEventListener('mouseenter', mouseenterHandler);
517
+ workspace.value<span class="branch-0 cbranch-no" title="branch not covered" >?.a</span>ddEventListener('mouseleave', mouseleaveHandler);
469
518
  &nbsp;
470
519
  keycon = new KeyController(workspace.value);
471
520
  &nbsp;
@@ -477,6 +526,11 @@ export default defineComponent({
477
526
  .keyup('delete', <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
478
527
  <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
479
528
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.value || isPage(node.value)) <span class="cstat-no" title="statement not covered" >return;</span></span>
529
+ <span class="cstat-no" title="statement not covered" > services?</span>.editorService.remove(node.value);
530
+ })
531
+ .keyup('backspace', <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
532
+ <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
533
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.value || isPage(node.value)) <span class="cstat-no" title="statement not covered" >return;</span></span>
480
534
  <span class="cstat-no" title="statement not covered" > services?</span>.editorService.remove(node.value);
481
535
  })
482
536
  .keydown([ctrl, 'c'], <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
@@ -543,16 +597,25 @@ export default defineComponent({
543
597
  })
544
598
  .keydown([ctrl, '='], <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
545
599
  <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
600
+ <span class="cstat-no" title="statement not covered" > services?</span>.uiService.zoom(0.1);
601
+ })
602
+ .keydown([ctrl, 'numpadplus'], <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
603
+ <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
546
604
  <span class="cstat-no" title="statement not covered" > services?</span>.uiService.zoom(0.1);
547
605
  })
548
606
  .keydown([ctrl, '-'], <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
549
607
  <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
608
+ <span class="cstat-no" title="statement not covered" > services?</span>.uiService.zoom(-0.1);
609
+ })
610
+ .keydown([ctrl, 'numpad-'], <span class="fstat-no" title="function not covered" >(e</span>) =&gt; {
611
+ <span class="cstat-no" title="statement not covered" > e.</span>inputEvent.preventDefault();
550
612
  <span class="cstat-no" title="statement not covered" > services?</span>.uiService.zoom(-0.1);
551
613
  });
552
614
  });
553
615
  &nbsp;
554
616
  onUnmounted(<span class="fstat-no" title="function not covered" >() =&gt; {</span>
555
617
  <span class="cstat-no" title="statement not covered" > workspace.</span>value?.removeEventListener('mouseenter', mouseenterHandler);
618
+ <span class="cstat-no" title="statement not covered" > workspace.</span>value?.removeEventListener('mouseleave', mouseleaveHandler);
556
619
  <span class="cstat-no" title="statement not covered" > keycon.</span>destroy();
557
620
  });
558
621
  &nbsp;
@@ -571,7 +634,7 @@ export default defineComponent({
571
634
  <div class='footer quiet pad2 space-top1 center small'>
572
635
  Code coverage generated by
573
636
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
574
- at Wed May 18 2022 17:42:38 GMT+0800 (China Standard Time)
637
+ at Tue May 31 2022 12:01:20 GMT+0800 (China Standard Time)
575
638
  </div>
576
639
  <script src="../../../prettify.js"></script>
577
640
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">44.32% </span>
26
+ <span class="strong">38.41% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>125/282</span>
28
+ <span class='fraction'>116/302</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">16.11% </span>
33
+ <span class="strong">12.64% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>68/422</span>
35
+ <span class='fraction'>64/506</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">36.55% </span>
40
+ <span class="strong">23.71% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>34/93</span>
42
+ <span class='fraction'>23/97</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">45.6% </span>
47
+ <span class="strong">39.77% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>114/250</span>
49
+ <span class='fraction'>107/269</span>
50
50
  </div>
51
51
 
52
52
 
@@ -100,8 +100,8 @@
100
100
  </td>
101
101
  <td data-value="38.94" class="pct low">38.94%</td>
102
102
  <td data-value="95" class="abs low">37/95</td>
103
- <td data-value="14.28" class="pct low">14.28%</td>
104
- <td data-value="175" class="abs low">25/175</td>
103
+ <td data-value="14.12" class="pct low">14.12%</td>
104
+ <td data-value="177" class="abs low">25/177</td>
105
105
  <td data-value="25.92" class="pct low">25.92%</td>
106
106
  <td data-value="27" class="abs low">7/27</td>
107
107
  <td data-value="40" class="pct low">40%</td>
@@ -109,33 +109,33 @@
109
109
  </tr>
110
110
 
111
111
  <tr>
112
- <td class="file medium" data-value="ViewerMenu.vue"><a href="ViewerMenu.vue.html">ViewerMenu.vue</a></td>
113
- <td data-value="69.23" class="pic medium">
114
- <div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
112
+ <td class="file low" data-value="ViewerMenu.vue"><a href="ViewerMenu.vue.html">ViewerMenu.vue</a></td>
113
+ <td data-value="41.66" class="pic low">
114
+ <div class="chart"><div class="cover-fill" style="width: 41%"></div><div class="cover-empty" style="width: 59%"></div></div>
115
115
  </td>
116
- <td data-value="69.23" class="pct medium">69.23%</td>
117
- <td data-value="52" class="abs medium">36/52</td>
118
- <td data-value="22.35" class="pct low">22.35%</td>
119
- <td data-value="85" class="abs low">19/85</td>
120
- <td data-value="60" class="pct medium">60%</td>
121
- <td data-value="25" class="abs medium">15/25</td>
122
- <td data-value="68.08" class="pct medium">68.08%</td>
123
- <td data-value="47" class="abs medium">32/47</td>
116
+ <td data-value="41.66" class="pct low">41.66%</td>
117
+ <td data-value="60" class="abs low">25/60</td>
118
+ <td data-value="8.57" class="pct low">8.57%</td>
119
+ <td data-value="140" class="abs low">12/140</td>
120
+ <td data-value="16" class="pct low">16%</td>
121
+ <td data-value="25" class="abs low">4/25</td>
122
+ <td data-value="41.81" class="pct low">41.81%</td>
123
+ <td data-value="55" class="abs low">23/55</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
127
127
  <td class="file low" data-value="Workspace.vue"><a href="Workspace.vue.html">Workspace.vue</a></td>
128
- <td data-value="29.68" class="pic low">
129
- <div class="chart"><div class="cover-fill" style="width: 29%"></div><div class="cover-empty" style="width: 71%"></div></div>
128
+ <td data-value="27.63" class="pic low">
129
+ <div class="chart"><div class="cover-fill" style="width: 27%"></div><div class="cover-empty" style="width: 73%"></div></div>
130
130
  </td>
131
- <td data-value="29.68" class="pct low">29.68%</td>
132
- <td data-value="64" class="abs low">19/64</td>
133
- <td data-value="6.48" class="pct low">6.48%</td>
134
- <td data-value="108" class="abs low">7/108</td>
135
- <td data-value="12.5" class="pct low">12.5%</td>
136
- <td data-value="24" class="abs low">3/24</td>
137
- <td data-value="31.14" class="pct low">31.14%</td>
138
- <td data-value="61" class="abs low">19/61</td>
131
+ <td data-value="27.63" class="pct low">27.63%</td>
132
+ <td data-value="76" class="abs low">21/76</td>
133
+ <td data-value="7.4" class="pct low">7.4%</td>
134
+ <td data-value="135" class="abs low">10/135</td>
135
+ <td data-value="10.71" class="pct low">10.71%</td>
136
+ <td data-value="28" class="abs low">3/28</td>
137
+ <td data-value="29.16" class="pct low">29.16%</td>
138
+ <td data-value="72" class="abs low">21/72</td>
139
139
  </tr>
140
140
 
141
141
  </tbody>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at Wed May 18 2022 17:42:38 GMT+0800 (China Standard Time)
149
+ at Tue May 31 2022 12:01:20 GMT+0800 (China Standard Time)
150
150
  </div>
151
151
  <script src="../../../prettify.js"></script>
152
152
  <script>
@@ -528,7 +528,7 @@ const doAction = async (
528
528
  * editorService.afterAdd();
529
529
  * }
530
530
  *
531
- * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after最后一个参数则是原方法的return值;
531
+ * 调用时的参数会透传到before方法的参数中, 然后before的return 会作为原方法的参数和after的参数,after第一个参数则是原方法的return值;
532
532
  * 如需终止后续方法调用可以return new Error();
533
533
  *
534
534
  * 方法2:
@@ -628,7 +628,7 @@ export default class extends EventEmitter {
628
628
  <div class='footer quiet pad2 space-top1 center small'>
629
629
  Code coverage generated by
630
630
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
631
- at Wed May 18 2022 17:42:38 GMT+0800 (China Standard Time)
631
+ at Tue May 31 2022 12:01:20 GMT+0800 (China Standard Time)
632
632
  </div>
633
633
  <script src="../../prettify.js"></script>
634
634
  <script>
@@ -214,7 +214,7 @@ export default new ComponentList();
214
214
  <div class='footer quiet pad2 space-top1 center small'>
215
215
  Code coverage generated by
216
216
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
217
- at Wed May 18 2022 17:42:38 GMT+0800 (China Standard Time)
217
+ at Tue May 31 2022 12:01:20 GMT+0800 (China Standard Time)
218
218
  </div>
219
219
  <script src="../../prettify.js"></script>
220
220
  <script>