@tmagic/editor 1.0.0-beta.13 → 1.0.0-beta.14

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 (91) hide show
  1. package/coverage/clover.xml +646 -550
  2. package/coverage/coverage-final.json +19 -18
  3. package/coverage/lcov-report/index.html +55 -55
  4. package/coverage/lcov-report/src/Editor.vue.html +1 -1
  5. package/coverage/lcov-report/{layouts/sidebar/LayerMenu.vue.html → src/components/ContentMenu.vue.html} +137 -95
  6. package/coverage/lcov-report/src/components/Icon.vue.html +5 -5
  7. package/coverage/lcov-report/src/components/ScrollViewer.vue.html +1 -1
  8. package/coverage/lcov-report/src/components/ToolButton.vue.html +180 -63
  9. package/coverage/lcov-report/src/components/index.html +34 -19
  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 +13 -13
  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 +15 -15
  17. package/coverage/lcov-report/src/layouts/sidebar/ComponentListPanel.vue.html +78 -12
  18. package/coverage/lcov-report/src/layouts/sidebar/LayerMenu.vue.html +149 -92
  19. package/coverage/lcov-report/src/layouts/sidebar/LayerPanel.vue.html +43 -121
  20. package/coverage/lcov-report/src/layouts/sidebar/Sidebar.vue.html +1 -1
  21. package/coverage/lcov-report/src/layouts/sidebar/index.html +40 -40
  22. package/coverage/lcov-report/src/layouts/workspace/PageBar.vue.html +99 -12
  23. package/coverage/lcov-report/src/layouts/workspace/Stage.vue.html +86 -95
  24. package/coverage/lcov-report/src/layouts/workspace/ViewerMenu.vue.html +208 -97
  25. package/coverage/lcov-report/src/layouts/workspace/Workspace.vue.html +3 -3
  26. package/coverage/lcov-report/src/layouts/workspace/index.html +35 -35
  27. package/coverage/lcov-report/src/services/BaseService.ts.html +11 -11
  28. package/coverage/lcov-report/src/services/componentList.ts.html +1 -1
  29. package/coverage/lcov-report/src/services/editor.ts.html +102 -9
  30. package/coverage/lcov-report/src/services/events.ts.html +1 -1
  31. package/coverage/lcov-report/src/services/history.ts.html +29 -8
  32. package/coverage/lcov-report/src/services/index.html +25 -25
  33. package/coverage/lcov-report/src/services/props.ts.html +4 -7
  34. package/coverage/lcov-report/src/services/ui.ts.html +1 -1
  35. package/coverage/lcov-report/src/type.ts.html +8 -14
  36. package/coverage/lcov-report/src/utils/compose.ts.html +4 -4
  37. package/coverage/lcov-report/src/utils/config.ts.html +1 -1
  38. package/coverage/lcov-report/src/utils/editor.ts.html +2 -2
  39. package/coverage/lcov-report/src/utils/index.html +1 -1
  40. package/coverage/lcov-report/src/utils/index.ts.html +1 -1
  41. package/coverage/lcov-report/src/utils/logger.ts.html +1 -1
  42. package/coverage/lcov-report/src/utils/props.ts.html +59 -2
  43. package/coverage/lcov-report/src/utils/scroll-viewer.ts.html +1 -1
  44. package/coverage/lcov-report/src/utils/undo-redo.ts.html +1 -1
  45. package/coverage/lcov.info +1623 -1354
  46. package/dist/style.css +39 -18
  47. package/dist/tmagic-editor.es.js +598 -412
  48. package/dist/tmagic-editor.es.js.map +1 -1
  49. package/dist/tmagic-editor.umd.js +595 -408
  50. package/dist/tmagic-editor.umd.js.map +1 -1
  51. package/dist/types/src/Editor.vue.d.ts +1 -1
  52. package/dist/types/src/components/ToolButton.vue.d.ts +12 -1
  53. package/dist/types/src/index.d.ts +1 -0
  54. package/dist/types/src/layouts/sidebar/ComponentListPanel.vue.d.ts +1 -0
  55. package/dist/types/src/layouts/workspace/PageBar.vue.d.ts +2 -0
  56. package/dist/types/src/services/history.d.ts +1 -0
  57. package/dist/types/src/services/props.d.ts +2 -2
  58. package/dist/types/src/type.d.ts +6 -8
  59. package/dist/types/src/utils/polyfills.d.ts +0 -0
  60. package/package.json +8 -7
  61. package/src/components/ContentMenu.vue +107 -0
  62. package/src/components/ToolButton.vue +66 -27
  63. package/src/index.ts +2 -0
  64. package/src/layouts/Framework.vue +6 -6
  65. package/src/layouts/sidebar/ComponentListPanel.vue +23 -1
  66. package/src/layouts/sidebar/LayerMenu.vue +91 -72
  67. package/src/layouts/sidebar/LayerPanel.vue +23 -49
  68. package/src/layouts/workspace/PageBar.vue +35 -6
  69. package/src/layouts/workspace/Stage.vue +41 -44
  70. package/src/layouts/workspace/ViewerMenu.vue +104 -67
  71. package/src/layouts/workspace/Workspace.vue +2 -2
  72. package/src/services/editor.ts +32 -1
  73. package/src/services/history.ts +7 -0
  74. package/src/services/props.ts +2 -3
  75. package/src/theme/common/var.scss +1 -0
  76. package/src/theme/component-list-panel.scss +2 -0
  77. package/src/theme/content-menu.scss +33 -26
  78. package/src/theme/layer-panel.scss +1 -1
  79. package/src/theme/page-bar.scss +22 -1
  80. package/src/type.ts +6 -8
  81. package/src/utils/editor.ts +1 -1
  82. package/src/utils/polyfills.ts +22 -0
  83. package/src/utils/props.ts +19 -0
  84. package/coverage/lcov-report/Icon.vue.html +0 -172
  85. package/coverage/lcov-report/ToolButton.vue.html +0 -655
  86. package/coverage/lcov-report/layouts/sidebar/index.html +0 -116
  87. package/coverage/lcov-report/utils/index.html +0 -116
  88. package/coverage/lcov-report/utils/undo-redo.ts.html +0 -313
  89. package/dist/types/src/layouts/sidebar/LayerPanel.vue.d.ts +0 -980
  90. package/dist/types/src/layouts/workspace/Stage.vue.d.ts +0 -188
  91. package/dist/types/src/layouts/workspace/ViewerMenu.vue.d.ts +0 -18
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">34.28% </span>
26
+ <span class="strong">34.02% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>36/105</span>
28
+ <span class='fraction'>33/97</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">6.45% </span>
33
+ <span class="strong">7.91% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>8/124</span>
35
+ <span class='fraction'>11/139</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">37.5% </span>
40
+ <span class="strong">30.43% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/24</span>
42
+ <span class='fraction'>7/23</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">34.4% </span>
47
+ <span class="strong">34.11% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>32/93</span>
49
+ <span class='fraction'>29/85</span>
50
50
  </div>
