@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">77.41% </span>
26
+ <span class="strong">69.33% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>48/62</span>
28
+ <span class='fraction'>52/75</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">47.22% </span>
33
+ <span class="strong">47.41% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>51/108</span>
35
+ <span class='fraction'>55/116</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">75% </span>
40
+ <span class="strong">69.56% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/20</span>
42
+ <span class='fraction'>16/23</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.46% </span>
47
+ <span class="strong">80.64% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>46/52</span>
49
+ <span class='fraction'>50/62</span>
50
50
  </div>
51
51
 
52
52
 
@@ -253,7 +253,46 @@
253
253
  <a name='L188'></a><a href='#L188'>188</a>
254
254
  <a name='L189'></a><a href='#L189'>189</a>
255
255
  <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
257
296
  <span class="cline-any cline-neutral">&nbsp;</span>
258
297
  <span class="cline-any cline-neutral">&nbsp;</span>
259
298
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -293,15 +332,28 @@
293
332
  <span class="cline-any cline-neutral">&nbsp;</span>
294
333
  <span class="cline-any cline-neutral">&nbsp;</span>
295
334
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">2x</span>
297
- <span class="cline-any cline-yes">2x</span>
298
335
  <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-yes">2x</span>
300
336
  <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-yes">2x</span>
302
337
  <span class="cline-any cline-neutral">&nbsp;</span>
303
338
  <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-yes">2x</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-yes">4x</span>
349
+ <span class="cline-any cline-yes">4x</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-yes">4x</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-yes">4x</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-yes">4x</span>
305
357
  <span class="cline-any cline-neutral">&nbsp;</span>
306
358
  <span class="cline-any cline-neutral">&nbsp;</span>
307
359
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -316,19 +368,24 @@
316
368
  <span class="cline-any cline-neutral">&nbsp;</span>
317
369
  <span class="cline-any cline-neutral">&nbsp;</span>
318
370
  <span class="cline-any cline-neutral">&nbsp;</span>
319
- <span class="cline-any cline-yes">12x</span>
320
- <span class="cline-any cline-yes">12x</span>
321
371
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-yes">12x</span>
323
- <span class="cline-any cline-yes">12x</span>
324
- <span class="cline-any cline-yes">12x</span>
325
372
  <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-yes">12x</span>
327
- <span class="cline-any cline-yes">12x</span>
328
373
  <span class="cline-any cline-neutral">&nbsp;</span>
329
- <span class="cline-any cline-yes">12x</span>
330
- <span class="cline-any cline-yes">12x</span>
331
- <span class="cline-any cline-yes">6x</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-yes">45x</span>
377
+ <span class="cline-any cline-yes">45x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-yes">45x</span>
380
+ <span class="cline-any cline-yes">45x</span>
381
+ <span class="cline-any cline-yes">45x</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-yes">45x</span>
384
+ <span class="cline-any cline-yes">45x</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-yes">45x</span>
387
+ <span class="cline-any cline-yes">45x</span>
388
+ <span class="cline-any cline-yes">39x</span>
332
389
  <span class="cline-any cline-neutral">&nbsp;</span>
333
390
  <span class="cline-any cline-yes">6x</span>
334
391
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -399,29 +456,36 @@
399
456
  <span class="cline-any cline-neutral">&nbsp;</span>
400
457
  <span class="cline-any cline-neutral">&nbsp;</span>
401
458
  <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-yes">12x</span>
403
- <span class="cline-any cline-yes">8x</span>
404
- <span class="cline-any cline-yes">8x</span>
405
- <span class="cline-any cline-yes">8x</span>
459
+ <span class="cline-any cline-yes">45x</span>
460
+ <span class="cline-any cline-yes">30x</span>
461
+ <span class="cline-any cline-yes">30x</span>
462
+ <span class="cline-any cline-yes">30x</span>
406
463
  <span class="cline-any cline-yes">3x</span>
407
464
  <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-yes">27x</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-yes">45x</span>
469
+ <span class="cline-any cline-yes">5x</span>
470
+ <span class="cline-any cline-yes">5x</span>
408
471
  <span class="cline-any cline-yes">5x</span>
409
472
  <span class="cline-any cline-neutral">&nbsp;</span>
410
473
  <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">12x</span>
412
474
  <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-yes">45x</span>
413
476
  <span class="cline-any cline-neutral">&nbsp;</span>
414
477
  <span class="cline-any cline-neutral">&nbsp;</span>
415
478
  <span class="cline-any cline-neutral">&nbsp;</span>
416
479
  <span class="cline-any cline-neutral">&nbsp;</span>
417
480
  <span class="cline-any cline-neutral">&nbsp;</span>
418
481
  <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-yes">12x</span>
420
- <span class="cline-any cline-yes">12x</span>
421
- <span class="cline-any cline-yes">12x</span>
422
- <span class="cline-any cline-yes">1x</span>
423
482
  <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-yes">11x</span>
483
+ <span class="cline-any cline-yes">45x</span>
484
+ <span class="cline-any cline-yes">45x</span>
485
+ <span class="cline-any cline-yes">45x</span>
486
+ <span class="cline-any cline-yes">22x</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">23x</span>
425
489
  <span class="cline-any cline-neutral">&nbsp;</span>
426
490
  <span class="cline-any cline-neutral">&nbsp;</span>
427
491
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -441,29 +505,56 @@
441
505
  <span class="cline-any cline-neutral">&nbsp;</span>
442
506
  <span class="cline-any cline-neutral">&nbsp;</span>
443
507
  <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</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
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
522
  <span class="cline-any cline-neutral">&nbsp;</span>
445
523
  <span class="cline-any cline-neutral">&nbsp;</span>
446
524
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;template&gt;
447
- &lt;div v-if="display" class="menu-item"&gt;
448
- &lt;el-divider v-if="item.type === 'divider'" direction="vertical"&gt;&lt;/el-divider&gt;
525
+ &lt;div
526
+ v-if="display"
527
+ class="menu-item"
528
+ :class="item.type"
529
+ @click="clickHandler(item, $event)"
530
+ @mousedown="mousedownHandler(item, $event)"
531
+ @mouseup="mouseupHandler(item, $event)"
532
+ &gt;
533
+ &lt;el-divider v-if="item.type === 'divider'" :direction="item.direction || 'vertical'"&gt;&lt;/el-divider&gt;
449
534
  &lt;div v-else-if="item.type === 'text'" class="menu-item-text"&gt;{{ item.text }}&lt;/div&gt;
450
535
  &nbsp;
451
536
  &lt;template v-else-if="item.type === 'zoom'"&gt;
452
- &lt;el-button size="small" type="text"&gt;&lt;m-icon :icon="ZoomIn" @click="zoomInHandler"&gt;&lt;/m-icon&gt;&lt;/el-button&gt;
537
+ &lt;tool-button
538
+ :data="{ type: 'button', icon: ZoomIn, handler: zoomInHandler, tooltip: '放大' }"
539
+ :event-type="eventType"
540
+ &gt;&lt;/tool-button&gt;
453
541
  &lt;span class="menu-item-text" style="margin: 0 5px"&gt;{{ parseInt(`${zoom * 100}`, 10) }}%&lt;/span&gt;
454
- &lt;el-button size="small" type="text"&gt;&lt;m-icon :icon="ZoomOut" @click="zoomOutHandler"&gt;&lt;/m-icon&gt;&lt;/el-button&gt;
542
+ &lt;tool-button
543
+ :data="{ type: 'button', icon: ZoomOut, handler: zoomOutHandler, tooltip: '缩小' }"
544
+ :event-type="eventType"
545
+ &gt;&lt;/tool-button&gt;
455
546
  &lt;/template&gt;
456
547
  &nbsp;