51
51
 
52
52
 
@@ -293,33 +293,7 @@
293
293
  <a name='L228'></a><a href='#L228'>228</a>
294
294
  <a name='L229'></a><a href='#L229'>229</a>
295
295
  <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
296
+ <a name='L231'></a><a href='#L231'>231</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
323
297
  <span class="cline-any cline-neutral">&nbsp;</span>
324
298
  <span class="cline-any cline-neutral">&nbsp;</span>
325
299
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -491,8 +465,6 @@
491
465
  <span class="cline-any cline-neutral">&nbsp;</span>
492
466
  <span class="cline-any cline-neutral">&nbsp;</span>
493
467
  <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
468
  <span class="cline-any cline-neutral">&nbsp;</span>
497
469
  <span class="cline-any cline-neutral">&nbsp;</span>
498
470
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -500,33 +472,25 @@
500
472
  <span class="cline-any cline-neutral">&nbsp;</span>
501
473
  <span class="cline-any cline-yes">1x</span>
502
474
  <span class="cline-any cline-yes">1x</span>
503
- <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-yes">1x</span>
476
+ <span class="cline-any cline-yes">1x</span>
477
+ <span class="cline-any cline-yes">1x</span>
478
+ <span class="cline-any cline-yes">1x</span>
505
479
  <span class="cline-any cline-no">&nbsp;</span>