457
- &lt;el-tooltip
458
- v-else-if="item.type === 'button'"
459
- effect="dark"
460
- placement="bottom-start"
461
- :content="item.tooltip || item.text"
462
- &gt;
463
- &lt;el-button size="small" type="text" :disabled="disabled" @click="buttonHandler(item)"
464
- &gt;&lt;m-icon :icon="item.icon"&gt;&lt;/m-icon&gt;&lt;span&gt;{{ item.text }}&lt;/span&gt;&lt;/el-button
548
+ &lt;template v-else-if="item.type === 'button'"&gt;
549
+ &lt;el-tooltip v-if="item.tooltip" effect="dark" placement="bottom-start" :content="item.tooltip"&gt;
550
+ &lt;el-button size="small" type="text" :disabled="disabled"
551
+ &gt;&lt;m-icon v-if="item.icon" :icon="item.icon"&gt;&lt;/m-icon&gt;&lt;span&gt;{{ item.text }}&lt;/span&gt;&lt;/el-button
552
+ &gt;
553
+ &lt;/el-tooltip&gt;
554
+ &lt;el-button v-else size="small" type="text" :disabled="disabled"
555
+ &gt;&lt;m-icon v-if="item.icon" :icon="item.icon"&gt;&lt;/m-icon&gt;&lt;span&gt;{{ item.text }}&lt;/span&gt;&lt;/el-button
465
556
  &gt;
466
- &lt;/el-tooltip&gt;
557
+ &lt;/template&gt;
467
558
  &nbsp;
468
559
  &lt;el-dropdown v-else-if="item.type === 'dropdown'" trigger="click" :disabled="disabled" @command="dropdownHandler"&gt;
469
560
  &lt;span class="el-dropdown-link menubar-menu-button"&gt;
@@ -483,7 +574,7 @@
483
574
  &lt;/template&gt;
484
575
  &nbsp;
485
576
  &lt;script lang="ts"&gt;
486
- import { computed, defineComponent, inject, PropType } from 'vue';
577
+ import { computed, defineComponent, inject, markRaw, PropType } from 'vue';
487
578
  import { ArrowDown, Back, Delete, Grid, Right, ScaleToOriginal, ZoomIn, ZoomOut } from '@element-plus/icons';
488
579
  &nbsp;
489
580
  import { NodeType } from '@tmagic/schema';
@@ -503,11 +594,16 @@ export default defineComponent({
503
594
  display: false,
504
595
  }),
505
596
  },
597
+ &nbsp;
598
+ eventType: {
599
+ type: String as PropType&lt;'mousedown' | 'mouseup' | 'click'&gt;,
600
+ default: 'click',
601
+ },
506
602
  },
507
603
  &nbsp;