506
480
  <span class="cline-any cline-neutral">&nbsp;</span>
507
481
  <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
482
  <span class="cline-any cline-yes">1x</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
483
  <span class="cline-any cline-no">&nbsp;</span>
516
484
  <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
485
  <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
486
+ <span class="cline-any cline-yes">1x</span>
487
+ <span class="cline-any cline-yes">1x</span>
521
488
  <span class="cline-any cline-no">&nbsp;</span>
522
489
  <span class="cline-any cline-neutral">&nbsp;</span>
523
490
  <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-yes">1x</span>
524
492
  <span class="cline-any cline-no">&nbsp;</span>
525
493
  <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
494
  <span class="cline-any cline-neutral">&nbsp;</span>
531
495
  <span class="cline-any cline-neutral">&nbsp;</span>
532
496
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -536,25 +500,6 @@
536
500
  <span class="cline-any cline-neutral">&nbsp;</span>
537
501
  <span class="cline-any cline-neutral">&nbsp;</span>
538
502
  <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">1x</span>
540
- <span class="cline-any cline-yes">1x</span>
541
- <span class="cline-any cline-yes">1x</span>
542
- <span class="cline-any cline-yes">1x</span>
543
- <span class="cline-any cline-yes">1x</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-yes">1x</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-yes">1x</span>
552
- <span class="cline-any cline-yes">1x</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-yes">1x</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
503
  <span class="cline-any cline-neutral">&nbsp;</span>
559
504
  <span class="cline-any cline-neutral">&nbsp;</span>
560
505
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -570,6 +515,9 @@
570
515
  <span class="cline-any cline-neutral">&nbsp;</span>
571
516
  <span class="cline-any cline-neutral">&nbsp;</span>
572
517
  <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
573
521
  <span class="cline-any cline-neutral">&nbsp;</span>
574
522
  <span class="cline-any cline-neutral">&nbsp;</span>
575
523
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -610,8 +558,8 @@
610
558
  &lt;div
611
559
  :id="data.id"
612
560
  class="cus-tree-node"
613
- @mousedown="toogleClickFlag"
614
- @mouseup="toogleClickFlag"
561
+ @mousedown="toggleClickFlag"
562
+ @mouseup="toggleClickFlag"
615
563
  @mouseenter="highlightHandler(data)"
616
564
  :class="{ 'cus-tree-node-hover': canHighlight &amp;&amp; data.id === highlightNode?.id }"
617
565
  &gt;
@@ -625,13 +573,13 @@
625
573
  &lt;/el-tree&gt;
626
574
  &nbsp;
627
575
  &lt;teleport to="body"&gt;
628
- &lt;layer-menu :style="menuStyle"&gt;&lt;/layer-menu&gt;
576
+ &lt;layer-menu ref="menu"&gt;&lt;/layer-menu&gt;
629
577
  &lt;/teleport&gt;
630
578
  &lt;/el-scrollbar&gt;
631
579
  &lt;/template&gt;
632
580
  &nbsp;
633
581
  &lt;script lang="ts"&gt;
634
- import { computed, defineComponent, inject, onMounted, Ref, ref, watchEffect } from 'vue';
582
+ import { computed, defineComponent, inject, Ref, ref, watchEffect } from 'vue';
635
583
  import type { ElTree } from 'element-plus';
636
584
  import { throttle } from 'lodash-es';
637
585
  &nbsp;
@@ -746,46 +694,6 @@ const useFilter = (tree: Ref&lt;InstanceType&lt;typeof ElTree&gt; | undefined&gt
746
694
  },
747
695
  });
748
696
  &nbsp;
749
- const useContentMenu = (editorService?: EditorService) =&gt; {
750
- const menuStyle = ref({
751
- position: 'absolute',
752
- left: '0',
753
- top: '0',
754
- display: 'none',
755
- });
756
- &nbsp;
757
- onMounted(() =&gt; {
758
- document.addEventListener(
759
- 'click',
760
- <span class="fstat-no" title="function not covered" > () =&gt; {</span>
761
- <span class="cstat-no" title="statement not covered" > menuStyle.</span>value.display = 'none';
762
- },
763
- true,
764
- );
765
- });
766
- &nbsp;
767
- return {
768
- menuStyle,
769
- &nbsp;
770
- <span class="fstat-no" title="function not covered" > contextmenu(</span>event: MouseEvent, data: MNode) {
771
- const bodyHeight = <span class="cstat-no" title="statement not covered" >globalThis.document.body.clientHeight;</span>
772
- &nbsp;
773
- const left = <span class="cstat-no" title="statement not covered" >`${e</span>vent.clientX + 20}px`;
774
- let top = <span class="cstat-no" title="statement not covered" >`${e</span>vent.clientY - 10}px`;
775
- &nbsp;
776
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (event.clientY + 300 &gt; bodyHeight) {</span>
777
- <span class="cstat-no" title="statement not covered" > top </span>= `${bodyHeight - 300}px`;
778
- }
779
- &nbsp;
780
- <span class="cstat-no" title="statement not covered" > menuStyle.</span>value.left = left;
781
- <span class="cstat-no" title="statement not covered" > menuStyle.</span>value.top = top;
782
- <span class="cstat-no" title="statement not covered" > menuStyle.</span>value.display = '';
783
- &nbsp;
784
- <span class="cstat-no" title="statement not covered" > select(</span>data, editorService);
785
- },
786
- };
787
- };
788
- &nbsp;
789
697
  export default defineComponent({
790
698
  name: 'magic-editor-layer-panel',
791
699
  &nbsp;
@@ -794,13 +702,14 @@ export default defineComponent({
794
702
  setup() {
795
703
  const services = inject&lt;Services&gt;('services');
796
704
  const tree = ref&lt;InstanceType&lt;typeof ElTree&gt;&gt;();
705
+ const menu = ref&lt;InstanceType&lt;typeof LayerMenu&gt;&gt;();
797
706
  const clicked = ref(false);
798
707
  const editorService = services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService;
799
708
  const highlightHandler = throttle(<span class="fstat-no" title="function not covered" >(d</span>ata: MNode) =&gt; {
800
709
  <span class="cstat-no" title="statement not covered" > highlight(</span>data, editorService);
801
710
  }, throttleTime);
802
711
  &nbsp;
803
- const toogleClickFlag = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
712
+ const toggleClickFlag = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
804
713
  <span class="cstat-no" title="statement not covered" > clicked.</span>value = !clicked.value;
805
714
  };
806
715
  &nbsp;
@@ -808,13 +717,23 @@ export default defineComponent({
808
717
  const canHighlight = computed(
809
718
  <span class="fstat-no" title="function not covered" > () =&gt; <span class="cstat-no" title="statement not covered" >s</span>tatusData.</span>highlightNode.value?.id !== statusData.clickNode.value?.id &amp;&amp; !clicked.value,
810
719
  );
720
+ &nbsp;
721
+ editorService<span class="branch-0 cbranch-no" title="branch not covered" >?.o</span>n('remove', <span class="fstat-no" title="function not covered" >() =&gt; {</span>
722
+ <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" ></span>() =&gt; {</span>
723
+ <span class="cstat-no" title="statement not covered" > tree.</span>value?.getNode(editorService.get('node').id)?.updateChildren();
724
+ }, 0);
725
+ });
811
726
  &nbsp;
812
727
  return {
813
728
  tree,
729
+ menu,
814
730
  ...statusData,
815
731
  ...useDrop(tree, editorService),
816
732
  ...useFilter(tree),
817
- ...useContentMenu(editorService),
733
+ &nbsp;
734
+ highlightHandler,
735
+ toggleClickFlag,
736
+ canHighlight,
818
737
  &nbsp;
819
738
  <span class="fstat-no" title="function not covered" > clickHandler(</span>data: MNode): void {
820
739
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (services?.uiService.get&lt;boolean&gt;('uiSelectMode')) {</span>
@@ -824,9 +743,12 @@ export default defineComponent({
824
743
  <span class="cstat-no" title="statement not covered" > tree.</span>value?.setCurrentKey(data.id);
825
744
  <span class="cstat-no" title="statement not covered" > select(</span>data, editorService);
826
745
  },
827
- highlightHandler,
828
- toogleClickFlag,
829
- canHighlight,
746
+ &nbsp;
747
+ <span class="fstat-no" title="function not covered" > async c</span>ontextmenu(event: MouseEvent, data: MNode) {
748
+ <span class="cstat-no" title="statement not covered" > event.</span>preventDefault();
749
+ <span class="cstat-no" title="statement not covered" > await s</span>elect(data, editorService);
750
+ <span class="cstat-no" title="statement not covered" > menu.</span>value?.show(event);
751
+ },
830
752
  };
831
753
  },
832
754
  });
@@ -838,7 +760,7 @@ export default defineComponent({
838
760
  <div class='footer quiet pad2 space-top1 center small'>
839
761
  Code coverage generated by
840
762
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
841
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
763
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
842
764
  </div>
843
765
  <script src="../../../prettify.js"></script>
844
766
  <script>
@@ -328,7 +328,7 @@ export default defineComponent({
328
328
  <div class='footer quiet pad2 space-top1 center small'>
329
329
  Code coverage generated by
330
330
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
331
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
331
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
332
332
  </div>
333
333
  <script src="../../../prettify.js"></script>
334
334
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">47.4% </span>
26
+ <span class="strong">47.45% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>73/154</span>
28
+ <span class='fraction'>84/177</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">23.62% </span>
33
+ <span class="strong">18.06% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>43/182</span>
35
+ <span class='fraction'>43/238</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">52.27% </span>
40
+ <span class="strong">43.63% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>23/44</span>
42
+ <span class='fraction'>24/55</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">49.63% </span>
47
+ <span class="strong">50.32% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>68/137</span>
49
+ <span class='fraction'>77/153</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,48 +79,48 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file medium" data-value="ComponentListPanel.vue"><a href="ComponentListPanel.vue.html">ComponentListPanel.vue</a></td>
83
- <td data-value="55.55" class="pic medium">
84
- <div class="chart"><div class="cover-fill" style="width: 55%"></div><div class="cover-empty" style="width: 45%"></div></div>
82
+ <td class="file low" data-value="ComponentListPanel.vue"><a href="ComponentListPanel.vue.html">ComponentListPanel.vue</a></td>
83
+ <td data-value="42.3" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
85
85
  </td>
86
- <td data-value="55.55" class="pct medium">55.55%</td>
87
- <td data-value="18" class="abs medium">10/18</td>
88
- <td data-value="42.85" class="pct low">42.85%</td>
89
- <td data-value="14" class="abs low">6/14</td>
90
- <td data-value="42.85" class="pct low">42.85%</td>
91
- <td data-value="7" class="abs low">3/7</td>
92
- <td data-value="71.42" class="pct medium">71.42%</td>
93
- <td data-value="14" class="abs medium">10/14</td>
86
+ <td data-value="42.3" class="pct low">42.3%</td>
87
+ <td data-value="26" class="abs low">11/26</td>
88
+ <td data-value="35.29" class="pct low">35.29%</td>
89
+ <td data-value="17" class="abs low">6/17</td>
90
+ <td data-value="37.5" class="pct low">37.5%</td>
91
+ <td data-value="8" class="abs low">3/8</td>
92
+ <td data-value="57.89" class="pct medium">57.89%</td>
93
+ <td data-value="19" class="abs medium">11/19</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
97
- <td class="file high" data-value="LayerMenu.vue"><a href="LayerMenu.vue.html">LayerMenu.vue</a></td>
98
- <td data-value="91.66" class="pic high">
99
- <div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
97
+ <td class="file medium" data-value="LayerMenu.vue"><a href="LayerMenu.vue.html">LayerMenu.vue</a></td>
98
+ <td data-value="68.57" class="pic medium">
99
+ <div class="chart"><div class="cover-fill" style="width: 68%"></div><div class="cover-empty" style="width: 32%"></div></div>
100
100
  </td>
101
- <td data-value="91.66" class="pct high">91.66%</td>
102
- <td data-value="12" class="abs high">11/12</td>
103
- <td data-value="69.23" class="pct medium">69.23%</td>
104
- <td data-value="26" class="abs medium">18/26</td>
105
- <td data-value="85.71" class="pct high">85.71%</td>
106
- <td data-value="7" class="abs high">6/7</td>
107
- <td data-value="90.9" class="pct high">90.9%</td>
108
- <td data-value="11" class="abs high">10/11</td>
101
+ <td data-value="68.57" class="pct medium">68.57%</td>
102
+ <td data-value="35" class="abs medium">24/35</td>
103
+ <td data-value="23.43" class="pct low">23.43%</td>
104
+ <td data-value="64" class="abs low">15/64</td>
105
+ <td data-value="50" class="pct medium">50%</td>
106
+ <td data-value="18" class="abs medium">9/18</td>
107
+ <td data-value="70" class="pct medium">70%</td>
108
+ <td data-value="30" class="abs medium">21/30</td>
109
109
  </tr>
110
110
 
111
111
  <tr>
112
112
  <td class="file low" data-value="LayerPanel.vue"><a href="LayerPanel.vue.html">LayerPanel.vue</a></td>
113
- <td data-value="34.28" class="pic low">
113
+ <td data-value="34.02" class="pic low">
114
114
  <div class="chart"><div class="cover-fill" style="width: 34%"></div><div class="cover-empty" style="width: 66%"></div></div>
115
115
  </td>
116
- <td data-value="34.28" class="pct low">34.28%</td>
117
- <td data-value="105" class="abs low">36/105</td>
118
- <td data-value="6.45" class="pct low">6.45%</td>
119
- <td data-value="124" class="abs low">8/124</td>
120
- <td data-value="37.5" class="pct low">37.5%</td>
121
- <td data-value="24" class="abs low">9/24</td>
122
- <td data-value="34.4" class="pct low">34.4%</td>
123
- <td data-value="93" class="abs low">32/93</td>
116
+ <td data-value="34.02" class="pct low">34.02%</td>
117
+ <td data-value="97" class="abs low">33/97</td>
118
+ <td data-value="7.91" class="pct low">7.91%</td>
119
+ <td data-value="139" class="abs low">11/139</td>
120
+ <td data-value="30.43" class="pct low">30.43%</td>
121
+ <td data-value="23" class="abs low">7/23</td>
122
+ <td data-value="34.11" class="pct low">34.11%</td>
123
+ <td data-value="85" class="abs low">29/85</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -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 Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
149
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
150
150
  </div>
151
151
  <script src="../../../prettify.js"></script>
152
152
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">45.71% </span>
26
+ <span class="strong">46.47% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>32/70</span>
28
+ <span class='fraction'>33/71</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">49.18% </span>
47
+ <span class="strong">50% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>30/61</span>
49
+ <span class='fraction'>31/62</span>
50
50
  </div>
51
51
 
52
52
 
@@ -245,7 +245,50 @@
245
245
  <a name='L180'></a><a href='#L180'>180</a>
246
246
  <a name='L181'></a><a href='#L181'>181</a>
247
247
  <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
292
  <span class="cline-any cline-neutral">&nbsp;</span>
250
293
  <span class="cline-any cline-neutral">&nbsp;</span>
251
294
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -292,11 +335,23 @@
292
335
  <span class="cline-any cline-neutral">&nbsp;</span>
293
336
  <span class="cline-any cline-neutral">&nbsp;</span>
294
337
  <span class="cline-any cline-yes">2x</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
349
  <span class="cline-any cline-yes">2x</span>
296
350
  <span class="cline-any cline-neutral">&nbsp;</span>
297
351
  <span class="cline-any cline-neutral">&nbsp;</span>
298
352
  <span class="cline-any cline-yes">2x</span>
299
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-yes">2x</span>
300
355
  <span class="cline-any cline-neutral">&nbsp;</span>
301
356
  <span class="cline-any cline-yes">2x</span>
302
357
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -397,6 +452,9 @@
397
452
  <span class="cline-any cline-neutral">&nbsp;</span>
398
453
  <span class="cline-any cline-neutral">&nbsp;</span>
399
454
  <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
458
  <span class="cline-any cline-yes">3x</span>
401
459
  <span class="cline-any cline-neutral">&nbsp;</span>
402
460
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -451,11 +509,25 @@
451
509
  &lt;/slot&gt;
452
510
  &lt;/div&gt;
453
511
  &nbsp;
454
- &lt;el-popover placement="top" :width="160" trigger="hover"&gt;
512
+ &lt;el-popover popper-class="page-bar-popover" placement="top" :width="160" trigger="hover"&gt;
455
513
  &lt;div&gt;
456
514
  &lt;slot name="page-bar-popover" :page="item"&gt;
457
- &lt;div class="magic-editor-content-menu-item" @click="() =&gt; copy(item)"&gt;复制&lt;/div&gt;
458
- &lt;div class="magic-editor-content-menu-item" @click="() =&gt; remove(item)"&gt;删除&lt;/div&gt;
515
+ &lt;tool-button
516
+ :data="{
517
+ type: 'button',
518
+ text: '复制',
519
+ icon: DocumentCopy,
520
+ handler: () =&gt; copy(item),
521
+ }"
522
+ &gt;&lt;/tool-button&gt;
523
+ &lt;tool-button
524
+ :data="{
525
+ type: 'button',
526
+ text: '删除',
527
+ icon: Delete,
528
+ handler: () =&gt; remove(item),
529
+ }"
530
+ &gt;&lt;/tool-button&gt;
459
531
  &lt;/slot&gt;
460
532
  &lt;/div&gt;
461
533
  &lt;template #reference&gt;
@@ -473,12 +545,24 @@
473
545
  &lt;/template&gt;
474
546
  &nbsp;
475
547
  &lt;script lang="ts"&gt;
476
- import { computed, ComputedRef, defineComponent, inject, onMounted, onUnmounted, ref, toRaw, watch } from 'vue';
477
- import { ArrowLeftBold, ArrowRightBold, CaretBottom, Plus } from '@element-plus/icons';
548
+ import {
549
+ computed,
550
+ ComputedRef,
551
+ defineComponent,
552
+ inject,
553
+ markRaw,
554
+ onMounted,
555
+ onUnmounted,
556
+ ref,
557
+ toRaw,
558
+ watch,
559
+ } from 'vue';
560
+ import { ArrowLeftBold, ArrowRightBold, CaretBottom, Delete, DocumentCopy, Plus } from '@element-plus/icons';
478
561
  &nbsp;
479
562
  import type { MApp, MPage } from '@tmagic/schema';
480
563
  import { NodeType } from '@tmagic/schema';
481
564
  &nbsp;
565
+ import ToolButton from '@editor/components/ToolButton.vue';
482
566
  import type { Services } from '@editor/type';
483
567
  import { generatePageNameByApp } from '@editor/utils/editor';
484
568
  &nbsp;
@@ -567,7 +651,7 @@ const useScroll = (root: ComputedRef&lt;MApp | undefined&gt;) =&gt; {
567
651
  };
568
652
  &nbsp;
569
653
  export default defineComponent({
570
- components: { ArrowLeftBold, ArrowRightBold, CaretBottom, Plus },
654
+ components: { ArrowLeftBold, ArrowRightBold, CaretBottom, Plus, ToolButton },
571
655
  &nbsp;
572
656
  setup() {
573
657
  const services = inject&lt;Services&gt;('services');
@@ -576,6 +660,9 @@ export default defineComponent({
576
660
  const root = computed(() =&gt; editorService<span class="branch-0 cbranch-no" title="branch not covered" >?.g</span>et&lt;MApp&gt;('root'));
577
661
  &nbsp;
578
662
  return {
663
+ Delete: markRaw(Delete),
664
+ DocumentCopy: markRaw(DocumentCopy),
665
+ &nbsp;
579
666
  ...useScroll(root),
580
667
  &nbsp;
581
668
  root,
@@ -616,7 +703,7 @@ export default defineComponent({
616
703
  <div class='footer quiet pad2 space-top1 center small'>
617
704
  Code coverage generated by
618
705
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
619
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
706
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
620
707
  </div>
621
708
  <script src="../../../prettify.js"></script>
622
709
  <script>