508
604
  setup(props) {
509
605
  const services = inject&lt;Services&gt;('services');
510
- const uiService = services<span class="branch-0 cbranch-no" title="branch not covered" >?.u</span>iService;
606
+ const uiService = services?.uiService;
511
607
  &nbsp;
512
608
  const zoom = computed(<span class="fstat-no" title="function not covered" >(): number =&gt; <span class="cstat-no" title="statement not covered" >u</span>iService?</span>.get&lt;number&gt;('zoom') ?? 1);
513
609
  const showGuides = computed(<span class="fstat-no" title="function not covered" >(): boolean =&gt; <span class="cstat-no" title="statement not covered" >u</span>iService?</span>.get&lt;boolean&gt;('showGuides') ?? true);
@@ -532,7 +628,7 @@ export default defineComponent({
532
628
  case 'delete':
533
629
  return {
534
630
  type: 'button',
535
- icon: Delete,
631
+ icon: markRaw(Delete),
536
632
  tooltip: '刪除',
537
633
  disabled: () =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.get('node')<span class="branch-0 cbranch-no" title="branch not covered" >?.t</span>ype === NodeType.PAGE,
538
634
  handler: () =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.remove(services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.get('node')),
@@ -540,7 +636,7 @@ export default defineComponent({
540
636
  case 'undo':
541
637
  return {
542
638
  type: 'button',
543
- icon: Back,
639
+ icon: markRaw(Back),
544
640
  tooltip: '后退',
545
641
  disabled: () =&gt; !services<span class="branch-0 cbranch-no" title="branch not covered" >?.h</span>istoryService.state.canUndo,
546
642
  handler: () =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.undo(),
@@ -548,7 +644,7 @@ export default defineComponent({
548
644
  case 'redo':
549
645
  return {
550
646
  type: 'button',
551
- icon: Right,
647
+ icon: markRaw(Right),
552
648
  tooltip: '前进',
553
649
  disabled: () =&gt; !services<span class="branch-0 cbranch-no" title="branch not covered" >?.h</span>istoryService.state.canRedo,
554
650
  handler: () =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.redo(),
@@ -556,28 +652,28 @@ export default defineComponent({
556
652
  case 'zoom-in':
557
653
  return {
558
654
  type: 'button',
559
- icon: ZoomIn,
655
+ icon: markRaw(ZoomIn),
560
656
  tooltip: '放大',
561
657
  handler: zoomInHandler,
562
658
  };
563
659
  case 'zoom-out':
564
660
  return {
565
661
  type: 'button',
566
- icon: ZoomOut,
662
+ icon: markRaw(ZoomOut),
567
663
  tooltip: '縮小',
568
664
  handler: zoomOutHandler,
569
665
  };
570
666
  <span class="branch-7 cbranch-no" title="branch not covered" > case 'rule':</span>
571
667
  <span class="cstat-no" title="statement not covered" > return {</span>
572
668
  type: 'button',
573
- icon: ScaleToOriginal,
669
+ icon: markRaw(ScaleToOriginal),
574
670
  tooltip: showRule.value ? '隐藏标尺' : '显示标尺',
575
671
  handler: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >u</span>iService?</span>.set('showRule', !showRule.value),
576
672
  };
577
673
  <span class="branch-8 cbranch-no" title="branch not covered" > case 'guides':</span>
578
674
  <span class="cstat-no" title="statement not covered" > return {</span>
579
675
  type: 'button',
580
- icon: Grid,
676
+ icon: markRaw(Grid),
581
677
  tooltip: showGuides.value ? '隐藏参考线' : '显示参考线',
582
678
  handler: <span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >u</span>iService?</span>.set('showGuides', !showGuides.value),
583
679
  };
@@ -597,10 +693,17 @@ export default defineComponent({
597
693
  }
598
694
  return item.value.disabled;
599
695
  });
696
+ &nbsp;
697
+ const buttonHandler = (item: MenuButton | MenuComponent, event: MouseEvent) =&gt; {
698
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (disabled.value) <span class="cstat-no" title="statement not covered" >return;</span>
699
+ if (typeof (item as MenuButton).handler === 'function' &amp;&amp; services) {
700
+ (item as MenuButton).handler<span class="branch-0 cbranch-no" title="branch not covered" >?.(s</span>ervices, event);
701
+ }
702
+ };
600
703
  &nbsp;
601
704
  return {
602
- ZoomIn,
603
- ZoomOut,
705
+ ZoomIn: markRaw(ZoomIn),
706
+ ZoomOut: markRaw(ZoomOut),
604
707
  &nbsp;
605
708
  item,
606
709
  zoom,
@@ -623,10 +726,24 @@ export default defineComponent({
623
726
  }
624
727
  },
625
728
  &nbsp;
626
- buttonHandler(item: MenuButton | MenuComponent) {
627
- <span class="missing-if-branch" title="if path not taken" >I</span>if (disabled.value) <span class="cstat-no" title="statement not covered" >return;</span>
628
- if (typeof (item as MenuButton).handler === 'function') {
629
- (item as MenuButton).handler<span class="branch-0 cbranch-no" title="branch not covered" >?.(s</span>ervices);
729
+ clickHandler(item: MenuButton | MenuComponent, event: MouseEvent) {
730
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (props.eventType !== 'click') <span class="cstat-no" title="statement not covered" >return;</span>
731
+ if (item.type === 'button') {
732
+ buttonHandler(item, event);
733
+ }
734
+ },
735
+ &nbsp;
736
+ <span class="fstat-no" title="function not covered" > mousedownHandler(</span>item: MenuButton | MenuComponent, event: MouseEvent) {
737
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (props.eventType !== 'mousedown') <span class="cstat-no" title="statement not covered" >return;</span></span>
738
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (item.type === 'button') {</span>
739
+ <span class="cstat-no" title="statement not covered" > buttonHandler(</span>item, event);
740
+ }
741
+ },
742
+ &nbsp;
743
+ <span class="fstat-no" title="function not covered" > mouseupHandler(</span>item: MenuButton | MenuComponent, event: MouseEvent) {
744
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (props.eventType !== 'mouseup') <span class="cstat-no" title="statement not covered" >return;</span></span>
745
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (item.type === 'button') {</span>
746
+ <span class="cstat-no" title="statement not covered" > buttonHandler(</span>item, event);
630
747
  }
631
748
  },
632
749
  };
@@ -640,7 +757,7 @@ export default defineComponent({
640
757
  <div class='footer quiet pad2 space-top1 center small'>
641
758
  Code coverage generated by
642
759
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
643
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
760
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
644
761
  </div>
645
762
  <script src="../../prettify.js"></script>
646
763
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">79.26% </span>
26
+ <span class="strong">64.8% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>65/82</span>
28
+ <span class='fraction'>81/125</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">48.67% </span>
33
+ <span class="strong">40.97% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>55/113</span>
35
+ <span class='fraction'>59/144</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">74.07% </span>
40
+ <span class="strong">60.52% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>20/27</span>
42
+ <span class='fraction'>23/38</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.73% </span>
47
+ <span class="strong">71.17% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>63/71</span>
49
+ <span class='fraction'>79/111</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,6 +79,21 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
+ <td class="file low" data-value="ContentMenu.vue"><a href="ContentMenu.vue.html">ContentMenu.vue</a></td>
83
+ <td data-value="40" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 40%"></div><div class="cover-empty" style="width: 60%"></div></div>
85
+ </td>
86
+ <td data-value="40" class="pct low">40%</td>
87
+ <td data-value="30" class="abs low">12/30</td>
88
+ <td data-value="0" class="pct low">0%</td>
89
+ <td data-value="23" class="abs low">0/23</td>
90
+ <td data-value="25" class="pct low">25%</td>
91
+ <td data-value="8" class="abs low">2/8</td>
92
+ <td data-value="40" class="pct low">40%</td>
93
+ <td data-value="30" class="abs low">12/30</td>
94
+ </tr>
95
+
96
+ <tr>
82
97
  <td class="file high" data-value="Icon.vue"><a href="Icon.vue.html">Icon.vue</a></td>
83
98
  <td data-value="100" class="pic high">
84
99
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
@@ -110,17 +125,17 @@
110
125
 
111
126
  <tr>
112
127
  <td class="file medium" data-value="ToolButton.vue"><a href="ToolButton.vue.html">ToolButton.vue</a></td>
113
- <td data-value="77.41" class="pic medium">
114
- <div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
128
+ <td data-value="69.33" class="pic medium">
129
+ <div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
115
130
  </td>
116
- <td data-value="77.41" class="pct medium">77.41%</td>
117
- <td data-value="62" class="abs medium">48/62</td>
118
- <td data-value="47.22" class="pct low">47.22%</td>
119
- <td data-value="108" class="abs low">51/108</td>
120
- <td data-value="75" class="pct medium">75%</td>
121
- <td data-value="20" class="abs medium">15/20</td>
122
- <td data-value="88.46" class="pct high">88.46%</td>
123
- <td data-value="52" class="abs high">46/52</td>
131
+ <td data-value="69.33" class="pct medium">69.33%</td>
132
+ <td data-value="75" class="abs medium">52/75</td>
133
+ <td data-value="47.41" class="pct low">47.41%</td>
134
+ <td data-value="116" class="abs low">55/116</td>
135
+ <td data-value="69.56" class="pct medium">69.56%</td>
136
+ <td data-value="23" class="abs medium">16/23</td>
137
+ <td data-value="80.64" class="pct high">80.64%</td>
138
+ <td data-value="62" class="abs high">50/62</td>
124
139
  </tr>
125
140
 
126
141
  </tbody>
@@ -131,7 +146,7 @@
131
146
  <div class='footer quiet pad2 space-top1 center small'>
132
147
  Code coverage generated by
133
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- 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)
135
150
  </div>
136
151
  <script src="../../prettify.js"></script>
137
152
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
119
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -199,7 +199,7 @@ export default defineComponent({
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
202
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
202
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
203
203
  </div>
204
204
  <script src="../../prettify.js"></script>
205
205
  <script>
@@ -23,23 +23,23 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">78.57% </span>
26
+ <span class="strong">75% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>11/14</span>
28
+ <span class='fraction'>12/16</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">61.53% </span>
33
+ <span class="strong">45.83% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>16/26</span>
35
+ <span class='fraction'>11/24</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">83.33% </span>
40
+ <span class="strong">66.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>5/6</span>
42
+ <span class='fraction'>4/6</span>
43
43
  </div>
44
44
 
45
45
 
@@ -260,20 +260,20 @@ export default defineComponent({
260
260
  },
261
261
  &nbsp;
262
262
  setup() {
263
- const services = inject&lt;Services&gt;('services');
263
+ const { editorService, uiService } = inject&lt;Services&gt;('services') || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
264
264
  &nbsp;
265
- const root = computed(() =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.e</span>ditorService.get&lt;MApp&gt;('root'));
265
+ const root = computed(<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >e</span>ditorService?</span>.get&lt;MApp&gt;('root'));
266
266
  &nbsp;
267
267
  return {
268
268
  root,
269
- pageLength: computed(() =&gt; root.value<span class="branch-0 cbranch-no" title="branch not covered" >?.i</span>tems<span class="branch-0 cbranch-no" title="branch not covered" >?.l</span>ength || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>,
270
- showSrc: computed(() =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.u</span>iService.get&lt;boolean&gt;('showSrc')),
271
- columnWidth: computed(() =&gt; services<span class="branch-0 cbranch-no" title="branch not covered" >?.u</span>iService.get&lt;GetColumnWidth&gt;('columnWidth')),
269
+ pageLength: computed(() =&gt; editorService<span class="branch-0 cbranch-no" title="branch not covered" >?.g</span>et&lt;number&gt;('pageLength') || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>,
270
+ showSrc: computed(() =&gt; uiService<span class="branch-0 cbranch-no" title="branch not covered" >?.g</span>et&lt;boolean&gt;('showSrc')),
271
+ columnWidth: computed(() =&gt; uiService<span class="branch-0 cbranch-no" title="branch not covered" >?.g</span>et&lt;GetColumnWidth&gt;('columnWidth')),
272
272
  &nbsp;
273
273
  <span class="fstat-no" title="function not covered" > saveCode(</span>value: string) {
274
274
  <span class="cstat-no" title="statement not covered" > try {</span>
275
275
  // eslint-disable-next-line no-eval
276
- <span class="cstat-no" title="statement not covered" > services?</span>.editorService.set('root', eval(value));
276
+ <span class="cstat-no" title="statement not covered" > editorService?</span>.set('root', eval(value));
277
277
  } catch (e: any) {
278
278
  <span class="cstat-no" title="statement not covered" > console.</span>error(e);
279
279
  }
@@ -289,7 +289,7 @@ export default defineComponent({
289
289
  <div class='footer quiet pad2 space-top1 center small'>
290
290
  Code coverage generated by
291
291
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
292
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
293
293
  </div>
294
294
  <script src="../../prettify.js"></script>
295
295
  <script>
@@ -193,7 +193,7 @@ export default defineComponent({
193
193
  <div class='footer quiet pad2 space-top1 center small'>
194
194
  Code coverage generated by
195
195
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
196
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
196
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
197
197
  </div>
198
198
  <script src="../../prettify.js"></script>
199
199
  <script>
@@ -301,7 +301,7 @@ export default defineComponent({
301
301
  <div class='footer quiet pad2 space-top1 center small'>
302
302
  Code coverage generated by
303
303
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
304
- at Fri Apr 22 2022 12:15:01 GMT+0800 (China Standard Time)
304
+ at Sat May 07 2022 17:04:32 GMT+0800 (China Standard Time)
305
305
  </div>
306
306
  <script src="../../prettify.js"></script>
307
307
  <script>