From 5d15b8dd9f7b49fe3bb82948a2395acbcf0d2d0b Mon Sep 17 00:00:00 2001 From: pipipi-pikachu Date: Wed, 19 Jan 2022 14:19:45 +0000 Subject: [PATCH] deploy to github pages f51c474ccc1dca9eb3ce6f03e4d15e98a54ad5d8 --- css/app.01655098.css | 1 + css/app.63144576.css | 1 - index.html | 2 +- js/app.750017ba.js | 2 ++ js/app.750017ba.js.map | 1 + js/app.8d780616.js | 2 -- js/app.8d780616.js.map | 1 - 7 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 css/app.01655098.css delete mode 100644 css/app.63144576.css create mode 100644 js/app.750017ba.js create mode 100644 js/app.750017ba.js.map delete mode 100644 js/app.8d780616.js delete mode 100644 js/app.8d780616.js.map diff --git a/css/app.01655098.css b/css/app.01655098.css new file mode 100644 index 00000000..9c06e5b4 --- /dev/null +++ b/css/app.01655098.css @@ -0,0 +1 @@ +.hotkey-doc[data-v-0418e74e]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-0418e74e]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0}.hotkey-item[data-v-0418e74e]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-0418e74e]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-32a5341e]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 10px}.left[data-v-32a5341e],.menu-item[data-v-32a5341e],.right[data-v-32a5341e]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-32a5341e]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-32a5341e]{margin-left:4px}.left .menu-item[data-v-32a5341e]:hover{background-color:#f9f9f9}svg[data-v-21ca95cc],svg[data-v-48a14431],svg[data-v-692bbda6]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-d8c610c6]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-d8c610c6]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-d8c610c6]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-d8c610c6]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-d8c610c6]{position:absolute}.operate[data-v-d8c610c6]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-d8c610c6]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-d8c610c6]{overflow:visible}.clip-point.left-top[data-v-d8c610c6]{left:0;top:0}.clip-point.right-top[data-v-d8c610c6]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-d8c610c6]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-d8c610c6]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-d8c610c6]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-d8c610c6]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-d8c610c6]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-d8c610c6]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-d8c610c6],.clip-point.left-bottom.rotate-90[data-v-d8c610c6],.clip-point.left-top.rotate-0[data-v-d8c610c6],.clip-point.left.rotate-45[data-v-d8c610c6],.clip-point.right-bottom.rotate-0[data-v-d8c610c6],.clip-point.right-top.rotate-90[data-v-d8c610c6],.clip-point.right.rotate-45[data-v-d8c610c6],.clip-point.top.rotate-135[data-v-d8c610c6]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-d8c610c6],.clip-point.left-bottom.rotate-135[data-v-d8c610c6],.clip-point.left-top.rotate-45[data-v-d8c610c6],.clip-point.left.rotate-90[data-v-d8c610c6],.clip-point.right-bottom.rotate-45[data-v-d8c610c6],.clip-point.right-top.rotate-135[data-v-d8c610c6],.clip-point.right.rotate-90[data-v-d8c610c6],.clip-point.top.rotate-0[data-v-d8c610c6]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-d8c610c6],.clip-point.left-bottom.rotate-0[data-v-d8c610c6],.clip-point.left-top.rotate-90[data-v-d8c610c6],.clip-point.left.rotate-135[data-v-d8c610c6],.clip-point.right-bottom.rotate-90[data-v-d8c610c6],.clip-point.right-top.rotate-0[data-v-d8c610c6],.clip-point.right.rotate-135[data-v-d8c610c6],.clip-point.top.rotate-45[data-v-d8c610c6]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-d8c610c6],.clip-point.left-bottom.rotate-45[data-v-d8c610c6],.clip-point.left-top.rotate-135[data-v-d8c610c6],.clip-point.left.rotate-0[data-v-d8c610c6],.clip-point.right-bottom.rotate-135[data-v-d8c610c6],.clip-point.right-top.rotate-45[data-v-d8c610c6],.clip-point.right.rotate-0[data-v-d8c610c6],.clip-point.top.rotate-90[data-v-d8c610c6]{cursor:ew-resize}.editable-element-image[data-v-288ee59d]{position:absolute}.editable-element-image.lock .element-content[data-v-288ee59d]{cursor:default}.rotate-wrapper[data-v-288ee59d]{width:100%;height:100%}.element-content[data-v-288ee59d]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-288ee59d]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-288ee59d]{position:absolute}svg[data-v-722bf8fa]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-f0d6ea86]{cursor:text}.editable-element-text[data-v-58d3557f]{position:absolute}.editable-element-text.lock .element-content[data-v-58d3557f]{cursor:default}.rotate-wrapper[data-v-58d3557f]{width:100%;height:100%}.element-content[data-v-58d3557f]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-58d3557f]{position:relative}.drag-handler[data-v-58d3557f]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-58d3557f]{top:0}.drag-handler.bottom[data-v-58d3557f]{bottom:0}.editable-element-shape[data-v-4faf3734]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-4faf3734]{cursor:default}.rotate-wrapper[data-v-4faf3734]{width:100%;height:100%}.element-content[data-v-4faf3734]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-4faf3734]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-4faf3734]{pointer-events:all}.shape-text[data-v-4faf3734]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word;pointer-events:none}.shape-text.editable[data-v-4faf3734]{pointer-events:all}.shape-text.top[data-v-4faf3734]{justify-content:flex-start}.shape-text.middle[data-v-4faf3734]{justify-content:center}.shape-text.bottom[data-v-4faf3734]{justify-content:flex-end}.show-text[data-v-4faf3734]{pointer-events:none}.editable-element-shape[data-v-603a705d]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-603a705d],.editable-element-shape.lock .line-point[data-v-603a705d]{cursor:default}.element-content[data-v-603a705d]{width:100%;height:100%;position:relative}.element-content svg[data-v-603a705d]{transform-origin:0 0;overflow:visible}.line-path[data-v-603a705d],.line-point[data-v-603a705d]{pointer-events:all;cursor:move}.chart[data-v-3ac5559a]{display:flex}.chart-content[data-v-3ac5559a]{transform-origin:0 0}.chart-content{--theme-color-1:#666;--theme-color-2:#666;--theme-color-3:#666;--theme-color-4:#666;--theme-color-5:#666;--theme-color-6:#666;--theme-color-7:#666;--theme-color-8:#666;--theme-color-9:#666;--theme-color-10:#666;--grid-color:rgba(0,0,0,0.4)}.chart-content .ct-series-a .ct-line,.chart-content .ct-series-a .ct-point{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-area{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-bar{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-pie{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-donut{stroke:var(--theme-color-1)}.chart-content .ct-series-b .ct-line,.chart-content .ct-series-b .ct-point{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-area{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-bar{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-pie{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-donut{stroke:var(--theme-color-2)}.chart-content .ct-series-c .ct-line,.chart-content .ct-series-c .ct-point{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-area{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-bar{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-pie{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-donut{stroke:var(--theme-color-3)}.chart-content .ct-series-d .ct-line,.chart-content .ct-series-d .ct-point{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-area{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-bar{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-pie{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-donut{stroke:var(--theme-color-4)}.chart-content .ct-series-e .ct-line,.chart-content .ct-series-e .ct-point{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-area{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-bar{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-pie{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-donut{stroke:var(--theme-color-5)}.chart-content .ct-series-f .ct-line,.chart-content .ct-series-f .ct-point{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-area{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-bar{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-pie{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-donut{stroke:var(--theme-color-6)}.chart-content .ct-series-g .ct-line,.chart-content .ct-series-g .ct-point{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-area{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-bar{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-pie{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-donut{stroke:var(--theme-color-7)}.chart-content .ct-series-h .ct-line,.chart-content .ct-series-h .ct-point{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-area{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-bar{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-pie{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-donut{stroke:var(--theme-color-8)}.chart-content .ct-series-i .ct-line,.chart-content .ct-series-i .ct-point{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-area{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-bar{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-pie{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-donut{stroke:var(--theme-color-9)}.chart-content .ct-grid{stroke:var(--grid-color)}.chart-content .ct-label{fill:var(--grid-color);color:var(--grid-color)}.legends{height:20px;justify-content:center;font-size:14px}.legend,.legends{display:flex;align-items:center}.legend+.legend{margin-left:10px}.legend .block{width:10px;height:10px;margin-right:5px}.editable-element-chart[data-v-c09631b6]{position:absolute}.editable-element-chart.lock .element-content[data-v-c09631b6]{cursor:default}.rotate-wrapper[data-v-c09631b6]{width:100%;height:100%}.element-content[data-v-c09631b6]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-59f468e0]{border:0;outline:0}.editable-table[data-v-c0c56b6e],table[data-v-c0c56b6e]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-c0c56b6e]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-c0c56b6e]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-c0c56b6e]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-c0c56b6e]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-c0c56b6e]:last-child,table.theme.col-header tr .cell[data-v-c0c56b6e]:first-child,table.theme.row-footer tr:last-child .cell[data-v-c0c56b6e],table.theme.row-header tr:first-child .cell[data-v-c0c56b6e]{background-color:var(--themeColor)}table tr[data-v-c0c56b6e]{height:36px}table .cell[data-v-c0c56b6e]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-c0c56b6e]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-c0c56b6e]{min-height:32px;padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-c0c56b6e]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-c0c56b6e]{position:absolute;top:0;bottom:0;width:3px;background-color:#d14424;margin-left:-1px;opacity:0;z-index:2;cursor:col-resize}.editable-element-table[data-v-426704b7]{position:absolute}.editable-element-table.lock .element-content[data-v-426704b7]{cursor:default}.rotate-wrapper[data-v-426704b7]{width:100%;height:100%}.element-content[data-v-426704b7]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-426704b7]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-426704b7]{position:absolute;top:5px;left:5px;background-color:rgba(0,0,0,.5);color:#fff;padding:6px 12px;font-size:12px;transform-origin:0 0}.table-mask[data-v-426704b7]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-3168526a]{position:absolute}.editable-element-latex.lock .element-content[data-v-3168526a]{cursor:default}.rotate-wrapper[data-v-3168526a]{width:100%;height:100%}.element-content[data-v-3168526a]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-3168526a]{transform-origin:0 0;overflow:visible}.video-player[data-v-e716fb74]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:1;transform-origin:0 0}@media(min-width:900px){.video-player.playing .controller-mask[data-v-e716fb74],.video-player.playing .controller[data-v-e716fb74]{opacity:0}.video-player.playing:hover .controller-mask[data-v-e716fb74],.video-player.playing:hover .controller[data-v-e716fb74]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-e716fb74]{display:block}.video-player.hide-controller[data-v-e716fb74]{cursor:none}.video-player.hide-controller .controller-mask[data-v-e716fb74],.video-player.hide-controller .controller[data-v-e716fb74]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-e716fb74]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-e716fb74]{width:100%;height:100%}.controller-mask[data-v-e716fb74]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%;position:absolute;bottom:0;transition:all .3s ease}.controller[data-v-e716fb74]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-e716fb74]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-e716fb74]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-e716fb74]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-e716fb74]{opacity:0}.controller .bar-wrap .bar[data-v-e716fb74]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-e716fb74]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-e716fb74]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-e716fb74]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-e716fb74]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-e716fb74]{right:8px}.controller .icons .time[data-v-e716fb74]{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .icons .icon[data-v-e716fb74]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-e716fb74]{font-size:26px}.controller .icons .icon .icon-content[data-v-e716fb74]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-e716fb74]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-e716fb74]{opacity:.5}.controller .icons .icon.speed-icon[data-v-e716fb74]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-e716fb74]{width:70px;position:absolute;bottom:30px;left:-23px;background-color:#22211b;padding:5px 0;color:#ddd}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e716fb74]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e716fb74]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-e716fb74]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-e716fb74],.controller .icons .icon:hover .icon-content[data-v-e716fb74]{opacity:1}.controller .icons .volume[data-v-e716fb74]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-e716fb74]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-e716fb74]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-e716fb74]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-e716fb74]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-e716fb74]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons .loop[data-v-e716fb74]{display:inline-block;height:100%}.bezel[data-v-e716fb74]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-e716fb74]{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none;font-size:40px}.bezel .bezel-icon.bezel-transition[data-v-e716fb74]{-webkit-animation:bezel-hide-e716fb74 .5s linear;animation:bezel-hide-e716fb74 .5s linear}@-webkit-keyframes bezel-hide-e716fb74{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-e716fb74{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-e716fb74]{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.bezel .loading-icon .loading-hide[data-v-e716fb74]{display:none}.bezel .loading-icon .loading-dot[data-v-e716fb74]{-webkit-animation:loading-dot-fade-e716fb74 .8s ease infinite;animation:loading-dot-fade-e716fb74 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-e716fb74]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-e716fb74]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-e716fb74]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-e716fb74]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-e716fb74]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-e716fb74]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-e716fb74]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-e716fb74{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-e716fb74{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-7f80f8ee]{position:absolute}.editable-element-video.lock .handler-border[data-v-7f80f8ee]{cursor:default}.rotate-wrapper[data-v-7f80f8ee]{width:100%;height:100%}.element-content[data-v-7f80f8ee]{width:100%;height:100%;position:relative}.handler-border[data-v-7f80f8ee]{position:absolute;cursor:move}.handler-border.t[data-v-7f80f8ee]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-7f80f8ee]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-7f80f8ee]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-7f80f8ee]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-5cabbb47]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-5cabbb47],.controller[data-v-5cabbb47]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-5cabbb47]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-5cabbb47]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-5cabbb47]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-5cabbb47]{opacity:0}.controller .bar-wrap .bar[data-v-5cabbb47]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-5cabbb47]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-5cabbb47]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-5cabbb47]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-5cabbb47]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-5cabbb47]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-5cabbb47]{font-size:26px}.controller .icons .icon .icon-content[data-v-5cabbb47]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-5cabbb47],.controller .icons .icon:hover .icon-content[data-v-5cabbb47]{opacity:1}.controller .icons .volume[data-v-5cabbb47]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-5cabbb47]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-5cabbb47]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-5cabbb47]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-5cabbb47]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-5cabbb47]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .time[data-v-5cabbb47]{height:38px;position:absolute;right:20px;bottom:0;display:flex;align-items:center;line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .time .ptime[data-v-5cabbb47]{margin-right:2px}.controller .time .dtime[data-v-5cabbb47]{margin-left:2px}.editable-element-audio[data-v-66dd4448]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-66dd4448]{cursor:default}.rotate-wrapper[data-v-66dd4448]{width:100%;height:100%}.element-content[data-v-66dd4448]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-66dd4448]{cursor:move}.audio-player[data-v-66dd4448]{position:absolute}.mouse-selection[data-v-1619c258]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-1619c258]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-1619c258]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-1619c258]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-1619c258]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-9b94cc34]{width:100%;height:100%;overflow:visible;z-index:999;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-background[data-v-4d0018d8]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-62c9018e]{position:absolute;z-index:100}.alignment-line .line[data-v-62c9018e]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-62c9018e]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-62c9018e]{transform:translateX(-.5px);border-top-width:1px}.element-create-selection[data-v-a8c28cdc]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.selection[data-v-a8c28cdc]{position:absolute;opacity:.8}.selection[data-v-a8c28cdc]:not(.line){border:1px solid #d14424}.resize-handler[data-v-680e5917]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#fff;border-radius:1px}.resize-handler.bottom.rotate-135[data-v-680e5917],.resize-handler.left-bottom.rotate-90[data-v-680e5917],.resize-handler.left-top.rotate-0[data-v-680e5917],.resize-handler.left.rotate-45[data-v-680e5917],.resize-handler.right-bottom.rotate-0[data-v-680e5917],.resize-handler.right-top.rotate-90[data-v-680e5917],.resize-handler.right.rotate-45[data-v-680e5917],.resize-handler.top.rotate-135[data-v-680e5917]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-680e5917],.resize-handler.left-bottom.rotate-135[data-v-680e5917],.resize-handler.left-top.rotate-45[data-v-680e5917],.resize-handler.left.rotate-90[data-v-680e5917],.resize-handler.right-bottom.rotate-45[data-v-680e5917],.resize-handler.right-top.rotate-135[data-v-680e5917],.resize-handler.right.rotate-90[data-v-680e5917],.resize-handler.top.rotate-0[data-v-680e5917]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-680e5917],.resize-handler.left-bottom.rotate-0[data-v-680e5917],.resize-handler.left-top.rotate-90[data-v-680e5917],.resize-handler.left.rotate-135[data-v-680e5917],.resize-handler.right-bottom.rotate-90[data-v-680e5917],.resize-handler.right-top.rotate-0[data-v-680e5917],.resize-handler.right.rotate-135[data-v-680e5917],.resize-handler.top.rotate-45[data-v-680e5917]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-680e5917],.resize-handler.left-bottom.rotate-45[data-v-680e5917],.resize-handler.left-top.rotate-135[data-v-680e5917],.resize-handler.left.rotate-0[data-v-680e5917],.resize-handler.right-bottom.rotate-135[data-v-680e5917],.resize-handler.right-top.rotate-45[data-v-680e5917],.resize-handler.right.rotate-0[data-v-680e5917],.resize-handler.top.rotate-90[data-v-680e5917]{cursor:ew-resize}.border-line[data-v-630e246b]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-630e246b]{border-top-width:1px}.border-line.bottom[data-v-630e246b]{border-bottom-width:1px}.border-line.left[data-v-630e246b]{border-left-width:1px}.border-line.right[data-v-630e246b]{border-right-width:1px}.border-line.wide[data-v-630e246b]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-630e246b]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-630e246b]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-630e246b]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-630e246b]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-2d010d5c]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-9a549510]{position:absolute;width:10px;height:10px;top:-25px;margin-left:-5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:-webkit-grab;cursor:grab}.rotate-handler[data-v-9a549510]:active{cursor:-webkit-grabbing;cursor:grabbing}.image-element-operate.cliping[data-v-24706869]{visibility:hidden}.link-handler[data-v-3250b72d]{height:30px;position:absolute;left:0;font-size:12px;padding:0 10px;background-color:#fff;box-shadow:3px 3px 3px rgba(0,0,0,.15);display:flex;align-items:center;color:#d14424}.link[data-v-3250b72d]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-3250b72d]{display:flex;align-items:center}.btns .btn[data-v-3250b72d]{word-break:keep-all;cursor:pointer}.operate[data-v-71428444]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.operate.multi-select[data-v-71428444]{opacity:0}.animation-index[data-v-71428444]{position:absolute;top:0;left:-24px;font-size:12px;width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.base-element-image[data-v-0b1f9460]{position:absolute}.rotate-wrapper[data-v-0b1f9460]{width:100%;height:100%}.element-content[data-v-0b1f9460]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-0b1f9460]{width:100%;height:100%;overflow:hidden;position:relative}.base-element-text[data-v-2ec235c4],.element-content img[data-v-0b1f9460]{position:absolute}.rotate-wrapper[data-v-2ec235c4]{width:100%;height:100%}.element-content[data-v-2ec235c4]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-2ec235c4]{position:relative}.base-element-shape[data-v-68d8af98]{position:absolute}.rotate-wrapper[data-v-68d8af98]{width:100%;height:100%}.element-content[data-v-68d8af98]{width:100%;height:100%;position:relative}.element-content svg[data-v-68d8af98]{transform-origin:0 0;overflow:visible}.shape-text[data-v-68d8af98]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word}.shape-text.top[data-v-68d8af98]{justify-content:flex-start}.shape-text.middle[data-v-68d8af98]{justify-content:center}.shape-text.bottom[data-v-68d8af98]{justify-content:flex-end}.editable-element-shape[data-v-4032440c]{position:absolute}.element-content[data-v-4032440c]{width:100%;height:100%;position:relative}.element-content svg[data-v-4032440c]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-60d9ae43]{position:absolute}.element-content[data-v-60d9ae43],.rotate-wrapper[data-v-60d9ae43]{width:100%;height:100%}.need-scale[data-v-60d9ae43]{zoom:.1}.static-table[data-v-74b60291],table[data-v-74b60291]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-74b60291]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-74b60291]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-74b60291]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-74b60291]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-74b60291]:last-child,table.theme.col-header tr .cell[data-v-74b60291]:first-child,table.theme.row-footer tr:last-child .cell[data-v-74b60291],table.theme.row-header tr:first-child .cell[data-v-74b60291]{background-color:var(--themeColor)}table tr[data-v-74b60291]{height:36px}table .cell[data-v-74b60291]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-74b60291]{min-height:32px;padding:5px;line-height:1.5}.base-element-table[data-v-3bbcc75c]{position:absolute}.rotate-wrapper[data-v-3bbcc75c]{width:100%;height:100%}.element-content[data-v-3bbcc75c]{width:100%;height:100%;position:relative}.base-element-latex[data-v-4118f3dd]{position:absolute}.rotate-wrapper[data-v-4118f3dd]{width:100%;height:100%}.element-content[data-v-4118f3dd]{width:100%;height:100%;position:relative}.element-content svg[data-v-4118f3dd]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-1c831c75]{position:absolute}.rotate-wrapper[data-v-1c831c75]{width:100%;height:100%}.element-content[data-v-1c831c75]{width:100%;height:100%;background-color:#000;background-position:50%;background-size:contain;background-repeat:no-repeat;display:flex;justify-content:center;align-items:center}.icon[data-v-1c831c75]{font-size:140px;color:#aaa}.base-element-audio[data-v-513e91c4]{position:absolute}.rotate-wrapper[data-v-513e91c4]{width:100%;height:100%}.element-content[data-v-513e91c4]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-513e91c4]{cursor:move}.thumbnail-slide[data-v-06a163ec]{background-color:#fff;overflow:hidden}.elements[data-v-06a163ec]{transform-origin:0 0}.background[data-v-06a163ec]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-06a163ec]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-5a0d0b33]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-5a0d0b33]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-5a0d0b33]{border-bottom:2px solid #d14424}.input[data-v-5a0d0b33]{width:100%;height:32px}.preview[data-v-5a0d0b33]{margin-top:12px}.thumbnail[data-v-5a0d0b33]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-5a0d0b33]{margin-top:20px;text-align:right}.canvas[data-v-1386e8fc]{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.viewport-wrapper[data-v-1386e8fc]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-1386e8fc]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-0f50713a]{width:340px;max-height:540px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-0f50713a]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.shape-list[data-v-0f50713a]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-0f50713a]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-0f50713a]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-0f50713a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center}.shape-content:hover .shape-path[data-v-0f50713a]{stroke:#d14424}.shape-content svg[data-v-0f50713a]:not(:root){overflow:visible}.line-pool[data-v-78517932]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-78517932]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.line-list[data-v-78517932]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-78517932]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-78517932]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-78517932]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-78517932]:hover{color:#d14424}.line-content svg[data-v-78517932]:not(:root){overflow:visible}.chart-pool[data-v-ab6a141a]{width:120px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-ab6a141a]{width:32%;margin-bottom:2%;height:0;padding-bottom:32%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-ab6a141a]:not(:nth-child(3n)){margin-right:2%}.chart-content[data-v-ab6a141a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-ab6a141a]:hover{color:#d14424}.table-generator[data-v-e325ce98]{width:100%;margin-top:-12px}.title[data-v-e325ce98]{height:28px;line-height:28px;background-color:#ededed;margin:0 -12px 12px -12px;padding:0 14px;font-size:12px;display:flex;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.title .right[data-v-e325ce98]{cursor:pointer}.title .right[data-v-e325ce98]:hover{color:#d14424}table[data-v-e325ce98]{border-collapse:separate}td[data-v-e325ce98]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-e325ce98]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-e325ce98]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-e325ce98]{width:230px}.custom .row[data-v-e325ce98]{display:flex;align-items:center}.custom .row+.row[data-v-e325ce98]{margin-top:10px}.btns[data-v-e325ce98]{margin-top:10px;text-align:right}.btns .btn[data-v-e325ce98]{margin-left:10px}.media-input[data-v-4916d8ab]{width:480px}.tabs[data-v-4916d8ab]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-4916d8ab]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-4916d8ab]{border-bottom:2px solid #d14424}.btns[data-v-4916d8ab]{margin-top:10px;text-align:right}.latex-editor[data-v-129e1afa]{height:560px}.container[data-v-129e1afa]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-129e1afa]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-129e1afa]{flex:1}.input-area textarea[data-v-129e1afa]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-129e1afa]:focus{box-shadow:none!important}.preview[data-v-129e1afa]{height:160px;display:flex;justify-content:center;align-items:center;text-align:center;margin-top:20px;border:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.placeholder[data-v-129e1afa]{color:#888}.preview-content[data-v-129e1afa]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-129e1afa]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-129e1afa],.tabs[data-v-129e1afa]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-129e1afa]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-129e1afa]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-129e1afa]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-129e1afa]{border-left:1px solid #eee}.content[data-v-129e1afa]{height:calc(100% - 40px);font-size:13px}.formula[data-v-129e1afa]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-129e1afa]{margin-top:10px}.formula-item .formula-title[data-v-129e1afa]{margin-bottom:5px}.formula-item .formula-item-content[data-v-129e1afa]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-129e1afa]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-129e1afa]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-129e1afa]{border-bottom:2px solid #d14424}.symbol[data-v-129e1afa]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-129e1afa]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-129e1afa]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-129e1afa]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-129e1afa]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-129e1afa]{margin-left:10px}.canvas-tool[data-v-4ae7c9aa]{position:relative;border-bottom:1px solid #eee;background-color:#fff;display:flex;justify-content:space-between;padding:0 10px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.left-handler[data-v-4ae7c9aa]{display:flex;align-items:center}.add-element-handler[data-v-4ae7c9aa]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-4ae7c9aa]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-4ae7c9aa]{opacity:.5}.right-handler[data-v-4ae7c9aa]{display:flex;align-items:center}.right-handler .text[data-v-4ae7c9aa]{width:40px;text-align:center}.right-handler .viewport-size[data-v-4ae7c9aa]{font-size:13px}.layout-pool[data-v-741b366e]{width:394px;height:500px;padding:2px;margin-right:-12px;padding-right:12px;overflow:auto;display:flex;flex-wrap:wrap;align-content:flex-start}.layout-item[data-v-741b366e]{width:48%;margin-bottom:4%}.layout-item[data-v-741b366e]:not(:nth-child(2n)){margin-right:4%}.layout-item .thumbnail[data-v-741b366e]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-741b366e]:hover{outline-color:#d14424}.thumbnails[data-v-ec4c62e4]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.add-slide[data-v-ec4c62e4]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-ec4c62e4]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-ec4c62e4]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-ec4c62e4]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-ec4c62e4]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-ec4c62e4]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-ec4c62e4]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-ec4c62e4]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-ec4c62e4]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-ec4c62e4]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-ec4c62e4],.thumbnail-item.selected .thumbnail[data-v-ec4c62e4]{outline-color:#d14424}.label[data-v-ec4c62e4]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-ec4c62e4]{position:relative;left:-4px}.label[data-v-ec4c62e4]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-f62a02b6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-f62a02b6]{flex:3}.color-btn[data-v-39016b60]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-39016b60]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12)}.color-btn-icon[data-v-39016b60]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-35c4c4a3]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-35c4c4a3]{text-align:right}.row[data-v-c77a6414]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-c77a6414]{text-align:right}.slider[data-v-c77a6414]{flex:3}.text-style-panel[data-v-2d6233f4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-2d6233f4]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-2d6233f4]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-2d6233f4]{width:50%;height:50px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer;transition:all .2s}.preset-style-item[data-v-2d6233f4]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-2d6233f4]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-2d6233f4]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-2d6233f4]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-2d6233f4]{width:16px;height:3px;margin-top:1px}.row[data-v-7bd50f1a],.row[data-v-181ae0aa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-181ae0aa]{text-align:right}.filter[data-v-181ae0aa]{font-size:12px}.filter-item[data-v-181ae0aa]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-181ae0aa]{width:60px}.filter-item .filter-slider[data-v-181ae0aa]{flex:1;margin:0 6px}.row[data-v-64e5a614]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-64e5a614]{text-align:right}.origin-image[data-v-64e5a614]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-64e5a614]{width:100%;margin-bottom:10px}.btn-icon[data-v-64e5a614]{margin-right:3px}.clip[data-v-64e5a614]{width:260px;font-size:12px}.clip .title[data-v-64e5a614]{margin-bottom:5px}.shape-clip[data-v-64e5a614]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-64e5a614]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-64e5a614]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-64e5a614]{background-color:#ccc}.shape-clip-item .shape[data-v-64e5a614]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-0e201fca]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-0e201fca]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-0e201fca]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-0e201fca]{width:16px;height:3px;margin-top:1px}.slider[data-v-0e201fca]{flex:3}.row[data-v-cbc4d7fa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-cbc4d7fa]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-cbc4d7fa]{margin-left:8px}.line-wrapper[data-v-cbc4d7fa]{overflow:visible}.line-btn-icon[data-v-cbc4d7fa]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-cbc4d7fa]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-cbc4d7fa]{margin-top:10px}.chart-data-editor[data-v-9a62f784]{width:600px;position:relative}.editor-content[data-v-9a62f784]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-9a62f784]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.temp-range[data-v-9a62f784]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-9a62f784]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-9a62f784]{border-top-width:1px}.range-line.b[data-v-9a62f784]{border-bottom-width:1px}.range-line.l[data-v-9a62f784]{border-left-width:1px}.range-line.r[data-v-9a62f784]{border-right-width:1px}.resizable[data-v-9a62f784]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-9a62f784]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-9a62f784]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-9a62f784]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;table-layout:fixed}table td[data-v-9a62f784]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-9a62f784]{background-color:rgba(209,68,36,.1)}table .item[data-v-9a62f784]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-9a62f784]{background-color:rgba(209,68,36,.02)}.btns[data-v-9a62f784]{margin-top:10px;display:flex;justify-content:space-between}.row[data-v-ee2d8b14]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-ee2d8b14]{width:100%}.btn-icon[data-v-ee2d8b14]{margin-right:3px}.color-btn-wrap[data-v-ee2d8b14]{position:relative}.delete-color-btn[data-v-ee2d8b14]{position:absolute;width:30px;right:2px;top:2px;bottom:2px;display:flex;justify-content:center;align-items:center;background-color:#fff;cursor:pointer}.preset-themes[data-v-ee2d8b14]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-ee2d8b14]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-ee2d8b14]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-ee2d8b14]{width:20px;height:20px}.row[data-v-72e00692]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-72e00692]{margin-bottom:18px}.switch-wrapper[data-v-72e00692]{text-align:right}.text-color-btn[data-v-72e00692]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-72e00692]{width:16px;height:3px;margin-top:1px}.set-count[data-v-72e00692]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-72e00692]{padding:4px 8px}.set-count .count-text[data-v-72e00692]{flex:1;text-align:center;margin:0 8px}.row[data-v-61bcaa2a],.row[data-v-69f903b1]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-61bcaa2a],.title[data-v-61bcaa2a]{margin-bottom:10px}.background-image[data-v-61bcaa2a]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-61bcaa2a]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-61bcaa2a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.row[data-v-80767a46]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-80767a46]{height:32px}.switch-wrapper[data-v-80767a46]{text-align:right}.row[data-v-3476ee65]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-3476ee65]{margin-bottom:10px}.label[data-v-3476ee65]{text-align:center}.btn-icon[data-v-3476ee65]{margin-right:3px}.icon-btn[data-v-3476ee65]{cursor:pointer}.element-animation-panel[data-v-696c81e2]{height:100%;display:flex;flex-direction:column}.element-animation[data-v-696c81e2]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-696c81e2]{width:100%}.duration[data-v-696c81e2]{width:100%;display:flex;align-items:center}.tip[data-v-696c81e2]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-696c81e2]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;padding-right:12px;position:relative}.animation-pool .mask[data-v-696c81e2]{width:400px;height:500px;position:absolute;top:0;left:0}.type-title[data-v-696c81e2]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.pool-item-wrapper[data-v-696c81e2]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-696c81e2]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-696c81e2]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-696c81e2]{background-color:#f9f9f9}.animation-sequence[data-v-696c81e2]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-696c81e2]{height:36px;display:flex;align-items:center;border:1px solid #eee;padding:6px;border-radius:2px;margin-bottom:8px;cursor:-webkit-grab;cursor:grab}.sequence-item[data-v-696c81e2]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item.active[data-v-696c81e2]{border-color:#d14424}.sequence-item .index[data-v-696c81e2]{flex:1}.sequence-item .text[data-v-696c81e2]{flex:6}.sequence-item .handler[data-v-696c81e2]{flex:2;font-size:15px;text-align:right}.sequence-item .handler-btn[data-v-696c81e2]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-0e2f846d]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-0e2f846d]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-0e2f846d]{margin-bottom:10px}.title.dropdown[data-v-0e2f846d]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-0e2f846d]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-0e2f846d]{transform:rotate(-90deg)}.background-image-wrapper[data-v-0e2f846d]{margin-bottom:10px}.background-image[data-v-0e2f846d]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-0e2f846d]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-0e2f846d]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.theme-list[data-v-0e2f846d]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-0e2f846d]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-0e2f846d]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-0e2f846d]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:box-shadow .2s}.theme-item .theme-item-content[data-v-0e2f846d]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-0e2f846d]{font-size:16px}.theme-item .color-block[data-v-0e2f846d]{width:28px;height:10px;margin-top:5px}.slider[data-v-0e2f846d]{flex:3}.animation-pool[data-v-251ceb05]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-251ceb05]{width:50%;height:115px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:25px 0 15px 0;position:relative;cursor:pointer}.animation-item.active[data-v-251ceb05]{border-color:#d14424;z-index:1}.animation-item[data-v-251ceb05]:nth-child(2n){margin-left:-1px}.animation-item[data-v-251ceb05]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-251ceb05]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-251ceb05 .3s linear;animation:fade-251ceb05 .3s linear}.animation-block.slideX[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-251ceb05 .3s linear;animation:slideX-251ceb05 .3s linear}.animation-block.slideY[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-251ceb05 .3s linear;animation:slideY-251ceb05 .3s linear}.animation-text[data-v-251ceb05]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-251ceb05{0%{opacity:0}to{opacity:1}}@keyframes fade-251ceb05{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-251ceb05{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-251ceb05{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-251ceb05{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-251ceb05{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-88d13362]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-6b8c5938]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-6b8c5938]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-6b8c5938]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-6b8c5938]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-6b8c5938]{padding:5px 12px;margin:0 -12px;flex:1;font-size:18px;overflow:auto;overflow:overlay;display:flex;flex-wrap:wrap;align-content:flex-start}.symbol-panel .symbol-item[data-v-6b8c5938]{width:18%;margin-bottom:2.5%;height:0;padding-bottom:18%;position:relative;cursor:pointer;border:1px solid #eee}.symbol-panel .symbol-item[data-v-6b8c5938]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-6b8c5938]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-6b8c5938]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-0df9576a]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-0df9576a]{height:40px;font-size:12px;flex-shrink:0;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tab[data-v-0df9576a]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-0df9576a]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-0df9576a]{border-left:1px solid #eee}.content[data-v-0df9576a]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-5a6e24c6]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9}.remark textarea[data-v-5a6e24c6]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px;font-size:12px;background-color:transparent;position:absolute;top:0;right:0;bottom:0;left:0}.resize-handler[data-v-5a6e24c6]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.pptist-editor[data-v-55178b6a]{height:100%}.layout-header[data-v-55178b6a]{height:40px}.layout-content[data-v-55178b6a]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-55178b6a]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-55178b6a]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-55178b6a]{height:40px}.layout-content-right[data-v-55178b6a]{width:260px;height:100%}.screen-element-video[data-v-a45a17a4]{position:absolute}.element-content[data-v-a45a17a4],.rotate-wrapper[data-v-a45a17a4]{width:100%;height:100%}.screen-element-audio[data-v-b08df80e]{position:absolute}.rotate-wrapper[data-v-b08df80e]{width:100%;height:100%}.element-content[data-v-b08df80e]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-b08df80e]{display:block}.audio-icon[data-v-b08df80e]{cursor:pointer}.audio-player[data-v-b08df80e]{position:absolute;display:none}.link[data-v-3b227002]{cursor:pointer}.screen-slide[data-v-7827b40a]{position:absolute;top:0;left:0;transform-origin:0 0}.background[data-v-7827b40a]{width:100%;height:100%;background-position:50%;position:absolute}.slide-thumbnails[data-v-2236d5e3]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-2236d5e3]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-2236d5e3]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-2236d5e3]:hover{color:#d14424}.slide-thumbnails-content[data-v-2236d5e3]{height:calc(100% - 100px);padding:20px 30px 30px 30px;display:flex;flex-wrap:wrap;align-content:flex-start;overflow:auto;overflow:overlay}.slide-thumbnails-content .thumbnail[data-v-2236d5e3]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-2236d5e3]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-2236d5e3]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-7ff9fa00]{position:fixed;top:0;bottom:0;left:0;right:0;z-index:8;cursor:none}.blackboard[data-v-7ff9fa00]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-7ff9fa00]{position:absolute;top:0;right:0;bottom:0;left:0}.eraser[data-v-7ff9fa00],.pen[data-v-7ff9fa00]{pointer-events:none;position:fixed;z-index:9}.eraser .icon[data-v-7ff9fa00],.pen .icon[data-v-7ff9fa00]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-7ff9fa00]{display:flex;justify-content:center;align-items:center;border-radius:50%;border:4px solid rgba(85,85,85,.15);color:rgba(85,85,85,.75)}.writing-board-tool[data-v-7a2e5324]{font-size:12px}.writing-board-tool .tools[data-v-7a2e5324]{height:50px;position:fixed;bottom:5px;left:5px;z-index:11;padding:12px;background-color:#eee;border-radius:2px;display:flex;align-items:center}.writing-board-tool .btn[data-v-7a2e5324]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-7a2e5324]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-7a2e5324]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-7a2e5324]{font-size:20px}.writing-board-tool .colors[data-v-7a2e5324]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-7a2e5324]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-7a2e5324]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-7a2e5324]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-7a2e5324]{margin-left:8px}.pptist-screen[data-v-1d67bb30]{width:100%;height:100%;position:relative;background-color:#111}.slide-list[data-v-1d67bb30]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-1d67bb30]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-1d67bb30]{z-index:2}.slide-item.hide[data-v-1d67bb30]{opacity:0}.slide-item.turning-mode-no.before[data-v-1d67bb30]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-1d67bb30]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-1d67bb30]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-1d67bb30],.slide-item.turning-mode-fade.before[data-v-1d67bb30]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-1d67bb30]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-1d67bb30]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-1d67bb30]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-1d67bb30]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-1d67bb30]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-1d67bb30]{transform:translateY(100%)}.slide-content[data-v-1d67bb30]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.tools[data-v-1d67bb30]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10;cursor:pointer}.tool-btn[data-v-1d67bb30]{opacity:.35}.tool-btn[data-v-1d67bb30]:hover{opacity:.9}.tool-btn+.tool-btn[data-v-1d67bb30]{margin-left:8px}.page-number[data-v-1d67bb30]{position:fixed;bottom:8px;right:8px;padding:8px 12px;color:#666;background-color:#eee;border-radius:2px;z-index:10;cursor:pointer}.mobile[data-v-72b587f9]{height:100%;overflow:auto;background-color:#f9f9f9}.tip[data-v-72b587f9]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-72b587f9]{padding:10px}.thumbnail-item[data-v-72b587f9]{display:flex;justify-content:center;align-items:center;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.thumbnail-item+.thumbnail-item[data-v-72b587f9]{margin-top:10px}#app{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word}.ProseMirror-static:not(.ProseMirror-static),.ProseMirror:not(.ProseMirror-static){-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ProseMirror-static ::-moz-selection,.ProseMirror ::-moz-selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static ::selection,.ProseMirror ::selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static p+p,.ProseMirror p+p{margin-top:5px}.ProseMirror-static ul,.ProseMirror ul{list-style-type:disc;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ul li,.ProseMirror ul li{list-style-type:disc}.ProseMirror-static ol,.ProseMirror ol{list-style-type:decimal;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ol li,.ProseMirror ol li{list-style-type:decimal}.ProseMirror-static code,.ProseMirror code{background-color:#eee;padding:1px 3px;margin:0 1px;border-radius:2px;font-family:inherit}.ProseMirror-static blockquote,.ProseMirror blockquote{overflow:hidden;padding-right:1.2em;padding-left:1.2em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ProseMirror-selectednode{outline:none!important}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}body,html{height:100%;overflow:hidden;background-color:#fff;color:#41464b}li,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}::-webkit-scrollbar{width:5px;height:5px;background-color:#fff}::-webkit-scrollbar-thumb{background-color:#c1c1c1}.ant-popover{padding-top:5px!important}.ant-popover-arrow{display:none}.ant-popover-inner{box-shadow:3px 3px 3px rgba(0,0,0,.15);border:1px solid #eee}.ant-popover-inner-content{padding:12px!important}.ant-dropdown{min-width:120px}.ant-dropdown-menu{box-shadow:3px 3px 3px rgba(0,0,0,.15)}.ant-dropdown-menu-item:hover{background-color:rgba(209,68,36,.2)}.ant-btn.no-padding{padding:0}.ant-radio-button-wrapper{text-align:center}.ant-slider-track{background-color:#d14424}.ant-slider-handle{border-color:#d14424}.ant-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:rgba(209,68,36,.2)}.ant-tooltip-inner{font-size:12px}@font-face{font-family:仓耳小丸子;src:url(../fonts/仓耳小丸子.676e187a.ttf)}@font-face{font-family:优设标题黑;src:url(../fonts/优设标题黑.1726685c.ttf)}@font-face{font-family:峰广明锐体;src:url(../fonts/峰广明锐体.8bdb14f7.ttf)}@font-face{font-family:摄图摩登小方体;src:url(../fonts/摄图摩登小方体.de722238.ttf)}@font-face{font-family:站酷快乐体;src:url(../fonts/站酷快乐体.0aceab97.ttf)}@font-face{font-family:字制区喜脉体;src:url(../fonts/字制区喜脉体.fc4a0c7d.ttf)}@font-face{font-family:素材集市康康体;src:url(../fonts/素材集市康康体.8db9d61f.ttf)}@font-face{font-family:联盟起艺卢帅正锐黑体;src:url(../fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf)}@font-face{font-family:素材集市酷方体;src:url(../fonts/素材集市酷方体.8d33b29e.ttf)}@font-face{font-family:途牛类圆体;src:url(../fonts/途牛类圆体.abaea3c4.ttf)}@font-face{font-family:锐字真言体;src:url(../fonts/锐字真言体.1583afec.ttf)}@font-face{font-family:阿里汉仪智能黑体;src:url(../fonts/阿里汉仪智能黑体.08b44aa7.ttf)}.input[data-v-d6089858]{display:none}.checkbox-button[data-v-7cae2b90]{outline:0;background-color:#fff;border:1px solid #d9d9d9;font-size:13px;padding:0 15px;height:32px;text-align:center;cursor:pointer}.checkbox-button[data-v-7cae2b90]:hover{color:#d14424}.checkbox-button.checked[data-v-7cae2b90]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-7cae2b90]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-7dafd0a9]{display:flex;align-items:center}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.checkerboard[data-v-0a544b87]{background-size:contain}.alpha-checkboard-wrap[data-v-6f2cb744],.alpha[data-v-6f2cb744],.checkerboard[data-v-0a544b87]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-6f2cb744]{overflow:hidden}.alpha-gradient[data-v-6f2cb744]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-6f2cb744]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-6f2cb744]{z-index:2;position:absolute}.alpha-picker[data-v-6f2cb744]{cursor:pointer;width:4px;height:8px;box-shadow:0 0 2px rgba(0,0,0,.6);background:#fff;margin-top:1px;transform:translateX(-2px)}.hue[data-v-1766620e]{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);position:absolute;top:0;right:0;bottom:0;left:0}.hue-container[data-v-1766620e]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-1766620e]{z-index:2;position:absolute;top:0}.hue-picker[data-v-1766620e]{cursor:pointer;margin-top:1px;width:4px;height:8px;box-shadow:0 0 2px rgba(0,0,0,.6);background:#fff;transform:translateX(-2px)}.saturation-black[data-v-8982eb4a],.saturation-white[data-v-8982eb4a],.saturation[data-v-8982eb4a]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-8982eb4a]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-8982eb4a]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-8982eb4a]{cursor:pointer;position:absolute}.saturation-circle[data-v-8982eb4a]{width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.editable-input[data-v-00ea8dfc]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-00ea8dfc]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-00ea8dfc]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-00ea8dfc]{text-transform:capitalize}.color-picker[data-v-210672ee]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-210672ee]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-210672ee]{display:flex}.picker-sliders[data-v-210672ee]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-210672ee]{position:relative;height:10px}.picker-alpha-wrap[data-v-210672ee]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-210672ee]{width:24px;height:24px;position:relative;margin-top:4px;margin-right:4px;outline:1px dashed hsla(0,0%,40%,.12)}.picker-color-wrap .checkerboard[data-v-210672ee]{background-size:auto}.picker-current-color[data-v-210672ee]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-210672ee]{margin-bottom:8px}.picker-presets[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-210672ee]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-210672ee]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-presets[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-210672ee]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-210672ee]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-210672ee]{width:100%;height:0;padding-bottom:100%;position:relative;cursor:pointer}.recent-colors-title[data-v-210672ee]{font-size:12px;margin-bottom:4px}.recent-colors[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.fullscreen-spin[data-v-6275c730]{position:fixed;top:0;bottom:0;left:0;right:0;z-index:100;display:flex;justify-content:center;align-items:center;background-color:hsla(0,0%,94.5%,.7)}.menu-content[data-v-eb1555e8]{width:170px;padding:5px 0;background:#fff;border:1px solid #eee;box-shadow:3px 3px 3px rgba(0,0,0,.15);border-radius:2px;list-style:none;margin:0}.menu-item[data-v-eb1555e8]{padding:0 20px;color:#555;font-size:12px;transition:all .1s;white-space:nowrap;height:30px;line-height:30px;background-color:#fff;cursor:pointer}.menu-item:not(.disable):hover>.menu-item-content>.sub-menu[data-v-eb1555e8]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-eb1555e8]:after{transform:scale(1)}.menu-item[data-v-eb1555e8]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-eb1555e8]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-eb1555e8]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-eb1555e8]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-eb1555e8]:before{content:"";display:inline-block;width:8px;height:8px;border-width:1px;border-style:solid;border-color:#666 #666 transparent transparent;position:absolute;right:0;top:50%;transform:translateY(-50%) rotate(45deg)}.menu-item-content.has-children.has-handler[data-v-eb1555e8]:after{content:"";display:inline-block;width:1px;height:24px;background-color:#f1f1f1;position:absolute;right:18px;top:3px;transform:scale(0);transition:transform .2s}.menu-item-content .sub-text[data-v-eb1555e8]{opacity:.6}.menu-item-content .sub-menu[data-v-eb1555e8]{width:120px;position:absolute;display:none;left:112%;top:-6px}.mask{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:9998}.contextmenu{position:fixed;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} \ No newline at end of file diff --git a/css/app.63144576.css b/css/app.63144576.css deleted file mode 100644 index 84fe138b..00000000 --- a/css/app.63144576.css +++ /dev/null @@ -1 +0,0 @@ -.hotkey-doc[data-v-0418e74e]{height:100%;overflow:auto;font-size:12px;margin:0 -24px;padding:0 24px}.title[data-v-0418e74e]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0}.hotkey-item[data-v-0418e74e]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-0418e74e]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor-header[data-v-32a5341e]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 10px}.left[data-v-32a5341e],.menu-item[data-v-32a5341e],.right[data-v-32a5341e]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-32a5341e]{height:100%;font-size:14px;padding:0 10px;transition:background-color .2s;cursor:pointer}.menu-item .text[data-v-32a5341e]{margin-left:4px}.left .menu-item[data-v-32a5341e]:hover{background-color:#f9f9f9}svg[data-v-21ca95cc],svg[data-v-48a14431],svg[data-v-692bbda6]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-430c7e6e]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-430c7e6e]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-430c7e6e]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-430c7e6e]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-430c7e6e]{position:absolute}.operate[data-v-430c7e6e]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-430c7e6e]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-430c7e6e]{overflow:visible}.clip-point.t-l[data-v-430c7e6e]{left:0;top:0;cursor:nwse-resize}.clip-point.t-r[data-v-430c7e6e]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0;cursor:nesw-resize}.clip-point.b-l[data-v-430c7e6e]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0;cursor:nesw-resize}.clip-point.b-r[data-v-430c7e6e]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0;cursor:nwse-resize}.clip-point.t[data-v-430c7e6e]{cursor:n-resize;left:50%;top:0;margin-left:-8px}.clip-point.b[data-v-430c7e6e]{cursor:n-resize;left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.l[data-v-430c7e6e]{cursor:w-resize;left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.r[data-v-430c7e6e]{cursor:w-resize;right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.editable-element-image[data-v-d35423d2]{position:absolute}.editable-element-image.lock .element-content[data-v-d35423d2]{cursor:default}.rotate-wrapper[data-v-d35423d2]{width:100%;height:100%}.element-content[data-v-d35423d2]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-d35423d2]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-d35423d2]{position:absolute}svg[data-v-722bf8fa]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-f0d6ea86]{cursor:text}.editable-element-text[data-v-58d3557f]{position:absolute}.editable-element-text.lock .element-content[data-v-58d3557f]{cursor:default}.rotate-wrapper[data-v-58d3557f]{width:100%;height:100%}.element-content[data-v-58d3557f]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-58d3557f]{position:relative}.drag-handler[data-v-58d3557f]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-58d3557f]{top:0}.drag-handler.bottom[data-v-58d3557f]{bottom:0}.editable-element-shape[data-v-4faf3734]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-4faf3734]{cursor:default}.rotate-wrapper[data-v-4faf3734]{width:100%;height:100%}.element-content[data-v-4faf3734]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-4faf3734]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-4faf3734]{pointer-events:all}.shape-text[data-v-4faf3734]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word;pointer-events:none}.shape-text.editable[data-v-4faf3734]{pointer-events:all}.shape-text.top[data-v-4faf3734]{justify-content:flex-start}.shape-text.middle[data-v-4faf3734]{justify-content:center}.shape-text.bottom[data-v-4faf3734]{justify-content:flex-end}.show-text[data-v-4faf3734]{pointer-events:none}.editable-element-shape[data-v-603a705d]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-603a705d],.editable-element-shape.lock .line-point[data-v-603a705d]{cursor:default}.element-content[data-v-603a705d]{width:100%;height:100%;position:relative}.element-content svg[data-v-603a705d]{transform-origin:0 0;overflow:visible}.line-path[data-v-603a705d],.line-point[data-v-603a705d]{pointer-events:all;cursor:move}.chart[data-v-3ac5559a]{display:flex}.chart-content[data-v-3ac5559a]{transform-origin:0 0}.chart-content{--theme-color-1:#666;--theme-color-2:#666;--theme-color-3:#666;--theme-color-4:#666;--theme-color-5:#666;--theme-color-6:#666;--theme-color-7:#666;--theme-color-8:#666;--theme-color-9:#666;--theme-color-10:#666;--grid-color:rgba(0,0,0,0.4)}.chart-content .ct-series-a .ct-line,.chart-content .ct-series-a .ct-point{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-area{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-bar{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-pie{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-donut{stroke:var(--theme-color-1)}.chart-content .ct-series-b .ct-line,.chart-content .ct-series-b .ct-point{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-area{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-bar{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-pie{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-donut{stroke:var(--theme-color-2)}.chart-content .ct-series-c .ct-line,.chart-content .ct-series-c .ct-point{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-area{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-bar{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-pie{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-donut{stroke:var(--theme-color-3)}.chart-content .ct-series-d .ct-line,.chart-content .ct-series-d .ct-point{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-area{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-bar{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-pie{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-donut{stroke:var(--theme-color-4)}.chart-content .ct-series-e .ct-line,.chart-content .ct-series-e .ct-point{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-area{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-bar{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-pie{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-donut{stroke:var(--theme-color-5)}.chart-content .ct-series-f .ct-line,.chart-content .ct-series-f .ct-point{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-area{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-bar{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-pie{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-donut{stroke:var(--theme-color-6)}.chart-content .ct-series-g .ct-line,.chart-content .ct-series-g .ct-point{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-area{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-bar{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-pie{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-donut{stroke:var(--theme-color-7)}.chart-content .ct-series-h .ct-line,.chart-content .ct-series-h .ct-point{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-area{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-bar{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-pie{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-donut{stroke:var(--theme-color-8)}.chart-content .ct-series-i .ct-line,.chart-content .ct-series-i .ct-point{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-area{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-bar{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-pie{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-donut{stroke:var(--theme-color-9)}.chart-content .ct-grid{stroke:var(--grid-color)}.chart-content .ct-label{fill:var(--grid-color);color:var(--grid-color)}.legends{height:20px;justify-content:center;font-size:14px}.legend,.legends{display:flex;align-items:center}.legend+.legend{margin-left:10px}.legend .block{width:10px;height:10px;margin-right:5px}.editable-element-chart[data-v-c09631b6]{position:absolute}.editable-element-chart.lock .element-content[data-v-c09631b6]{cursor:default}.rotate-wrapper[data-v-c09631b6]{width:100%;height:100%}.element-content[data-v-c09631b6]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-59f468e0]{border:0;outline:0}.editable-table[data-v-c0c56b6e],table[data-v-c0c56b6e]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-c0c56b6e]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-c0c56b6e]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-c0c56b6e]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-c0c56b6e]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-c0c56b6e]:last-child,table.theme.col-header tr .cell[data-v-c0c56b6e]:first-child,table.theme.row-footer tr:last-child .cell[data-v-c0c56b6e],table.theme.row-header tr:first-child .cell[data-v-c0c56b6e]{background-color:var(--themeColor)}table tr[data-v-c0c56b6e]{height:36px}table .cell[data-v-c0c56b6e]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;cursor:default}table .cell.selected[data-v-c0c56b6e]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-c0c56b6e]{min-height:32px;padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-c0c56b6e]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.drag-line[data-v-c0c56b6e]{position:absolute;top:0;bottom:0;width:3px;background-color:#d14424;margin-left:-1px;opacity:0;z-index:2;cursor:col-resize}.editable-element-table[data-v-426704b7]{position:absolute}.editable-element-table.lock .element-content[data-v-426704b7]{cursor:default}.rotate-wrapper[data-v-426704b7]{width:100%;height:100%}.element-content[data-v-426704b7]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-426704b7]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-426704b7]{position:absolute;top:5px;left:5px;background-color:rgba(0,0,0,.5);color:#fff;padding:6px 12px;font-size:12px;transform-origin:0 0}.table-mask[data-v-426704b7]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-3168526a]{position:absolute}.editable-element-latex.lock .element-content[data-v-3168526a]{cursor:default}.rotate-wrapper[data-v-3168526a]{width:100%;height:100%}.element-content[data-v-3168526a]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-3168526a]{transform-origin:0 0;overflow:visible}.video-player[data-v-e716fb74]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:1;transform-origin:0 0}@media(min-width:900px){.video-player.playing .controller-mask[data-v-e716fb74],.video-player.playing .controller[data-v-e716fb74]{opacity:0}.video-player.playing:hover .controller-mask[data-v-e716fb74],.video-player.playing:hover .controller[data-v-e716fb74]{opacity:1}}.video-player.loading .bezel .diplayer-loading-icon[data-v-e716fb74]{display:block}.video-player.hide-controller[data-v-e716fb74]{cursor:none}.video-player.hide-controller .controller-mask[data-v-e716fb74],.video-player.hide-controller .controller[data-v-e716fb74]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-e716fb74]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-e716fb74]{width:100%;height:100%}.controller-mask[data-v-e716fb74]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%;position:absolute;bottom:0;transition:all .3s ease}.controller[data-v-e716fb74]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-e716fb74]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-e716fb74]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-e716fb74]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-e716fb74]{opacity:0}.controller .bar-wrap .bar[data-v-e716fb74]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-e716fb74]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-e716fb74]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-e716fb74]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-e716fb74]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-e716fb74]{right:8px}.controller .icons .time[data-v-e716fb74]{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .icons .icon[data-v-e716fb74]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-e716fb74]{font-size:26px}.controller .icons .icon .icon-content[data-v-e716fb74]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-e716fb74]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-e716fb74]{opacity:.5}.controller .icons .icon.speed-icon[data-v-e716fb74]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-e716fb74]{width:70px;position:absolute;bottom:30px;left:-23px;background-color:#22211b;padding:5px 0;color:#ddd}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e716fb74]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e716fb74]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-e716fb74]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-e716fb74],.controller .icons .icon:hover .icon-content[data-v-e716fb74]{opacity:1}.controller .icons .volume[data-v-e716fb74]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-e716fb74]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-e716fb74]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-e716fb74]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-e716fb74]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-e716fb74]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-e716fb74]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons .loop[data-v-e716fb74]{display:inline-block;height:100%}.bezel[data-v-e716fb74]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-e716fb74]{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none;font-size:40px}.bezel .bezel-icon.bezel-transition[data-v-e716fb74]{-webkit-animation:bezel-hide-e716fb74 .5s linear;animation:bezel-hide-e716fb74 .5s linear}@-webkit-keyframes bezel-hide-e716fb74{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide-e716fb74{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.bezel .loading-icon[data-v-e716fb74]{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.bezel .loading-icon .loading-hide[data-v-e716fb74]{display:none}.bezel .loading-icon .loading-dot[data-v-e716fb74]{-webkit-animation:loading-dot-fade-e716fb74 .8s ease infinite;animation:loading-dot-fade-e716fb74 .8s ease infinite;opacity:0;transform-origin:4px 4px}.bezel .loading-icon .loading-dot.loading-dot-7[data-v-e716fb74]{-webkit-animation-delay:.7s;animation-delay:.7s}.bezel .loading-icon .loading-dot.loading-dot-6[data-v-e716fb74]{-webkit-animation-delay:.6s;animation-delay:.6s}.bezel .loading-icon .loading-dot.loading-dot-5[data-v-e716fb74]{-webkit-animation-delay:.5s;animation-delay:.5s}.bezel .loading-icon .loading-dot.loading-dot-4[data-v-e716fb74]{-webkit-animation-delay:.4s;animation-delay:.4s}.bezel .loading-icon .loading-dot.loading-dot-3[data-v-e716fb74]{-webkit-animation-delay:.3s;animation-delay:.3s}.bezel .loading-icon .loading-dot.loading-dot-2[data-v-e716fb74]{-webkit-animation-delay:.2s;animation-delay:.2s}.bezel .loading-icon .loading-dot.loading-dot-1[data-v-e716fb74]{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes loading-dot-fade-e716fb74{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes loading-dot-fade-e716fb74{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.editable-element-video[data-v-7f80f8ee]{position:absolute}.editable-element-video.lock .handler-border[data-v-7f80f8ee]{cursor:default}.rotate-wrapper[data-v-7f80f8ee]{width:100%;height:100%}.element-content[data-v-7f80f8ee]{width:100%;height:100%;position:relative}.handler-border[data-v-7f80f8ee]{position:absolute;cursor:move}.handler-border.t[data-v-7f80f8ee]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-7f80f8ee]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-7f80f8ee]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-7f80f8ee]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-5cabbb47]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-5cabbb47],.controller[data-v-5cabbb47]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.controller[data-v-5cabbb47]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-5cabbb47]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-5cabbb47]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-5cabbb47]{opacity:0}.controller .bar-wrap .bar[data-v-5cabbb47]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-5cabbb47]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-5cabbb47]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-5cabbb47]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-5cabbb47]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-5cabbb47]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-5cabbb47]{font-size:26px}.controller .icons .icon .icon-content[data-v-5cabbb47]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-5cabbb47],.controller .icons .icon:hover .icon-content[data-v-5cabbb47]{opacity:1}.controller .icons .volume[data-v-5cabbb47]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-5cabbb47]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-5cabbb47]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-5cabbb47]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-5cabbb47]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-5cabbb47]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-5cabbb47]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .time[data-v-5cabbb47]{height:38px;position:absolute;right:20px;bottom:0;display:flex;align-items:center;line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .time .ptime[data-v-5cabbb47]{margin-right:2px}.controller .time .dtime[data-v-5cabbb47]{margin-left:2px}.editable-element-audio[data-v-66dd4448]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-66dd4448]{cursor:default}.rotate-wrapper[data-v-66dd4448]{width:100%;height:100%}.element-content[data-v-66dd4448]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-66dd4448]{cursor:move}.audio-player[data-v-66dd4448]{position:absolute}.mouse-selection[data-v-1619c258]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-1619c258]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-1619c258]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-1619c258]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-1619c258]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-9b94cc34]{width:100%;height:100%;overflow:visible;z-index:999;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-background[data-v-4d0018d8]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-62c9018e]{position:absolute;z-index:100}.alignment-line .line[data-v-62c9018e]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-62c9018e]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-62c9018e]{transform:translateX(-.5px);border-top-width:1px}.element-create-selection[data-v-a8c28cdc]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.selection[data-v-a8c28cdc]{position:absolute;opacity:.8}.selection[data-v-a8c28cdc]:not(.line){border:1px solid #d14424}.resize-handler[data-v-680e5917]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#fff;border-radius:1px}.resize-handler.bottom.rotate-135[data-v-680e5917],.resize-handler.left-bottom.rotate-90[data-v-680e5917],.resize-handler.left-top.rotate-0[data-v-680e5917],.resize-handler.left.rotate-45[data-v-680e5917],.resize-handler.right-bottom.rotate-0[data-v-680e5917],.resize-handler.right-top.rotate-90[data-v-680e5917],.resize-handler.right.rotate-45[data-v-680e5917],.resize-handler.top.rotate-135[data-v-680e5917]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-680e5917],.resize-handler.left-bottom.rotate-135[data-v-680e5917],.resize-handler.left-top.rotate-45[data-v-680e5917],.resize-handler.left.rotate-90[data-v-680e5917],.resize-handler.right-bottom.rotate-45[data-v-680e5917],.resize-handler.right-top.rotate-135[data-v-680e5917],.resize-handler.right.rotate-90[data-v-680e5917],.resize-handler.top.rotate-0[data-v-680e5917]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-680e5917],.resize-handler.left-bottom.rotate-0[data-v-680e5917],.resize-handler.left-top.rotate-90[data-v-680e5917],.resize-handler.left.rotate-135[data-v-680e5917],.resize-handler.right-bottom.rotate-90[data-v-680e5917],.resize-handler.right-top.rotate-0[data-v-680e5917],.resize-handler.right.rotate-135[data-v-680e5917],.resize-handler.top.rotate-45[data-v-680e5917]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-680e5917],.resize-handler.left-bottom.rotate-45[data-v-680e5917],.resize-handler.left-top.rotate-135[data-v-680e5917],.resize-handler.left.rotate-0[data-v-680e5917],.resize-handler.right-bottom.rotate-135[data-v-680e5917],.resize-handler.right-top.rotate-45[data-v-680e5917],.resize-handler.right.rotate-0[data-v-680e5917],.resize-handler.top.rotate-90[data-v-680e5917]{cursor:ew-resize}.border-line[data-v-630e246b]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-630e246b]{border-top-width:1px}.border-line.bottom[data-v-630e246b]{border-bottom-width:1px}.border-line.left[data-v-630e246b]{border-left-width:1px}.border-line.right[data-v-630e246b]{border-right-width:1px}.border-line.wide[data-v-630e246b]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-630e246b]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-630e246b]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-630e246b]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-630e246b]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-2d010d5c]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-9a549510]{position:absolute;width:10px;height:10px;top:-25px;margin-left:-5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:-webkit-grab;cursor:grab}.rotate-handler[data-v-9a549510]:active{cursor:-webkit-grabbing;cursor:grabbing}.image-element-operate.cliping[data-v-24706869]{visibility:hidden}.link-handler[data-v-3250b72d]{height:30px;position:absolute;left:0;font-size:12px;padding:0 10px;background-color:#fff;box-shadow:3px 3px 3px rgba(0,0,0,.15);display:flex;align-items:center;color:#d14424}.link[data-v-3250b72d]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-3250b72d]{display:flex;align-items:center}.btns .btn[data-v-3250b72d]{word-break:keep-all;cursor:pointer}.operate[data-v-71428444]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.operate.multi-select[data-v-71428444]{opacity:0}.animation-index[data-v-71428444]{position:absolute;top:0;left:-24px;font-size:12px;width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.base-element-image[data-v-b0d4d1b2]{position:absolute}.rotate-wrapper[data-v-b0d4d1b2]{width:100%;height:100%}.element-content[data-v-b0d4d1b2]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-b0d4d1b2]{width:100%;height:100%;overflow:hidden;position:relative}.base-element-text[data-v-2ec235c4],.element-content img[data-v-b0d4d1b2]{position:absolute}.rotate-wrapper[data-v-2ec235c4]{width:100%;height:100%}.element-content[data-v-2ec235c4]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-2ec235c4]{position:relative}.base-element-shape[data-v-68d8af98]{position:absolute}.rotate-wrapper[data-v-68d8af98]{width:100%;height:100%}.element-content[data-v-68d8af98]{width:100%;height:100%;position:relative}.element-content svg[data-v-68d8af98]{transform-origin:0 0;overflow:visible}.shape-text[data-v-68d8af98]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word}.shape-text.top[data-v-68d8af98]{justify-content:flex-start}.shape-text.middle[data-v-68d8af98]{justify-content:center}.shape-text.bottom[data-v-68d8af98]{justify-content:flex-end}.editable-element-shape[data-v-4032440c]{position:absolute}.element-content[data-v-4032440c]{width:100%;height:100%;position:relative}.element-content svg[data-v-4032440c]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-60d9ae43]{position:absolute}.element-content[data-v-60d9ae43],.rotate-wrapper[data-v-60d9ae43]{width:100%;height:100%}.need-scale[data-v-60d9ae43]{zoom:.1}.static-table[data-v-74b60291],table[data-v-74b60291]{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}table[data-v-74b60291]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-74b60291]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-74b60291]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-74b60291]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-74b60291]:last-child,table.theme.col-header tr .cell[data-v-74b60291]:first-child,table.theme.row-footer tr:last-child .cell[data-v-74b60291],table.theme.row-header tr:first-child .cell[data-v-74b60291]{background-color:var(--themeColor)}table tr[data-v-74b60291]{height:36px}table .cell[data-v-74b60291]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle}table .cell-text[data-v-74b60291]{min-height:32px;padding:5px;line-height:1.5}.base-element-table[data-v-3bbcc75c]{position:absolute}.rotate-wrapper[data-v-3bbcc75c]{width:100%;height:100%}.element-content[data-v-3bbcc75c]{width:100%;height:100%;position:relative}.base-element-latex[data-v-4118f3dd]{position:absolute}.rotate-wrapper[data-v-4118f3dd]{width:100%;height:100%}.element-content[data-v-4118f3dd]{width:100%;height:100%;position:relative}.element-content svg[data-v-4118f3dd]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-1c831c75]{position:absolute}.rotate-wrapper[data-v-1c831c75]{width:100%;height:100%}.element-content[data-v-1c831c75]{width:100%;height:100%;background-color:#000;background-position:50%;background-size:contain;background-repeat:no-repeat;display:flex;justify-content:center;align-items:center}.icon[data-v-1c831c75]{font-size:140px;color:#aaa}.base-element-audio[data-v-513e91c4]{position:absolute}.rotate-wrapper[data-v-513e91c4]{width:100%;height:100%}.element-content[data-v-513e91c4]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-513e91c4]{cursor:move}.thumbnail-slide[data-v-06a163ec]{background-color:#fff;overflow:hidden}.elements[data-v-06a163ec]{transform-origin:0 0}.background[data-v-06a163ec]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-06a163ec]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-5a0d0b33]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-5a0d0b33]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-5a0d0b33]{border-bottom:2px solid #d14424}.input[data-v-5a0d0b33]{width:100%;height:32px}.preview[data-v-5a0d0b33]{margin-top:12px}.thumbnail[data-v-5a0d0b33]{outline:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-5a0d0b33]{margin-top:20px;text-align:right}.canvas[data-v-1386e8fc]{height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.viewport-wrapper[data-v-1386e8fc]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-1386e8fc]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-pool[data-v-0f50713a]{width:340px;max-height:540px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-0f50713a]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.shape-list[data-v-0f50713a]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-0f50713a]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0;position:relative;cursor:pointer}.shape-item[data-v-0f50713a]:not(:nth-child(10n)){margin-right:2.22222%}.shape-content[data-v-0f50713a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center}.shape-content:hover .shape-path[data-v-0f50713a]{stroke:#d14424}.shape-content svg[data-v-0f50713a]:not(:root){overflow:visible}.line-pool[data-v-78517932]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-78517932]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.line-list[data-v-78517932]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-78517932]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-78517932]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-78517932]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-78517932]:hover{color:#d14424}.line-content svg[data-v-78517932]:not(:root){overflow:visible}.chart-pool[data-v-ab6a141a]{width:120px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-ab6a141a]{width:32%;margin-bottom:2%;height:0;padding-bottom:32%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-ab6a141a]:not(:nth-child(3n)){margin-right:2%}.chart-content[data-v-ab6a141a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-ab6a141a]:hover{color:#d14424}.table-generator[data-v-e325ce98]{width:100%;margin-top:-12px}.title[data-v-e325ce98]{height:28px;line-height:28px;background-color:#ededed;margin:0 -12px 12px -12px;padding:0 14px;font-size:12px;display:flex;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.title .right[data-v-e325ce98]{cursor:pointer}.title .right[data-v-e325ce98]:hover{color:#d14424}table[data-v-e325ce98]{border-collapse:separate}td[data-v-e325ce98]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-e325ce98]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-e325ce98]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-e325ce98]{width:230px}.custom .row[data-v-e325ce98]{display:flex;align-items:center}.custom .row+.row[data-v-e325ce98]{margin-top:10px}.btns[data-v-e325ce98]{margin-top:10px;text-align:right}.btns .btn[data-v-e325ce98]{margin-left:10px}.media-input[data-v-4916d8ab]{width:480px}.tabs[data-v-4916d8ab]{display:flex;justify-content:flex-start;align-items:center;border-bottom:1px solid #eee;margin-bottom:20px}.tab[data-v-4916d8ab]{padding:0 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.tab.active[data-v-4916d8ab]{border-bottom:2px solid #d14424}.btns[data-v-4916d8ab]{margin-top:10px;text-align:right}.latex-editor[data-v-129e1afa]{height:560px}.container[data-v-129e1afa]{height:calc(100% - 50px);display:flex;padding-top:25px}.left[data-v-129e1afa]{width:540px;height:100%;display:flex;flex-direction:column}.input-area[data-v-129e1afa]{flex:1}.input-area textarea[data-v-129e1afa]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-129e1afa]:focus{box-shadow:none!important}.preview[data-v-129e1afa]{height:160px;display:flex;justify-content:center;align-items:center;text-align:center;margin-top:20px;border:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.placeholder[data-v-129e1afa]{color:#888}.preview-content[data-v-129e1afa]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-129e1afa]{height:100%;margin-left:20px;flex:1;border:1px solid #eee;background-color:#fff;flex-direction:column}.right[data-v-129e1afa],.tabs[data-v-129e1afa]{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabs[data-v-129e1afa]{height:40px;font-size:12px;flex-shrink:0}.tab[data-v-129e1afa]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-129e1afa]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-129e1afa]{border-left:1px solid #eee}.content[data-v-129e1afa]{height:calc(100% - 40px);font-size:13px}.formula[data-v-129e1afa]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-129e1afa]{margin-top:10px}.formula-item .formula-title[data-v-129e1afa]{margin-bottom:5px}.formula-item .formula-item-content[data-v-129e1afa]{width:246px;height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol-tabs[data-v-129e1afa]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin:12px 12px 5px}.symbol-tab[data-v-129e1afa]{padding:6px 10px;border-bottom:2px solid transparent;cursor:pointer}.symbol-tab.active[data-v-129e1afa]{border-bottom:2px solid #d14424}.symbol[data-v-129e1afa]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-129e1afa]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-129e1afa]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-129e1afa]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-129e1afa]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-129e1afa]{margin-left:10px}.canvas-tool[data-v-4ae7c9aa]{position:relative;border-bottom:1px solid #eee;background-color:#fff;display:flex;justify-content:space-between;padding:0 10px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.left-handler[data-v-4ae7c9aa]{display:flex;align-items:center}.add-element-handler[data-v-4ae7c9aa]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.handler-item[data-v-4ae7c9aa]{margin:0 10px;font-size:14px;cursor:pointer}.handler-item.disable[data-v-4ae7c9aa]{opacity:.5}.right-handler[data-v-4ae7c9aa]{display:flex;align-items:center}.right-handler .text[data-v-4ae7c9aa]{width:40px;text-align:center}.right-handler .viewport-size[data-v-4ae7c9aa]{font-size:13px}.layout-pool[data-v-741b366e]{width:394px;height:500px;padding:2px;margin-right:-12px;padding-right:12px;overflow:auto;display:flex;flex-wrap:wrap;align-content:flex-start}.layout-item[data-v-741b366e]{width:48%;margin-bottom:4%}.layout-item[data-v-741b366e]:not(:nth-child(2n)){margin-right:4%}.layout-item .thumbnail[data-v-741b366e]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-741b366e]:hover{outline-color:#d14424}.thumbnails[data-v-ec4c62e4]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.add-slide[data-v-ec4c62e4]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-ec4c62e4]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-ec4c62e4]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-ec4c62e4]{width:30px;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-ec4c62e4]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-ec4c62e4]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-ec4c62e4]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-ec4c62e4]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-ec4c62e4]{outline:1px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-ec4c62e4]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-ec4c62e4],.thumbnail-item.selected .thumbnail[data-v-ec4c62e4]{outline-color:#d14424}.label[data-v-ec4c62e4]{font-size:12px;color:#999;width:20px;cursor:-webkit-grab;cursor:grab}.label.offset-left[data-v-ec4c62e4]{position:relative;left:-4px}.label[data-v-ec4c62e4]:active{cursor:-webkit-grabbing;cursor:grabbing}.row[data-v-f62a02b6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.slider[data-v-f62a02b6]{flex:3}.color-btn[data-v-39016b60]{display:flex;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-39016b60]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12)}.color-btn-icon[data-v-39016b60]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.row[data-v-35c4c4a3]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-35c4c4a3]{text-align:right}.row[data-v-c77a6414]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-c77a6414]{text-align:right}.slider[data-v-c77a6414]{flex:3}.text-style-panel[data-v-2d6233f4]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-2d6233f4]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-2d6233f4]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-2d6233f4]{width:50%;height:50px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer;transition:all .2s}.preset-style-item[data-v-2d6233f4]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-2d6233f4]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-2d6233f4]:nth-child(n+3){margin-top:-1px}.text-color-btn[data-v-2d6233f4]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-2d6233f4]{width:16px;height:3px;margin-top:1px}.row[data-v-7bd50f1a],.row[data-v-181ae0aa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-181ae0aa]{text-align:right}.filter[data-v-181ae0aa]{font-size:12px}.filter-item[data-v-181ae0aa]{padding:8px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-181ae0aa]{width:60px}.filter-item .filter-slider[data-v-181ae0aa]{flex:1;margin:0 6px}.row[data-v-64e5a614]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-64e5a614]{text-align:right}.origin-image[data-v-64e5a614]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-64e5a614]{width:100%;margin-bottom:10px}.btn-icon[data-v-64e5a614]{margin-right:3px}.clip[data-v-64e5a614]{width:260px;font-size:12px}.clip .title[data-v-64e5a614]{margin-bottom:5px}.shape-clip[data-v-64e5a614]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-64e5a614]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-64e5a614]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-64e5a614]{background-color:#ccc}.shape-clip-item .shape[data-v-64e5a614]{width:40px;height:40px;background-color:#e1e1e1}.shape-style-panel[data-v-0e201fca]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-0e201fca]{width:100%;display:flex;align-items:center;margin-bottom:10px}.text-color-btn[data-v-0e201fca]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-0e201fca]{width:16px;height:3px;margin-top:1px}.slider[data-v-0e201fca]{flex:3}.row[data-v-cbc4d7fa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-cbc4d7fa]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-cbc4d7fa]{margin-left:8px}.line-wrapper[data-v-cbc4d7fa]{overflow:visible}.line-btn-icon[data-v-cbc4d7fa]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-cbc4d7fa]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-cbc4d7fa]{margin-top:10px}.chart-data-editor[data-v-9a62f784]{width:600px;position:relative}.editor-content[data-v-9a62f784]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-9a62f784]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.temp-range[data-v-9a62f784]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53.3%,.3)}.range-line[data-v-9a62f784]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-9a62f784]{border-top-width:1px}.range-line.b[data-v-9a62f784]{border-bottom-width:1px}.range-line.l[data-v-9a62f784]{border-left-width:1px}.range-line.r[data-v-9a62f784]{border-right-width:1px}.resizable[data-v-9a62f784]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-9a62f784]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-9a62f784]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-9a62f784]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;table-layout:fixed}table td[data-v-9a62f784]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-9a62f784]{background-color:rgba(209,68,36,.1)}table .item[data-v-9a62f784]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-9a62f784]{background-color:rgba(209,68,36,.02)}.btns[data-v-9a62f784]{margin-top:10px;display:flex;justify-content:space-between}.row[data-v-ee2d8b14]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-ee2d8b14]{width:100%}.btn-icon[data-v-ee2d8b14]{margin-right:3px}.color-btn-wrap[data-v-ee2d8b14]{position:relative}.delete-color-btn[data-v-ee2d8b14]{position:absolute;width:30px;right:2px;top:2px;bottom:2px;display:flex;justify-content:center;align-items:center;background-color:#fff;cursor:pointer}.preset-themes[data-v-ee2d8b14]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-ee2d8b14]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-ee2d8b14]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-ee2d8b14]{width:20px;height:20px}.row[data-v-72e00692]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-72e00692]{margin-bottom:18px}.switch-wrapper[data-v-72e00692]{text-align:right}.text-color-btn[data-v-72e00692]{display:flex;flex-direction:column;justify-content:center;align-items:center}.text-color-block[data-v-72e00692]{width:16px;height:3px;margin-top:1px}.set-count[data-v-72e00692]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-72e00692]{padding:4px 8px}.set-count .count-text[data-v-72e00692]{flex:1;text-align:center;margin:0 8px}.row[data-v-61bcaa2a],.row[data-v-69f903b1]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-61bcaa2a],.title[data-v-61bcaa2a]{margin-bottom:10px}.background-image[data-v-61bcaa2a]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-61bcaa2a]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-61bcaa2a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.row[data-v-80767a46]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-80767a46]{height:32px}.switch-wrapper[data-v-80767a46]{text-align:right}.row[data-v-3476ee65]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-3476ee65]{margin-bottom:10px}.label[data-v-3476ee65]{text-align:center}.btn-icon[data-v-3476ee65]{margin-right:3px}.icon-btn[data-v-3476ee65]{cursor:pointer}.element-animation-panel[data-v-696c81e2]{height:100%;display:flex;flex-direction:column}.element-animation[data-v-696c81e2]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-696c81e2]{width:100%}.duration[data-v-696c81e2]{width:100%;display:flex;align-items:center}.tip[data-v-696c81e2]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-696c81e2]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-12px;padding-right:12px;position:relative}.animation-pool .mask[data-v-696c81e2]{width:400px;height:500px;position:absolute;top:0;left:0}.type-title[data-v-696c81e2]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:2px 0 2px 10px}.pool-item-wrapper[data-v-696c81e2]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-696c81e2]{width:24%;margin-bottom:1.33333%;margin-bottom:10px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-696c81e2]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-696c81e2]{background-color:#f9f9f9}.animation-sequence[data-v-696c81e2]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-696c81e2]{height:36px;display:flex;align-items:center;border:1px solid #eee;padding:6px;border-radius:2px;margin-bottom:8px;cursor:-webkit-grab;cursor:grab}.sequence-item[data-v-696c81e2]:active{cursor:-webkit-grabbing;cursor:grabbing}.sequence-item.active[data-v-696c81e2]{border-color:#d14424}.sequence-item .index[data-v-696c81e2]{flex:1}.sequence-item .text[data-v-696c81e2]{flex:6}.sequence-item .handler[data-v-696c81e2]{flex:2;font-size:15px;text-align:right}.sequence-item .handler-btn[data-v-696c81e2]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-0e2f846d]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.row[data-v-0e2f846d]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-0e2f846d]{margin-bottom:10px}.title.dropdown[data-v-0e2f846d]{display:flex;align-items:center;cursor:pointer}.title.dropdown .icon[data-v-0e2f846d]{margin-left:5px;transition:transform .1s}.title.dropdown:not(.active) .icon[data-v-0e2f846d]{transform:rotate(-90deg)}.background-image-wrapper[data-v-0e2f846d]{margin-bottom:10px}.background-image[data-v-0e2f846d]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-0e2f846d]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-0e2f846d]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.theme-list[data-v-0e2f846d]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-0e2f846d]{width:22%;margin-bottom:4%;padding-bottom:22%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-0e2f846d]:not(:nth-child(4n)){margin-right:4%}.theme-item .theme-item-content[data-v-0e2f846d]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:box-shadow .2s}.theme-item .theme-item-content[data-v-0e2f846d]:hover{box-shadow:0 0 4px #888}.theme-item .text[data-v-0e2f846d]{font-size:16px}.theme-item .color-block[data-v-0e2f846d]{width:28px;height:10px;margin-top:5px}.slider[data-v-0e2f846d]{flex:3}.animation-pool[data-v-251ceb05]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-251ceb05]{width:50%;height:115px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:25px 0 15px 0;position:relative;cursor:pointer}.animation-item.active[data-v-251ceb05]{border-color:#d14424;z-index:1}.animation-item[data-v-251ceb05]:nth-child(2n){margin-left:-1px}.animation-item[data-v-251ceb05]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-251ceb05]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:fade-251ceb05 .3s linear;animation:fade-251ceb05 .3s linear}.animation-block.slideX[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideX-251ceb05 .3s linear;animation:slideX-251ceb05 .3s linear}.animation-block.slideY[data-v-251ceb05]:hover:after{content:"";width:100%;height:100%;position:absolute;left:0;top:0;background-color:#d9dadb;-webkit-animation:slideY-251ceb05 .3s linear;animation:slideY-251ceb05 .3s linear}.animation-text[data-v-251ceb05]{font-size:12px;color:#333;text-align:center}@-webkit-keyframes fade-251ceb05{0%{opacity:0}to{opacity:1}}@keyframes fade-251ceb05{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideX-251ceb05{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideX-251ceb05{0%{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideY-251ceb05{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideY-251ceb05{0%{transform:translateY(100%)}to{transform:translateY(0)}}.row[data-v-88d13362]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-6b8c5938]{height:100%;display:flex;flex-direction:column}.symbol-panel .tabs[data-v-6b8c5938]{display:flex;justify-content:space-around;align-items:center;border-bottom:1px solid #eee;margin-bottom:8px}.symbol-panel .tab[data-v-6b8c5938]{padding:6px 10px 8px;border-bottom:2px solid transparent;cursor:pointer}.symbol-panel .tab.active[data-v-6b8c5938]{border-bottom:2px solid #d14424}.symbol-panel .pool[data-v-6b8c5938]{padding:5px 12px;margin:0 -12px;flex:1;font-size:18px;overflow:auto;overflow:overlay;display:flex;flex-wrap:wrap;align-content:flex-start}.symbol-panel .symbol-item[data-v-6b8c5938]{width:18%;margin-bottom:2.5%;height:0;padding-bottom:18%;position:relative;cursor:pointer;border:1px solid #eee}.symbol-panel .symbol-item[data-v-6b8c5938]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-6b8c5938]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-6b8c5938]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-0df9576a]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.tabs[data-v-0df9576a]{height:40px;font-size:12px;flex-shrink:0;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tab[data-v-0df9576a]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tab.active[data-v-0df9576a]{background-color:#fff;border-bottom-color:#fff}.tab+.tab[data-v-0df9576a]{border-left:1px solid #eee}.content[data-v-0df9576a]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.remark[data-v-5a6e24c6]{position:relative;border-top:1px solid #eee;background-color:#f9f9f9}.remark textarea[data-v-5a6e24c6]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px;font-size:12px;background-color:transparent;position:absolute;top:0;right:0;bottom:0;left:0}.resize-handler[data-v-5a6e24c6]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.pptist-editor[data-v-55178b6a]{height:100%}.layout-header[data-v-55178b6a]{height:40px}.layout-content[data-v-55178b6a]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-55178b6a]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-55178b6a]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-55178b6a]{height:40px}.layout-content-right[data-v-55178b6a]{width:260px;height:100%}.screen-element-video[data-v-a45a17a4]{position:absolute}.element-content[data-v-a45a17a4],.rotate-wrapper[data-v-a45a17a4]{width:100%;height:100%}.screen-element-audio[data-v-b08df80e]{position:absolute}.rotate-wrapper[data-v-b08df80e]{width:100%;height:100%}.element-content[data-v-b08df80e]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-b08df80e]{display:block}.audio-icon[data-v-b08df80e]{cursor:pointer}.audio-player[data-v-b08df80e]{position:absolute;display:none}.link[data-v-3b227002]{cursor:pointer}.screen-slide[data-v-7827b40a]{position:absolute;top:0;left:0;transform-origin:0 0}.background[data-v-7827b40a]{width:100%;height:100%;background-position:50%;position:absolute}.slide-thumbnails[data-v-2236d5e3]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-2236d5e3]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-2236d5e3]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-2236d5e3]:hover{color:#d14424}.slide-thumbnails-content[data-v-2236d5e3]{height:calc(100% - 100px);padding:20px 30px 30px 30px;display:flex;flex-wrap:wrap;align-content:flex-start;overflow:auto;overflow:overlay}.slide-thumbnails-content .thumbnail[data-v-2236d5e3]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-2236d5e3]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-2236d5e3]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-7ff9fa00]{position:fixed;top:0;bottom:0;left:0;right:0;z-index:8;cursor:none}.blackboard[data-v-7ff9fa00]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-7ff9fa00]{position:absolute;top:0;right:0;bottom:0;left:0}.eraser[data-v-7ff9fa00],.pen[data-v-7ff9fa00]{pointer-events:none;position:fixed;z-index:9}.eraser .icon[data-v-7ff9fa00],.pen .icon[data-v-7ff9fa00]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-7ff9fa00]{display:flex;justify-content:center;align-items:center;border-radius:50%;border:4px solid rgba(85,85,85,.15);color:rgba(85,85,85,.75)}.writing-board-tool[data-v-7a2e5324]{font-size:12px}.writing-board-tool .tools[data-v-7a2e5324]{height:50px;position:fixed;bottom:5px;left:5px;z-index:11;padding:12px;background-color:#eee;border-radius:2px;display:flex;align-items:center}.writing-board-tool .btn[data-v-7a2e5324]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-7a2e5324]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-7a2e5324]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-7a2e5324]{font-size:20px}.writing-board-tool .colors[data-v-7a2e5324]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-7a2e5324]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-7a2e5324]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-7a2e5324]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-7a2e5324]{margin-left:8px}.pptist-screen[data-v-1d67bb30]{width:100%;height:100%;position:relative;background-color:#111}.slide-list[data-v-1d67bb30]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-1d67bb30]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-1d67bb30]{z-index:2}.slide-item.hide[data-v-1d67bb30]{opacity:0}.slide-item.turning-mode-no.before[data-v-1d67bb30]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-1d67bb30]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-1d67bb30]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-1d67bb30],.slide-item.turning-mode-fade.before[data-v-1d67bb30]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-1d67bb30]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-1d67bb30]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-1d67bb30]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-1d67bb30]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-1d67bb30]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-1d67bb30]{transform:translateY(100%)}.slide-content[data-v-1d67bb30]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.tools[data-v-1d67bb30]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10;cursor:pointer}.tool-btn[data-v-1d67bb30]{opacity:.35}.tool-btn[data-v-1d67bb30]:hover{opacity:.9}.tool-btn+.tool-btn[data-v-1d67bb30]{margin-left:8px}.page-number[data-v-1d67bb30]{position:fixed;bottom:8px;right:8px;padding:8px 12px;color:#666;background-color:#eee;border-radius:2px;z-index:10;cursor:pointer}.mobile[data-v-72b587f9]{height:100%;overflow:auto;background-color:#f9f9f9}.tip[data-v-72b587f9]{position:fixed;top:0;left:0;right:0;z-index:99}.thumbnail-list[data-v-72b587f9]{padding:10px}.thumbnail-item[data-v-72b587f9]{display:flex;justify-content:center;align-items:center;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.thumbnail-item+.thumbnail-item[data-v-72b587f9]{margin-top:10px}#app{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word}.ProseMirror-static:not(.ProseMirror-static),.ProseMirror:not(.ProseMirror-static){-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ProseMirror-static ::-moz-selection,.ProseMirror ::-moz-selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static ::selection,.ProseMirror ::selection{background-color:rgba(209,68,36,.3);color:inherit}.ProseMirror-static p+p,.ProseMirror p+p{margin-top:5px}.ProseMirror-static ul,.ProseMirror ul{list-style-type:disc;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ul li,.ProseMirror ul li{list-style-type:disc}.ProseMirror-static ol,.ProseMirror ol{list-style-type:decimal;-webkit-padding-start:20px;padding-inline-start:20px}.ProseMirror-static ol li,.ProseMirror ol li{list-style-type:decimal}.ProseMirror-static code,.ProseMirror code{background-color:#eee;padding:1px 3px;margin:0 1px;border-radius:2px;font-family:inherit}.ProseMirror-static blockquote,.ProseMirror blockquote{overflow:hidden;padding-right:1.2em;padding-left:1.2em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ProseMirror-selectednode{outline:none!important}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}body,html{height:100%;overflow:hidden;background-color:#fff;color:#41464b}li,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:""}table{border-collapse:collapse;border-spacing:0}a{text-decoration:none}::-webkit-scrollbar{width:5px;height:5px;background-color:#fff}::-webkit-scrollbar-thumb{background-color:#c1c1c1}.ant-popover{padding-top:5px!important}.ant-popover-arrow{display:none}.ant-popover-inner{box-shadow:3px 3px 3px rgba(0,0,0,.15);border:1px solid #eee}.ant-popover-inner-content{padding:12px!important}.ant-dropdown{min-width:120px}.ant-dropdown-menu{box-shadow:3px 3px 3px rgba(0,0,0,.15)}.ant-dropdown-menu-item:hover{background-color:rgba(209,68,36,.2)}.ant-btn.no-padding{padding:0}.ant-radio-button-wrapper{text-align:center}.ant-slider-track{background-color:#d14424}.ant-slider-handle{border-color:#d14424}.ant-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-select-item-option-active:not(.ant-select-item-option-disabled){background-color:rgba(209,68,36,.2)}.ant-tooltip-inner{font-size:12px}@font-face{font-family:仓耳小丸子;src:url(../fonts/仓耳小丸子.676e187a.ttf)}@font-face{font-family:优设标题黑;src:url(../fonts/优设标题黑.1726685c.ttf)}@font-face{font-family:峰广明锐体;src:url(../fonts/峰广明锐体.8bdb14f7.ttf)}@font-face{font-family:摄图摩登小方体;src:url(../fonts/摄图摩登小方体.de722238.ttf)}@font-face{font-family:站酷快乐体;src:url(../fonts/站酷快乐体.0aceab97.ttf)}@font-face{font-family:字制区喜脉体;src:url(../fonts/字制区喜脉体.fc4a0c7d.ttf)}@font-face{font-family:素材集市康康体;src:url(../fonts/素材集市康康体.8db9d61f.ttf)}@font-face{font-family:联盟起艺卢帅正锐黑体;src:url(../fonts/联盟起艺卢帅正锐黑体.42cb84f9.ttf)}@font-face{font-family:素材集市酷方体;src:url(../fonts/素材集市酷方体.8d33b29e.ttf)}@font-face{font-family:途牛类圆体;src:url(../fonts/途牛类圆体.abaea3c4.ttf)}@font-face{font-family:锐字真言体;src:url(../fonts/锐字真言体.1583afec.ttf)}@font-face{font-family:阿里汉仪智能黑体;src:url(../fonts/阿里汉仪智能黑体.08b44aa7.ttf)}.input[data-v-d6089858]{display:none}.checkbox-button[data-v-7cae2b90]{outline:0;background-color:#fff;border:1px solid #d9d9d9;font-size:13px;padding:0 15px;height:32px;text-align:center;cursor:pointer}.checkbox-button[data-v-7cae2b90]:hover{color:#d14424}.checkbox-button.checked[data-v-7cae2b90]{color:#fff;background-color:#d14424;border-color:#d14424}.checkbox-button.checked[data-v-7cae2b90]:hover{background:rgba(209,68,36,.9);border-color:rgba(209,68,36,.9)}.checkbox-button-group[data-v-7dafd0a9]{display:flex;align-items:center}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button{border-radius:0;border-left-width:0;border-right-width:0;display:inline-block}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button+.checkbox-button{border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.checkbox-button-group[data-v-7dafd0a9] .checkbox-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.checkerboard[data-v-0a544b87]{background-size:contain}.alpha-checkboard-wrap[data-v-6f2cb744],.alpha[data-v-6f2cb744],.checkerboard[data-v-0a544b87]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-6f2cb744]{overflow:hidden}.alpha-gradient[data-v-6f2cb744]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-6f2cb744]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-6f2cb744]{z-index:2;position:absolute}.alpha-picker[data-v-6f2cb744]{cursor:pointer;width:4px;height:8px;box-shadow:0 0 2px rgba(0,0,0,.6);background:#fff;margin-top:1px;transform:translateX(-2px)}.hue[data-v-1766620e]{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);position:absolute;top:0;right:0;bottom:0;left:0}.hue-container[data-v-1766620e]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-1766620e]{z-index:2;position:absolute;top:0}.hue-picker[data-v-1766620e]{cursor:pointer;margin-top:1px;width:4px;height:8px;box-shadow:0 0 2px rgba(0,0,0,.6);background:#fff;transform:translateX(-2px)}.saturation-black[data-v-8982eb4a],.saturation-white[data-v-8982eb4a],.saturation[data-v-8982eb4a]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-8982eb4a]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-8982eb4a]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-8982eb4a]{cursor:pointer;position:absolute}.saturation-circle[data-v-8982eb4a]{width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.editable-input[data-v-00ea8dfc]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-00ea8dfc]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-00ea8dfc]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-00ea8dfc]{text-transform:capitalize}.color-picker[data-v-210672ee]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-210672ee]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-210672ee]{display:flex}.picker-sliders[data-v-210672ee]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-210672ee]{position:relative;height:10px}.picker-alpha-wrap[data-v-210672ee]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-210672ee]{width:24px;height:24px;position:relative;margin-top:4px;margin-right:4px;outline:1px dashed hsla(0,0%,40%,.12)}.picker-color-wrap .checkerboard[data-v-210672ee]{background-size:auto}.picker-current-color[data-v-210672ee]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-210672ee]{margin-bottom:8px}.picker-presets[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-210672ee]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-210672ee]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-presets[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-210672ee]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-210672ee]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-210672ee]{width:100%;height:0;padding-bottom:100%;position:relative;cursor:pointer}.recent-colors-title[data-v-210672ee]{font-size:12px;margin-bottom:4px}.recent-colors[data-v-210672ee]{display:flex;flex-wrap:wrap;align-content:flex-start}.fullscreen-spin[data-v-6275c730]{position:fixed;top:0;bottom:0;left:0;right:0;z-index:100;display:flex;justify-content:center;align-items:center;background-color:hsla(0,0%,94.5%,.7)}.menu-content[data-v-eb1555e8]{width:170px;padding:5px 0;background:#fff;border:1px solid #eee;box-shadow:3px 3px 3px rgba(0,0,0,.15);border-radius:2px;list-style:none;margin:0}.menu-item[data-v-eb1555e8]{padding:0 20px;color:#555;font-size:12px;transition:all .1s;white-space:nowrap;height:30px;line-height:30px;background-color:#fff;cursor:pointer}.menu-item:not(.disable):hover>.menu-item-content>.sub-menu[data-v-eb1555e8]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-eb1555e8]:after{transform:scale(1)}.menu-item[data-v-eb1555e8]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-eb1555e8]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-eb1555e8]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-eb1555e8]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-eb1555e8]:before{content:"";display:inline-block;width:8px;height:8px;border-width:1px;border-style:solid;border-color:#666 #666 transparent transparent;position:absolute;right:0;top:50%;transform:translateY(-50%) rotate(45deg)}.menu-item-content.has-children.has-handler[data-v-eb1555e8]:after{content:"";display:inline-block;width:1px;height:24px;background-color:#f1f1f1;position:absolute;right:18px;top:3px;transform:scale(0);transition:transform .2s}.menu-item-content .sub-text[data-v-eb1555e8]{opacity:.6}.menu-item-content .sub-menu[data-v-eb1555e8]{width:120px;position:absolute;display:none;left:112%;top:-6px}.mask{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:9998}.contextmenu{position:fixed;z-index:9999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} \ No newline at end of file diff --git a/index.html b/index.html index 1ef3808a..87f72c75 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -PPTIST - 在线演示文稿
\ No newline at end of file +PPTIST - 在线演示文稿
\ No newline at end of file diff --git a/js/app.750017ba.js b/js/app.750017ba.js new file mode 100644 index 00000000..a84682e6 --- /dev/null +++ b/js/app.750017ba.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var o,a,r=t[0],i=t[1],u=t[2],s=0,f=[];s-1||t.type===e}),M=function(e,t){for(var n=e.depth;n>0;n--){var o=e.node(n);if(t(o))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:o}}},_=function(e){return function(t){return M(t.$from,e)}},D=function(e){return function(t){return _((function(t){return T(e,t)}))(t)}},z=function(e,t){var n=t.schema.nodes[e];return!!D(n)(t.selection)},A=function(e){var t,n,o=e.state,l=o.selection,c=o.doc,a=l.from,r=c.nodeAt(a)||c.nodeAt(a-1);return null!==(t=r)&&void 0!==t&&t.lastChild&&(r=r.lastChild),(null===(n=r)||void 0===n?void 0:n.marks)||[]},F=function(e,t,n){var o,l=Object(L["a"])(e);try{for(l.s();!(o=l.n()).done;){var c=o.value;if(c.type.name===t&&c.attrs[n])return c.attrs[n]}}catch(a){l.e(a)}finally{l.f()}return null},R=function(e,t){var n,o=Object(L["a"])(e);try{for(o.s();!(n=o.n()).done;){var l=n.value;if(l.type.name===t)return!0}}catch(c){o.e(c)}finally{o.f()}return!1},P=function(e,t){var n=e.state,o=n.selection,l=n.doc,c=o.from,a=o.to,r=!0,i="";return l.nodesBetween(c,a,(function(e){return r&&e.attrs[t]&&(r=!1,i=e.attrs[t]),r})),i},H={color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left"},q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(B["a"])(Object(B["a"])({},H),t);var n=A(e),o=R(n,"strong"),l=R(n,"em"),c=R(n,"underline"),a=R(n,"strikethrough"),r=R(n,"superscript"),i=R(n,"subscript"),u=R(n,"code"),d=F(n,"forecolor","color")||t.color,s=F(n,"backcolor","backcolor")||t.backcolor,f=F(n,"fontsize","fontsize")||t.fontsize,p=F(n,"fontname","fontname")||t.fontname,m=P(e,"align")||t.align,b=z("bullet_list",e.state),v=z("ordered_list",e.state),h=z("blockquote",e.state);return{bold:o,em:l,underline:c,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:p,align:m,bulletList:b,orderedList:v,blockquote:h}},X={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},W=(n("99af"),n("fb6a"),n("a15b"),function(e){if("string"!==typeof e)return!1;var t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;var n=100,o=100,l=100,c="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=o,a.height=l,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,o,l),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(c,o/2,l/2);var a=r.getImageData(0,0,o,l).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),G=n("2909"),U=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("e9c4"),n("a434"),n("c740"),n("66cb")),Y=n.n(U),Z=n("2ef0"),J=[{id:"test123456",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"idn7Mx",left:355,top:65.25,width:585,height:188,lineHeight:1.2,content:"

PPTIST

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"text",id:"7stmVP",left:355,top:253.25,width:585,height:56,content:"

基于 Vue 3.x + TypeScript 的在线演示文稿应用

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"#5b9bd5",style:"solid",width:2}],background:{type:"solid",color:"#ffffff"}}],K={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},Q=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"AkIh3E",left:355,top:95.11111111111111,width:585,height:116,lineHeight:1.2,content:"

输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:6},{type:"text",id:"7stmVP",left:355,top:253.25,width:585,height:56,content:"

请在此处输入副标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"{{themeColor}}",style:"solid",width:2}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"mRHvQN",left:207.50000000000003,top:249.84259259259264,width:585,height:56,content:"

在此处添加副标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"line",id:"7CQDwc",left:323.09259259259267,top:238.33333333333334,start:[0,0],end:[354.8148148148148,0],points:["",""],color:"{{themeColor}}",style:"solid",width:4},{type:"shape",id:"09wqWw",left:-27.648148148148138,top:432.73148148148147,width:1056.2962962962963,height:162.96296296296296,viewBox:200,path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"vSheCJ",left:183.5185185185185,top:175.5092592592593,width:605.1851851851851,height:185.18518518518516,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0},{type:"shape",id:"Mpwv7x",left:211.29629629629628,top:201.80555555555557,width:605.1851851851851,height:185.18518518518516,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,opacity:.7},{type:"text",id:"WQOTAp",left:304.9074074074074,top:198.10185185185182,width:417.9629629629629,height:140,content:"

感谢观看

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:5}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"MZVO1kkj",elements:[{type:"shape",id:"cql0h8",left:0,top:0,width:352.59259259259255,height:562.5,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0},{type:"shape",id:"_RTaF4",left:171.4814814814814,top:100.13888888888887,width:362.22222222222223,height:362.22222222222223,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"rgba(255,255,255,0)",fixedRatio:!1,rotate:0,outline:{width:10,color:"{{backgroundColor}}",style:"solid"}},{type:"shape",id:"UZfo8N",left:216.66666666666663,top:145.32407407407408,width:271.85185185185185,height:271.85185185185185,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0,text:{content:"

01

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"ysqtBg",left:561.4814814814814,top:100.1388888888889,width:359.25925925925924,height:80,content:"

在此处输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"lXsoHa",left:572.5925925925925,top:202.3611111111111,width:257.77777777777777,height:260,content:"
  1. 在此处输入内容

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",lineHeight:2,fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"EBBnTr",left:360.5996472663139,top:141.8496472663139,width:278.80070546737215,height:278.80070546737215,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:0,color:"{{backgroundColor}}",style:"solid"}},{type:"shape",id:"gDIWDH",left:456.4373897707231,top:98.287037037037,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

1

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"DUWT7E",left:317.037037037037,top:237.68738977072314,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

4

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"pbhn38",left:456.43738977072303,top:377.08774250440916,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

3

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"CvMKrO",left:595.8377425044091,top:237.6873897707231,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

2

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"adudHB",left:402.962962962963,top:39.39814814814815,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"9UpDwg",left:402.962962962963,top:473.1018518518518,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"GERdpB",left:111.48148148148151,top:256.25,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"G5qoho",left:691.1111111111111,top:256.25,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"shape",id:"vdZcI6",left:415.18518518518516,top:196.4351851851852,width:169.62962962962962,height:169.62962962962962,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"tYUmrx",left:156.66666666666683,top:149.02777777777771,width:264.4444444444445,height:264.4444444444445,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

01

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"0GVHf8",left:342.2222222222223,top:217.17592592592587,width:128.14814814814812,height:128.14814814814812,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0},{type:"text",id:"BO33Sv",left:378.8888888888889,top:235.24999999999994,width:464.4444444444444,height:92,content:"

在此处添加标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"Hj7ttp",left:69.35185185185185,top:49.21759259259262,width:420,height:63,lineHeight:1.2,content:"

1.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"FmKMNB",left:69.35185185185185,top:129.28240740740745,width:420,height:384,content:"

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"rI7ZeO",left:510.64814814814815,top:49.21759259259262,width:420,height:63,lineHeight:1.2,content:"

2.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"KspwGc",left:510.64814814814815,top:129.28240740740745,width:420,height:384,content:"

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"Rx63Jo",left:69.35185185185179,top:51.71759259259262,width:420,height:58,lineHeight:1.2,content:"

1.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"ulyuzE",left:69.35185185185179,top:131.78240740740745,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"kr35Ca",left:510.6481481481481,top:51.71759259259262,width:420,height:58,lineHeight:1.2,content:"

2.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"BNQSpC",left:510.6481481481481,top:131.78240740740745,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"Vr38Nu",left:69.35185185185185,top:301.71759259259255,width:420,height:58,lineHeight:1.2,content:"

3.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"IwKRSu",left:69.35185185185185,top:381.7824074074074,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"0Opr1v",left:510.64814814814815,top:301.71759259259255,width:420,height:58,lineHeight:1.2,content:"

4.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"4L9Uzz",left:510.64814814814815,top:381.7824074074074,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"GdEGxg",left:134.53703703703704,top:127.25,width:152.77777777777777,height:308,lineHeight:1.8,content:"

请在此处输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:8,fill:"{{themeColor}}"},{type:"text",id:"y5sAfw",left:332.8703703703704,top:127.25,width:532.5925925925926,height:50,content:"

请在此处输入内容1

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"VeuocM",left:332.8703703703704,top:212.0648148148148,width:532.5925925925926,height:50,content:"

请在此处输入内容2

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"RyFWQe",left:332.8703703703704,top:296.8796296296296,width:532.5925925925926,height:50,content:"

请在此处输入内容3

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"Q56viI",left:332.8703703703704,top:381.69444444444446,width:532.5925925925926,height:50,content:"

请在此处输入内容4

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"SUWirT",left:73.8888888888889,top:64.21296296296302,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

1

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"YjzN1M",left:148.70370370370372,top:64.21296296296302,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"fS09I7",left:527.5925925925926,top:64.21296296296302,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

2

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"qCnfB1",left:602.4074074074074,top:64.21296296296302,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"difAAT",left:73.8888888888889,top:221.25000000000003,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

3

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"EUlvMo",left:148.70370370370372,top:221.25000000000003,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"US_9jB",left:527.5925925925926,top:221.25000000000003,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

4

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"243MnQ",left:602.4074074074074,top:221.25000000000003,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"Y_KUj0",left:73.8888888888889,top:378.287037037037,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

5

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"9GglMe",left:148.70370370370372,top:378.287037037037,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"eSInje",left:527.5925925925926,top:378.287037037037,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

6

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"0S3yUg",left:602.4074074074074,top:378.287037037037,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}}],$=Object(g["b"])("slides",{state:function(){return{theme:K,slides:J,slideIndex:0,viewportRatio:.5625}},getters:{currentSlide:function(e){return e.slides[e.slideIndex]},currentSlideAnimations:function(e){var t=e.slides[e.slideIndex];if(!t)return null;var n=t.animations;if(!n)return null;var o=t.elements,l=o.map((function(e){return e.id}));return n.filter((function(e){return l.includes(e.elId)}))},layouts:function(e){var t=e.theme,n=t.themeColor,o=t.fontColor,l=t.fontName,c=t.backgroundColor,a=Y()(o).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(Q).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",o).replaceAll("{{fontName}}",l).replaceAll("{{backgroundColor}}",c).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(B["a"])(Object(B["a"])({},this.theme),e)},setViewportRatio:function(e){this.viewportRatio=e},setSlides:function(e){this.slides=e},addSlide:function(e){var t,n=Array.isArray(e)?e:[e],o=this.slideIndex+1;(t=this.slides).splice.apply(t,[o,0].concat(Object(G["a"])(n))),this.slideIndex=o},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(B["a"])(Object(B["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],o=[],l=function(e){var l=t.slides.findIndex((function(t){return t.id===n[e]}));o.push(l)},c=0;cr&&(a=r),this.slideIndex=a,this.slides=this.slides.filter((function(e){return!n.includes(e.id)}))},updateSlideIndex:function(e){this.slideIndex=e},addElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,o=[].concat(Object(G["a"])(n),Object(G["a"])(t));this.slides[this.slideIndex].elements=o},updateElement:function(e){var t=e.id,n=e.props,o="string"===typeof t?[t]:t,l=this.slideIndex,c=this.slides[l],a=c.elements.map((function(e){return o.includes(e.id)?Object(B["a"])(Object(B["a"])({},e),n):e}));this.slides[l].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,o="string"===typeof n?[n]:n,l=this.slideIndex,c=this.slides[l],a=c.elements.map((function(e){return e.id===t?Object(Z["omit"])(e,o):e}));this.slides[l].elements=a}}}),ee=Object(g["b"])("main",{state:function(){return{activeElementIdList:[],handleElementId:"",activeGroupElementId:"",canvasPercentage:90,canvasScale:1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,showGridLines:!1,creatingElement:null,availableFonts:[],toolbarState:"slideDesign",clipingImageElementId:"",richTextAttrs:X,selectedTableCells:[],isScaling:!1,editingShapeElementId:"",selectedSlidesIndex:[]}},getters:{activeElementList:function(e){var t=$(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=$(),n=t.currentSlide;return n&&n.elements&&n.elements.find((function(t){return e.handleElementId===t.id}))||null}},actions:{setActiveElementIdList:function(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId:function(e){this.handleElementId=e},setActiveGroupElementId:function(e){this.activeGroupElementId=e},setCanvasPercentage:function(e){this.canvasPercentage=e},setCanvasScale:function(e){this.canvasScale=e},setThumbnailsFocus:function(e){this.thumbnailsFocus=e},setEditorareaFocus:function(e){this.editorAreaFocus=e},setDisableHotkeysState:function(e){this.disableHotkeys=e},setGridLinesState:function(e){this.showGridLines=e},setCreatingElement:function(e){this.creatingElement=e},setAvailableFonts:function(){this.availableFonts=V.filter((function(e){return W(e.value)}))},setToolbarState:function(e){this.toolbarState=e},setClipingImageElementId:function(e){this.clipingImageElementId=e},setRichtextAttrs:function(e){this.richTextAttrs=e},setSelectedTableCells:function(e){this.selectedTableCells=e},setScalingState:function(e){this.isScaling=e},setEditingShapeElementId:function(e){this.editingShapeElementId=e},updateSelectedSlidesIndex:function(e){this.selectedSlidesIndex=e}}}),te=n("1da1"),ne=(n("96cf"),n("ddb0"),n("d4ec")),oe=n("257e"),le=n("262e"),ce=n("2caf"),ae=n("ade3"),re=n("4dec"),ie=function(e){Object(le["a"])(n,e);var t=Object(ce["a"])(n);function n(){var e;return Object(ne["a"])(this,n),e=t.call(this,"SnapshotDatabase"),Object(ae["a"])(Object(oe["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(re["a"]),ue=new ie,de=Object(g["b"])("snapshot",{state:function(){return{snapshotCursor:-1,snapshotLength:0}},getters:{canUndo:function(e){return e.snapshotCursor>0},canRedo:function(e){return e.snapshotCursor=0&&e.snapshotCursorr&&(l.push(o[0]),a--),a>=2&&ue.snapshots.update(o[a-2],{index:n.slideIndex}),t.next=15,ue.snapshots.bulkDelete(l);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(te["a"])(regeneratorRuntime.mark((function t(){var n,o,l,c,a,r,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!(e.snapshotCursor<=0)){t.next=2;break}return t.abrupt("return");case 2:return n=$(),o=ee(),l=e.snapshotCursor-1,t.next=7,ue.snapshots.orderBy("id").toArray();case 7:c=t.sent,a=c[l],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(l),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(te["a"])(regeneratorRuntime.mark((function t(){var n,o,l,c,a,r,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!(e.snapshotCursor>=e.snapshotLength-1)){t.next=2;break}return t.abrupt("return");case 2:return n=$(),o=ee(),l=e.snapshotCursor+1,t.next=7,ue.snapshots.orderBy("id").toArray();case 7:c=t.sent,a=c[l],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(l),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),se=Object(g["b"])("keyboard",{state:function(){return{ctrlKeyState:!1,shiftKeyState:!1}},getters:{ctrlOrShiftKeyActive:function(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState:function(e){this.ctrlKeyState=e},setShiftKeyState:function(e){this.shiftKeyState=e}}}),fe=Object(g["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),pe=(n("466d"),function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t="_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",n=t.length,o="",l=0;l"),o=n.split("
"),l="",c=Object(L["a"])(o);try{for(c.s();!(t=c.n()).done;){var a=t.value;a&&(l+="
".concat(a,"
"))}}catch(r){c.e(r)}finally{c.f()}return l}),qe=function(){var e=de(),t=Object(Z["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(Z["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),o=Object(Z["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:o}},Xe=(n("cb29"),function(e){return new Promise((function(t){var n=document.createElement("img");n.src=e,n.style.opacity="0",document.body.appendChild(n),n.onload=function(){var e=n.clientWidth,o=n.clientHeight;n.onload=null,n.onerror=null,document.body.removeChild(n),t({width:e,height:o})},n.onerror=function(){n.onload=null,n.onerror=null}}))}),We=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},Ge=1e3,Ue=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.creatingElement,l=Object(g["c"])(t),c=l.theme,a=l.viewportRatio,r=qe(),i=r.addHistorySnapshot,u=function(n){t.addElement(n),e.setActiveElementIdList([n.id]),o.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),i()},d=function(e){Xe(e).then((function(t){var n=t.width,o=t.height,l=o/n;lGe?(n=Ge,o=n*l):o>Ge*a.value&&(o=Ge*a.value,n=o/l),u({type:"image",id:pe(),src:e,width:n,height:o,left:(Ge-n)/2,top:(Ge*a.value-o)/2,fixedRatio:!0,rotate:0})}))},s=function(e){u({type:"chart",id:pe(),chartType:e,left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[c.value.themeColor],gridColor:c.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}})},f=function(e,t){for(var n={fontname:c.value.fontName,color:c.value.fontColor},o=[],l=0;l1&&void 0!==arguments[1]?arguments[1]:"请输入内容",n=e.left,o=e.top,l=e.width,a=e.height;u({type:"text",id:pe(),left:n,top:o,width:l,height:a,content:t,rotate:0,defaultFontName:c.value.fontName,defaultColor:c.value.fontColor})},m=function(e,t){var n=e.left,o=e.top,l=e.width,a=e.height,r={type:"shape",id:pe(),left:n,top:o,width:l,height:a,viewBox:t.viewBox,path:t.path,fill:c.value.themeColor,fixedRatio:!1,rotate:0};t.special&&(r.special=!0),u(r)},b=function(e,t){var n=e.left,o=e.top,l=e.start,a=e.end,r={type:"line",id:pe(),left:n,top:o,start:l,end:a,points:t.points,color:c.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(l[0]+a[0])/2,(l[1]+a[1])/2]),t.isCurve&&(r.curve=[(l[0]+a[0])/2,(l[1]+a[1])/2]),u(r)},v=function(e){u({type:"latex",id:pe(),width:e.w,height:e.h,rotate:0,left:(Ge-e.w)/2,top:(Ge*a.value-e.h)/2,path:e.path,latex:e.latex,color:c.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},h=function(e){u({type:"video",id:pe(),width:500,height:300,rotate:0,left:(Ge-500)/2,top:(Ge*a.value-300)/2,src:e})},O=function(e){u({type:"audio",id:pe(),width:50,height:50,rotate:0,left:(Ge-50)/2,top:(Ge*a.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:c.value.themeColor,src:e})};return{createImageElement:d,createChartElement:s,createTableElement:f,createTextElement:p,createShapeElement:m,createLineElement:b,createLatexElement:v,createVideoElement:h,createAudioElement:O}},Ye=function(){var e=ee(),t=$(),n=Object(g["c"])(t),o=n.currentSlide,l=qe(),c=l.addHistorySnapshot,a=Ue(),r=a.createTextElement,i=function(n){var l,a=Ae(n),r=a.groupIdMap,i=a.elIdMap,u=o.value.elements.map((function(e){return e.id})),d=Object(L["a"])(n);try{for(d.s();!(l=d.n()).done;){var s=l.value,f=u.includes(s.id);s.id=i[s.id],f&&(s.left=s.left+10,s.top=s.top+10),s.groupId&&(s.groupId=r[s.groupId])}}catch(p){d.e(p)}finally{d.f()}t.addElement(n),e.setActiveElementIdList(Object.values(i)),c()},u=function(e){var n=e.map((function(e){var t,n=Ae(e.elements),o=n.groupIdMap,l=n.elIdMap,c=Object(L["a"])(e.elements);try{for(c.s();!(t=c.n()).done;){var a=t.value;a.id=l[a.id],a.groupId&&(a.groupId=o[a.groupId])}}catch(d){c.e(d)}finally{c.f()}if(e.animations){var r,i=Object(L["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.elId=l[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(B["a"])(Object(B["a"])({},e),{},{id:pe(8)})}));t.addSlide(n),c()},d=function(e){r({left:0,top:0,width:600,height:50},e)},s=function(e,t){var n=(null===t||void 0===t?void 0:t.onlySlide)||!1,o=(null===t||void 0===t?void 0:t.onlyElements)||!1,l=Be(e);if("object"===Object(Pe["a"])(l)){var c=l.type,a=l.data;"elements"!==c||n?"slides"!==c||o||u(a):i(a)}else if(!o&&!n){var r=He(l);d(r)}};return{addSlidesFromClipboard:u,pasteTextClipboardData:s}},Ze=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.selectedSlidesIndex,l=Object(g["c"])(t),c=l.currentSlide,a=l.slides,r=l.theme,i=l.slideIndex,u=Object(y["computed"])((function(){return[].concat(Object(G["a"])(o.value),[i.value])})),d=Object(y["computed"])((function(){return a.value.filter((function(e,t){return u.value.includes(t)}))})),s=Object(y["computed"])((function(){return d.value.map((function(e){return e.id}))})),f=Ye(),p=f.pasteTextClipboardData,m=f.addSlidesFromClipboard,b=qe(),v=b.addHistorySnapshot,h=function(){var n={id:pe(8),elements:[],background:{type:"solid",color:r.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},O=function(e){e===I.UP&&i.value>0?t.updateSlideIndex(i.value-1):e===I.DOWN&&i.value0&&void 0!==arguments[0]?arguments[0]:s.value;a.value.length===n.length?h():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),v()},N=function(){var e=Object(G["a"])(s.value);j(),E(e)},V=function(){var t=Array.from(Array(a.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:h,updateSlideIndex:O,copySlide:j,pasteSlide:x,createSlide:C,createSlideByTemplate:k,copyAndPasteSlide:w,deleteSlide:E,cutSlide:N,selectAllSlide:V}},Je=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=Object(g["c"])(t),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(){var n,l=JSON.parse(JSON.stringify(c.value.elements)),a=Object(L["a"])(l);try{for(a.s();!(n=a.n()).done;){var i=n.value;o.value.includes(i.id)&&(i.lock=!0)}}catch(u){a.e(u)}finally{a.f()}t.updateSlide({elements:l}),e.setActiveElementIdList([]),r()},u=function(n){var o=JSON.parse(JSON.stringify(c.value.elements));if(n.groupId){var l,a=[],i=Object(L["a"])(o);try{for(i.s();!(l=i.n()).done;){var u=l.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(p){i.e(p)}finally{i.f()}t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{var d,s=Object(L["a"])(o);try{for(s.s();!(d=s.n()).done;){var f=d.value;if(f.id===n.id){f.lock=!1;break}}}catch(p){s.e(p)}finally{s.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},Ke=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.activeGroupElementId,c=Object(g["c"])(t),a=c.currentSlide,r=qe(),i=r.addHistorySnapshot,u=function(){if(o.value.length){var n=[];n=l.value?a.value.elements.filter((function(e){return e.id!==l.value})):a.value.elements.filter((function(e){return!o.value.includes(e.id)})),e.setActiveElementIdList([]),t.updateSlide({elements:n}),i()}},d=function(){a.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),i())};return{deleteElement:u,deleteAllElements:d}},Qe=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.activeElementList,c=n.handleElementId,a=Object(g["c"])(t),r=a.currentSlide,i=qe(),u=i.addHistorySnapshot,d=Object(y["computed"])((function(){if(l.value.length<2)return!1;var e=l.value[0].groupId;if(!e)return!0;var t=l.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(l.value.length){var n,c=JSON.parse(JSON.stringify(r.value.elements)),a=pe(),i=[],d=Object(L["a"])(c);try{for(d.s();!(n=d.n()).done;){var s=n.value;o.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(b){d.e(b)}finally{d.f()}var f=c.findIndex((function(e){return e.id===i[i.length-1].id})),p=i.map((function(e){return e.id}));c=c.filter((function(e){return!p.includes(e.id)}));var m=f-i.length+1;(e=c).splice.apply(e,[m,0].concat(i)),t.updateSlide({elements:c}),u()}},f=function(){if(l.value.length){var n=l.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(L["a"])(i);try{for(d.s();!(a=d.n()).done;){var s=a.value;o.value.includes(s.id)&&s.groupId&&delete s.groupId}}catch(p){d.e(p)}finally{d.f()}t.updateSlide({elements:i});var f=c.value?[c.value]:[];e.setActiveElementIdList(f),u()}}};return{canCombine:d,combineElements:s,uncombineElements:f}},$e=function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.activeElementList,l=Ye(),c=l.pasteTextClipboardData,a=Ke(),r=a.deleteElement,i=function(){if(n.value.length){var t=Ne(JSON.stringify({type:"elements",data:o.value}));Ve(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){Se().then((function(e){c(e)})).catch((function(e){return ge["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},et=function(){var e=ee(),t=Object(g["c"])($()),n=t.currentSlide,o=function(){var t=n.value.elements.filter((function(e){return!e.lock})),o=t.map((function(e){return e.id}));e.setActiveElementIdList(o)};return{selectAllElement:o}},tt=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeGroupElementId,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=[],i=function(e){var n=e.left,o=e.top;switch(t){case I.LEFT:n-=l;break;case I.RIGHT:n+=l;break;case I.UP:o-=l;break;case I.DOWN:o+=l;break;default:break}return Object(B["a"])(Object(B["a"])({},e),{},{left:n,top:o})};a=o.value?c.value.elements.map((function(e){return o.value===e.id?i(e):e})):c.value.elements.map((function(e){return n.value.includes(e.id)?i(e):e})),e.updateSlide({elements:a}),r()};return{moveElement:i}},nt=function(){var e=$(),t=Object(g["c"])(e),n=t.currentSlide,o=qe(),l=o.addHistorySnapshot,c=function(e,t){return{minLevel:e.findIndex((function(e){return e.id===t[0].id})),maxLevel:e.findIndex((function(e){return e.id===t[t.length-1].id}))}},a=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel,r=l.maxLevel;if(r===e.length-1)return;var i=n[r+1],u=n.splice(a,o.length);if(i.groupId){var d=n.filter((function(e){return e.groupId===i.groupId}));n.splice.apply(n,[a+d.length,0].concat(Object(G["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object(G["a"])(u)))}else{var s=e.findIndex((function(e){return e.id===t.id}));if(s===e.length-1)return;var f=n[s+1],p=n.splice(s,1)[0];if(f.groupId){var m=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+m.length,0,p)}else n.splice(s+1,0,p)}return n},r=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel;if(0===a)return;var r=n[a-1],i=n.splice(a,o.length);if(r.groupId){var u=n.filter((function(e){return e.groupId===r.groupId}));n.splice.apply(n,[a-u.length,0].concat(Object(G["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object(G["a"])(i)))}else{var d=e.findIndex((function(e){return e.id===t.id}));if(0===d)return;var s=n[d-1],f=n.splice(d,1)[0];if(s.groupId){var p=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-p.length,0,f)}else n.splice(d-1,0,f)}return n},i=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel,r=l.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,o.length);n.push.apply(n,Object(G["a"])(i))}else{var u=e.findIndex((function(e){return e.id===t.id}));if(u===e.length-1)return null;n.splice(u,1),n.push(t)}return n},u=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel;if(0===a)return;var r=n.splice(a,o.length);n.unshift.apply(n,Object(G["a"])(r))}else{var i=e.findIndex((function(e){return e.id===t.id}));if(0===i)return;n.splice(i,1),n.unshift(t)}return n},d=function(t,o){var c;o===C.UP?c=a(n.value.elements,t):o===C.DOWN?c=r(n.value.elements,t):o===C.TOP?c=i(n.value.elements,t):o===C.BOTTOM&&(c=u(n.value.elements,t)),c&&(e.updateSlide({elements:c}),l())};return{orderElement:d}},ot=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()},lt=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()},ct=function(){return document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen},at=function(){var e=fe(),t=$(),n=function(){ot(),e.setScreening(!0)},o=function(){t.updateSlideIndex(0),n()},l=function(){e.setScreening(!1),ct()&<()};return{enterScreening:n,enterScreeningFromStart:o,exitScreening:l}},rt=function(){var e=ee(),t=Object(g["c"])(e),n=t.canvasPercentage,o=function(t){var o=n.value,l=5,c=120,a=60;"+"===t&&o<=c&&(o+=l),"-"===t&&o>=a&&(o-=l),e.setCanvasPercentage(o)},l=function(t){e.setCanvasPercentage(t)};return{scaleCanvas:o,setCanvasPercentage:l}},it=function(){var e=ee(),t=se(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.disableHotkeys,c=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(g["c"])($()),d=u.currentSlide,s=Object(g["c"])(t),f=s.ctrlKeyState,p=s.shiftKeyState,m=Ze(),b=m.updateSlideIndex,v=m.copySlide,h=m.createSlide,O=m.deleteSlide,j=m.cutSlide,x=m.copyAndPasteSlide,k=m.selectAllSlide,w=Qe(),E=w.combineElements,N=w.uncombineElements,V=Ke(),S=V.deleteElement,B=Je(),L=B.lockElement,T=$e(),M=T.copyElement,_=T.cutElement,D=T.quickCopyElement,z=et(),A=z.selectAllElement,F=tt(),R=F.moveElement,P=nt(),H=P.orderElement,q=qe(),X=q.redo,W=q.undo,G=at(),U=G.enterScreening,Y=rt(),Z=Y.scaleCanvas,J=Y.setCanvasPercentage,K=function(){o.value.length?M():i.value&&v()},Q=function(){o.value.length?_():i.value&&j()},te=function(){o.value.length?D():i.value&&x()},ne=function(){r.value&&A(),i.value&&k()},oe=function(){r.value&&L()},le=function(){r.value&&E()},ce=function(){r.value&&N()},ae=function(){o.value.length?S():i.value&&O()},re=function(e){o.value.length?R(e):e!==I.UP&&e!==I.DOWN||b(e)},ie=function(e){c.value&&H(c.value,e)},ue=function(){i.value&&h()},de=function(){if(d.value.elements.length)if(a.value){var t=d.value.elements.findIndex((function(e){return e.id===a.value})),n=t>=d.value.elements.length-1?0:t+1,o=d.value.elements[n].id;e.setActiveElementIdList([o])}else{var l=d.value.elements[0];e.setActiveElementIdList([l.id])}},fe=function(e){var n=e.ctrlKey,o=e.shiftKey,c=e.altKey,a=e.metaKey,u=n||a,d=e.key.toUpperCase();if(u&&!f.value&&t.setCtrlKeyState(!0),o&&!p.value&&t.setShiftKeyState(!0),u&&d===I.F&&(e.preventDefault(),U(),t.setCtrlKeyState(!1)),r.value||i.value){if(u&&d===I.C){if(l.value)return;e.preventDefault(),K()}if(u&&d===I.X){if(l.value)return;e.preventDefault(),Q()}if(u&&d===I.D){if(l.value)return;e.preventDefault(),te()}if(u&&d===I.Z){if(l.value)return;e.preventDefault(),W()}if(u&&d===I.Y){if(l.value)return;e.preventDefault(),X()}if(u&&d===I.A){if(l.value)return;e.preventDefault(),ne()}if(u&&d===I.L){if(l.value)return;e.preventDefault(),oe()}if(!o&&u&&d===I.G){if(l.value)return;e.preventDefault(),le()}if(o&&u&&d===I.G){if(l.value)return;e.preventDefault(),ce()}if(c&&d===I.F){if(l.value)return;e.preventDefault(),ie(C.TOP)}if(c&&d===I.B){if(l.value)return;e.preventDefault(),ie(C.BOTTOM)}if(d===I.DELETE||d===I.BACKSPACE){if(l.value)return;e.preventDefault(),ae()}if(d===I.UP){if(l.value)return;e.preventDefault(),re(I.UP)}if(d===I.DOWN){if(l.value)return;e.preventDefault(),re(I.DOWN)}if(d===I.LEFT){if(l.value)return;e.preventDefault(),re(I.LEFT)}if(d===I.RIGHT){if(l.value)return;e.preventDefault(),re(I.RIGHT)}if(d===I.ENTER){if(l.value)return;e.preventDefault(),ue()}if(d===I.MINUS){if(l.value)return;e.preventDefault(),Z("-")}if(d===I.EQUAL){if(l.value)return;e.preventDefault(),Z("+")}if(d===I.DIGIT_0){if(l.value)return;e.preventDefault(),J(90)}if(d===I.TAB){if(l.value)return;e.preventDefault(),de()}}},pe=function(){f.value&&t.setCtrlKeyState(!1),p.value&&t.setShiftKeyState(!1)};Object(y["onMounted"])((function(){document.addEventListener("keydown",fe),document.addEventListener("keyup",pe),window.addEventListener("blur",pe)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",fe),document.removeEventListener("keyup",pe),window.removeEventListener("blur",pe)}))},ut=function(){var e=Object(g["c"])(ee()),t=e.editorAreaFocus,n=e.thumbnailsFocus,o=e.disableHotkeys,l=Ye(),c=l.pasteTextClipboardData,a=Ue(),r=a.createImageElement,i=function(e){We(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var l=e.clipboardData.items,a=l[0];if(a){var r,u=Object(L["a"])(l);try{for(u.s();!(r=u.n()).done;){var d=r.value;if("file"===d.kind&&-1!==d.type.indexOf("image")){var s=d.getAsFile();return void(s&&i(s))}}}catch(f){u.e(f)}finally{u.f()}"string"===a.kind&&"text/plain"===a.type&&a.getAsString((function(e){return c(e)}))}}};Object(y["onMounted"])((function(){document.addEventListener("paste",u)})),Object(y["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},dt=function(e){return Object(y["pushScopeId"])("data-v-32a5341e"),e=e(),Object(y["popScopeId"])(),e},st={class:"editor-header"},ft={class:"left"},pt={class:"menu-item"},mt=Object(y["createTextVNode"])(),bt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"文件",-1)})),vt=Object(y["createTextVNode"])("导出 JSON"),ht=Object(y["createTextVNode"])("导出 PPTX"),Ot={class:"menu-item"},jt=Object(y["createTextVNode"])(),yt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"编辑",-1)})),gt=Object(y["createTextVNode"])("撤销"),xt=Object(y["createTextVNode"])("重做"),Ct=Object(y["createTextVNode"])("添加页面"),kt=Object(y["createTextVNode"])("删除页面"),wt=Object(y["createTextVNode"])("重置幻灯片"),Et={class:"menu-item"},Nt=Object(y["createTextVNode"])(),It=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"演示",-1)})),Vt=Object(y["createTextVNode"])("从头开始"),St=Object(y["createTextVNode"])("从当前页开始"),Bt={class:"menu-item"},Lt=Object(y["createTextVNode"])(),Tt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"帮助",-1)})),Mt=Object(y["createTextVNode"])("意见反馈"),_t=Object(y["createTextVNode"])("快捷键"),Dt={class:"right"},zt={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},At={class:"menu-item"};function Ft(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconFolderClose"),r=Object(y["resolveComponent"])("MenuItem"),i=Object(y["resolveComponent"])("Menu"),u=Object(y["resolveComponent"])("Dropdown"),d=Object(y["resolveComponent"])("IconEdit"),s=Object(y["resolveComponent"])("IconPpt"),f=Object(y["resolveComponent"])("IconHelpcenter"),p=Object(y["resolveComponent"])("Tooltip"),m=Object(y["resolveComponent"])("IconGithub"),b=Object(y["resolveComponent"])("HotkeyDoc"),v=Object(y["resolveComponent"])("Drawer"),h=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",st,[Object(y["createElementVNode"])("div",ft,[Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[0]||(t[0]=function(t){return e.exportJSON()})},{default:Object(y["withCtx"])((function(){return[vt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.exportPPTX()})},{default:Object(y["withCtx"])((function(){return[ht]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",pt,[Object(y["createVNode"])(a),mt,bt])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[2]||(t[2]=function(t){return e.undo()})},{default:Object(y["withCtx"])((function(){return[gt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[3]||(t[3]=function(t){return e.redo()})},{default:Object(y["withCtx"])((function(){return[xt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.createSlide()})},{default:Object(y["withCtx"])((function(){return[Ct]})),_:1}),Object(y["createVNode"])(r,{onClick:t[5]||(t[5]=function(t){return e.deleteSlide()})},{default:Object(y["withCtx"])((function(){return[kt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[6]||(t[6]=function(t){return e.toggleGridLines()})},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(y["createVNode"])(r,{onClick:t[7]||(t[7]=function(t){return e.resetSlides()})},{default:Object(y["withCtx"])((function(){return[wt]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Ot,[Object(y["createVNode"])(d),jt,yt])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[8]||(t[8]=function(t){return e.enterScreeningFromStart()})},{default:Object(y["withCtx"])((function(){return[Vt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[9]||(t[9]=function(t){return e.enterScreening()})},{default:Object(y["withCtx"])((function(){return[St]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Et,[Object(y["createVNode"])(s),Nt,It])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[10]||(t[10]=function(t){return e.goIssues()})},{default:Object(y["withCtx"])((function(){return[Mt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[11]||(t[11]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Object(y["withCtx"])((function(){return[_t]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Bt,[Object(y["createVNode"])(f),Lt,Tt])]})),_:1})]),Object(y["createElementVNode"])("div",Dt,[Object(y["createVNode"])(p,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"menu-item",onClick:t[12]||(t[12]=function(t){return e.enterScreening()})},[Object(y["createVNode"])(s,{size:"18",fill:"#666",style:{"margin-top":"2px"}})])]})),_:1}),Object(y["createElementVNode"])("a",zt,[Object(y["createElementVNode"])("div",At,[Object(y["createVNode"])(m,{size:"18",fill:"#666"})])])]),Object(y["createVNode"])(v,{width:"320",placement:"right",visible:e.hotkeyDrawerVisible,onClose:t[13]||(t[13]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b)]})),_:1},8,["visible"]),Object(y["createVNode"])(h,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var Rt=n("3835"),Pt=(n("9911"),n("cc71"),n("21a6")),Ht=n("8f74"),qt=(n("00b4"),["style","script","template"]),Xt=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],Wt={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},Gt=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Ut=function(e,t){var n=t-e.position;Yt(e,n)},Yt=function(e,t){e.position=e.position+t},Zt=function(e,t){var n=!1;while(!n){var o=e.indexOf("<",t);if(-1===o)return o;var l=e.charAt(o+1);if("/"===l||"!"===l||/[A-Za-z0-9]/.test(l))return o;t=o+1}return-1},Jt=function(e){var t=e.str,n=Zt(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var o=t.slice(e.position,n);Ut(e,n),e.tokens.push({type:"text",content:o})}},Kt=function(e){var t=e.str;Yt(e,4);var n=t.indexOf("--\x3e",e.position),o=n+3;-1===n&&(n=o=t.length);var l=t.slice(e.position,n);Ut(e,o),e.tokens.push({type:"comment",content:l})},Qt=function(e){var t=e.str,n=t.length,o=e.position;while(o"===l);if(c)break;o++}var a=o+1;while(a"===r);if(!i)break;a++}Ut(e,a);var u=t.slice(o,a);return e.tokens.push({type:"tag",content:u}),u},$t=function(e){var t=e.str,n=e.tokens,o=e.position,l=null,c=o,a=[],r=t.length;while(o"===i;if(d){o!==c&&a.push(t.slice(c,o));break}var s=/\s/.test(i);if(s)o!==c&&a.push(t.slice(c,o)),c=o+1,o++;else{var f="'"===i||'"'===i;f?(l=i,o++):o++}}}Ut(e,o);for(var p="attribute",m=0;m1){var O=b+h;n.push({type:p,content:O}),m+=1;continue}var j=a[m+2];if(m+=1,j){var y=b+"="+j;n.push({type:p,content:y}),m+=1;continue}}}if(Object(Z["endsWith"])(b,"=")){var g=a[m+1];if(g&&-1===g.indexOf("=")){var x=b+g;n.push({type:p,content:x}),m+=1;continue}var C=b.slice(0,-1);n.push({type:p,content:C})}else n.push({type:p,content:b})}},en=function(e,t){var n=t.str,o=t.tokens,l=e.toLowerCase(),c=n.length,a=t.position;while(a=0){var l=t[o].tagName;if(l===e)break;if(n.includes(l))return!0;o--}}return!1},an=function(e,t){e.splice(t)},rn=function e(t){var n=t.stack,o=t.tokens,l=t.cursor,c=n[n.length-1].children,a=o.length;while(l-1)if(n[d].tagName===u){s=!0;break}while(l0){if(u===n[m].tagName){an(n,m);var b=m-1;c=n[b].children;break}m-=1}}var v=[],h=void 0;while(l127&&o<2048?(t+=String.fromCharCode(o>>6|192),t+=String.fromCharCode(63&o|128)):(t+=String.fromCharCode(o>>12|224),t+=String.fromCharCode(o>>6&63|128),t+=String.fromCharCode(63&o|128))}return t},gn=function(e){var t,n,o,l,c,a,r,i="",u=0;e=yn(e);while(u>2,c=(3&t)<<4|n>>4,a=(15&n)<<2|o>>6,r=63&o,isNaN(n)?a=r=64:isNaN(o)&&(r=64),i=i+On.charAt(l)+On.charAt(c)+On.charAt(a)+On.charAt(r);return i},xn=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return jn+gn(n)},Cn=function(){var e=Object(g["c"])($()),t=e.slides,n=Object(y["ref"])(!1),o=function(){var e=new Blob([JSON.stringify(t.value)],{type:""});Object(Pt["saveAs"])(e,"pptist_slides.json")},l=function(e){var t=Y()(e),n=t.getAlpha(),o=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:o}},c=function(e){var t=pn(e),n=[],o=function e(t){var o,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=Object(L["a"])(t);try{for(a.s();!(o=a.n()).done;){var r=o.value;if("tagName"in r&&["div","ul","li","p"].includes(r.tagName)&&n.length){var i=n[n.length-1];i.options||(i.options={}),i.options.breakLine=!0}var u=Object(B["a"])({},c),d="attributes"in r?r.attributes.find((function(e){return"style"===e.key})):null;if(d&&d.value){var s,f=d.value.split(";"),p=Object(L["a"])(f);try{for(p.s();!(s=p.n()).done;){var m=s.value,b=m.split(": "),v=Object(Rt["a"])(b,2),h=v[0],O=v[1],j=[Object(Z["trim"])(h),Object(Z["trim"])(O)],y=j[0],g=j[1];y&&g&&(u[y]=g)}}catch(k){p.e(k)}finally{p.f()}}if("tagName"in r&&("em"===r.tagName&&(u["font-style"]="italic"),"strong"===r.tagName&&(u["font-weight"]="bold"),"sup"===r.tagName&&(u["vertical-align"]="super"),"sub"===r.tagName&&(u["vertical-align"]="sub")),"tagName"in r&&"br"===r.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in r){var x=r.content.replace(/\n/g,"").replace(/ /g," "),C={};u["font-size"]&&(C.fontSize=.75*parseInt(u["font-size"])),u["color"]&&(C.color=l(u["color"]).color),u["background-color"]&&(C.highlight=l(u["background-color"]).color),u["text-decoration-line"]&&(-1!==u["text-decoration-line"].indexOf("underline")&&(C.underline={color:C.color||"#000000",style:"sng"}),-1!==u["text-decoration-line"].indexOf("line-through")&&(C.strike="sngStrike")),u["text-decoration"]&&(-1!==u["text-decoration"].indexOf("underline")&&(C.underline={color:C.color||"#000000",style:"sng"}),-1!==u["text-decoration"].indexOf("line-through")&&(C.strike="sngStrike")),u["vertical-align"]&&("super"===u["vertical-align"]&&(C.superscript=!0),"sub"===u["vertical-align"]&&(C.subscript=!0)),u["text-align"]&&(C.align=u["text-align"]),u["font-weight"]&&(C.bold="bold"===u["font-weight"]),u["font-style"]&&(C.italic="italic"===u["font-style"]),u["font-family"]&&(C.fontFace=u["font-family"]),n.push({text:x,options:C})}else"children"in r&&e(r.children,u)}}catch(k){a.e(k)}finally{a.f()}};return o(t),n},a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:1,y:1};return e.map((function(e){if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/100*t.x,y:e.y/100*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/100*t.x,y:e.y/100*t.y,curve:{type:"cubic",x1:e.curve.x1/100*t.x,y1:e.curve.y1/100*t.y,x2:e.curve.x2/100*t.x,y2:e.curve.y2/100*t.y}};if("quadratic"===e.curve.type)return{x:e.x/100*t.x,y:e.y/100*t.y,curve:{type:"quadratic",x1:e.curve.x1/100*t.x,y1:e.curve.y1/100*t.y}}}return{x:e.x/100*t.x,y:e.y/100*t.y}}))},r=function(){n.value=!0;var e,o=new Ht["a"],r=Object(L["a"])(t.value);try{for(r.s();!(e=r.n()).done;){var i=e.value,u=o.addSlide();if(i.background){var d=i.background;if("image"===d.type&&d.image)u.background={data:d.image};else if("solid"===d.type&&d.color){var s=l(d.color);u.background={color:s.color,transparency:100*(1-s.alpha)}}else if("gradient"===d.type&&d.gradientColor){var f=Object(Rt["a"])(d.gradientColor,2),p=f[0],m=f[1],b=Y.a.mix(p,m).toHexString(),v=l(b);u.background={color:v.color,transparency:100*(1-v.alpha)}}}if(i.elements){var h,O=Object(L["a"])(i.elements);try{var j=function(){var e=h.value;if("text"===e.type){var n=c(e.content),r={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:"middle"};if(e.rotate&&(r.rotate=e.rotate),e.wordSpace&&(r.charSpacing=.75*e.wordSpace),e.lineHeight&&(r.lineSpacingMultiple=.75*e.lineHeight),e.fill){var i=l(e.fill),d=void 0===e.opacity?1:e.opacity;r.fill={color:i.color,transparency:100*(1-i.alpha*d)}}if(e.defaultColor&&(r.color=l(e.defaultColor).color),e.defaultFontName&&(r.fontFace=e.defaultFontName),e.shadow){var s=l(e.shadow.color);r.shadow={type:"outer",color:s.color.replace("#",""),opacity:s.alpha,blur:.75*e.shadow.blur,offset:(e.shadow.h+e.shadow.v)/2*.75,angle:45}}u.addText(n,r)}else if("image"===e.type){var f={path:e.src,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.flipH&&(f.flipH=e.flipH),e.flipV&&(f.flipV=e.flipV),e.rotate&&(f.rotate=e.rotate),e.clip&&"ellipse"===e.clip.shape&&(f.rounding=!0),e.link){var p=e.link,m=p.type,b=p.target;if("web"===m)f.hyperlink={url:b};else if("slide"===m){var v=t.value.findIndex((function(e){return e.id===b}));-1!==v&&(f.hyperlink={slide:v+1})}}u.addImage(f)}else if("shape"===e.type){if(e.special){var O=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),j=xn(O),y={data:j,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.rotate&&(y.rotate=e.rotate),e.link){var g=e.link,x=g.type,C=g.target;if("web"===x)y.hyperlink={url:C};else if("slide"===x){var k=t.value.findIndex((function(e){return e.id===C}));-1!==k&&(y.hyperlink={slide:k+1})}}u.addImage(y)}else{var w,E,N={x:e.width/e.viewBox,y:e.height/e.viewBox},I=a(hn(e.path),N),V=l(e.fill),S=void 0===e.opacity?1:e.opacity,B={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fill:{color:V.color,transparency:100*(1-V.alpha*S)},points:I};if(e.flipH&&(B.flipH=e.flipH),e.flipV&&(B.flipV=e.flipV),null!==(w=e.outline)&&void 0!==w&&w.width)B.line={color:l((null===(E=e.outline)||void 0===E?void 0:E.color)||"#000000").color,width:.75*e.outline.width,dashType:"solid"===e.outline.style?"solid":"dash"};if(e.shadow){var L=l(e.shadow.color);B.shadow={type:"outer",color:L.color.replace("#",""),opacity:L.alpha,blur:.75*e.shadow.blur,offset:(e.shadow.h+e.shadow.v)/2*.75,angle:45}}if(e.link){var T=e.link,M=T.type,_=T.target;if("web"===M)B.hyperlink={url:_};else if("slide"===M){var D=t.value.findIndex((function(e){return e.id===_}));-1!==D&&(B.hyperlink={slide:D+1})}}u.addShape("custGeom",B)}if(e.text){var z=c(e.text.content),A={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:e.text.align};e.rotate&&(A.rotate=e.rotate),e.text.defaultColor&&(A.color=l(e.text.defaultColor).color),e.text.defaultFontName&&(A.fontFace=e.text.defaultFontName),u.addText(z,A)}}else if("line"===e.type){var F=Re(e),R=a(hn(F)),P=_e(e),H=P.minX,q=P.maxX,X=P.minY,W=P.maxY,U={x:e.left/100,y:e.top/100,w:(q-H)/100,h:(W-X)/100,line:{color:l(e.color).color,width:.75*e.width,dashType:"solid"===e.style?"solid":"dash",beginArrowType:e.points[0]?"arrow":"none",endArrowType:e.points[1]?"arrow":"none"},points:R};u.addShape("custGeom",U)}else if("chart"===e.type){for(var Z=[],J=0;J1||fe.rowspan>1)for(var pe=ue;pe1?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.elementList,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:t.id,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),isActive:e.handleElementId===t.id,isActiveGroupElement:e.activeGroupElementId===t.id,isMultiSelect:e.activeElementIdList.length>1,rotateElement:e.rotateElement,scaleElement:e.scaleElement,openLinkDialog:e.openLinkDialog,dragLineElement:e.dragLineElement},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement"])})),128)),Object(y["createVNode"])(d)]),Object(y["createElementVNode"])("div",{class:"viewport",ref:"viewportRef",style:Object(y["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.mouseSelectionState.isShow?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,top:e.mouseSelectionState.top,left:e.mouseSelectionState.left,width:e.mouseSelectionState.width,height:e.mouseSelectionState.height,quadrant:e.mouseSelectionState.quadrant},null,8,["top","left","width","height","quadrant"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.elementList,(function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(f,{key:t.id,elementInfo:t,elementIndex:n+1,isMultiSelect:e.activeElementIdList.length>1,selectElement:e.selectElement,openLinkDialog:e.openLinkDialog},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement","openLinkDialog"])})),128))],4)],4),Object(y["createVNode"])(m,{visible:e.linkDialogVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.linkDialogVisible=t}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{onClose:t[1]||(t[1]=function(t){return e.linkDialogVisible=!1})})]})),_:1},8,["visible"])],544)),[[b,e.contextmenus],[v,e.removeEditorAreaFocus]])}var Rn=function(){var e=window.getSelection();e&&e.removeAllRanges()},Pn=function(e){var t=Object(y["ref"])(0),n=Object(y["ref"])(0),o=ee(),l=Object(g["c"])(o),c=l.canvasPercentage,a=Object(g["c"])($()),r=a.viewportRatio,i=function(){if(e.value){var l=e.value.clientWidth,a=e.value.clientHeight;if(a/l>r.value){var i=l*(c.value/100);o.setCanvasScale(i/Ge),t.value=(l-i)/2,n.value=(a-i*r.value)/2}else{var u=a*(c.value/100);o.setCanvasScale(u/(Ge*r.value)),t.value=(l-u/r.value)/2,n.value=(a-u)/2}}};Object(y["watch"])([c,r],i);var u=Object(y["computed"])((function(){return{width:Ge,height:Ge*r.value,left:t.value,top:n.value}})),d=new ResizeObserver(i);return Object(y["onMounted"])((function(){e.value&&d.observe(e.value)})),Object(y["onUnmounted"])((function(){e.value&&d.unobserve(e.value)})),{viewportStyles:u}},Hn=function(e,t){var n=ee(),o=Object(g["c"])(n),l=o.canvasScale,c=Object(y["reactive"])({isShow:!1,top:0,left:0,width:0,height:0,quadrant:1}),a=function(o){if(t.value){var a=!0,r=t.value.getBoundingClientRect(),i=5,u=o.pageX,d=o.pageY,s=(u-r.x)/l.value,f=(d-r.y)/l.value;c.isShow=!1,c.quadrant=4,c.top=f,c.left=s,c.width=0,c.height=0,document.onmousemove=function(e){if(a){var t=e.pageX,n=e.pageY,o=(t-u)/l.value,r=(n-d)/l.value,s=Math.abs(o),f=Math.abs(r);if(!(s0&&r>0?p=4:o<0&&r<0?p=1:o>0&&r<0?p=2:o<0&&r>0&&(p=3),c.isShow=!0,c.quadrant=p,c.width=s,c.height=f}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,a=!1;for(var t=[],o=0;or&&mi&&vr-u&&mi-d&&vr&&mi-d&&vr-u&&mi&&v0&&Math.abs(r-45)<=d?r-=r-45:r<0&&Math.abs(r+45)<=d?r-=r+45:r>0&&Math.abs(r-90)<=d?r-=r-90:r<0&&Math.abs(r+90)<=d?r-=r+90:r>0&&Math.abs(r-135)<=d?r-=r-135:r<0&&Math.abs(r+135)<=d?r-=r+135:r>0&&Math.abs(r-180)<=d?r-=r-180:r<0&&Math.abs(r+180)<=d&&(r-=r+180),e.value=e.value.map((function(e){return o.id===e.id?Object(B["a"])(Object(B["a"])({},e),{},{rotate:r}):e}))}},document.onmouseup=function(){c=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(n.updateSlide({elements:e.value}),a())}}};return{rotateElement:r}},Gn={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},Un={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},Yn=function(e,t){var n=e.left,o=e.top,l=e.width,c=e.height,a=Math.sqrt(Math.pow(l,2)+Math.pow(c,2))/2,r=180*Math.atan(c/l)/Math.PI,i=(180-t-r)*Math.PI/180,u=(r-t)*Math.PI/180,d=(90-t)*Math.PI/180,s=t*Math.PI/180,f=l/2,p=c/2,m=n+f,b=o+p,v={left:m+a*Math.cos(i),top:b-a*Math.sin(i)},h={left:m+p*Math.cos(d),top:b-p*Math.sin(d)},O={left:m+a*Math.cos(u),top:b-a*Math.sin(u)},j={left:m+f*Math.cos(s),top:b+f*Math.sin(s)},y={left:m-a*Math.cos(i),top:b+a*Math.sin(i)},g={left:m-p*Math.sin(s),top:b+p*Math.cos(s)},x={left:m-a*Math.cos(u),top:b+a*Math.sin(u)},C={left:m-f*Math.cos(s),top:b-f*Math.sin(s)};return{leftTopPoint:v,topPoint:h,rightTopPoint:O,rightPoint:j,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:C}},Zn=function(e,t){var n,o=(n={},Object(ae["a"])(n,E.RIGHT_BOTTOM,t.leftTopPoint),Object(ae["a"])(n,E.LEFT_BOTTOM,t.rightTopPoint),Object(ae["a"])(n,E.LEFT_TOP,t.rightBottomPoint),Object(ae["a"])(n,E.RIGHT_TOP,t.leftBottomPoint),Object(ae["a"])(n,E.TOP,t.bottomPoint),Object(ae["a"])(n,E.BOTTOM,t.topPoint),Object(ae["a"])(n,E.LEFT,t.rightPoint),Object(ae["a"])(n,E.RIGHT,t.leftPoint),n);return o[e]},Jn=function(e,t){var n=ee(),o=$(),l=Object(g["c"])(n),c=l.activeElementIdList,a=l.activeGroupElementId,r=l.canvasScale,i=Object(g["c"])(o),u=i.viewportRatio,d=Object(g["c"])(se()),s=d.ctrlOrShiftKeyActive,f=qe(),p=f.addHistorySnapshot,m=function(l,i,d){var f=!0;n.setScalingState(!0);var m,b=i.left,v=i.top,h=i.width,O=i.height,j="rotate"in i&&i.rotate?i.rotate:0,y=Math.PI*j/180,g=s.value||"fixedRatio"in i&&i.fixedRatio,x=h/O,C=l.pageX,k=l.pageY,w=Un[i.type]||20,N=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),l.value.includes(i.id)){if(u.value){var s=[];if(i.groupId){var f=[];e.value.forEach((function(e){e.groupId===i.groupId&&f.push(e.id)})),s=l.value.filter((function(e){return!f.includes(e)}))}else s=l.value.filter((function(e){return e!==i.id}));s.length>0&&n.setActiveElementIdList(s)}else if(a.value!==i.id)n.setHandleElementId(i.id);else if(c.value!==i.id){var p=o.pageX,m=o.pageY;o.target.onmouseup=function(e){var t=e.pageX,o=e.pageY;p===t&&m===o&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var b=[];if(b=u.value?[].concat(Object(G["a"])(l.value),[i.id]):[i.id],i.groupId){var v=[];e.value.forEach((function(e){e.groupId===i.groupId&&v.push(e.id)})),b=[].concat(Object(G["a"])(b),v)}n.setActiveElementIdList(Object(Z["uniq"])(b)),n.setHandleElementId(i.id)}d&&t(o,i)},s=function(){var t=e.value.filter((function(e){return!e.lock})),o=t.map((function(e){return e.id}));n.setActiveElementIdList(o)};return{selectElement:d,selectAllElement:s}},Qn=function(e,t){var n=$(),o=Object(g["c"])(ee()),l=o.activeElementIdList,c=o.activeGroupElementId,a=o.canvasScale,r=Object(g["c"])(n),i=r.viewportRatio,u=qe(),d=u.addHistorySnapshot,s=function(o,r){if(l.value.includes(r.id)){var u,s=!0,f=Ge,p=Ge*i.value,m=5,b=JSON.parse(JSON.stringify(e.value)),v=b.filter((function(e){return l.value.includes(e.id)})),h=r.left,O=r.top,j=r.width,y="height"in r&&r.height?r.height:0,g="rotate"in r&&r.rotate?r.rotate:0,x=o.pageX,C=o.pageY,k=null,w=r.id===c.value,E=[],N=[],I=Object(L["a"])(e.value);try{for(I.s();!(u=I.n()).done;){var V=u.value;if("line"!==V.type&&((!w||V.id!==r.id)&&(w||!l.value.includes(V.id)))){var S=void 0,T=void 0,M=void 0,_=void 0;if("rotate"in V&&V.rotate){var D=Te({left:V.left,top:V.top,width:V.width,height:V.height,rotate:V.rotate}),z=D.xRange,A=D.yRange;S=z[0],T=A[0],M=z[1]-z[0],_=A[1]-A[0]}else S=V.left,T=V.top,M=V.width,_=V.height;var F=S+M,R=T+_,P=T+_/2,H=S+M/2,q={value:T,range:[S,F]},X={value:R,range:[S,F]},W={value:P,range:[S,F]},U={value:S,range:[T,R]},Y={value:F,range:[T,R]},Z={value:H,range:[T,R]};E.push(q,X,W),N.push(U,Y,Z)}}}catch(ne){I.e(ne)}finally{I.f()}var J={value:0,range:[0,f]},K={value:p,range:[0,f]},Q={value:p/2,range:[0,f]},$={value:0,range:[0,p]},ee={value:f,range:[0,p]},te={value:f/2,range:[0,p]};E.push(J,K,Q),N.push($,ee,te),E=ze(E),N=ze(N),document.onmousemove=function(n){var o=n.pageX,c=n.pageY;if(!1!==k&&(k=Math.abs(x-o)v&&(A[0]=D-M,F[0]=0),b>h&&(A[1]=z-_,F[1]=0),e.value=e.value.map((function(e){if(e.id===l.id){var t=Object(B["a"])(Object(B["a"])({},e),{},{left:M,top:_,start:A,end:F});return a!==N.MID?(l.broken&&(t.broken=[(A[0]+F[0])/2,(A[1]+F[1])/2]),l.curve&&(t.curve=[(A[0]+F[0])/2,(A[1]+F[1])/2])):(l.broken&&(t.broken=[j-M,y-_]),l.curve&&(t.curve=[j-M,y-_])),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,l=n.pageY;u===o&&d===l||(t.updateSlide({elements:e.value}),c())}};return{dragLineElement:a}},eo=function(e){var t=ee(),n=Object(g["c"])(t),o=n.canvasScale,l=n.creatingElement,c=function(t){var n=t.start,l=t.end;if(e.value){var c=e.value.getBoundingClientRect(),a=Object(Rt["a"])(n,2),r=a[0],i=a[1],u=Object(Rt["a"])(l,2),d=u[0],s=u[1],f=Math.min(r,d),p=Math.max(r,d),m=Math.min(i,s),b=Math.max(i,s),v=(f-c.x)/o.value,h=(m-c.y)/o.value,O=(p-f)/o.value,j=(b-m)/o.value;return{left:v,top:h,width:O,height:j}}},a=function(t){var n=t.start,l=t.end;if(e.value){var c=e.value.getBoundingClientRect(),a=Object(Rt["a"])(n,2),r=a[0],i=a[1],u=Object(Rt["a"])(l,2),d=u[0],s=u[1],f=Math.min(r,d),p=Math.max(r,d),m=Math.min(i,s),b=Math.max(i,s),v=(f-c.x)/o.value,h=(m-c.y)/o.value,O=(p-f)/o.value,j=(b-m)/o.value,y=[r===f?0:O,i===m?0:j],g=[d===f?0:O,s===m?0:j];return{left:v,top:h,start:y,end:g}}},r=Ue(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(l.value){var n=l.value.type;if("text"===n){var o=c(e);o&&i(o)}else if("shape"===n){var r=c(e);r&&u(r,l.value.data)}else if("line"===n){var s=a(e);s&&d(s,l.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},to=["id"];function no(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,to)}var oo;n("a9e3");(function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table",e["LATEX"]="latex",e["VIDEO"]="video",e["AUDIO"]="audio"})(oo||(oo={}));var lo=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=l.viewportRatio,r=qe(),i=r.addHistorySnapshot,u=function(t){var l,r=Ge,u=Ge*a.value,d=De(o.value),s=d.minX,f=d.maxX,p=d.minY,m=d.maxY,b=JSON.parse(JSON.stringify(c.value.elements)),v=Object(L["a"])(b);try{for(v.s();!(l=v.n()).done;){var h=l.value;if(n.value.includes(h.id)){if(t===k.CENTER){var O=p+(m-p)/2-u/2,j=s+(f-s)/2-r/2;h.top=h.top-O,h.left=h.left-j}if(t===k.TOP){var y=p-0;h.top=h.top-y}else if(t===k.VERTICAL){var g=p+(m-p)/2-u/2;h.top=h.top-g}else if(t===k.BOTTOM){var x=m-u;h.top=h.top-x}else if(t===k.LEFT){var C=s-0;h.left=h.left-C}else if(t===k.HORIZONTAL){var w=s+(f-s)/2-r/2;h.left=h.left-w}else if(t===k.RIGHT){var E=f-r;h.left=h.left-E}}}}catch(N){v.e(N)}finally{v.f()}e.updateSlide({elements:b}),i()};return{alignElementToCanvas:u}},co=["src"];function ao(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ImageClipHandler"),r=Object(y["resolveComponent"])("ImageOutline"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[e.isCliping?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,rotate:e.elementInfo.rotate,clipPath:e.clipShape.style,onClip:t[0]||(t[0]=function(t){return e.handleClip(t)})},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[Object(y["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter}),onDragstart:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,co)],4)],36)),[[i,e.contextmenus]])],4)],6)}var ro,io,uo=function(e){var t=Object(y["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,l=t.blur,c=t.color;return"".concat(n,"px ").concat(o,"px ").concat(l,"px ").concat(c)}return""}));return{shadowStyle:t}},so=function(e,t){var n=Object(y["computed"])((function(){var n="";return e.value&&t.value?n="rotateX(180deg) rotateY(180deg)":t.value?n="rotateX(180deg)":e.value&&(n="rotateY(180deg)"),n}));return{flipStyle:n}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(ro||(ro={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(io||(io={}));var fo={rect:{name:"矩形",type:ro.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:ro.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},rect3:{name:"矩形3",type:ro.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.8*t," Z")}},roundRect:{name:"圆角矩形",type:ro.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:ro.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:ro.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L 0 ").concat(t," L ").concat(e," ").concat(t," Z")}},triangle2:{name:"三角形2",type:ro.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:function(e,t){return"M ".concat(.5*e," ").concat(t," L 0 0 L ").concat(e," 0 Z")}},triangle3:{name:"三角形3",type:ro.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," Z")}},rhombus:{name:"菱形",type:ro.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.5*e," ").concat(t," L 0 ").concat(.5*t," Z")}},hexagon:{name:"六边形",type:ro.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.2*e," 0 L ").concat(.8*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.8*e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.5*t," Z")}},pentagon:{name:"五边形",type:ro.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.38*t," L ").concat(.82*e," ").concat(t," L ").concat(.18*e," ").concat(t," L 0 ").concat(.38*t," Z")}},parallelogram:{name:"平行四边形",type:ro.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.3*e," 0 L ").concat(e," 0 L ").concat(.7*e," ").concat(t," L 0 ").concat(t," Z")}},parallelogram2:{name:"平行四边形2",type:ro.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:function(e,t){return"M ".concat(.3*e," ").concat(t," L ").concat(e," ").concat(t," L ").concat(.7*e," 0 L 0 0 Z")}},trapezoid:{name:"梯形",type:ro.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.25*e," 0 L ").concat(.75*e," 0 L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},trapezoid2:{name:"梯形2",type:ro.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:function(e,t){return"M 0 0 L ".concat(e," 0 L ").concat(.75*e," ").concat(t," L ").concat(.25*e," ").concat(t," Z")}}},po=function(e){var t=Object(y["computed"])((function(){if(!e.value)return fo.rect;var t=e.value.shape||ro.RECT;return fo[t]})),n=Object(y["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(Rt["a"])(e.value.range,2),n=t[0],o=t[1],l=(o[0]-n[0])/100,c=(o[1]-n[1])/100,a=n[0]/l,r=n[1]/c;return{left:-a+"%",top:-r+"%",width:100/l+"%",height:100/c+"%"}}));return{clipShape:t,imgPosition:n}},mo=(n("b64b"),function(e){var t=Object(y["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);n45&&e.rotate<135&&(d=(u-c)/l.value/e.width*100,s=-(i-o)/l.value/e.height*100),(e.rotate>=135&&e.rotate<=180||e.rotate>=-180&&e.rotate<=-135)&&(d=-d,s=-s),e.rotate>-135&&e.rotate<-45&&(d=-(u-c)/l.value/e.width*100,s=(i-o)/l.value/e.height*100);var f=r.left+d,m=r.top+s;f<0?f=0:f+r.width>a.width&&(f=a.width-r.width),m<0?m=0:m+r.height>a.height&&(m=a.height-r.height),p.left=f,p.top=m}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,j(),setTimeout((function(){i.value=!1}),0)}},C=function(t,n){i.value=!0;var o=!0,c=50/e.width*100,r=50/e.height*100,u=t.pageX,d=t.pageY,f=s.value,m={left:p.left,top:p.top,width:p.width,height:p.height},b=p.width/p.height;document.onmousemove=function(t){if(o){var i,s,v,h,O=t.pageX,j=t.pageY,y=(O-u)/l.value/e.width*100,g=(j-d)/l.value/e.height*100;e.rotate>45&&e.rotate<135&&(y=(j-d)/l.value/e.width*100,g=-(O-u)/l.value/e.height*100),(e.rotate>=135&&e.rotate<=180||e.rotate>=-180&&e.rotate<=-135)&&(y=-y,g=-g),e.rotate>-135&&e.rotate<-45&&(y=-(j-d)/l.value/e.width*100,g=(O-u)/l.value/e.height*100),a.value&&(n!==E.RIGHT_BOTTOM&&n!==E.LEFT_TOP||(g=y/b),n!==E.LEFT_BOTTOM&&n!==E.RIGHT_TOP||(g=-y/b)),n===E.LEFT_TOP?(m.left+y<0&&(y=-m.left),m.top+g<0&&(g=-m.top),m.width-yf.width&&(y=f.width-(m.left+m.width)),m.top+g<0&&(g=-m.top),m.width+yf.height&&(g=f.height-(m.top+m.height)),m.width-yf.width&&(y=f.width-(m.left+m.width)),m.top+m.height+g>f.height&&(g=f.height-(m.top+m.height)),m.width+yf.height&&(g=f.height-(m.top+m.height)),m.height+gf.width&&(y=f.width-(m.left+m.width)),m.width+y-22.5&&n<=22.5?t+0:n>22.5&&n<=67.5?t+45:n>67.5&&n<=112.5?t+90:n>112.5&&n<=157.5?t+135:n>157.5||n<=-157.5?t+0:n>-157.5&&n<=-112.5?t+45:n>-112.5&&n<=-67.5?t+90:n>-67.5&&n<=-22.5?t+135:t+0}));return{clipWrapperPositionStyle:r,bottomImgPositionStyle:f,topImgWrapperPositionStyle:m,topImgPositionStyle:b,rotateClassName:k,handleClip:h,moveClipRange:x,scaleClipRange:C}}});n("084d");const Jo=Ln()(Zo,[["render",Yo],["__scopeId","data-v-d8c610c6"]]);var Ko=Jo,Qo=Object(y["defineComponent"])({name:"editable-element-image",components:{ImageOutline:Ao,ImageClipHandler:Ko},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.clipingImageElementId,c=Object(y["computed"])((function(){return l.value===e.elementInfo.id})),a=qe(),r=a.addHistorySnapshot,i=Object(y["computed"])((function(){return e.elementInfo.shadow})),u=uo(i),d=u.shadowStyle,s=Object(y["computed"])((function(){return e.elementInfo.flipH})),f=Object(y["computed"])((function(){return e.elementInfo.flipV})),p=so(s,f),m=p.flipStyle,b=Object(y["computed"])((function(){return e.elementInfo.clip})),v=po(b),h=v.clipShape,O=v.imgPosition,j=Object(y["computed"])((function(){return e.elementInfo.filters})),x=mo(j),C=x.filter,k=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},w=function(o){if(t.setClipingImageElementId(""),o){var l=o.range,c=o.position,a=e.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},i=e.elementInfo.left+c.left,u=e.elementInfo.top+c.top,d=e.elementInfo.width+c.width,s=e.elementInfo.height+c.height,f=0,p=0;if(e.elementInfo.rotate){var m=i+d/2-(e.elementInfo.left+e.elementInfo.width/2),b=-(u+s/2-(e.elementInfo.top+e.elementInfo.height/2)),v=-e.elementInfo.rotate*Math.PI/180,h=m*Math.cos(v)-b*Math.sin(v),O=m*Math.sin(v)+b*Math.cos(v);f=h-m,p=-(O-b)}var j={clip:Object(B["a"])(Object(B["a"])({},a),{},{range:l}),left:i+f,top:u+p,width:d,height:s};n.updateElement({id:e.elementInfo.id,props:j}),r()}};return{isCliping:c,handleClip:w,clipingImageElementId:l,shadowStyle:d,handleSelectElement:k,clipShape:h,imgPosition:O,filter:C,flipStyle:m}}});n("fc7e");const $o=Ln()(Qo,[["render",ao],["__scopeId","data-v-288ee59d"]]);var el=$o,tl=function(e){return Object(y["pushScopeId"])("data-v-58d3557f"),e=e(),Object(y["popScopeId"])(),e},nl=tl((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler top"},null,-1)})),ol=tl((function(){return Object(y["createElementVNode"])("div",{class:"drag-handler bottom"},null,-1)}));function ll(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline"),r=Object(y["resolveComponent"])("ProsemirrorEditor"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-text",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:e.shadowStyle,lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(r,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,onUpdate:t[0]||(t[0]=function(t){return e.updateContent(t)}),onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t,!1)})},null,8,["elementId","defaultColor","defaultFontName","editable","value"]),nl,ol],36),[[i,e.contextmenus]])],4)],6)}var cl=["width","height"],al=["d","stroke","stroke-width","stroke-dasharray"];function rl(e,t,n,o,l,c){return e.outline?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[Object(y["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",d:"M0,0 L".concat(e.width,",0 L").concat(e.width,",").concat(e.height," L0,").concat(e.height," Z"),stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,al)],8,cl)):Object(y["createCommentVNode"])("",!0)}var il=Object(y["defineComponent"])({name:"element-outline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=yo(Object(y["toRef"])(e,"outline")),n=t.outlineWidth,o=t.outlineStyle,l=t.outlineColor;return{outlineWidth:n,outlineStyle:o,outlineColor:l}}});n("5235");const ul=Ln()(il,[["render",rl],["__scopeId","data-v-722bf8fa"]]);var dl=ul,sl={class:"prosemirror-editor",ref:"editorViewRef"};function fl(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sl,null,512)}var pl,ml=n("0010"),bl=n("5313"),vl=n("576a"),hl=n("304a"),Ol=n("7f06"),jl=n("8726"),yl=n("23f1"),gl=n("1a16"),xl=n("665f"),Cl=n("f95e"),kl=function(e){var t={},n=function(e,n){return t[e]=n};return n("Alt-ArrowUp",ml["c"]),n("Alt-ArrowDown",ml["b"]),n("Ctrl-z",jl["c"]),n("Ctrl-y",jl["b"]),n("Backspace",Cl["f"]),n("Escape",ml["e"]),n("Ctrl-b",Object(ml["f"])(e.marks.strong)),n("Ctrl-i",Object(ml["f"])(e.marks.em)),n("Ctrl-u",Object(ml["f"])(e.marks.underline)),n("Ctrl-d",Object(ml["f"])(e.marks.strikethrough)),n("Enter",Object(xl["f"])(e.nodes.list_item)),n("Mod-[",Object(xl["b"])(e.nodes.list_item)),n("Mod-]",Object(xl["e"])(e.nodes.list_item)),t},wl=function(e){return Object(Cl["g"])(/^\s*>\s$/,e)},El=function(e){return Object(Cl["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},Nl=function(e){return Object(Cl["g"])(/^\s*([-+*])\s$/,e)},Il=function(e){return Object(Cl["e"])(/^```$/,e)},Vl=function(e){var t=[].concat(Object(G["a"])(Cl["d"]),[Cl["a"],Cl["b"]]);return t.push(wl(e.nodes.blockquote)),t.push(El(e.nodes.ordered_list)),t.push(Nl(e.nodes.bullet_list)),t.push(Il(e.nodes.code_block)),Object(Cl["c"])({rules:t})},Sl=function(e){return[Vl(e),Object(Ol["b"])(kl(e)),Object(Ol["b"])(ml["a"]),Object(yl["a"])(),Object(gl["a"])(),Object(jl["a"])()]},Bl=n("2210"),Ll=Object(B["a"])(Object(B["a"])({},xl["d"]),{},{content:"list_item+",group:"block"}),Tl=Object(B["a"])(Object(B["a"])({},xl["a"]),{},{content:"list_item+",group:"block"}),Ml=Object(B["a"])(Object(B["a"])({},xl["c"]),{},{content:"paragraph block*",group:"block"}),_l={attrs:{align:{default:""}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";return n=/(left|right|center|justify)/.test(n)?n:"",{align:n}}}],toDOM:function(e){var t=e.attrs.align,n="";return t&&"left"!==t&&(n+="text-align: ".concat(t,";")),["p",{style:n},0]}},Dl=Object(B["a"])(Object(B["a"])({},Bl["b"]),{},{ordered_list:Ll,bullet_list:Tl,list_item:Ml,paragraph:_l}),zl={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},Al={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},Fl={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:function(e){return"line-through"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"line-through"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration-line: line-through"},0]}},Rl={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:function(e){return"underline"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"underline"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration: underline"},0]}},Pl={attrs:{color:{}},parseDOM:[{style:"color",getAttrs:function(e){return e?{color:e}:{}}}],toDOM:function(e){var t=e.attrs.color,n="";return t&&(n+="color: ".concat(t,";")),["span",{style:n},0]}},Hl={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{tag:"span[style*=background-color]",getAttrs:function(e){return e?{backcolor:e}:{}}}],toDOM:function(e){var t=e.attrs.backcolor,n="";return t&&(n+="background-color: ".concat(t,";")),["span",{style:n},0]}},ql={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:function(e){return e?{fontsize:e}:{}}}],toDOM:function(e){var t=e.attrs.fontsize,n="";return t&&(n+="font-size: ".concat(t)),["span",{style:n},0]}},Xl={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:function(e){return{fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""}}}],toDOM:function(e){var t=e.attrs.fontname,n="";return t&&(n+="font-family: ".concat(t)),["span",{style:n},0]}},Wl=Object(B["a"])(Object(B["a"])({},Bl["a"]),{},{subscript:zl,superscript:Al,strikethrough:Fl,underline:Rl,forecolor:Pl,backcolor:Hl,fontsize:ql,fontname:Xl}),Gl=Dl,Ul=Wl,Yl=new hl["i"]({nodes:Gl,marks:Ul}),Zl=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return hl["a"].fromSchema(Yl).parse(o)},Jl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new vl["c"](e,Object(B["a"])({state:bl["b"].create({doc:Zl(t),plugins:Sl(Yl)})},n))},Kl=n("1344");(function(e){e["RICH_TEXT_COMMAND"]="RICH_TEXT_COMMAND",e["OPEN_CHART_DATA_EDITOR"]="OPEN_CHART_DATA_EDITOR",e["OPEN_LATEX_EDITOR"]="OPEN_LATEX_EDITOR"})(pl||(pl={}));var Ql=Object(Kl["a"])(),$l=Ql,ec=(n("6062"),function(e,t,n){var o=e,l=o.selection,c=o.doc;if(!l||!c)return e;var a=l.from,r=l.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var p=new Set([u,d,s]);return c.nodesBetween(a,r,(function(e,t){var o=e.type,l=e.attrs.align||"";return l!==n&&p.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,l=t.pos,c=t.nodeType,a=o.attrs;a=n?Object(B["a"])(Object(B["a"])({},a),{},{align:n}):Object(B["a"])(Object(B["a"])({},a),{},{align:null}),e=e.setNodeMarkup(l,c,a,o.marks)})),e):e}),tc=function(e,t){var n=e.state,o=n.schema,l=n.selection,c=ec(n.tr.setSelection(l),o,t);e.dispatch(c)},nc=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},oc=function(e,t){return function(n,o){var l=n.schema,c=n.selection,a=c.$from,r=c.$to,i=a.blockRange(r);if(!i)return!1;var u=_((function(e){return nc(e,l)}))(c);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(xl["b"])(t)(n,o);if(nc(u.node,l)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(xl["g"])(e)(n,o)}},lc=Object(y["defineComponent"])({name:"prosemirror-editor",emits:["update","focus","blur"],props:{elementId:{type:String,required:!0},defaultColor:{type:String,required:!0},defaultFontName:{type:String,required:!0},editable:{type:Boolean,default:!1},value:{type:String,required:!0},autoFocus:{type:Boolean,default:!1}},setup:function(e,t){var n,o=t.emit,l=ee(),c=Object(g["c"])(l),a=c.handleElementId,r=Object(y["ref"])(),i=Object(Z["debounce"])((function(){o("update",n.dom.innerHTML)}),300,{trailing:!0}),u=function(){"请输入内容"===e.value&&setTimeout((function(){Object(ml["d"])(n.state,n.dispatch)}),0),l.setDisableHotkeysState(!0),o("focus")},d=function(){l.setDisableHotkeysState(!1),o("blur")},s=Object(Z["debounce"])((function(){var t=q(n,{color:e.defaultColor,fontname:e.defaultFontName});l.setRichtextAttrs(t)}),30,{trailing:!0}),f=function(){i(),s()},p=Object(y["computed"])((function(){return e.value}));Object(y["watch"])(p,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,o=e.tr;n.dispatch(o.replaceRangeWith(0,t.content.size,Zl(p.value)))}})),Object(y["watch"])((function(){return e.editable}),(function(){n.setProps({editable:function(){return e.editable}})})),Object(y["onMounted"])((function(){n=Jl(r.value,p.value,{handleDOMEvents:{focus:u,blur:d,keydown:f,click:s},editable:function(){return e.editable}}),e.autoFocus&&n.focus()})),Object(y["onUnmounted"])((function(){n&&n.destroy()}));var m=function(t){if(a.value===e.elementId){var o,l="command"in t?[t]:t,c=Object(L["a"])(l);try{for(c.s();!(o=c.n()).done;){var r=o.value;if("fontname"===r.command&&r.value){var u=n.state.schema.marks.fontname.create({fontname:r.value}),d=n.state.selection.empty;d&&Object(ml["d"])(n.state,n.dispatch);var f=n.state.selection,p=f.$from,m=f.$to;n.dispatch(n.state.tr.addMark(p.pos,m.pos,u))}else if("fontsize"===r.command&&r.value){var b=n.state.schema.marks.fontsize.create({fontsize:r.value}),v=n.state.selection.empty;v&&Object(ml["d"])(n.state,n.dispatch);var h=n.state.selection,O=h.$from,j=h.$to;n.dispatch(n.state.tr.addMark(O.pos,j.pos,b))}else if("color"===r.command&&r.value){var y=n.state.schema.marks.forecolor.create({color:r.value}),g=n.state.selection.empty;g&&Object(ml["d"])(n.state,n.dispatch);var x=n.state.selection,C=x.$from,k=x.$to;n.dispatch(n.state.tr.addMark(C.pos,k.pos,y))}else if("backcolor"===r.command&&r.value){var w=n.state.schema.marks.backcolor.create({backcolor:r.value}),E=n.state.selection.empty;E&&Object(ml["d"])(n.state,n.dispatch);var N=n.state.selection,I=N.$from,V=N.$to;n.dispatch(n.state.tr.addMark(I.pos,V.pos,w))}else if("bold"===r.command){var S=n.state.selection.empty;S&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.strong)(n.state,n.dispatch)}else if("em"===r.command){var B=n.state.selection.empty;B&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.em)(n.state,n.dispatch)}else if("underline"===r.command){var T=n.state.selection.empty;T&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.underline)(n.state,n.dispatch)}else if("strikethrough"===r.command){var M=n.state.selection.empty;M&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.strikethrough)(n.state,n.dispatch)}else if("subscript"===r.command)Object(ml["f"])(n.state.schema.marks.subscript)(n.state,n.dispatch);else if("superscript"===r.command)Object(ml["f"])(n.state.schema.marks.superscript)(n.state,n.dispatch);else if("blockquote"===r.command)Object(ml["g"])(n.state.schema.nodes.blockquote)(n.state,n.dispatch);else if("code"===r.command)Object(ml["f"])(n.state.schema.marks.code)(n.state,n.dispatch);else if("align"===r.command&&r.value)tc(n,r.value);else if("bulletList"===r.command){var _=n.state.schema.nodes,D=_.bullet_list,z=_.list_item;oc(D,z)(n.state,n.dispatch)}else if("orderedList"===r.command){var A=n.state.schema.nodes,F=A.ordered_list,R=A.list_item;oc(F,R)(n.state,n.dispatch)}else if("clear"===r.command){var P=n.state.selection.empty;P&&Object(ml["d"])(n.state,n.dispatch);var H=n.state.selection,q=H.$from,X=H.$to;n.dispatch(n.state.tr.removeMark(q.pos,X.pos))}else"insert"===r.command&&r.value&&n.dispatch(n.state.tr.insertText(r.value))}}catch(W){c.e(W)}finally{c.f()}n.focus(),i(),s()}};return $l.on(pl.RICH_TEXT_COMMAND,m),Object(y["onUnmounted"])((function(){$l.off(pl.RICH_TEXT_COMMAND,m)})),{editorViewRef:r}}});n("da17");const cc=Ln()(lc,[["render",fl],["__scopeId","data-v-f0d6ea86"]]);var ac=cc,rc=Object(y["defineComponent"])({name:"editable-element-text",components:{ElementOutline:dl,ProsemirrorEditor:ac},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.handleElementId,c=o.isScaling,a=qe(),r=a.addHistorySnapshot,i=Object(y["ref"])(),u=Object(y["computed"])((function(){return e.elementInfo.shadow})),d=uo(u),s=d.shadowStyle,f=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},p=Object(y["ref"])(-1);Object(y["watch"])(c,(function(){l.value===e.elementInfo.id&&(c.value||-1===p.value||(n.updateElement({id:e.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var m=function(t){var o=t[0].contentRect;if(i.value){var l=o.height;e.elementInfo.height!==l&&(c.value?p.value=l:n.updateElement({id:e.elementInfo.id,props:{height:l}}))}},b=new ResizeObserver(m);Object(y["onMounted"])((function(){i.value&&b.observe(i.value)})),Object(y["onUnmounted"])((function(){i.value&&b.unobserve(i.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{content:t}}),r()};return{elementRef:i,shadowStyle:s,updateContent:v,handleSelectElement:f}}});n("5083");const ic=Ln()(rc,[["render",ll],["__scopeId","data-v-58d3557f"]]);var uc=ic,dc=["width","height"],sc={key:0},fc=["transform"],pc=["d","fill","stroke","stroke-width","stroke-dasharray"],mc=["innerHTML"];function bc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GradientDefs"),r=Object(y["resolveComponent"])("ProsemirrorEditor"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle,color:e.text.defaultColor,fontFamily:e.text.defaultFontName}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)}),onDblclick:t[3]||(t[3]=function(t){return e.enterEditing()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",sc,[Object(y["createVNode"])(a,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,pc)],8,fc)],8,dc)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",[e.text.align,{editable:e.editable}]])},[e.editable?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,elementId:e.elementInfo.id,defaultColor:e.text.defaultColor,defaultFontName:e.text.defaultFontName,editable:!e.elementInfo.lock,autoFocus:!0,value:e.text.content,onUpdate:t[0]||(t[0]=function(t){return e.updateText(t)}),onMousedown:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"show-text ProseMirror-static",innerHTML:e.text.content},null,8,mc))],2)],36),[[i,e.contextmenus]])],4)],6)}var vc=["id","gradientTransform"],hc=["stop-color"],Oc=["stop-color"],jc=["id"],yc=["stop-color"],gc=["stop-color"];function xc(e,t,n,o,l,c){return"linear"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,hc),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,Oc)],8,vc)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,yc),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,gc)],8,jc))}var Cc=Object(y["defineComponent"])({name:"gradient-defs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}}});const kc=Ln()(Cc,[["render",xc]]);var wc=kc,Ec=Object(y["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:wc,ProsemirrorEditor:ac},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.handleElementId,c=qe(),a=c.addHistorySnapshot,r=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},i=Object(y["computed"])((function(){return e.elementInfo.outline})),u=yo(i),d=u.outlineWidth,s=u.outlineStyle,f=u.outlineColor,p=Object(y["computed"])((function(){return e.elementInfo.shadow})),m=uo(p),b=m.shadowStyle,v=Object(y["computed"])((function(){return e.elementInfo.flipH})),h=Object(y["computed"])((function(){return e.elementInfo.flipV})),O=so(v,h),j=O.flipStyle,x=Object(y["ref"])(!1),C=function(){x.value=!0,t.setEditingShapeElementId(e.elementInfo.id)},k=function(){x.value=!1,t.setEditingShapeElementId("")};Object(y["watch"])(l,(function(){l.value!==e.elementInfo.id&&x.value&&k()}));var w=Object(y["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t})),E=function(t){var o=Object(B["a"])(Object(B["a"])({},w.value),{},{content:t});n.updateElement({id:e.elementInfo.id,props:{text:o}}),a()};return{shadowStyle:b,outlineWidth:d,outlineStyle:s,outlineColor:f,flipStyle:j,editable:x,text:w,handleSelectElement:r,updateText:E,enterEditing:C}}});n("efbe");const Nc=Ln()(Ec,[["render",bc],["__scopeId","data-v-4faf3734"]]);var Ic=Nc,Vc=["width","height"],Sc=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Bc=["d"];function Lc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-point",d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,Sc),Object(y["withDirectives"])(Object(y["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Bc),[[r,e.contextmenus]])],8,Vc))],36)],6)}var Tc=["id","markerWidth","markerHeight","refX","refY"],Mc=["d","fill","transform"];function _c(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*e.size,markerHeight:3*e.size,refX:1.5*e.size,refY:1.5*e.size},[Object(y["createElementVNode"])("path",{d:e.path,fill:e.color,transform:"scale(".concat(.3*e.size,", ").concat(.3*e.size,") rotate(").concat(e.rotate,", 5, 5)")},null,8,Mc)],8,Tc)}var Dc={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},zc={"arrow-start":180,"arrow-end":0},Ac=Object(y["defineComponent"])({name:"line-point-marker",props:{id:{type:String,required:!0},position:{type:String,required:!0},type:{type:String,required:!0},color:{type:String},baseSize:{type:Number,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return Dc[e.type]})),n=Object(y["computed"])((function(){return zc["".concat(e.type,"-").concat(e.position)]||0})),o=Object(y["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});const Fc=Ln()(Ac,[["render",_c]]);var Rc=Fc,Pc=Object(y["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:Rc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(y["computed"])((function(){return e.elementInfo.shadow})),o=uo(n),l=o.shadowStyle,c=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(y["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(y["computed"])((function(){return Re(e.elementInfo)}));return{handleSelectElement:t,shadowStyle:l,svgWidth:c,svgHeight:a,lineDashArray:r,path:i}}});n("3dc0");const Hc=Ln()(Pc,[["render",Lc],["__scopeId","data-v-603a705d"]]);var qc=Hc;function Xc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline"),r=Object(y["resolveComponent"])("Chart"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onDblclick:t[1]||(t[1]=function(t){return e.openDataEditor()})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend"])],36),[[i,e.contextmenus]])],4)],6)}function Wc(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"chart",style:Object(y["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(y["createElementVNode"])("div",{class:"chart-content",ref:"chartRef",style:Object(y["normalizeStyle"])({width:e.width+"px",height:e.chartHeight+"px",transform:"scale(".concat(1/e.slideScale,")")})},null,4),e.legend?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"legends",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.slideScale,")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.legends,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"legend",key:n,style:Object(y["normalizeStyle"])({color:e.gridColor})},[Object(y["createElementVNode"])("div",{class:"block",style:Object(y["normalizeStyle"])({backgroundColor:e.themeColors[n]})},null,4),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(t),1)],4)})),128))],4)):Object(y["createCommentVNode"])("",!0)],4)}var Gc=n("ba48"),Uc=n.n(Gc),Yc=(n("aa97"),Object(y["defineComponent"])({name:"chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:Array,required:!0},legends:{type:Array,required:!0},gridColor:{type:String},legend:{type:String}},setup:function(e){var t,n=Object(y["ref"])(),o=Object(y["inject"])("slideScale")||Object(y["ref"])(1),l=Object(y["computed"])((function(){return e.legend?e.height-20:e.height})),c=function(){var t=e.options||{},n=Object(B["a"])(Object(B["a"])({},t),{},{width:e.width*o.value,height:l.value*o.value}),c="pie"===e.type?Object(B["a"])(Object(B["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:c,options:n}},a=function(){if(n.value){var o=Object(Z["upperFirst"])(e.type),l=c(),a=l.data,r=l.options;t=new Uc.a[o](n.value,a,r)}},r=function(){if(t){var e=c(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(y["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},o],r),Object(y["onMounted"])(a);var i=Object(y["computed"])((function(){var t=[];if(e.themeColor.length>=10)t=e.themeColor;else if(1===e.themeColor.length)t=Y()(e.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var n=e.themeColor.length,o=Y()(e.themeColor[n-1]).analogous(11-n).map((function(e){return e.toHexString()}));t=[].concat(Object(G["a"])(e.themeColor.slice(0,n-1)),Object(G["a"])(o))}return t})),u=function(){if(n.value)for(var e=0;e<10;e++)n.value.style.setProperty("--theme-color-".concat(e+1),i.value[e])};Object(y["watch"])(i,u),Object(y["onMounted"])(u);var d=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(y["watch"])((function(){return e.gridColor}),d),Object(y["onMounted"])(d),{chartHeight:l,themeColors:i,slideScale:o,chartRef:n}}}));n("9a8f"),n("383f");const Zc=Ln()(Yc,[["render",Wc],["__scopeId","data-v-3ac5559a"]]);var Jc=Zc,Kc=Object(y["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:dl,Chart:Jc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=function(){$l.emit(pl.OPEN_CHART_DATA_EDITOR)};return{handleSelectElement:t,openDataEditor:n}}});n("b05d");const Qc=Ln()(Kc,[["render",Xc],["__scopeId","data-v-c09631b6"]]);var $c=Qc,ea={class:"element-content"};function ta(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("EditableTable"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",ea,[Object(y["createVNode"])(a,{onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:e.editable,onChange:t[1]||(t[1]=function(t){return e.updateTableCells(t)}),onChangeColWidths:t[2]||(t[2]=function(t){return e.updateColWidths(t)}),onChangeSelectedCells:t[3]||(t[3]=function(t){return e.updateSelectedCells(t)})},null,8,["data","width","colWidths","outline","theme","editable"]),!e.editable||e.elementInfo.lock?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:t[4]||(t[4]=function(t){return e.startEdit()}),onMousedown:t[5]||(t[5]=function(t){return e.handleSelectElement(t)})},[Object(y["createElementVNode"])("div",{class:"mask-tip",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.canvasScale,")")})},"双击编辑",4)],34)):Object(y["createCommentVNode"])("",!0)],512),[[r,e.contextmenus]])],4)],6)}var na={key:0,class:"handler"},oa=["onMousedown"],la=["width"],ca=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],aa=["innerHTML"];function ra(e,t,n,o,l,c){var a,r,i,u,d,s=Object(y["resolveComponent"])("CustomTextarea"),f=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-table",style:Object(y["normalizeStyle"])({width:e.totalWidth+"px"})},[e.editable?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",na,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.dragLinePosition,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"drag-line",key:n,style:Object(y["normalizeStyle"])({left:t+"px"}),onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,oa)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:e.theme,"row-header":null===(a=e.theme)||void 0===a?void 0:a.rowHeader,"row-footer":null===(r=e.theme)||void 0===r?void 0:r.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.colSizeList,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,la)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tableCells,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,o){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:Object(y["normalizeClass"])(["cell",{selected:e.selectedCells.includes("".concat(n,"_").concat(o))&&e.selectedCells.length>1,active:e.activedCell==="".concat(n,"_").concat(o)}]),style:Object(y["normalizeStyle"])(Object(B["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":"".concat(n,"_").concat(o),onMousedown:function(t){return e.handleCellMousedown(t,n,o)},onMouseenter:function(t){return e.handleCellMouseenter(n,o)}},[e.activedCell==="".concat(n,"_").concat(o)?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,class:Object(y["normalizeClass"])(["cell-text",{active:e.activedCell==="".concat(n,"_").concat(o)}]),contenteditable:"plaintext-only",value:t.text,onUpdateValue:function(t){return e.handleInput(t,n,o)},onInsertExcelData:function(t){return e.insertExcelData(t,n,o)}},null,8,["class","value","onUpdateValue","onInsertExcelData"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:e.formatText(t.text)},null,8,aa))],46,ca)),[[y["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)}var ia=function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,l=e.strikethrough,c=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(o?"underline":""," ").concat(l?"line-through":"");return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:d,color:c||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}},ua=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},da=function(e){var t=Object(y["computed"])((function(){for(var t=[],n=0;n1||c.rowspan>1)for(var a=n;a=d&&m<=f&&v>=s&&v<=p&&u.push("".concat(m,"_").concat(v));return u}));Object(y["watch"])(j,(function(e,t){Object(Z["isEqual"])(e,t)||n("changeSelectedCells",j.value)}));var x=Object(y["computed"])((function(){return j.value.length>1?null:j.value[0]})),C=Object(y["computed"])((function(){if(!a.value.length)return null;var e=Object(Rt["a"])(a.value,2),t=e[0],n=e[1];if(!r.value.length)return{row:[t,t],col:[n,n]};var o=Object(Rt["a"])(r.value,2),l=o[0],c=o[1];if(t===l&&n===c)return{row:[t,t],col:[n,n]};var i=Math.min(t,l),u=Math.min(n,c),d=Math.max(t,l),s=Math.max(n,c);return{row:[i,d],col:[u,s]}})),k=function(){return c.value=!1},w=function(e,t,n){0===e.button&&(r.value=[],c.value=!0,a.value=[t,n])},E=function(e,t){c.value&&(r.value=[e,t])};Object(y["onMounted"])((function(){document.addEventListener("mouseup",k)})),Object(y["onUnmounted"])((function(){document.removeEventListener("mouseup",k)}));var N=function(e,t){return O.value.includes("".concat(e,"_").concat(t))},V=function(e){var t=i.value.length-1;a.value=[0,e],r.value=[t,e]},S=function(e){var t=i.value[e].length-1;a.value=[e,0],r.value=[e,t]},L=function(){var e=i.value.length-1,t=i.value[e].length-1;a.value=[0,0],r.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],l=0;l=0;u--)if(!N(u,r)){t[u][r].rowspan=t[u][r].rowspan-1;break}t.splice(e,1),i.value=t},M=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),o=[],l=0;l=0;u--)if(!N(r,u)){t[r][u].colspan=t[r][u].colspan-1;break}i.value=t.map((function(t){return t.splice(e,1),t})),f.value.splice(e,1),n("changeColWidths",f.value)},_=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;oi.value.length&&(a=t+l-i.value.length),o+c>i.value[0].length&&(r=o+c-i.value[0].length),(a||r)&&z(a,r),Object(y["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},J=function(e,t){var n=j.value.length>1,o=i.value[e][t],l=n,c=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:l,canSplit:c}},K=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];j.value.includes("".concat(n,"_").concat(o))||(a.value=[n,o],r.value=[]);var l=J(n,o),c=l.canMerge,i=l.canSplit,u=Y(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return D(o)}},{text:"到右侧",handler:function(){return D(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return _(n)}},{text:"到下方",handler:function(){return _(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(o)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!c,handler:A},{text:"取消合并单元格",disable:!i,handler:function(){return F(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return V(o)}},{text:"选中当前行",handler:function(){return S(n)}},{text:"选中全部单元格",handler:L}]};return{getTextStyle:ia,dragLinePosition:b,tableCells:i,colSizeList:f,totalWidth:p,hideCells:O,selectedCells:j,activedCell:x,selectedRange:C,handleCellMousedown:w,handleCellMouseenter:E,selectCol:V,selectRow:S,handleMousedownColHandler:R,contextmenus:K,handleInput:X,insertExcelData:W,subThemeColor:s,formatText:ua}}});n("a215");const Oa=Ln()(ha,[["render",ra],["__scopeId","data-v-c0c56b6e"]]);var ja=Oa,ya=Object(y["defineComponent"])({name:"editable-element-table",components:{EditableTable:ja},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.canvasScale,c=o.handleElementId,a=o.isScaling,r=Object(y["ref"])(),i=qe(),u=i.addHistorySnapshot,d=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},s=Object(y["ref"])(!1);Object(y["watch"])(c,(function(){c.value!==e.elementInfo.id&&(s.value=!1)})),Object(y["watch"])(s,(function(){t.setDisableHotkeysState(s.value)}));var f=function(){e.elementInfo.lock||(s.value=!0)},p=Object(y["ref"])(-1);Object(y["watch"])(a,(function(){c.value===e.elementInfo.id&&(a.value&&(s.value=!1),a.value||-1===p.value||(n.updateElement({id:e.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var m=function(t){var o=t[0].contentRect;if(r.value){var l=o.height;e.elementInfo.height!==l&&(a.value?p.value=l:n.updateElement({id:e.elementInfo.id,props:{height:l}}))}},b=new ResizeObserver(m);Object(y["onMounted"])((function(){r.value&&b.observe(r.value)})),Object(y["onUnmounted"])((function(){r.value&&b.unobserve(r.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{data:t}}),u()},h=function(t){var o=t.reduce((function(e,t){return e+t})),l=t.map((function(e){return e/o}));n.updateElement({id:e.elementInfo.id,props:{width:o,colWidths:l}}),u()},O=function(e){Object(y["nextTick"])((function(){return t.setSelectedTableCells(e)}))};return{elementRef:r,canvasScale:l,handleSelectElement:d,updateTableCells:v,updateColWidths:h,editable:s,startEdit:f,updateSelectedCells:O}}});n("11f0");const ga=Ln()(ya,[["render",ta],["__scopeId","data-v-426704b7"]]);var xa=ga,Ca=["width","height","stroke","stroke-width"],ka=["transform"],wa=["d"];function Ea(e,t,n,o,l,c){var a=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onDblclick:t[1]||(t[1]=function(t){return e.openLatexEditor()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,wa)],8,ka)],8,Ca))],544),[[a,e.contextmenus]])],4)],6)}var Na=Object(y["defineComponent"])({name:"editable-element-latex",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=function(){$l.emit(pl.OPEN_LATEX_EDITOR)};return{handleSelectElement:t,openLatexEditor:n}}});n("1190");const Ia=Ln()(Na,[["render",Ea],["__scopeId","data-v-3168526a"]]);var Va=Ia;function Sa(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("VideoPlayer"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t,!1)})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:e.canvasScale},null,8,["width","height","src","poster","scale"]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(["t","b","l","r"],(function(n){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["handler-border",n]),key:n,onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)})},null,34)})),64))],544),[[r,e.contextmenus]])],4)],6)}var Ba=function(e){return Object(y["pushScopeId"])("data-v-e716fb74"),e=e(),Object(y["popScopeId"])(),e},La=["src","poster"],Ta={class:"bezel"},Ma=Ba((function(){return Object(y["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),_a={class:"controller"},Da={class:"icons icons-left"},za={class:"icon-content"},Aa={class:"volume"},Fa={class:"icon-content"},Ra={class:"volume-bar",ref:"volumeBarRef"},Pa=Ba((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Ha=[Pa],qa={class:"time"},Xa={class:"ptime"},Wa=Object(y["createTextVNode"])(" / "),Ga={class:"dtime"},Ua={class:"icons icons-right"},Ya={class:"speed"},Za={class:"icon speed-icon"},Ja=["onClick"],Ka=Ba((function(){return Object(y["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),Qa=[Ka],$a={class:"bar"},er=Ba((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),tr=[er];function nr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPause"),r=Object(y["resolveComponent"])("IconPlayOne"),i=Object(y["resolveComponent"])("IconVolumeMute"),u=Object(y["resolveComponent"])("IconVolumeNotice"),d=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["video-player",{"hide-controller":e.hideController}]),style:Object(y["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:"scale(".concat(1/e.scale,")")}),onMousemove:t[22]||(t[22]=function(t){return e.autoHideController()}),onClick:t[23]||(t[23]=function(t){return e.autoHideController()})},[Object(y["createElementVNode"])("div",{class:"video-wrap",onClick:t[8]||(t[8]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("video",{class:"video",ref:"videoRef",src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:t[0]||(t[0]=function(t){return e.handleDurationchange()}),onTimeupdate:t[1]||(t[1]=function(t){return e.handleTimeupdate()}),onEnded:t[2]||(t[2]=function(t){return e.handleEnded()}),onProgress:t[3]||(t[3]=function(t){return e.handleProgress()}),onPlay:t[4]||(t[4]=function(t){return e.autoHideController()}),onPause:t[5]||(t[5]=function(t){return e.autoHideController()}),onError:t[6]||(t[6]=function(t){return e.handleError()})},null,40,La),Object(y["createElementVNode"])("div",Ta,[Object(y["createElementVNode"])("span",{class:Object(y["normalizeClass"])(["bezel-icon",{"bezel-transition":e.bezelTransition}]),onAnimationend:t[7]||(t[7]=function(t){return e.bezelTransition=!1})},[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1}))],34)])]),Ma,Object(y["createElementVNode"])("div",_a,[Object(y["createElementVNode"])("div",Da,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:t[9]||(t[9]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("span",za,[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1}))])]),Object(y["createElementVNode"])("div",Aa,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=function(t){return e.toggleVolume()})},[Object(y["createElementVNode"])("span",Fa,[0===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0})):1===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownVolumeBar(t)}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownVolumeBar(t)}),onClick:t[13]||(t[13]=function(t){return e.handleClickVolumeBar(t)})},[Object(y["createElementVNode"])("div",Ra,[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:e.volumeBarWidth})},Ha,4)],512)],32)]),Object(y["createElementVNode"])("span",qa,[Object(y["createElementVNode"])("span",Xa,Object(y["toDisplayString"])(e.ptime),1),Wa,Object(y["createElementVNode"])("span",Ga,Object(y["toDisplayString"])(e.dtime),1)])]),Object(y["createElementVNode"])("div",Ua,[Object(y["createElementVNode"])("div",Ya,[Object(y["createElementVNode"])("div",Za,[Object(y["createElementVNode"])("span",{class:"icon-content",onClick:t[14]||(t[14]=function(t){return e.speedMenuVisible=!e.speedMenuVisible})},"倍速"),e.speedMenuVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=function(t){return e.speedMenuVisible=!1})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.speedOptions,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["speed-menu-item",{active:t.value===e.playbackRate}]),key:t.label,onClick:function(n){return e.speed(t.value)}},Object(y["toDisplayString"])(t.label),11,Ja)})),128))],32)):Object(y["createCommentVNode"])("",!0)])]),Object(y["createElementVNode"])("div",{class:"loop",onClick:t[16]||(t[16]=function(t){return e.toggleLoop()})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["icon loop-icon",{active:e.loop}])},Qa,2)])]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[17]||(t[17]=function(t){return e.handleMousedownPlayBar(t)}),onTouchstart:t[18]||(t[18]=function(t){return e.handleMousedownPlayBar(t)}),onMousemove:t[19]||(t[19]=function(t){return e.handleMousemovePlayBar(t)}),onMouseenter:t[20]||(t[20]=function(t){return e.playBarTimeVisible=!0}),onMouseleave:t[21]||(t[21]=function(t){return e.playBarTimeVisible=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(y["normalizeStyle"])({left:e.playBarTimeLeft})},Object(y["toDisplayString"])(e.playBarTime),7),Object(y["createElementVNode"])("div",$a,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:e.playedBarWidth})},tr,4)])],544)])],38)}var or=function(e,t){Object(y["onMounted"])((function(){if(t.value){var n="normal";if(/m3u8(#|\?|$)/i.exec(e)?n="hls":/.flv(#|\?|$)/i.exec(e)&&(n="flv"),t.value&&"hls"===n&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(n="normal"),"hls"===n){var o=window.Hls;if(o&&o.isSupported()){var l=new o;l.loadSource(e),l.attachMedia(t.value)}}else if("flv"===n){var c=window.flvjs;if(c&&c.isSupported()){var a=c.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}}))},lr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e||isNaN(e))return"00:00";var t=function(e){return e<10?"0"+e:""+e},n=Math.floor(e/3600),o=Math.floor((e-3600*n)/60),l=Math.floor(e-3600*n-60*o);return(n>0?[n,o,l]:[o,l]).map(t).join(":")},cr=function(e){return e.getBoundingClientRect().left},ar=Object(y["defineComponent"])({name:"video-player",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},src:{type:String,required:!0},poster:{type:String,default:""},scale:{type:Number,default:1}},setup:function(e){var t=Object(y["ref"])(),n=Object(y["ref"])(),o=Object(y["ref"])(),l=Object(y["ref"])(.5),c=Object(y["ref"])(!0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=Object(y["ref"])(1),f=Object(y["ref"])(!1),p=Object(y["ref"])("00:00"),m=Object(y["ref"])("0"),b=Object(y["computed"])((function(){return lr(a.value)})),v=Object(y["computed"])((function(){return lr(r.value)})),h=Object(y["computed"])((function(){return a.value/r.value*100+"%"})),O=Object(y["computed"])((function(){return i.value/r.value*100+"%"})),j=Object(y["computed"])((function(){return 100*l.value+"%"})),g=Object(y["ref"])(!1),x=[{label:"2x",value:2},{label:"1.5x",value:1.5},{label:"1.25x",value:1.25},{label:"1x",value:1},{label:"0.75x",value:.75},{label:"0.5x",value:.5}],C=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,r.value),t.value.currentTime=e,a.value=e)},k=function(){t.value&&(c.value=!1,t.value.play(),d.value=!0)},w=function(){t.value&&(c.value=!0,t.value.pause(),d.value=!0)},E=function(){c.value?k():w()},N=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,l.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},I=function(e){t.value&&(t.value.playbackRate=e),s.value=e},V=function(){var e;r.value=(null===(e=t.value)||void 0===e?void 0:e.duration)||0},S=function(){var e;a.value=(null===(e=t.value)||void 0===e?void 0:e.currentTime)||0},B=function(){u.value?(C(0),k()):w()},L=function(){var e;i.value=null!==(e=t.value)&&void 0!==e&&e.buffered.length?t.value.buffered.end(t.value.buffered.length-1):0},T=function(){return ge["a"].error("视频加载失败")},M=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(o-cr(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var c=l*r.value;t.value.currentTime=c,a.value=c}},_=function e(o){if(t.value&&n.value){var l="clientX"in o?o.clientX:o.changedTouches[0].clientX,c=(l-cr(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var i=c*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",M),document.removeEventListener("touchmove",M),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",M),document.addEventListener("touchmove",M),document.addEventListener("mouseup",_),document.addEventListener("touchend",_)},z=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-cr(o.value)-5.5)/35;N(n)}},A=function e(){document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},F=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",A),document.addEventListener("touchend",A)},R=function(e){if(o.value){var t=(e.clientX-cr(o.value)-5.5)/35;N(t)}},P=function(e){if(r.value&&n.value){var t=n.value.getBoundingClientRect().left,o=e.clientX-t;if(o<0||o>n.value.offsetWidth)return;var l=r.value*(o/n.value.offsetWidth);m.value="".concat(o-(l>=3600?25:20),"px"),p.value=lr(l),f.value=!0}},H=function(){t.value&&(t.value.muted?(t.value.muted=!1,N(.5)):(t.value.muted=!0,N(0)))},q=function(){u.value=!u.value},X=Object(y["ref"])(-1),W=Object(y["ref"])(!1),G=function(){W.value=!1,clearTimeout(X.value),X.value=setTimeout((function(){var e;null!==(e=t.value)&&void 0!==e&&e.played.length&&(W.value=!0)}),3e3)};return or(e.src,t),{videoRef:t,playBarWrap:n,volumeBarRef:o,volume:l,loop:u,paused:c,ptime:b,dtime:v,playBarTime:p,playBarTimeVisible:f,playBarTimeLeft:m,playedBarWidth:h,loadedBarWidth:O,volumeBarWidth:j,hideController:W,bezelTransition:d,playbackRate:s,speedMenuVisible:g,speedOptions:x,seek:C,play:k,pause:w,toggle:E,setVolume:N,speed:I,handleDurationchange:V,handleTimeupdate:S,handleEnded:B,handleProgress:L,handleMousedownPlayBar:D,handleMousedownVolumeBar:F,handleClickVolumeBar:R,handleMousemovePlayBar:P,toggleVolume:H,toggleLoop:q,autoHideController:G,handleError:T}}});n("a7fe");const rr=Ln()(ar,[["render",nr],["__scopeId","data-v-e716fb74"]]);var ir=rr,ur=Object(y["defineComponent"])({name:"editable-element-video",components:{VideoPlayer:ir},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))};return{canvasScale:n,handleSelectElement:o}}});n("de30");const dr=Ln()(ur,[["render",Sa],["__scopeId","data-v-7f80f8ee"]]);var sr=dr;function fr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice"),r=Object(y["resolveComponent"])("AudioPlayer"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"]),e.handleElementId===e.elementInfo.id?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,class:"audio-player",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:e.canvasScale,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(y["createCommentVNode"])("",!0)],544),[[i,e.contextmenus]])],4)],6)}var pr=function(e){return Object(y["pushScopeId"])("data-v-5cabbb47"),e=e(),Object(y["popScopeId"])(),e},mr=["src","autoplay"],br={class:"controller"},vr={class:"icons"},hr={class:"icon-content"},Or={class:"volume"},jr={class:"icon-content"},yr={class:"volume-bar",ref:"volumeBarRef"},gr=pr((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),xr=[gr],Cr={class:"time"},kr={class:"ptime"},wr=Object(y["createTextVNode"])(" / "),Er={class:"dtime"},Nr={class:"bar"},Ir=pr((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Vr=[Ir];function Sr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlayOne"),r=Object(y["resolveComponent"])("IconPause"),i=Object(y["resolveComponent"])("IconVolumeMute"),u=Object(y["resolveComponent"])("IconVolumeNotice"),d=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"audio-player",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(y["createElementVNode"])("audio",{class:"audio",ref:"audioRef",src:e.src,autoplay:e.autoplay,onDurationchange:t[0]||(t[0]=function(t){return e.handleDurationchange()}),onTimeupdate:t[1]||(t[1]=function(t){return e.handleTimeupdate()}),onPlay:t[2]||(t[2]=function(t){return e.handlePlayed()}),onEnded:t[3]||(t[3]=function(t){return e.handleEnded()}),onProgress:t[4]||(t[4]=function(t){return e.handleProgress()}),onError:t[5]||(t[5]=function(t){return e.handleError()})},null,40,mr),Object(y["createElementVNode"])("div",br,[Object(y["createElementVNode"])("div",vr,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:t[6]||(t[6]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("span",hr,[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1}))])]),Object(y["createElementVNode"])("div",Or,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=function(t){return e.toggleVolume()})},[Object(y["createElementVNode"])("span",jr,[0===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0})):1===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=function(t){return e.handleMousedownVolumeBar(t)}),onTouchstart:t[9]||(t[9]=function(t){return e.handleMousedownVolumeBar(t)}),onClick:t[10]||(t[10]=function(t){return e.handleClickVolumeBar(t)})},[Object(y["createElementVNode"])("div",yr,[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:e.volumeBarWidth})},xr,4)],512)],32)])]),Object(y["createElementVNode"])("span",Cr,[Object(y["createElementVNode"])("span",kr,Object(y["toDisplayString"])(e.ptime),1),wr,Object(y["createElementVNode"])("span",Er,Object(y["toDisplayString"])(e.dtime),1)]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownPlayBar(t)}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownPlayBar(t)}),onMousemove:t[13]||(t[13]=function(t){return e.handleMousemovePlayBar(t)}),onMouseenter:t[14]||(t[14]=function(t){return e.playBarTimeVisible=!0}),onMouseleave:t[15]||(t[15]=function(t){return e.playBarTimeVisible=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(y["normalizeStyle"])({left:e.playBarTimeLeft})},Object(y["toDisplayString"])(e.playBarTime),7),Object(y["createElementVNode"])("div",Nr,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:e.playedBarWidth})},Vr,4)])],544)])],4)}var Br=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e||isNaN(e))return"00:00";var t=function(e){return e<10?"0"+e:""+e},n=Math.floor(e/3600),o=Math.floor((e-3600*n)/60),l=Math.floor(e-3600*n-60*o);return(n>0?[n,o,l]:[o,l]).map(t).join(":")},Lr=function(e){return e.getBoundingClientRect().left},Tr=Object(y["defineComponent"])({name:"audio-player",props:{src:{type:String,required:!0},loop:{type:Boolean,required:!0},autoplay:{type:Boolean,default:!1},scale:{type:Number,default:1}},setup:function(e){var t=Object(y["ref"])(),n=Object(y["ref"])(),o=Object(y["ref"])(),l=Object(y["ref"])(.5),c=Object(y["ref"])(!0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["ref"])("00:00"),s=Object(y["ref"])("0"),f=Object(y["computed"])((function(){return Br(a.value)})),p=Object(y["computed"])((function(){return Br(r.value)})),m=Object(y["computed"])((function(){return a.value/r.value*100+"%"})),b=Object(y["computed"])((function(){return i.value/r.value*100+"%"})),v=Object(y["computed"])((function(){return 100*l.value+"%"})),h=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,r.value),t.value.currentTime=e,a.value=e)},O=function(){t.value&&(c.value=!1,t.value.play())},j=function(){t.value&&(c.value=!0,t.value.pause())},g=function(){c.value?O():j()},x=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,l.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},C=function(){var e;r.value=(null===(e=t.value)||void 0===e?void 0:e.duration)||0},k=function(){var e;a.value=(null===(e=t.value)||void 0===e?void 0:e.currentTime)||0},w=function(){c.value=!1},E=function(){e.loop?(h(0),O()):j()},N=function(){var e;i.value=null!==(e=t.value)&&void 0!==e&&e.buffered.length?t.value.buffered.end(t.value.buffered.length-1):0},I=function(){return ge["a"].error("视频加载失败")},V=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(o-Lr(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var c=l*r.value;t.value.currentTime=c,a.value=c}},S=function e(o){if(t.value&&n.value){var l="clientX"in o?o.clientX:o.changedTouches[0].clientX,c=(l-Lr(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var i=c*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",V),document.removeEventListener("touchmove",V),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},B=function(){document.addEventListener("mousemove",V),document.addEventListener("touchmove",V),document.addEventListener("mouseup",S),document.addEventListener("touchend",S)},L=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-Lr(o.value)-5.5)/35;x(n)}},T=function e(){document.removeEventListener("mousemove",L),document.removeEventListener("touchmove",L),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},M=function(){document.addEventListener("mousemove",L),document.addEventListener("touchmove",L),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},_=function(e){if(o.value){var t=(e.clientX-Lr(o.value)-5.5)/35;x(t)}},D=function(e){if(r.value&&n.value){var t=n.value.getBoundingClientRect().left,o=e.clientX-t;if(o<0||o>n.value.offsetWidth)return;var l=r.value*(o/n.value.offsetWidth);s.value="".concat(o-(l>=3600?25:20),"px"),d.value=Br(l),u.value=!0}},z=function(){t.value&&(t.value.muted?(t.value.muted=!1,x(.5)):(t.value.muted=!0,x(0)))};return{audioRef:t,playBarWrap:n,volumeBarRef:o,volume:l,paused:c,ptime:f,dtime:p,playBarTime:d,playBarTimeVisible:u,playBarTimeLeft:s,playedBarWidth:m,loadedBarWidth:b,volumeBarWidth:v,play:O,pause:j,toggle:g,setVolume:x,handleDurationchange:C,handleTimeupdate:k,handlePlayed:w,handleEnded:E,handleProgress:N,handleError:I,handleMousedownPlayBar:B,handleMousedownVolumeBar:M,handleClickVolumeBar:_,handleMousemovePlayBar:D,toggleVolume:z}}});n("195c");const Mr=Ln()(Tr,[["render",Sr],["__scopeId","data-v-5cabbb47"]]);var _r=Mr,Dr=Object(y["defineComponent"])({name:"editable-element-audio",components:{AudioPlayer:_r},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.handleElementId,l=Object(g["c"])($()),c=l.viewportRatio,a=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),r=Object(y["computed"])((function(){var t=Ge,o=Ge*c.value,l=280/n.value,a=50/n.value,r=e.elementInfo.width,i=e.elementInfo.height,u=e.elementInfo.left,d=e.elementInfo.top,s=0,f=i;return u+l>=t&&(s=r-l),d+i+a>=o&&(f=-a),{left:s+"px",top:f+"px"}})),i=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))};return{canvasScale:n,handleElementId:o,audioIconSize:a,audioPlayerPosition:r,handleSelectElement:i}}});n("2fee");const zr=Ln()(Dr,[["render",fr],["__scopeId","data-v-66dd4448"]]);var Ar=zr,Fr=Object(y["defineComponent"])({name:"editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},isMultiSelect:{type:Boolean,required:!0},selectElement:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,el),Object(ae["a"])(t,oo.TEXT,uc),Object(ae["a"])(t,oo.SHAPE,Ic),Object(ae["a"])(t,oo.LINE,qc),Object(ae["a"])(t,oo.CHART,$c),Object(ae["a"])(t,oo.TABLE,xa),Object(ae["a"])(t,oo.LATEX,Va),Object(ae["a"])(t,oo.VIDEO,sr),Object(ae["a"])(t,oo.AUDIO,Ar),t);return n[e.elementInfo.type]||null})),n=nt(),o=n.orderElement,l=lo(),c=l.alignElementToCanvas,a=Qe(),r=a.combineElements,i=a.uncombineElements,u=Ke(),d=u.deleteElement,s=Je(),f=s.lockElement,p=s.unlockElement,m=$e(),b=m.copyElement,v=m.pasteElement,h=m.cutElement,O=et(),j=O.selectAllElement,g=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return p(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:h},{text:"复制",subText:"Ctrl + C",handler:b},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return c(k.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return c(k.CENTER)}},{text:"水平居中",handler:function(){return c(k.HORIZONTAL)}},{text:"左对齐",handler:function(){return c(k.LEFT)}},{text:"右对齐",handler:function(){return c(k.RIGHT)}}]},{text:"垂直居中",handler:function(){return c(k.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return c(k.CENTER)}},{text:"垂直居中",handler:function(){return c(k.VERTICAL)}},{text:"顶部对齐",handler:function(){return c(k.TOP)}},{text:"底部对齐",handler:function(){return c(k.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,C.TOP)},children:[{text:"置于顶层",handler:function(){return o(e.elementInfo,C.TOP)}},{text:"上移一层",handler:function(){return o(e.elementInfo,C.UP)}}]},{text:"置于底层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,C.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(e.elementInfo,C.BOTTOM)}},{text:"下移一层",handler:function(){return o(e.elementInfo,C.DOWN)}}]},{divider:!0},{text:"设置链接",handler:e.openLinkDialog},{text:e.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:e.elementInfo.groupId?i:r,hide:!e.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:j},{text:"锁定",subText:"Ctrl + L",handler:f},{text:"删除",subText:"Delete",handler:d}]};return{currentElementComponent:t,contextmenus:g}}});const Rr=Ln()(Fr,[["render",no]]);var Pr=Rr;function Hr(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])("mouse-selection quadrant-".concat(n.quadrant)),style:Object(y["normalizeStyle"])({top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"})},null,6)}var qr={name:"mouse-selection",props:{top:{type:Number,required:!0},left:{type:Number,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},quadrant:{type:Number,required:!0,validator:function(e){return[1,2,3,4].includes(e)}}}};n("2007a");const Xr=Ln()(qr,[["render",Hr],["__scopeId","data-v-1619c258"]]);var Wr=Xr;function Gr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GridLines");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"viewport-background",style:Object(y["normalizeStyle"])(e.backgroundStyle)},[e.showGridLines?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):Object(y["createCommentVNode"])("",!0)],4)}var Ur={class:"grid-lines"},Yr=["d","stroke"];function Zr(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Ur,[Object(y["createElementVNode"])("path",{style:Object(y["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")}),d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Yr)])}var Jr=Object(y["defineComponent"])({name:"grid-lines",setup:function(){var e=Object(g["c"])(ee()),t=e.canvasScale,n=Object(g["c"])($()),o=n.currentSlide,l=n.viewportRatio,c=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=Object(y["computed"])((function(){var e,t=(null===(e=c.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return Y.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),r=50,i=function(){for(var e=Ge,t=Ge*l.value,n="",o=0;o<=Math.floor(t/r);o++)n+="M0 ".concat(o*r," L").concat(e," ").concat(o*r," ");for(var c=0;c<=Math.floor(e/r);c++)n+="M".concat(c*r," 0 L").concat(c*r," ").concat(t," ");return n};return{canvasScale:t,gridColor:a,width:Ge,height:Ge*l.value,path:i()}}});n("ffb8");const Kr=Ln()(Jr,[["render",Zr],["__scopeId","data-v-9b94cc34"]]);var Qr=Kr,$r=function(e){var t=Object(y["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,l=t.image,c=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return l?"repeat"===c?{backgroundImage:"url(".concat(l),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(l),backgroundRepeat:"no-repeat",backgroundSize:c||"cover"}:{backgroundColor:"#fff"};if("gradient"===n){var u=r||0,d=a?a[0]:"#fff",s=a?a[1]:"#fff";return"radial"===i?{backgroundImage:"radial-gradient(".concat(d,", ").concat(s)}:{backgroundImage:"linear-gradient(".concat(u,"deg, ").concat(d,", ").concat(s)}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},ei=Object(y["defineComponent"])({name:"viewport-background",components:{GridLines:Qr},setup:function(){var e=Object(g["c"])(ee()),t=e.showGridLines,n=Object(g["c"])($()),o=n.currentSlide,l=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),c=$r(l),a=c.backgroundStyle;return{showGridLines:t,backgroundStyle:a}}});n("06b6");const ti=Ln()(ei,[["render",Gr],["__scopeId","data-v-4d0018d8"]]);var ni=ti;function oi(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"alignment-line",style:Object(y["normalizeStyle"])({left:e.left,top:e.top})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["line",e.type]),style:Object(y["normalizeStyle"])(e.sizeStyle)},null,6)],4)}var li=Object(y["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.axis.x*n.value+"px"})),l=Object(y["computed"])((function(){return e.axis.y*n.value+"px"})),c=Object(y["computed"])((function(){return"vertical"===e.type?{height:e.length*n.value+"px"}:{width:e.length*n.value+"px"}}));return{left:o,top:l,sizeStyle:c}}});n("c790");const ci=Ln()(li,[["render",oi],["__scopeId","data-v-62c9018e"]]);var ai=ci,ri=["width","height"],ii=["d"];function ui(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.createSelection(t)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop","prevent"]))},[e.start&&e.end?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["selection",e.creatingElement.type]),style:Object(y["normalizeStyle"])(e.position)},["line"===e.creatingElement.type&&e.lineData?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},[Object(y["createElementVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":""},null,8,ii)],8,ri)):Object(y["createCommentVNode"])("",!0)],6)):Object(y["createCommentVNode"])("",!0)],544)}var di=Object(y["defineComponent"])({name:"element-create-selection",emits:["created"],setup:function(e,t){var n=t.emit,o=ee(),l=Object(g["c"])(o),c=l.creatingElement,a=Object(g["c"])(se()),r=a.ctrlOrShiftKeyActive,i=Object(y["ref"])(),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["reactive"])({x:0,y:0});Object(y["onMounted"])((function(){if(d.value){var e=d.value.getBoundingClientRect(),t=e.x,n=e.y;s.x=t,s.y=n}}));var f=function(e){var t=!0,l=e.pageX,a=e.pageY;i.value=[l,a],document.onmousemove=function(e){if(c.value&&t){var n=e.pageX,o=e.pageY;if(r.value){var i=n-l,d=o-a,s=Math.abs(i),f=Math.abs(d);if("shape"===c.value.type){var p=d>0&&i<0||d<0&&i>0;s>f?o=p?a-i:a+i:n=p?l-d:l+d}else"line"===c.value.type&&(s>f?o=a:n=l)}u.value=[n,o]}},document.onmouseup=function(e){var r,d;if(document.onmousemove=null,document.onmouseup=null,2!==e.button){t=!1;var s=e.pageX,f=e.pageY,p=30;if("line"===(null===(r=c.value)||void 0===r?void 0:r.type)&&(Math.abs(s-l)>=p||Math.abs(f-a)>=p))n("created",{start:i.value,end:u.value});else if("line"!==(null===(d=c.value)||void 0===d?void 0:d.type)&&Math.abs(s-l)>=p&&Math.abs(f-a)>=p)n("created",{start:i.value,end:u.value});else{var m=200,b=Math.min(s,l),v=Math.min(f,a),h=Math.max(s,l),O=Math.max(f,a),j=h-b>=p?h-b:m,y=O-v>=p?O-v:m;n("created",{start:[b,v],end:[b+j,v+y]})}}else setTimeout((function(){return o.setCreatingElement(null)}),0)}},p=Object(y["computed"])((function(){if(!i.value||!u.value)return null;if(!c.value||"line"!==c.value.type)return null;var e=Object(Rt["a"])(i.value,2),t=e[0],n=e[1],o=Object(Rt["a"])(u.value,2),l=o[0],a=o[1],r=Math.min(t,l),d=Math.max(t,l),s=Math.min(n,a),f=Math.max(n,a),p=d-r>=24?d-r:24,m=f-s>=24?f-s:24,b=t===r?0:d-r,v=n===s?0:f-s,h=l===r?0:d-r,O=a===s?0:f-s,j="M".concat(b,", ").concat(v," L").concat(h,", ").concat(O);return{svgWidth:p,svgHeight:m,startX:b,startY:v,endX:h,endY:O,path:j}})),m=Object(y["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(Rt["a"])(i.value,2),t=e[0],n=e[1],o=Object(Rt["a"])(u.value,2),l=o[0],c=o[1],a=Math.min(t,l),r=Math.max(t,l),d=Math.min(n,c),f=Math.max(n,c),p=r-a,m=f-d;return{left:a-s.x+"px",top:d-s.y+"px",width:p+"px",height:m+"px"}}));return{selectionRef:d,start:i,end:u,creatingElement:c,createSelection:f,lineData:p,position:m}}});n("86f4");const si=Ln()(di,[["render",ui],["__scopeId","data-v-a8c28cdc"]]);var fi=si;function pi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"multi-select-operate",style:Object(y["normalizeStyle"])({left:e.minX*e.canvasScale+"px",top:e.minY*e.canvasScale+"px"})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.disableResize?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleMultiElement(n,{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY},t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}var mi=function(e,t){var n=Object(y["computed"])((function(){return[{direction:E.LEFT_TOP,style:{}},{direction:E.TOP,style:{left:e.value/2+"px"}},{direction:E.RIGHT_TOP,style:{left:e.value+"px"}},{direction:E.LEFT,style:{top:t.value/2+"px"}},{direction:E.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:E.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:E.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:E.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(y["computed"])((function(){return[{direction:E.LEFT,style:{top:t.value/2+"px"}},{direction:E.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),l=Object(y["computed"])((function(){return[{type:w.T,style:{width:e.value+"px"}},{type:w.B,style:{top:t.value+"px",width:e.value+"px"}},{type:w.L,style:{height:t.value+"px"}},{type:w.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:o,borderLines:l}};function bi(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["resize-handler",e.rotateClassName,e.type])},null,2)}var vi=Object(y["defineComponent"])({name:"resize-handler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=Object(y["computed"])((function(){var t="rotate-",n=e.rotate;return n>-22.5&&n<=22.5?t+0:n>22.5&&n<=67.5?t+45:n>67.5&&n<=112.5?t+90:n>112.5&&n<=157.5?t+135:n>157.5||n<=-157.5?t+0:n>-157.5&&n<=-112.5?t+45:n>-112.5&&n<=-67.5?t+90:n>-67.5&&n<=-22.5?t+135:t+0}));return{rotateClassName:t}}});n("0606");const hi=Ln()(vi,[["render",bi],["__scopeId","data-v-680e5917"]]);var Oi=hi;function ji(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["border-line",n.type,{wide:n.isWide}])},null,2)}var yi={name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}};n("fb1d");const gi=Ln()(yi,[["render",ji],["__scopeId","data-v-630e246b"]]);var xi=gi,Ci=Object(y["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:Oi,BorderLine:xi},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.canvasScale,l=Object(y["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),c=Object(y["reactive"])({minX:0,maxX:0,minY:0,maxY:0}),a=Object(y["computed"])((function(){return(c.maxX-c.minX)*o.value})),r=Object(y["computed"])((function(){return(c.maxY-c.minY)*o.value})),i=mi(a,r),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=De(l.value),t=e.minX,n=e.maxX,o=e.minY,a=e.maxY;c.minX=t,c.maxX=n,c.minY=o,c.maxY=a};Object(y["watchEffect"])(s);var f=Object(y["computed"])((function(){return l.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return Object(B["a"])(Object(B["a"])({},Object(y["toRefs"])(c)),{},{canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u})}});n("a60f");const ki=Ln()(Ci,[["render",pi],["__scopeId","data-v-2d010d5c"]]);var wi=ki,Ei={key:1,class:"animation-index"};function Ni(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinkHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentOperateComponent),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement"])):Object(y["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&-1!==e.elementIndexInAnimation?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ei,Object(y["toDisplayString"])(e.elementIndexInAnimation+1),1)):Object(y["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:2,elementInfo:e.elementInfo,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["elementInfo","openLinkDialog"])):Object(y["createCommentVNode"])("",!0)],6)}function Ii(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["image-element-operate",{cliping:e.isCliping}])},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)],2)}var Vi={class:"rotate-handler"};function Si(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vi)}var Bi={name:"rotate-handler"};n("8754");const Li=Ln()(Bi,[["render",Si],["__scopeId","data-v-9a549510"]]);var Ti=Li,Mi=Object(y["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:Oi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.clipingImageElementId,l=Object(y["computed"])((function(){return o.value===e.elementInfo.id})),c=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),a=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),r=mi(c,a),i=r.resizeHandlers,u=r.borderLines;return{isCliping:l,scaleWidth:c,resizeHandlers:i,borderLines:u}}});n("7ec9");const _i=Ln()(Mi,[["render",Ii],["__scopeId","data-v-24706869"]]);var Di=_i,zi={class:"text-element-operate"};function Ai(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.textElementResizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var Fi=Object(y["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:Oi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.textElementResizeHandlers,r=c.borderLines;return{scaleWidth:o,textElementResizeHandlers:a,borderLines:r}}});const Ri=Ln()(Fi,[["render",Ai]]);var Pi=Ri,Hi={class:"shape-element-operate"};function qi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var Xi=Object(y["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:Oi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.resizeHandlers,r=c.borderLines;return{scaleWidth:o,resizeHandlers:a,borderLines:r}}});const Wi=Ln()(Xi,[["render",qi]]);var Gi=Wi,Ui={class:"text-element-operate"};function Yi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ResizeHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ui,[e.handlerVisible?(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["type","style","onMousedown"])})),128)):Object(y["createCommentVNode"])("",!0)])}var Zi=Object(y["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{ResizeHandler:Oi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){var t=[{handler:N.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:N.END,style:{left:e.elementInfo.end[0]*n.value+"px",top:e.elementInfo.end[1]*n.value+"px"}}];if(e.elementInfo.curve||e.elementInfo.broken){var o=e.elementInfo.curve||e.elementInfo.broken;t.push({handler:N.MID,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}return t}));return{resizeHandlers:o}}});const Ji=Ln()(Zi,[["render",Yi]]);var Ki=Ji,Qi={class:"table-element-operate"};function $i(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Qi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.textElementResizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var eu=Object(y["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:Oi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.outline.width||1})),l=Object(y["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),c=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),a=mi(l,c),r=a.textElementResizeHandlers,i=a.borderLines;return{scaleWidth:l,textElementResizeHandlers:r,borderLines:i}}});const tu=Ln()(eu,[["render",$i]]);var nu=tu,ou={class:"common-element-operate"};function lu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ou,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),e.cannotRotate?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(y["createCommentVNode"])("",!0)])}var cu=Object(y["defineComponent"])({name:"common-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:Oi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.resizeHandlers,r=c.borderLines,i=Object(y["computed"])((function(){return["video","audio"].includes(e.elementInfo.type)}));return{scaleWidth:o,resizeHandlers:a,borderLines:r,cannotRotate:i}}});const au=Ln()(cu,[["render",lu]]);var ru=au,iu=["href"],uu={key:1,class:"link"},du={class:"btns"};function su(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"link-handler",style:Object(y["normalizeStyle"])({top:e.elementInfo.height*e.canvasScale+10+"px"})},["web"===e.elementInfo.link.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",{key:0,class:"link",href:e.elementInfo.link.target,target:"_blank"},Object(y["toDisplayString"])(e.elementInfo.link.target),9,iu)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",uu,"幻灯片页面 "+Object(y["toDisplayString"])(e.elementInfo.link.target),1)),Object(y["createElementVNode"])("div",du,[Object(y["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.openLinkDialog()})},"更换"),Object(y["createVNode"])(a,{type:"vertical"}),Object(y["createElementVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.removeLink(e.elementInfo)})},"移除")])],4)}var fu=function(){var e=$(),t=qe(),n=t.addHistorySnapshot,o=function(t,o){var l=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===o.type&&!l.test(o.target))return ge["a"].error("不是正确的网页链接地址"),!1;var c={link:o};return e.updateElement({id:t.id,props:c}),n(),!0},l=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:o,removeLink:l}},pu=Object(y["defineComponent"])({name:"link-handler",props:{elementInfo:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(){var e=Object(g["c"])(ee()),t=e.canvasScale,n=fu(),o=n.removeLink;return{canvasScale:t,removeLink:o}}});n("564c");const mu=Ln()(pu,[["render",su],["__scopeId","data-v-3250b72d"]]);var bu=mu,vu=Object(y["defineComponent"])({name:"operate",components:{LinkHandler:bu},props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},isActive:{type:Boolean,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},dragLineElement:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.toolbarState,l=Object(g["c"])($()),c=l.currentSlide,a=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Di),Object(ae["a"])(t,oo.TEXT,Pi),Object(ae["a"])(t,oo.SHAPE,Gi),Object(ae["a"])(t,oo.LINE,Ki),Object(ae["a"])(t,oo.TABLE,nu),Object(ae["a"])(t,oo.CHART,ru),Object(ae["a"])(t,oo.LATEX,ru),Object(ae["a"])(t,oo.VIDEO,ru),Object(ae["a"])(t,oo.AUDIO,ru),t);return n[e.elementInfo.type]||null})),r=Object(y["computed"])((function(){var t=c.value.animations||[];return t.findIndex((function(t){return t.elId===e.elementInfo.id}))}));return{currentOperateComponent:a,canvasScale:n,toolbarState:o,elementIndexInAnimation:r}}});n("69a7");const hu=Ln()(vu,[["render",Ni],["__scopeId","data-v-71428444"]]);var Ou=hu,ju=function(e){return Object(y["pushScopeId"])("data-v-5a0d0b33"),e=e(),Object(y["popScopeId"])(),e},yu={class:"link-dialog"},gu={class:"tabs"},xu=["onClick"],Cu={key:2,class:"preview"},ku=ju((function(){return Object(y["createElementVNode"])("div",null,"预览:",-1)})),wu={class:"btns"},Eu=Object(y["createTextVNode"])("取消"),Nu=Object(y["createTextVNode"])("确认");function Iu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Input"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("Select"),u=Object(y["resolveComponent"])("ThumbnailSlide"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",yu,[Object(y["createElementVNode"])("div",gu,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(y["toDisplayString"])(t.label),11,xu)})),128))]),"web"===e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,class:"input",value:e.address,"onUpdate:value":t[0]||(t[0]=function(t){return e.address=t}),placeholder:"请输入网页链接地址"},null,8,["value"])):Object(y["createCommentVNode"])("",!0),"slide"===e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:1,class:"input",value:e.slideId,"onUpdate:value":t[1]||(t[1]=function(t){return e.slideId=t})},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.id,value:e.id},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])("幻灯片 "+Object(y["toDisplayString"])(t+1),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])):Object(y["createCommentVNode"])("",!0),"slide"===e.type&&e.selectedSlide?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Cu,[ku,Object(y["createVNode"])(u,{class:"thumbnail",slide:e.selectedSlide,size:490},null,8,["slide"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",wu,[Object(y["createVNode"])(d,{onClick:t[2]||(t[2]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[Eu]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[3]||(t[3]=function(t){return e.save()})},{default:Object(y["withCtx"])((function(){return[Nu]})),_:1})])])}var Vu={key:1,class:"placeholder"};function Su(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ThumbnailElement");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-slide",style:Object(y["normalizeStyle"])({width:e.size+"px",height:e.size*e.viewportRatio+"px"})},[e.visible?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"elements",style:Object(y["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(e.backgroundStyle)},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slide.elements,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])})),128))],4)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vu,"加载中 ..."))],4)}function Bu(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["base-element","base-element-".concat(e.elementInfo.id)]),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6)}var Lu=["src"];function Tu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ImageOutline");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-image",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle})},[Object(y["createVNode"])(a,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter}),alt:""},null,12,Lu)],4)],4)],4)],4)}var Mu=Object(y["defineComponent"])({name:"base-element-image",components:{ImageOutline:Ao},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle,l=Object(y["computed"])((function(){return e.elementInfo.flipH})),c=Object(y["computed"])((function(){return e.elementInfo.flipV})),a=so(l,c),r=a.flipStyle,i=Object(y["computed"])((function(){return e.elementInfo.clip})),u=po(i),d=u.clipShape,s=u.imgPosition,f=Object(y["computed"])((function(){return e.elementInfo.filters})),p=mo(f),m=p.filter;return{imgPosition:s,filter:m,flipStyle:r,shadowStyle:o,clipShape:d}}});n("3ae7");const _u=Ln()(Mu,[["render",Tu],["__scopeId","data-v-0b1f9460"]]);var Du=_u,zu=["innerHTML"];function Au(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-text",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:e.shadowStyle,lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createElementVNode"])("div",{class:"text ProseMirror-static",innerHTML:e.elementInfo.content},null,8,zu)],4)],4)],4)}var Fu=Object(y["defineComponent"])({name:"base-element-text",components:{ElementOutline:dl},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle;return{shadowStyle:o}}});n("5264");const Ru=Ln()(Fu,[["render",Au],["__scopeId","data-v-2ec235c4"]]);var Pu=Ru,Hu=["width","height"],qu={key:0},Xu=["transform"],Wu=["d","fill","stroke","stroke-width","stroke-dasharray"],Gu=["innerHTML"];function Uu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GradientDefs");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-shape",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle,color:e.text.defaultColor,fontFamily:e.text.defaultFontName})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",qu,[Object(y["createVNode"])(a,{id:"base-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#base-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 5":"0 0"},null,8,Wu)],8,Xu)],8,Hu)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",e.text.align])},[Object(y["createElementVNode"])("div",{class:"ProseMirror-static",innerHTML:e.text.content},null,8,Gu)],2)],4)],4)],4)}var Yu=Object(y["defineComponent"])({name:"base-element-shape",components:{GradientDefs:wc},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.outline})),n=yo(t),o=n.outlineWidth,l=n.outlineStyle,c=n.outlineColor,a=Object(y["computed"])((function(){return e.elementInfo.shadow})),r=uo(a),i=r.shadowStyle,u=Object(y["computed"])((function(){return e.elementInfo.flipH})),d=Object(y["computed"])((function(){return e.elementInfo.flipV})),s=so(u,d),f=s.flipStyle,p=Object(y["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t}));return{shadowStyle:i,outlineWidth:o,outlineStyle:l,outlineColor:c,flipStyle:f,text:p}}});n("66f9");const Zu=Ln()(Yu,[["render",Uu],["__scopeId","data-v-68d8af98"]]);var Ju=Zu,Ku=["width","height"],Qu=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];function $u(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element-shape",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,Qu)],8,Ku))],4)],4)}var ed=Object(y["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:Rc},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle,l=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),c=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),a=Object(y["computed"])((function(){return"dashed"===e.elementInfo.style?"10, 5":"0, 0"})),r=Object(y["computed"])((function(){return Re(e.elementInfo)}));return{shadowStyle:o,svgWidth:l,svgHeight:c,lineDashArray:a,path:r}}});n("78eb");const td=Ln()(ed,[["render",$u],["__scopeId","data-v-4032440c"]]);var nd=td;function od(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline"),r=Object(y["resolveComponent"])("Chart");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-chart",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(r,{class:Object(y["normalizeClass"])({"need-scale":e.needScaleSize}),width:e.chartWidth,height:e.chartHeight,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["class","width","height","type","data","options","themeColor","gridColor","legends","legend"])],4)],4)],4)}var ld=Object(y["defineComponent"])({name:"base-element-chart",components:{ElementOutline:dl,Chart:Jc},props:{elementInfo:{type:Object,required:!0},needScaleSize:{type:Boolean,default:!0}},setup:function(e){return{chartWidth:Object(y["computed"])((function(){return e.needScaleSize?10*e.elementInfo.width:e.elementInfo.width})),chartHeight:Object(y["computed"])((function(){return e.needScaleSize?10*e.elementInfo.height:e.elementInfo.height}))}}});n("c645");const cd=Ln()(ld,[["render",od],["__scopeId","data-v-60d9ae43"]]);var ad=cd,rd={class:"element-content"};function id(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("StaticTable");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-table",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",rd,[Object(y["createVNode"])(a,{data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","colWidths","outline","theme"])])],4)],4)}var ud=["width"],dd=["rowspan","colspan"],sd=["innerHTML"];function fd(e,t,n,o,l,c){var a,r,i,u,d;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"static-table",style:Object(y["normalizeStyle"])({width:e.totalWidth+"px"})},[Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:e.theme,"row-header":null===(a=e.theme)||void 0===a?void 0:a.rowHeader,"row-footer":null===(r=e.theme)||void 0===r?void 0:r.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.colSizeList,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,ud)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.data,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,o){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:"cell",style:Object(y["normalizeStyle"])(Object(B["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(y["createElementVNode"])("div",{class:"cell-text",innerHTML:e.formatText(t.text)},null,8,sd)],12,dd)),[[y["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))]])})),128))])})),128))])],6)],4)}var pd=Object(y["defineComponent"])({name:"static-table",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup:function(e){var t=Object(y["ref"])([]),n=Object(y["computed"])((function(){return t.value.reduce((function(e,t){return e+t}))}));Object(y["watch"])([function(){return e.colWidths},function(){return e.width}],(function(){t.value=e.colWidths.map((function(t){return t*e.width}))}),{immediate:!0});var o=Object(y["computed"])((function(){return e.data})),l=da(o),c=l.hideCells,a=Object(y["computed"])((function(){return e.theme})),r=sa(a),i=r.subThemeColor;return{colSizeList:t,totalWidth:n,hideCells:c,getTextStyle:ia,formatText:ua,subThemeColor:i}}});n("9316");const md=Ln()(pd,[["render",fd],["__scopeId","data-v-74b60291"]]);var bd=md,vd=Object(y["defineComponent"])({name:"base-element-table",components:{StaticTable:bd},props:{elementInfo:{type:Object,required:!0}}});n("4607");const hd=Ln()(vd,[["render",id],["__scopeId","data-v-3bbcc75c"]]);var Od=hd,jd={class:"element-content"},yd=["width","height","stroke","stroke-width"],gd=["transform"],xd=["d"];function Cd(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-latex",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",jd,[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,xd)],8,gd)],8,yd))])],4)],4)}var kd=Object(y["defineComponent"])({name:"base-element-latex",props:{elementInfo:{type:Object,required:!0}}});n("0006");const wd=Ln()(kd,[["render",Cd],["__scopeId","data-v-4118f3dd"]]);var Ed=wd;function Nd(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlayOne");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.elementInfo.poster,")")})},[Object(y["createVNode"])(a,{class:"icon"})],4)],4)],4)}var Id=Object(y["defineComponent"])({name:"base-element-video",props:{elementInfo:{type:Object,required:!0}}});n("4b15");const Vd=Ln()(Id,[["render",Nd],["__scopeId","data-v-1c831c75"]]);var Sd=Vd,Bd={class:"element-content"};function Ld(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",Bd,[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"])])],4)],4)}var Td=Object(y["defineComponent"])({name:"base-element-audio",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"}));return{audioIconSize:t}}});n("dab5");const Md=Ln()(Td,[["render",Ld],["__scopeId","data-v-513e91c4"]]);var _d=Md,Dd=Object(y["defineComponent"])({name:"base-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Du),Object(ae["a"])(t,oo.TEXT,Pu),Object(ae["a"])(t,oo.SHAPE,Ju),Object(ae["a"])(t,oo.LINE,nd),Object(ae["a"])(t,oo.CHART,ad),Object(ae["a"])(t,oo.TABLE,Od),Object(ae["a"])(t,oo.LATEX,Ed),Object(ae["a"])(t,oo.VIDEO,Sd),Object(ae["a"])(t,oo.AUDIO,_d),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:t}}});const zd=Ln()(Dd,[["render",Bu]]);var Ad=zd,Fd=Object(y["defineComponent"])({name:"thumbnail-slide",components:{ThumbnailElement:Ad},props:{slide:{type:Object,required:!0},size:{type:Number,required:!0},visible:{type:Boolean,default:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=Object(y["computed"])((function(){return e.slide.background})),l=$r(o),c=l.backgroundStyle,a=Object(y["computed"])((function(){return e.size/Ge}));return Object(y["provide"])("slideScale",a),{scale:a,backgroundStyle:c,VIEWPORT_SIZE:Ge,viewportRatio:n}}});n("4405");const Rd=Ln()(Fd,[["render",Su],["__scopeId","data-v-06a163ec"]]);var Pd=Rd,Hd=Object(y["defineComponent"])({name:"link-dialog",emits:["close"],components:{ThumbnailSlide:Pd},setup:function(e,t){var n=t.emit,o=Object(g["c"])(ee()),l=o.handleElement,c=Object(g["c"])($()),a=c.slides,r=Object(y["ref"])("web"),i=Object(y["ref"])(""),u=Object(y["ref"])(""),d=Object(y["computed"])((function(){return u.value&&a.value.find((function(e){return e.id===u.value}))||null})),s=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],f=fu(),p=f.setLink;Object(y["onMounted"])((function(){var e;null!==(e=l.value)&&void 0!==e&&e.link&&("web"===l.value.link.type?i.value=l.value.link.target:"slide"===l.value.link.type&&(u.value=l.value.link.target),r.value=l.value.link.type)}));var m=function(){return n("close")},b=function(){var e={type:r.value,target:"web"===r.value?i.value:u.value};if(l.value){var t=p(l.value,e);t?m():i.value=""}};return{slides:a,tabs:s,type:r,address:i,slideId:u,selectedSlide:d,close:m,save:b}}});n("73f6");const qd=Ln()(Hd,[["render",Iu],["__scopeId","data-v-5a0d0b33"]]);var Xd=qd,Wd=Object(y["defineComponent"])({name:"editor-canvas",components:{EditableElement:Pr,MouseSelection:Wr,ViewportBackground:ni,AlignmentLine:ai,ElementCreateSelection:fi,MultiSelectOperate:wi,Operate:Ou,LinkDialog:Xd},setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.activeGroupElementId,l=t.handleElementId,c=t.editorAreaFocus,a=t.showGridLines,r=t.creatingElement,i=t.canvasScale,u=Object(g["c"])($()),d=u.currentSlide,s=Object(g["c"])(se()),f=s.ctrlKeyState,p=s.ctrlOrShiftKeyActive,m=Object(y["ref"])(),b=Object(y["ref"])([]),v=Object(y["ref"])(!1),h=function(){return v.value=!0};Object(y["watch"])(l,(function(){e.setActiveGroupElementId("")}));var O=Object(y["ref"])([]),j=function(){O.value=d.value?JSON.parse(JSON.stringify(d.value.elements)):[]};Object(y["watchEffect"])(j);var x=Object(y["ref"])(),C=Pn(x),k=C.viewportStyles;qn(x);var w=Hn(O,m),E=w.mouseSelectionState,N=w.updateMouseSelection,V=Qn(O,b),S=V.dragElement,B=$n(O),L=B.dragLineElement,T=Kn(O,S),M=T.selectElement,_=Jn(O,b),D=_.scaleElement,z=_.scaleMultiElement,A=Wn(O,m),F=A.rotateElement,R=et(),P=R.selectAllElement,H=Ke(),q=H.deleteAllElements,X=$e(),W=X.pasteElement,G=at(),U=G.enterScreening,Y=Ze(),J=Y.updateSlideIndex,K=function(t){e.setActiveElementIdList([]),p.value||N(t),c.value||e.setEditorareaFocus(!0),Rn()},Q=function(){c.value&&e.setEditorareaFocus(!1)},te=rt(),ne=te.scaleCanvas,oe=Object(Z["throttle"])(ne,100,{leading:!0,trailing:!1}),le=Object(Z["throttle"])(J,300,{leading:!0,trailing:!1}),ce=function(e){e.preventDefault(),f.value?e.deltaY>0?oe("-"):e.deltaY<0&&oe("+"):e.deltaY>0?le(I.DOWN):e.deltaY<0&&le(I.UP)},ae=function(){e.setGridLinesState(!a.value)},re=eo(m),ie=re.insertElementFromCreateSelection,ue=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:W},{text:"全选",subText:"Ctrl + A",handler:P},{text:"网格线",subText:a.value?"√":"",handler:ae},{text:"重置当前页",handler:q},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:U}]};return Object(y["provide"])("slideScale",i),{elementList:O,activeElementIdList:n,handleElementId:l,activeGroupElementId:o,canvasRef:x,viewportRef:m,viewportStyles:k,canvasScale:i,mouseSelectionState:E,currentSlide:d,creatingElement:r,alignmentLines:b,linkDialogVisible:v,openLinkDialog:h,handleClickBlankArea:K,removeEditorAreaFocus:Q,insertElementFromCreateSelection:ie,selectElement:M,rotateElement:F,scaleElement:D,dragLineElement:L,scaleMultiElement:z,handleMousewheelCanvas:ce,contextmenus:ue}}});n("2f42");const Gd=Ln()(Wd,[["render",Fn],["__scopeId","data-v-1386e8fc"]]);var Ud=Gd,Yd={class:"canvas-tool"},Zd={class:"left-handler"},Jd={class:"add-element-handler"},Kd={class:"right-handler"},Qd={class:"text"};function $d(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconBack"),r=Object(y["resolveComponent"])("Tooltip"),i=Object(y["resolveComponent"])("IconNext"),u=Object(y["resolveComponent"])("IconFontSize"),d=Object(y["resolveComponent"])("IconPicture"),s=Object(y["resolveComponent"])("FileInput"),f=Object(y["resolveComponent"])("ShapePool"),p=Object(y["resolveComponent"])("IconGraphicDesign"),m=Object(y["resolveComponent"])("Popover"),b=Object(y["resolveComponent"])("LinePool"),v=Object(y["resolveComponent"])("IconConnection"),h=Object(y["resolveComponent"])("ChartPool"),O=Object(y["resolveComponent"])("IconChartProportion"),j=Object(y["resolveComponent"])("TableGenerator"),g=Object(y["resolveComponent"])("IconInsertTable"),x=Object(y["resolveComponent"])("IconFormula"),C=Object(y["resolveComponent"])("MediaInput"),k=Object(y["resolveComponent"])("IconVideoTwo"),w=Object(y["resolveComponent"])("IconMinus"),E=Object(y["resolveComponent"])("IconPlus"),N=Object(y["resolveComponent"])("IconFullScreen"),I=Object(y["resolveComponent"])("LaTeXEditor"),V=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Yd,[Object(y["createElementVNode"])("div",Zd,[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:Object(y["normalizeClass"])(["handler-item",{disable:!e.canUndo}]),onClick:t[0]||(t[0]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{class:Object(y["normalizeClass"])(["handler-item",{disable:!e.canRedo}]),onClick:t[1]||(t[1]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(y["createElementVNode"])("div",Jd,[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{class:"handler-item",onClick:t[2]||(t[2]=function(t){return e.drawText()})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(s,{onChange:t[3]||(t[3]=function(t){return e.insertImageElement(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(m,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.shapePoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{onSelect:t[4]||(t[4]=function(t){return e.drawShape(t)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.linePoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{onSelect:t[6]||(t[6]=function(t){return e.drawLine(t)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.chartPoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{onSelect:t[8]||(t[8]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.tableGeneratorVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{onClose:t[10]||(t[10]=function(t){return e.tableGeneratorVisible=!1}),onInsert:t[11]||(t[11]=function(t){var n=t.row,o=t.col;e.createTableElement(n,o),e.tableGeneratorVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x,{class:"handler-item",onClick:t[13]||(t[13]=function(t){return e.latexEditorVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.mediaInputVisible,"onUpdate:visible":t[17]||(t[17]=function(t){return e.mediaInputVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{onClose:t[14]||(t[14]=function(t){return e.mediaInputVisible=!1}),onInsertVideo:t[15]||(t[15]=function(t){e.createVideoElement(t),e.mediaInputVisible=!1}),onInsertAudio:t[16]||(t[16]=function(t){e.createAudioElement(t),e.mediaInputVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(y["createElementVNode"])("div",Kd,[Object(y["createVNode"])(w,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(t){return e.scaleCanvas("-")})}),Object(y["createElementVNode"])("span",Qd,Object(y["toDisplayString"])(e.canvasScalePercentage),1),Object(y["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[19]||(t[19]=function(t){return e.scaleCanvas("+")})}),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适配屏幕"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{class:"handler-item viewport-size-adaptation",onClick:t[20]||(t[20]=function(t){return e.setCanvasPercentage(90)})})]})),_:1},8,["mouseEnterDelay"])]),Object(y["createVNode"])(V,{visible:e.latexEditorVisible,"onUpdate:visible":t[23]||(t[23]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{onClose:t[21]||(t[21]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[22]||(t[22]=function(t){e.createLatexElement(t),e.latexEditorVisible=!1})})]})),_:1},8,["visible"])])}var es={class:"shape-pool"},ts={class:"category-name"},ns={class:"shape-list"},os=["onClick"],ls={overflow:"visible",width:"18",height:"18"},cs=["transform"],as=["d"];function rs(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",es,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.shapeList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:t.type},[Object(y["createElementVNode"])("div",ts,Object(y["toDisplayString"])(t.type),1),Object(y["createElementVNode"])("div",ns,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t.children,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-item",key:n},[Object(y["createElementVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",ls,[Object(y["createElementVNode"])("g",{transform:"scale(".concat(18/t.viewBox,", ").concat(18/t.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",stroke:"#999","stroke-width":"2",d:t.path},null,8,as)],8,cs)]))],8,os)])})),128))])])})),128))])}var is=[{type:"矩形",children:[{viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:200,path:"M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z"},{viewBox:200,path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z"},{viewBox:200,path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200"},{viewBox:200,path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z"}]},{type:"常用形状",children:[{viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:200,path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:200,path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:200,path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z"},{viewBox:200,path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:200,path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:200,path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z"},{viewBox:200,path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z"},{viewBox:200,path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z"},{viewBox:200,path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:200,path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z"},{viewBox:200,path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z"},{viewBox:200,path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z"},{viewBox:200,path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:200,path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z"},{viewBox:200,path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z"}]},{type:"箭头",children:[{viewBox:200,path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z"},{viewBox:200,path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:200,path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z"},{viewBox:200,path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z"},{viewBox:200,path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:200,path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:200,path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:200,path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:1024,path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z",special:!0},{viewBox:1024,path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z",special:!0}]},{type:"其他形状",children:[{viewBox:1024,path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z",special:!0},{viewBox:1024,path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z",special:!0},{viewBox:1024,path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z",special:!0},{viewBox:1024,path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z",special:!0},{viewBox:1024,path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z",special:!0},{viewBox:1024,path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z",special:!0},{viewBox:1024,path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z",special:!0},{viewBox:1024,path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z",special:!0},{viewBox:1024,path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z",special:!0},{viewBox:1024,path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z",special:!0},{viewBox:1024,path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z",special:!0},{viewBox:1024,path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z",special:!0},{viewBox:1024,path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z",special:!0},{viewBox:1024,path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z",special:!0},{viewBox:1024,path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z",special:!0},{viewBox:1024,path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z",special:!0}]}],us=Object(y["defineComponent"])({name:"shape-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=is,l=function(e){n("select",e)};return{shapeList:o,selectShape:l}}});n("d908");const ds=Ln()(us,[["render",rs],["__scopeId","data-v-0f50713a"]]);var ss=ds,fs={class:"line-pool"},ps={class:"category-name"},ms={class:"line-list"},bs=["onClick"],vs={overflow:"visible",width:"20",height:"20"},hs=["d","stroke-dasharray","marker-start","marker-end"];function Os(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.lineList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:t.type},[Object(y["createElementVNode"])("div",ps,Object(y["toDisplayString"])(t.type),1),Object(y["createElementVNode"])("div",ms,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t.children,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"line-item",key:n},[Object(y["createElementVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",vs,[Object(y["createElementVNode"])("defs",null,[t.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,class:"line-marker",id:"preset-line-".concat(n),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0),t.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,class:"line-marker",id:"preset-line-".concat(n),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n),"-",t.points[1],"-end)"):""},null,8,hs)]))],8,bs)])})),128))])])})),128))])}var js=[{type:"直线",children:[{path:"M 0 0 L 20 20",style:"solid",points:["",""]},{path:"M 0 0 L 20 20",style:"dashed",points:["",""]},{path:"M 0 0 L 20 20",style:"solid",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"dashed",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"solid",points:["","dot"]}]},{type:"折线、曲线",children:[{path:"M 0 0 L 0 20 L 20 20",style:"solid",points:["","arrow"],isBroken:!0},{path:"M 0 0 Q 0 20 20 20",style:"solid",points:["","arrow"],isCurve:!0}]}],ys=Object(y["defineComponent"])({name:"line-pool",emits:["select"],components:{LinePointMarker:Rc},setup:function(e,t){var n=t.emit,o=js,l=function(e){n("select",e)};return{lineList:o,selectLine:l}}});n("e4ed");const gs=Ln()(ys,[["render",Os],["__scopeId","data-v-78517932"]]);var xs=gs,Cs={class:"chart-pool"},ks=["onClick"];function ws(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconChartLine"),r=Object(y["resolveComponent"])("IconChartHistogram"),i=Object(y["resolveComponent"])("IconChartPie");return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",Cs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.chartList,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{class:"chart-item",key:n},[Object(y["createElementVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,size:"24"})):"bar"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,size:"24"})):"pie"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:2,size:"24"})):Object(y["createCommentVNode"])("",!0)],8,ks)])})),128))])}var Es=Object(y["defineComponent"])({name:"chart-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=["bar","line","pie"],l=function(e){n("select",e)};return{chartList:o,selectChart:l}}});n("f076");const Ns=Ln()(Es,[["render",ws],["__scopeId","data-v-ab6a141a"]]);var Is=Ns,Vs=function(e){return Object(y["pushScopeId"])("data-v-e325ce98"),e=e(),Object(y["popScopeId"])(),e},Ss={class:"table-generator"},Bs={class:"title"},Ls={class:"lef"},Ts=["onMouseenter"],Ms={key:1,class:"custom"},_s={class:"row"},Ds=Vs((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),zs={class:"row"},As=Vs((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),Fs={class:"btns"},Rs=Object(y["createTextVNode"])("取消"),Ps=Object(y["createTextVNode"])("确认");function Hs(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("InputNumber"),r=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ss,[Object(y["createElementVNode"])("div",Bs,[Object(y["createElementVNode"])("div",Ls,"表格 "+Object(y["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(y["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(t){return e.isCustom=!e.isCustom})},Object(y["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ms,[Object(y["createElementVNode"])("div",_s,[Ds,Object(y["createVNode"])(a,{min:1,max:20,value:e.customRow,"onUpdate:value":t[3]||(t[3]=function(t){return e.customRow=t}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",zs,[As,Object(y["createVNode"])(a,{min:1,max:20,value:e.customCol,"onUpdate:value":t[4]||(t[4]=function(t){return e.customCol=t}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Fs,[Object(y["createVNode"])(r,{class:"btn",onClick:t[5]||(t[5]=function(t){return e.close()})},{default:Object(y["withCtx"])((function(){return[Rs]})),_:1}),Object(y["createVNode"])(r,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(t){return e.insertCustomTable()})},{default:Object(y["withCtx"])((function(){return[Ps]})),_:1})])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=function(t){return e.endCell=[]}),onClick:t[2]||(t[2]=function(t){return e.handleClickTable()})},[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(t){return Object(y["createElementVNode"])("tr",{key:t},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(n){return Object(y["createElementVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}])},null,2)],40,Ts)})),64))])})),64))])],32))])}var qs=Object(y["defineComponent"])({name:"table-generator",emits:["insert","close"],setup:function(e,t){var n=t.emit,o=Object(y["ref"])([]),l=Object(y["ref"])(3),c=Object(y["ref"])(3),a=Object(y["ref"])(!1),r=function(){if(o.value.length){var e=Object(Rt["a"])(o.value,2),t=e[0],l=e[1];n("insert",{row:t,col:l})}},i=function(){return l.value<1||l.value>20||c.value<1||c.value>20?ge["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:l.value,col:c.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return{endCell:o,customRow:l,customCol:c,handleClickTable:r,insertCustomTable:i,isCustom:a,close:u}}});n("5a68");const Xs=Ln()(qs,[["render",Hs],["__scopeId","data-v-e325ce98"]]);var Ws=Xs,Gs={class:"media-input"},Us={class:"tabs"},Ys=["onClick"],Zs={class:"btns"},Js=Object(y["createTextVNode"])("取消"),Ks=Object(y["createTextVNode"])("确认"),Qs={class:"btns"},$s=Object(y["createTextVNode"])("取消"),ef=Object(y["createTextVNode"])("确认");function tf(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Input"),r=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Gs,[Object(y["createElementVNode"])("div",Us,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(y["toDisplayString"])(t.label),11,Ys)})),128))]),"video"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createVNode"])(a,{value:e.videoSrc,"onUpdate:value":t[0]||(t[0]=function(t){return e.videoSrc=t}),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(y["createElementVNode"])("div",Zs,[Object(y["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[Js]})),_:1}),Object(y["createVNode"])(r,{type:"primary",onClick:t[2]||(t[2]=function(t){return e.insertVideo()})},{default:Object(y["withCtx"])((function(){return[Ks]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0),"audio"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(a,{value:e.audioSrc,"onUpdate:value":t[3]||(t[3]=function(t){return e.audioSrc=t}),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(y["createElementVNode"])("div",Qs,[Object(y["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[$s]})),_:1}),Object(y["createVNode"])(r,{type:"primary",onClick:t[5]||(t[5]=function(t){return e.insertAudio()})},{default:Object(y["withCtx"])((function(){return[ef]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}var nf=Object(y["defineComponent"])({name:"media-input",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,o=Object(y["ref"])("video"),l=Object(y["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),c=Object(y["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!l.value)return ge["a"].error("请先输入正确的视频地址");n("insertVideo",l.value)},i=function(){if(!c.value)return ge["a"].error("请先输入正确的音频地址");n("insertAudio",c.value)},u=function(){return n("close")};return{type:o,videoSrc:l,audioSrc:c,tabs:a,insertVideo:r,insertAudio:i,close:u}}});n("3d3c");const of=Ln()(nf,[["render",tf],["__scopeId","data-v-4916d8ab"]]);var lf=of,cf={class:"latex-editor"},af={class:"container"},rf={class:"left"},uf={class:"input-area"},df={class:"preview"},sf={key:0,class:"placeholder"},ff={key:1,class:"preview-content"},pf={class:"right"},mf={class:"tabs"},bf=["onClick"],vf={class:"content"},hf={key:0,class:"symbol"},Of={class:"symbol-tabs"},jf=["onClick"],yf={class:"symbol-pool"},gf=["onClick"],xf={key:1,class:"formula"},Cf={class:"formula-title"},kf=["onClick"],wf={class:"footer"},Ef=Object(y["createTextVNode"])("取消"),Nf=Object(y["createTextVNode"])("确定");function If(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("TextArea"),r=Object(y["resolveComponent"])("FormulaContent"),i=Object(y["resolveComponent"])("SymbolContent"),u=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cf,[Object(y["createElementVNode"])("div",af,[Object(y["createElementVNode"])("div",rf,[Object(y["createElementVNode"])("div",uf,[Object(y["createVNode"])(a,{value:e.latex,"onUpdate:value":t[0]||(t[0]=function(t){return e.latex=t}),placeholder:"输入 LaTeX 公式",ref:"textAreaRef"},null,8,["value"])]),Object(y["createElementVNode"])("div",df,[e.latex?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ff,[Object(y["createVNode"])(r,{width:518,height:138,latex:e.latex},null,8,["latex"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sf,"公式预览"))])]),Object(y["createElementVNode"])("div",pf,[Object(y["createElementVNode"])("div",mf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:t.value===e.toolbarState}]),key:t.value,onClick:function(n){return e.toolbarState=t.value}},Object(y["toDisplayString"])(t.label),11,bf)})),128))]),Object(y["createElementVNode"])("div",vf,["symbol"===e.toolbarState?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",hf,[Object(y["createElementVNode"])("div",Of,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.symbolList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["symbol-tab",{active:e.selectedSymbolKey===t.type}]),key:t.type,onClick:function(n){return e.selectedSymbolKey=t.type}},Object(y["toDisplayString"])(t.label),11,jf)})),128))]),Object(y["createElementVNode"])("div",yf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.symbolPool,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:t.latex,onClick:function(n){return e.insertSymbol(t.latex)}},[Object(y["createVNode"])(i,{latex:t.latex},null,8,["latex"])],8,gf)})),128))])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.formulaList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"formula-item",key:t.label},[Object(y["createElementVNode"])("div",Cf,Object(y["toDisplayString"])(t.label),1),Object(y["createElementVNode"])("div",{class:"formula-item-content",onClick:function(n){return e.latex=t.latex}},[Object(y["createVNode"])(r,{width:236,height:60,latex:t.latex},null,8,["latex"])],8,kf)])})),128))]))])])]),Object(y["createElementVNode"])("div",wf,[Object(y["createVNode"])(u,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(y["withCtx"])((function(){return[Ef]})),_:1}),Object(y["createVNode"])(u,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(t){return e.update()})},{default:Object(y["withCtx"])((function(){return[Nf]})),_:1})])])}var Vf=n("e5ca");Vf["a"].SUB_SUP_SCALE=.5;var Sf=[{label:"高斯公式",latex:"\\int\\int\\int _ { \\Omega } \\left( \\frac { \\partial {P} } { \\partial {x} } + \\frac { \\partial {Q} } { \\partial {y} } + \\frac { \\partial {R} }{ \\partial {z} } \\right) \\mathrm { d } V = \\oint _ { \\partial \\Omega } ( P \\cos \\alpha + Q \\cos \\beta + R \\cos \\gamma ) \\mathrm{ d} S"},{label:"傅里叶级数",latex:"f(x) = \\frac {a_0} 2 + \\sum_{n = 1}^\\infty {({a_n}\\cos {nx} + {b_n}\\sin {nx})}"},{label:"泰勒展开式",latex:"e ^ { x } = 1 + \\frac { x } { 1 ! } + \\frac { x ^ { 2 } } { 2 ! } + \\frac { x ^ { 3 } } { 3 ! } + ... , \\quad - \\infty < x < \\infty"},{label:"定积分",latex:"\\lim_ { n \\rightarrow + \\infty } \\sum _ { i = 1 } ^ { n } f \\left[ a + \\frac { i } { n } ( b - a ) \\right] \\frac { b - a } { n } = \\int _ { a } ^ { b } f ( x ) dx"},{label:"三角恒等式1",latex:"\\sin \\alpha \\pm \\sin \\beta = 2 \\sin \\frac { 1 } { 2 } ( \\alpha \\pm \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha \\mp \\beta )"},{label:"三角恒等式2",latex:"\\cos \\alpha + \\cos \\beta = 2 \\cos \\frac { 1 } { 2 } ( \\alpha + \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha - \\beta )"},{label:"和的展开式",latex:"( 1 + x ) ^ { n } = 1 + \\frac { n x } { 1 ! } + \\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ..."},{label:"欧拉公式",latex:" e^{ix} = \\cos {x} + i\\sin {x}"},{label:"贝努利方程",latex:"\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\not= {0,1})"},{label:"全微分方程",latex:"du(x,y) = P(x,y)dx + Q(x,y)dy = 0"},{label:"非齐次方程",latex:"y = (\\int Q(x) e^{\\int {P(x)dx}}dx + C)e^{-\\int {P(x)dx}}"},{label:"柯西中值定理",latex:"\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\frac{{f'(\\xi )}}{{F'(\\xi )}}"},{label:"拉格朗日中值定理",latex:"f(b) - f(a) = f'(\\xi )(b - a)"},{label:"导数公式",latex:"(\\arcsin x)' = \\frac{1}{{\\sqrt {1 - x^2} }}"},{label:"三角函数积分",latex:"\\int {tgxdx = - \\ln \\left| {\\cos x} \\right| + C}"},{label:"二次曲面",latex:"\\frac{{{x^2}}}{{{a^2}}} + \\frac{{{y^2}}}{{{b^2}}} - \\frac{{{z^2}}}{{{c^2}}} = 1"},{label:"二阶微分",latex:"\\frac {{d^2}y} {dx^2} + P(x) \\frac {dy} {dx} + Q(x)y = f(x)"},{label:"方向导数",latex:"\\frac{{\\partial f}}{{\\partial l}} = \\frac{{\\partial f}}{{\\partial x}}\\cos \\phi + \\frac{{\\partial f}}{{\\partial y}}\\sin \\phi"}],Bf=[{type:"operators",label:"数学",children:[{latex:"\\cdot"},{latex:"\\pm"},{latex:"\\mp"},{latex:"+"},{latex:"-"},{latex:"\\times"},{latex:"\\div"},{latex:"<"},{latex:">"},{latex:"="},{latex:"\\neq\\ne"},{latex:"\\leqq"},{latex:"\\geqq"},{latex:"\\leq"},{latex:"\\geq"},{latex:"\\propto"},{latex:"\\sim"},{latex:"\\equiv"},{latex:"\\dagger"},{latex:"\\ddagger"},{latex:"\\ell"},{latex:"\\#"},{latex:"\\$"},{latex:"\\&"},{latex:"\\%"},{latex:"\\langle\\rangle"},{latex:"()"},{latex:"[]"},{latex:"\\{\\}"},{latex:"||"},{latex:"\\|"},{latex:"\\exists"},{latex:"\\in"},{latex:"\\subset"},{latex:"\\supset"},{latex:"\\cup"},{latex:"\\cap"},{latex:"\\infty"},{latex:"\\partial"},{latex:"\\nabla"},{latex:"\\aleph"},{latex:"\\wp"},{latex:"\\therefore"},{latex:"\\mid"},{latex:"\\sum"},{latex:"\\prod"},{latex:"\\bigoplus"},{latex:"\\bigodot"},{latex:"\\int"},{latex:"\\oint"},{latex:"\\oplus"},{latex:"\\odot"},{latex:"\\perp"},{latex:"\\angle"},{latex:"\\triangle"},{latex:"\\Box"},{latex:"\\rightarrow"},{latex:"\\to"},{latex:"\\leftarrow"},{latex:"\\gets"},{latex:"\\circ"},{latex:"\\bigcirc"},{latex:"\\bullet"},{latex:"\\star"},{latex:"\\diamond"},{latex:"\\ast"},{latex:","},{latex:"."},{latex:";"},{latex:"!"}]},{type:"group",label:"组合",children:[{latex:"\\frac{a}{b}"},{latex:"\\frac{dx}{dx}"},{latex:"\\frac{\\partial a}{\\partial b}"},{latex:"\\sqrt{x}"},{latex:"\\sqrt[n]{x}"},{latex:"x^{n}"},{latex:"x_{n}"},{latex:"x_a^b"},{latex:"\\int_{a}^{b}"},{latex:"\\oint_a^b"},{latex:"\\lim_{a \\rightarrow b}"},{latex:"\\prod_a^b"},{latex:"\\sum_a^b"},{latex:"\\left(\\begin{array}a \\\\ b\\end{array}\\right)"},{latex:"\\begin{bmatrix}a & b \\\\ c & d \\end{bmatrix}"},{latex:"\\begin{cases}a & x = 0 \\\\ b & x > 0\\end{cases}"},{latex:"\\hat{a}"},{latex:"\\breve{a}"},{latex:"\\acute{a}"},{latex:"\\grave{a}"},{latex:"\\tilde{a}"},{latex:"\\bar{a}"},{latex:"\\vec{a}"},{latex:"\\underline{a}"},{latex:"\\overline{a}"},{latex:"\\widehat{ab}"},{latex:"\\overleftarrow{ab}"},{latex:"\\overrightarrow{ab}"}]},{type:"verbatim",label:"函数",children:[{latex:"\\log"},{latex:"\\ln"},{latex:"\\exp"},{latex:"\\mod"},{latex:"\\lim"},{latex:"\\sin"},{latex:"\\cos"},{latex:"\\tan"},{latex:"\\csc"},{latex:"\\sec"},{latex:"\\cot"},{latex:"\\sinh"},{latex:"\\cosh"},{latex:"\\tanh"},{latex:"\\csch"},{latex:"\\sech"},{latex:"\\coth"},{latex:"\\arcsin"},{latex:"\\arccos"},{latex:"\\arctan"},{latex:"\\arccsc"},{latex:"\\arcsec"},{latex:"\\arccot"}]},{type:"greek",label:"希腊字母",children:[{latex:"\\alpha"},{latex:"\\beta"},{latex:"\\gamma"},{latex:"\\delta"},{latex:"\\varepsilon"},{latex:"\\zeta"},{latex:"\\eta"},{latex:"\\vartheta"},{latex:"\\iota"},{latex:"\\kappa"},{latex:"\\lambda"},{latex:"\\mu"},{latex:"\\nu"},{latex:"\\xi"},{latex:"\\omicron"},{latex:"\\pi"},{latex:"\\rho"},{latex:"\\sigma"},{latex:"\\tau"},{latex:"\\upsilon"},{latex:"\\varphi"},{latex:"\\chi"},{latex:"\\psi"},{latex:"\\omega"},{latex:"\\epsilon"},{latex:"\\theta"},{latex:"\\phi"},{latex:"\\varsigma"},{latex:"\\Alpha"},{latex:"\\Beta"},{latex:"\\Gamma"},{latex:"\\Delta"},{latex:"\\Epsilon"},{latex:"\\Zeta"},{latex:"\\Eta"},{latex:"\\Theta"},{latex:"\\Iota"},{latex:"\\Kappa"},{latex:"\\Lambda"},{latex:"\\Mu"},{latex:"\\Nu"},{latex:"\\Xi"},{latex:"\\Omicron"},{latex:"\\Pi"},{latex:"\\Rho"},{latex:"\\Sigma"},{latex:"\\Tau"},{latex:"\\Upsilon"},{latex:"\\Phi"},{latex:"\\Chi"},{latex:"\\Psi"},{latex:"\\Omega"}]}],Lf=["width","height"],Tf=["transform"],Mf=["d"];function _f(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:e.box.w+32,height:e.box.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.scale,", ").concat(e.scale,") translate(0,0) matrix(1,0,0,1,0,0)"),"transform-origin":"0 50%"},[Object(y["createElementVNode"])("path",{d:e.pathd},null,8,Mf)],8,Tf)],8,Lf)}var Df=Object(y["defineComponent"])({name:"formula-content",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(e){var t=Object(y["ref"])({x:0,y:0,w:0,h:0}),n=Object(y["ref"])("");Object(y["watch"])((function(){return e.latex}),(function(){var o=new Vf["b"](e.latex);n.value=o.pathd({}),t.value=o.box({})}),{immediate:!0});var o=Object(y["computed"])((function(){var n=t.value.w+32,o=t.value.h+32;return n>e.width||o>e.height?n/o>e.width/e.height?e.width/n:e.height/o:1}));return{box:t,pathd:n,scale:o}}});const zf=Ln()(Df,[["render",_f]]);var Af=zf,Ff=["innerHTML"];function Rf(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-content",innerHTML:e.svg},null,8,Ff)}var Pf=Object(y["defineComponent"])({name:"symbol-content",props:{latex:{type:String,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t=new Vf["b"](e.latex);return t.svg({SCALE_X:10,SCALE_Y:10})}));return{svg:t}}});const Hf=Ln()(Pf,[["render",Rf]]);var qf=Hf,Xf=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],Wf=Object(y["defineComponent"])({name:"latex-editor",emits:["update","close"],components:{FormulaContent:Af,SymbolContent:qf},props:{value:{type:String,default:""}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(""),l=Object(y["ref"])("symbol"),c=Object(y["ref"])(),a=Object(y["ref"])(Bf[0].type),r=Object(y["computed"])((function(){var e=Bf.find((function(e){return e.type===a.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(y["onMounted"])((function(){e.value&&(o.value=e.value)}));var i=function(){if(o.value){var e=new Vf["b"](o.value),t=e.pathd({}),l=e.box({});n("update",{latex:o.value,path:t,w:l.w+32,h:l.h+32})}},u=function(){return n("close")},d=function(e){c.value&&(c.value.focus(),document.execCommand("insertText",!1,e))};return{tabs:Xf,latex:o,toolbarState:l,selectedSymbolKey:a,formulaList:Sf,symbolList:Bf,symbolPool:r,textAreaRef:c,update:i,close:u,insertSymbol:d}}});n("b824");const Gf=Ln()(Wf,[["render",If],["__scopeId","data-v-129e1afa"]]);var Uf=Gf,Yf=Object(y["defineComponent"])({name:"canvas-tool",components:{ShapePool:ss,LinePool:xs,ChartPool:Is,TableGenerator:Ws,MediaInput:lf,LaTeXEditor:Uf},setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.canvasScale,o=Object(g["c"])(de()),l=o.canUndo,c=o.canRedo,a=Object(y["computed"])((function(){return parseInt(100*n.value+"")+"%"})),r=rt(),i=r.scaleCanvas,u=r.setCanvasPercentage,d=qe(),s=d.redo,f=d.undo,p=Ue(),m=p.createImageElement,b=p.createChartElement,v=p.createTableElement,h=p.createLatexElement,O=p.createVideoElement,j=p.createAudioElement,x=function(e){var t=e[0];t&&We(t).then((function(e){return m(e)}))},C=Object(y["ref"])(!1),k=Object(y["ref"])(!1),w=Object(y["ref"])(!1),E=Object(y["ref"])(!1),N=Object(y["ref"])(!1),I=Object(y["ref"])(!1),V=function(){e.setCreatingElement({type:"text"})},S=function(t){e.setCreatingElement({type:"shape",data:t}),C.value=!1},B=function(t){e.setCreatingElement({type:"line",data:t}),k.value=!1};return{scaleCanvas:i,setCanvasPercentage:u,canvasScalePercentage:a,canUndo:l,canRedo:c,redo:s,undo:f,insertImageElement:x,shapePoolVisible:C,linePoolVisible:k,chartPoolVisible:w,tableGeneratorVisible:E,mediaInputVisible:N,latexEditorVisible:I,drawText:V,drawShape:S,drawLine:B,createChartElement:b,createTableElement:v,createLatexElement:h,createVideoElement:O,createAudioElement:j}}});n("044f");const Zf=Ln()(Yf,[["render",$d],["__scopeId","data-v-4ae7c9aa"]]);var Jf=Zf,Kf={class:"add-slide"},Qf=Object(y["createTextVNode"])("添加幻灯片"),$f={class:"select-btn"},ep=["onMousedown"];function tp(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlus"),r=Object(y["resolveComponent"])("LayoutPool"),i=Object(y["resolveComponent"])("IconDown"),u=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("ThumbnailSlide"),s=Object(y["resolveComponent"])("Draggable"),f=Object(y["resolveDirective"])("contextmenu"),p=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=function(){return e.setThumbnailsFocus(!0)})},[Object(y["createElementVNode"])("div",Kf,[Object(y["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.createSlide()})},[Object(y["createVNode"])(a,{class:"icon"}),Qf]),Object(y["createVNode"])(u,{trigger:"click",placement:"bottomLeft",visible:e.presetLayoutPopoverVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.presetLayoutPopoverVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onSelect:t[1]||(t[1]=function(t){e.createSlideByTemplate(t),e.presetLayoutPopoverVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",$f,[Object(y["createVNode"])(i)])]})),_:1},8,["visible"])]),Object(y["createVNode"])(s,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(y["withCtx"])((function(t){var n=t.element,o=t.index;return[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===o,selected:e.selectedSlidesIndex.includes(o)}]),onMousedown:function(t){return e.handleClickSlideThumbnail(t,o)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["label",{"offset-left":o>=99}])},Object(y["toDisplayString"])(e.fillDigit(o+1,2)),3),Object(y["createVNode"])(d,{class:"thumbnail",slide:n,size:120,visible:oo.value?n.value=setTimeout((function(){o.value=o.value+20,e()}),600):o.value=9999};return Object(y["onMounted"])(l),Object(y["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:o}},op=n("b76a"),lp=n.n(op),cp={class:"layout-pool"},ap=["onClick"];function rp(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cp,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.layouts,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"layout-item",key:t.id,onClick:function(n){return e.selectSlideTemplate(t)}},[Object(y["createVNode"])(a,{class:"thumbnail",slide:t,size:180},null,8,["slide"])],8,ap)})),128))])}var ip=Object(y["defineComponent"])({name:"layout-pool",emits:["select"],components:{ThumbnailSlide:Pd},setup:function(e,t){var n=t.emit,o=Object(g["c"])($()),l=o.layouts,c=function(e){n("select",e)};return{layouts:l,selectSlideTemplate:c}}});n("e7b8");const up=Ln()(ip,[["render",rp],["__scopeId","data-v-741b366e"]]);var dp=up,sp=Object(y["defineComponent"])({name:"thumbnails",components:{Draggable:lp.a,ThumbnailSlide:Pd,LayoutPool:dp},setup:function(){var e=ee(),t=$(),n=se(),o=Object(g["c"])(e),l=o.selectedSlidesIndex,c=o.thumbnailsFocus,a=Object(g["c"])(t),r=a.slides,i=a.slideIndex,u=Object(g["c"])(n),d=u.ctrlKeyState,s=u.shiftKeyState,f=np(),p=f.slidesLoadLimit,m=Object(y["computed"])((function(){return[].concat(Object(G["a"])(l.value),[i.value])})),b=Object(y["ref"])(!1),v=Ze(),h=v.copySlide,O=v.pasteSlide,j=v.createSlide,x=v.createSlideByTemplate,C=v.copyAndPasteSlide,k=v.deleteSlide,w=v.cutSlide,E=v.selectAllSlide,N=function(n){e.setActiveElementIdList([]),i.value!==n&&t.updateSlideIndex(n)},I=function(t,n){var o=m.value.length>1;if(!o||!m.value.includes(n)||0===t.button)if(d.value)if(i.value===n){if(!o)return;var l=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(l),N(m.value[0])}else if(m.value.includes(n)){var c=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(c)}else{var a=[].concat(Object(G["a"])(m.value),[n]);e.updateSelectedSlidesIndex(a),N(n)}else if(s.value){if(i.value===n&&!o)return;var r=Math.min.apply(Math,Object(G["a"])(m.value)),u=n;n1&&void 0!==arguments[1]?arguments[1]:0,c=o.value,a=s(),r=a.originClipRange,i=a.originWidth,f=a.originHeight,p=a.originLeft,m=a.originTop;if(n){var b,v=f/i,h=0,O=100;if(v>n){var j=(1-n/v)/2*100;b=[[h,j],[O,O-j]]}else{var y=(1-v/n)/2*100;b=[[y,h],[O-y,O]]}t.updateElement({id:l.value,props:{clip:Object(B["a"])(Object(B["a"])({},c.clip),{},{shape:e,range:b}),left:p+i*(b[0][0]/100),top:m+f*(b[0][1]/100),width:i*(b[1][0]-b[0][0])/100,height:f*(b[1][1]-b[0][1])/100}})}else t.updateElement({id:l.value,props:{clip:Object(B["a"])(Object(B["a"])({},c.clip),{},{shape:e,range:r})}});d(),u()},p=function(e){var n=e[0];n&&(We(n).then((function(e){var n={src:e};t.updateElement({id:l.value,props:n})})),u())},m=function(){var e=o.value;if(e.clip){var n=s(),c=n.originWidth,a=n.originHeight,r=n.originLeft,i=n.originTop;t.updateElement({id:l.value,props:{left:r,top:i,width:c,height:a}})}t.removeElementProps({id:l.value,propName:["clip","outline","flip","shadow","filters"]}),u()},b=function(){var e=o.value,n=Object(B["a"])(Object(B["a"])({},a.value.background),{},{type:"image",image:e.src,imageSize:"cover"});t.updateSlide({background:n}),u()};return{clipPanelVisible:r,shapeClipPathOptions:ab,ratioClipOptions:rb,handleElement:o,clipImage:d,presetImageClip:f,replaceImage:p,resetImage:m,setBackgroundImage:b}}});n("56bc");const ub=Ln()(ib,[["render",Rm],["__scopeId","data-v-64e5a614"]]);var db=ub,sb=function(e){return Object(y["pushScopeId"])("data-v-0e201fca"),e=e(),Object(y["popScopeId"])(),e},fb={class:"shape-style-panel"},pb={class:"row"},mb=Object(y["createTextVNode"])("纯色填充"),bb=Object(y["createTextVNode"])("渐变填充"),vb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),hb=Object(y["createTextVNode"])("线性渐变"),Ob=Object(y["createTextVNode"])("径向渐变"),jb={class:"row"},yb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),gb={class:"row"},xb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Cb={key:0,class:"row"},kb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)}));function wb(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("Slider"),f=Object(y["resolveComponent"])("ElementFlip"),p=Object(y["resolveComponent"])("Divider"),m=Object(y["resolveComponent"])("IconFontSize"),b=Object(y["resolveComponent"])("SelectOptGroup"),v=Object(y["resolveComponent"])("IconAddText"),h=Object(y["resolveComponent"])("InputGroup"),O=Object(y["resolveComponent"])("IconText"),j=Object(y["resolveComponent"])("Button"),g=Object(y["resolveComponent"])("Tooltip"),x=Object(y["resolveComponent"])("ButtonGroup"),C=Object(y["resolveComponent"])("IconTextBold"),k=Object(y["resolveComponent"])("CheckboxButton"),w=Object(y["resolveComponent"])("IconTextItalic"),E=Object(y["resolveComponent"])("IconTextUnderline"),N=Object(y["resolveComponent"])("IconFormat"),I=Object(y["resolveComponent"])("CheckboxButtonGroup"),V=Object(y["resolveComponent"])("IconAlignTextLeft"),S=Object(y["resolveComponent"])("RadioButton"),B=Object(y["resolveComponent"])("IconAlignTextCenter"),L=Object(y["resolveComponent"])("IconAlignTextRight"),T=Object(y["resolveComponent"])("RadioGroup"),M=Object(y["resolveComponent"])("IconAlignTextTopOne"),_=Object(y["resolveComponent"])("IconAlignTextMiddleOne"),D=Object(y["resolveComponent"])("IconAlignTextBottomOne"),z=Object(y["resolveComponent"])("ElementOutline"),A=Object(y["resolveComponent"])("ElementShadow"),F=Object(y["resolveComponent"])("ElementOpacity");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fb,[Object(y["createElementVNode"])("div",pb,[Object(y["createVNode"])(r,{style:{flex:"10"},value:e.fillType,onChange:t[0]||(t[0]=function(t){return e.updateFillType(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"fill"},{default:Object(y["withCtx"])((function(){return[mb]})),_:1}),Object(y["createVNode"])(a,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[bb]})),_:1})]})),_:1},8,["value"]),vb,"fill"===e.fillType?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.fill,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[2]||(t[2]=function(t){return e.updateGradient({type:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"linear"},{default:Object(y["withCtx"])((function(){return[hb]})),_:1}),Object(y["createVNode"])(a,{value:"radial"},{default:Object(y["withCtx"])((function(){return[Ob]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",jb,[yb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.gradient.color[0],"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateGradient({color:[t,e.gradient.color[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",gb,[xb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.gradient.color[1],"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateGradient({color:[e.gradient.color[0],t]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Cb,[kb,Object(y["createVNode"])(s,{class:"slider",min:0,max:360,step:15,value:e.gradient.rotate,onChange:t[5]||(t[5]=function(t){return e.updateGradient({rotate:t})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(f),Object(y["createVNode"])(p),e.showTextTools?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(h,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(b,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(r,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[7]||(t[7]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.fontSizeOptions,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(x,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(I,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[9]||(t[9]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("em")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("clear")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(T,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[13]||(t[13]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(T,{class:"row","button-style":"solid",value:e.textAlign,onChange:t[14]||(t[14]=function(t){return e.updateTextAlign(t.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"top",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"middle",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"bottom",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(p)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(z),Object(y["createVNode"])(p),Object(y["createVNode"])(A),Object(y["createVNode"])(p),Object(y["createVNode"])(F)])}var Eb=S,Nb=Object(y["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:Fp,ElementOutline:am,ElementShadow:Cm,ElementFlip:Um,ColorButton:om},setup:function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.handleElement,l=n.handleElementId,c=n.editingShapeElementId,a=n.richTextAttrs,r=n.availableFonts,i=Object(y["computed"])((function(){return c.value===l.value})),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["ref"])("fill"),f=Object(y["ref"])("middle");Object(y["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(u.value=o.value.fill||"#000",d.value=o.value.gradient||{type:"linear",rotate:0,color:[u.value,"#fff"]},s.value=o.value.gradient?"gradient":"fill",f.value=(null===(e=o.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")}),{deep:!0,immediate:!0});var p=qe(),m=p.addHistorySnapshot,b=function(e){t.updateElement({id:l.value,props:e}),m()},v=function(e){"fill"===e?(t.removeElementProps({id:l.value,propName:"gradient"}),m()):b({gradient:d.value})},h=function(e){if(d.value){var t=Object(B["a"])(Object(B["a"])({},d.value),e);b({gradient:t})}},O=function(e){b({fill:e})},j=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},l=t.text||n;b({text:Object(B["a"])(Object(B["a"])({},l),{},{align:e})})},x=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],C=function(e,t){$l.emit(pl.RICH_TEXT_COMMAND,{command:e,value:t})};return{fill:u,gradient:d,fillType:s,textAlign:f,richTextAttrs:a,availableFonts:r,fontSizeOptions:x,webFonts:Eb,showTextTools:i,emitRichTextCommand:C,updateFillType:v,updateFill:O,updateGradient:h,updateTextAlign:j}}});n("7e0a");const Ib=Ln()(Nb,[["render",wb],["__scopeId","data-v-0e201fca"]]);var Vb=Ib,Sb=function(e){return Object(y["pushScopeId"])("data-v-cbc4d7fa"),e=e(),Object(y["popScopeId"])(),e},Bb={class:"line-style-panel"},Lb={class:"row"},Tb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Mb=Object(y["createTextVNode"])("实线"),_b=Object(y["createTextVNode"])("虚线"),Db={class:"row"},zb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Ab={class:"row"},Fb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),Rb={class:"row"},Pb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Hb=Object(y["createTextVNode"])("无"),qb=Object(y["createTextVNode"])("箭头"),Xb=Object(y["createTextVNode"])("圆点"),Wb={class:"row"},Gb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),Ub=Object(y["createTextVNode"])("无"),Yb=Object(y["createTextVNode"])("箭头"),Zb=Object(y["createTextVNode"])("圆点");function Jb(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("InputNumber"),f=Object(y["resolveComponent"])("Divider"),p=Object(y["resolveComponent"])("ElementShadow");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bb,[Object(y["createElementVNode"])("div",Lb,[Tb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.style,onChange:t[0]||(t[0]=function(t){return e.updateLine({style:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Mb]})),_:1}),Object(y["createVNode"])(a,{value:"dashed"},{default:Object(y["withCtx"])((function(){return[_b]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Db,[zb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Ab,[Fb,Object(y["createVNode"])(s,{value:e.handleElement.width,onChange:t[2]||(t[2]=function(t){return e.updateLine({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Rb,[Pb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.points[0],onChange:t[3]||(t[3]=function(t){return e.updateLine({points:[t,e.handleElement.points[1]]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:""},{default:Object(y["withCtx"])((function(){return[Hb]})),_:1}),Object(y["createVNode"])(a,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[qb]})),_:1}),Object(y["createVNode"])(a,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Xb]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Wb,[Gb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.points[1],onChange:t[4]||(t[4]=function(t){return e.updateLine({points:[e.handleElement.points[0],t]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:""},{default:Object(y["withCtx"])((function(){return[Ub]})),_:1}),Object(y["createVNode"])(a,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[Yb]})),_:1}),Object(y["createVNode"])(a,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Zb]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(f),Object(y["createVNode"])(p)])}var Kb=Object(y["defineComponent"])({name:"line-style-panel",components:{ElementShadow:Cm,ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())};return{handleElement:n,updateLine:c}}});n("04e6");const Qb=Ln()(Kb,[["render",Jb],["__scopeId","data-v-cbc4d7fa"]]);var $b=Qb,ev=function(e){return Object(y["pushScopeId"])("data-v-ee2d8b14"),e=e(),Object(y["popScopeId"])(),e},tv={class:"chart-style-panel"},nv=Object(y["createTextVNode"])(" 编辑图表数据 "),ov={class:"row"},lv=Object(y["createTextVNode"])("面积图样式"),cv=Object(y["createTextVNode"])("散点图样式"),av={class:"row"},rv=Object(y["createTextVNode"])("使用平滑曲线"),iv={key:1,class:"row"},uv=Object(y["createTextVNode"])("条形图样式"),dv={key:2,class:"row"},sv=Object(y["createTextVNode"])("环形图样式"),fv={class:"row"},pv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),mv=Object(y["createTextVNode"])("不显示"),bv=Object(y["createTextVNode"])("显示在上方"),vv=Object(y["createTextVNode"])("显示在下方"),hv={class:"row"},Ov=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),jv={class:"row"},yv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),gv={style:{flex:"2"}},xv={class:"color-btn-wrap",style:{flex:"3"}},Cv=["onClick"],kv={class:"preset-themes"},wv=["onClick"],Ev=Object(y["createTextVNode"])("推荐主题"),Nv=Object(y["createTextVNode"])(" 添加主题色 ");function Iv(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconEdit"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Divider"),u=Object(y["resolveComponent"])("Checkbox"),d=Object(y["resolveComponent"])("SelectOption"),s=Object(y["resolveComponent"])("Select"),f=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("ColorButton"),m=Object(y["resolveComponent"])("Popover"),b=Object(y["resolveComponent"])("IconCloseSmall"),v=Object(y["resolveComponent"])("Tooltip"),h=Object(y["resolveComponent"])("IconPlus"),O=Object(y["resolveComponent"])("ButtonGroup"),j=Object(y["resolveComponent"])("ElementOutline"),g=Object(y["resolveComponent"])("ChartDataEditor"),x=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",tv,[Object(y["createVNode"])(r,{class:"full-width-btn",onClick:t[0]||(t[0]=function(t){return e.chartDataEditorVisible=!0})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:"btn-icon"}),nv]})),_:1}),Object(y["createVNode"])(i),"line"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",ov,[Object(y["createVNode"])(u,{onChange:t[1]||(t[1]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[lv]})),_:1},8,["checked"]),Object(y["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[cv]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",av,[Object(y["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:Object(y["withCtx"])((function(){return[rv]})),_:1},8,["checked"])])],64)):Object(y["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",iv,[Object(y["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:Object(y["withCtx"])((function(){return[uv]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dv,[Object(y["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:Object(y["withCtx"])((function(){return[sv]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(i),Object(y["createElementVNode"])("div",fv,[pv,Object(y["createVNode"])(s,{style:{flex:"3"},value:e.legend,onChange:t[6]||(t[6]=function(t){return e.updateLegend(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{value:""},{default:Object(y["withCtx"])((function(){return[mv]})),_:1}),Object(y["createVNode"])(d,{value:"top"},{default:Object(y["withCtx"])((function(){return[bv]})),_:1}),Object(y["createVNode"])(d,{value:"bottom"},{default:Object(y["withCtx"])((function(){return[vv]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(i),Object(y["createElementVNode"])("div",hv,[Ov,Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.fill,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",jv,[yv,Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.gridColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createVNode"])(i),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.themeColor,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"row",key:n},[Object(y["createElementVNode"])("div",gv,Object(y["toDisplayString"])(0===n?"主题配色:":""),1),Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:t,"onUpdate:modelValue":function(t){return e.updateTheme(t,n)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",xv,[Object(y["createVNode"])(p,{color:t,style:{width:"100%"}},null,8,["color"]),Object(y["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[0!==n?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(y["withModifiers"])((function(t){return e.deleteThemeColor(n)}),["stop"])},[Object(y["createVNode"])(b)],8,Cv)):Object(y["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(y["createVNode"])(O,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{trigger:"click",visible:e.presetThemesVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.presetThemesVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",kv,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.presetChartThemes,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"preset-theme",key:n,onClick:function(n){return e.applyPresetTheme(t)}},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"preset-theme-color",key:e,style:Object(y["normalizeStyle"])({backgroundColor:e})},null,4)})),128))],8,wv)})),128))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"no-padding",style:{flex:"2"}},{default:Object(y["withCtx"])((function(){return[Ev]})),_:1})]})),_:1},8,["visible"]),Object(y["createVNode"])(r,{class:"no-padding",disabled:e.themeColor.length>=10,style:{flex:"3"},onClick:t[10]||(t[10]=function(t){return e.addThemeColor()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{class:"btn-icon"}),Nv]})),_:1},8,["disabled"])]})),_:1}),Object(y["createVNode"])(i),Object(y["createVNode"])(j),Object(y["createVNode"])(x,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[13]||(t[13]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{data:e.handleElement.data,onClose:t[11]||(t[11]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[12]||(t[12]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])}var Vv={class:"chart-data-editor"},Sv={class:"editor-content"},Bv={class:"range-box"},Lv=["id","onFocus","onPaste"],Tv={class:"btns"},Mv={class:"left"},_v=Object(y["createTextVNode"])("清空"),Dv={class:"right"},zv=Object(y["createTextVNode"])("取消"),Av=Object(y["createTextVNode"])("确认");function Fv(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vv,[Object(y["createElementVNode"])("div",Sv,[Object(y["createElementVNode"])("div",Bv,[Object(y["createElementVNode"])("div",{class:"temp-range",style:Object(y["normalizeStyle"])({width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"})},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.rangeLines,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(y["normalizeStyle"])(e.style)},null,6)})),128)),Object(y["createElementVNode"])("div",{class:"resizable",style:Object(y["normalizeStyle"])(e.resizablePointStyle),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(y["createElementVNode"])("table",null,[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(31,(function(t){return Object(y["createElementVNode"])("tr",{key:t},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(7,(function(n){return Object(y["createElementVNode"])("td",{key:n,class:Object(y["normalizeClass"])({head:1===n&&t<=e.selectedRange[1]||1===t&&n<=e.selectedRange[0]})},[Object(y["createElementVNode"])("input",{class:Object(y["normalizeClass"])(["item",{selected:t<=e.selectedRange[1]&&n<=e.selectedRange[0]}]),id:"cell-".concat(t-1,"-").concat(n-1),autocomplete:"off",onFocus:function(o){return e.focusCell=[t-1,n-1]},onPaste:function(o){return e.handlePaste(o,t-1,n-1)}},null,42,Lv)],2)})),64))])})),64))])])]),Object(y["createElementVNode"])("div",Tv,[Object(y["createElementVNode"])("div",Mv,[Object(y["createVNode"])(a,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.clear()})},{default:Object(y["withCtx"])((function(){return[_v]})),_:1})]),Object(y["createElementVNode"])("div",Dv,[Object(y["createVNode"])(a,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Object(y["withCtx"])((function(){return[zv]})),_:1}),Object(y["createVNode"])(a,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()}),style:{"margin-left":"10px"}},{default:Object(y["withCtx"])((function(){return[Av]})),_:1})])])])}var Rv=100,Pv=32,Hv=Object(y["defineComponent"])({name:"chart-data-editor",emits:["save","close"],props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])([0,0]),l=Object(y["ref"])({width:0,height:0}),c=Object(y["ref"])(null),a=Object(y["computed"])((function(){var e=o.value[0]*Rv,t=o.value[1]*Pv;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),r=Object(y["computed"])((function(){var e=o.value[0]*Rv,t=o.value[1]*Pv;return{left:e+"px",top:t+"px"}})),i=function(){var t=[],n=e.data,l=n.labels,c=n.legends,a=n.series,r=l.length,i=a.length;t.push([""].concat(Object(G["a"])(c)));for(var u=0;u.5*Rv&&(i+=Rv-i%Rv),u%Pv>.5*Pv&&(u+=Pv-u%Pv);var d=Math.round(u/Pv),s=Math.round(i/Rv);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],l.value={width:0,height:0}}}};return{tempRangeSize:l,rangeLines:a,resizablePointStyle:r,selectedRange:o,focusCell:c,changeSelectRange:b,getTableData:s,closeEditor:m,clear:f,handlePaste:p}}});n("6856");const qv=Ln()(Hv,[["render",Fv],["__scopeId","data-v-9a62f784"]]);var Xv=qv,Wv=[["#d87c7c","#919e8b","#d7ab82","#6e7074","#61a0a8","#efa18d"],["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78"],["#516b91","#59c4e6","#edafda","#93b7e3","#a5e7f0","#cbb0e3"],["#893448","#d95850","#eb8146","#ffb248","#f2d643","#ebdba4"],["#4ea397","#22c3aa","#7bd9a5","#d0648a","#f58db2","#f2b3c9"],["#3fb1e3","#6be6c1","#626c91","#a0a7e6","#c4ebad","#96dee8"],["#fc97af","#87f7cf","#f7f494","#72ccff","#f7c5a0","#d4a4eb"],["#c1232b","#27727b","#fcce10","#e87c25","#b5c334","#fe8463"],["#2ec7c9","#b6a2de","#5ab1ef","#ffb980","#d87a80","#8d98b3"],["#e01f54","#001852","#f5e8c8","#b8d2c7","#c6b38e","#a4d8c2"],["#c12e34","#e6b600","#0098d9","#2b821d","#005eaa","#339ca8"],["#8a7ca8","#e098c7","#8fd3e8","#71669e","#cc70af","#7cb4cc"]],Gv=Object(y["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:am,ChartDataEditor:Xv,ColorButton:om},setup:function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.handleElement,l=n.handleElementId,c=Object(g["c"])(t),a=c.theme,r=Object(y["ref"])(!1),i=Object(y["ref"])(!1),u=qe(),d=u.addHistorySnapshot,s=Object(y["ref"])(),f=Object(y["ref"])([]),p=Object(y["ref"])(""),m=Object(y["ref"])(""),b=Object(y["ref"])(!0),v=Object(y["ref"])(!0),h=Object(y["ref"])(!1),O=Object(y["ref"])(!1),j=Object(y["ref"])(!1);Object(y["watch"])(o,(function(){if(o.value&&"chart"===o.value.type){if(s.value=o.value.fill||"#000",o.value.options){var e=o.value.options,t=e.lineSmooth,n=e.showLine,l=e.showArea,c=e.horizontalBars,a=e.donut;void 0!==t&&(b.value=t),void 0!==n&&(v.value=n),void 0!==l&&(h.value=l),void 0!==c&&(O.value=c),void 0!==a&&(j.value=a)}f.value=o.value.themeColor,p.value=o.value.gridColor||"rgba(0, 0, 0, 0.4)",m.value=o.value.legend||""}}),{deep:!0,immediate:!0});var x=function(e){t.updateElement({id:l.value,props:e}),d()},C=function(e){r.value=!1,x({data:e})},k=function(e){x({fill:e})},w=function(e){var t=o.value,n=Object(B["a"])(Object(B["a"])({},t.options),e);x({options:n})},E=function(e,t){var n={themeColor:f.value.map((function(n,o){return o===t?e:n}))};x(n)},N=function(){var e={themeColor:[].concat(Object(G["a"])(f.value),[a.value.themeColor])};x(e)},I=function(e){x({themeColor:e}),i.value=!1},V=function(e){var t={themeColor:f.value.filter((function(t,n){return n!==e}))};x(t)},S=function(e){x({gridColor:e})},L=function(e){x({legend:e})},T=function(){return r.value=!0};return $l.on(pl.OPEN_CHART_DATA_EDITOR,T),Object(y["onUnmounted"])((function(){$l.off(pl.OPEN_CHART_DATA_EDITOR,T)})),{chartDataEditorVisible:r,presetThemesVisible:i,handleElement:o,updateData:C,fill:s,updateFill:k,lineSmooth:b,showLine:v,showArea:h,horizontalBars:O,donut:j,updateOptions:w,themeColor:f,gridColor:p,legend:m,updateTheme:E,addThemeColor:N,deleteThemeColor:V,updateGridColor:S,updateLegend:L,presetChartThemes:Wv,applyPresetTheme:I}}});n("b5ae");const Uv=Ln()(Gv,[["render",Iv],["__scopeId","data-v-ee2d8b14"]]);var Yv=Uv,Zv=function(e){return Object(y["pushScopeId"])("data-v-72e00692"),e=e(),Object(y["popScopeId"])(),e},Jv={class:"table-style-panel"},Kv={class:"row"},Qv=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),$v={class:"set-count",style:{flex:"3"}},eh={class:"count-text"},th={class:"row"},nh=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),oh={class:"set-count",style:{flex:"3"}},lh={class:"count-text"},ch={class:"row theme-switch"},ah=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),rh={class:"switch-wrapper",style:{flex:"3"}},ih={class:"row"},uh=Object(y["createTextVNode"])("标题行"),dh=Object(y["createTextVNode"])("汇总行"),sh={class:"row"},fh=Object(y["createTextVNode"])("第一列"),ph=Object(y["createTextVNode"])("最后一列"),mh={class:"row"},bh=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)}));function vh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconFontSize"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("SelectOptGroup"),u=Object(y["resolveComponent"])("Select"),d=Object(y["resolveComponent"])("IconAddText"),s=Object(y["resolveComponent"])("InputGroup"),f=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("IconText"),m=Object(y["resolveComponent"])("Button"),b=Object(y["resolveComponent"])("Tooltip"),v=Object(y["resolveComponent"])("Popover"),h=Object(y["resolveComponent"])("IconFill"),O=Object(y["resolveComponent"])("ButtonGroup"),j=Object(y["resolveComponent"])("IconTextBold"),g=Object(y["resolveComponent"])("CheckboxButton"),x=Object(y["resolveComponent"])("IconTextItalic"),C=Object(y["resolveComponent"])("IconTextUnderline"),k=Object(y["resolveComponent"])("IconStrikethrough"),w=Object(y["resolveComponent"])("CheckboxButtonGroup"),E=Object(y["resolveComponent"])("IconAlignTextLeft"),N=Object(y["resolveComponent"])("RadioButton"),I=Object(y["resolveComponent"])("IconAlignTextCenter"),V=Object(y["resolveComponent"])("IconAlignTextRight"),S=Object(y["resolveComponent"])("RadioGroup"),B=Object(y["resolveComponent"])("Divider"),L=Object(y["resolveComponent"])("ElementOutline"),T=Object(y["resolveComponent"])("IconMinus"),M=Object(y["resolveComponent"])("IconPlus"),_=Object(y["resolveComponent"])("Switch"),D=Object(y["resolveComponent"])("Checkbox"),z=Object(y["resolveComponent"])("ColorButton");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jv,[Object(y["createVNode"])(s,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[0]||(t[0]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(i,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(u,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.fontSizeOptions,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(O,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.textAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.textAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(w,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.bold,onClick:t[4]||(t[4]=function(t){return e.updateTextAttrs({bold:!e.textAttrs.bold})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.em,onClick:t[5]||(t[5]=function(t){return e.updateTextAttrs({em:!e.textAttrs.em})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.underline,onClick:t[6]||(t[6]=function(t){return e.updateTextAttrs({underline:!e.textAttrs.underline})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.strikethrough,onClick:t[7]||(t[7]=function(t){return e.updateTextAttrs({strikethrough:!e.textAttrs.strikethrough})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(S,{class:"row","button-style":"solid",value:e.textAttrs.align,onChange:t[8]||(t[8]=function(t){return e.updateTextAttrs({align:t.target.value})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(B),Object(y["createVNode"])(L,{fixed:!0}),Object(y["createVNode"])(B),Object(y["createElementVNode"])("div",Kv,[Qv,Object(y["createElementVNode"])("div",$v,[Object(y["createVNode"])(m,{class:"btn",disabled:e.rowCount<=1,onClick:t[9]||(t[9]=function(t){return e.setTableRow(e.rowCount-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",eh,Object(y["toDisplayString"])(e.rowCount),1),Object(y["createVNode"])(m,{class:"btn",disabled:e.rowCount>=30,onClick:t[10]||(t[10]=function(t){return e.setTableRow(e.rowCount+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["disabled"])])]),Object(y["createElementVNode"])("div",th,[nh,Object(y["createElementVNode"])("div",oh,[Object(y["createVNode"])(m,{class:"btn",disabled:e.colCount<=1,onClick:t[11]||(t[11]=function(t){return e.setTableCol(e.colCount-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",lh,Object(y["toDisplayString"])(e.colCount),1),Object(y["createVNode"])(m,{class:"btn",disabled:e.colCount>=30,onClick:t[12]||(t[12]=function(t){return e.setTableCol(e.colCount+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["disabled"])])]),Object(y["createVNode"])(B),Object(y["createElementVNode"])("div",ch,[ah,Object(y["createElementVNode"])("div",rh,[Object(y["createVNode"])(_,{checked:e.hasTheme,onChange:t[13]||(t[13]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.hasTheme?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",ih,[Object(y["createVNode"])(D,{onChange:t[14]||(t[14]=function(t){return e.updateTheme({rowHeader:t.target.checked})}),checked:e.theme.rowHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[uh]})),_:1},8,["checked"]),Object(y["createVNode"])(D,{onChange:t[15]||(t[15]=function(t){return e.updateTheme({rowFooter:t.target.checked})}),checked:e.theme.rowFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[dh]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",sh,[Object(y["createVNode"])(D,{onChange:t[16]||(t[16]=function(t){return e.updateTheme({colHeader:t.target.checked})}),checked:e.theme.colHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[fh]})),_:1},8,["checked"]),Object(y["createVNode"])(D,{onChange:t[17]||(t[17]=function(t){return e.updateTheme({colFooter:t.target.checked})}),checked:e.theme.colFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[ph]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",mh,[bh,Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.theme.color,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}var hh=S,Oh=Object(y["defineComponent"])({name:"table-style-panel",components:{ElementOutline:am,ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=t.selectedTableCells,c=t.availableFonts,a=Object(y["computed"])((function(){return e.theme.themeColor})),r=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],i=Object(y["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),u=Object(y["ref"])(),d=Object(y["ref"])(!1),s=Object(y["ref"])(0),f=Object(y["ref"])(0),p=Object(y["ref"])(0),m=Object(y["ref"])(0);Object(y["watch"])(n,(function(){n.value&&"table"===n.value.type&&(u.value=n.value.theme,d.value=!!u.value,s.value=n.value.data.length,f.value=n.value.data[0].length,p.value=n.value.data.length,m.value=n.value.data[0].length)}),{deep:!0,immediate:!0});var b=qe(),v=b.addHistorySnapshot,h=function(){if(n.value&&"table"===n.value.type){var e=0,t=0;if(l.value.length){var o=l.value[0];e=+o.split("_")[0],t=+o.split("_")[1]}var c=n.value.data[e][t].style;i.value=c?{bold:!!c.bold,em:!!c.em,underline:!!c.underline,strikethrough:!!c.strikethrough,color:c.color||"#000",backcolor:c.backcolor||"#000",fontsize:c.fontsize||"12px",fontname:c.fontname||"微软雅黑",align:c.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(y["onMounted"])((function(){l.value.length&&h()})),Object(y["watch"])(l,h);var O=function(t){e.updateElement({id:o.value,props:t}),v()},j=function(e){for(var t=n.value,o=JSON.parse(JSON.stringify(t.data)),c=0;co){var l=new Array(f.value).fill({id:pe(),colspan:1,rowspan:1,text:""}),c=new Array(e-o).fill(l),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object(G["a"])(c)),O({data:a})}else{var r=t.data.slice(0,e);O({data:r})}},w=function(e){var t=n.value,o=t.data[0].length,l=t.data,c=t.colWidths.map((function(e){return e*t.width}));if(e>o){var a;l=l.map((function(t){var n=new Array(e-o).fill({id:pe(),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object(G["a"])(n)),t}));var r=new Array(e-o).fill(100);(a=c).push.apply(a,Object(G["a"])(r))}else l=l.map((function(t){return t.slice(0,e)})),c=c.slice(0,e);var i=c.reduce((function(e,t){return e+t})),u=c.map((function(e){return e/i})),d={width:i,data:l,colWidths:u};O(d)};return{handleElement:n,availableFonts:c,fontSizeOptions:r,textAttrs:i,updateTextAttrs:j,theme:u,rowCount:s,colCount:f,minRowCount:p,minColCount:m,hasTheme:d,toggleTheme:C,updateTheme:x,setTableRow:k,setTableCol:w,webFonts:hh}}});n("eacc");const jh=Ln()(Oh,[["render",vh],["__scopeId","data-v-72e00692"]]);var yh=jh,gh=function(e){return Object(y["pushScopeId"])("data-v-69f903b1"),e=e(),Object(y["popScopeId"])(),e},xh={class:"latex-style-panel"},Ch={class:"row"},kh=Object(y["createTextVNode"])("编辑 LaTeX"),wh={class:"row"},Eh=gh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),Nh={class:"row"},Ih=gh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)}));function Vh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button"),r=Object(y["resolveComponent"])("Divider"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("InputNumber"),f=Object(y["resolveComponent"])("LaTeXEditor"),p=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xh,[Object(y["createElementVNode"])("div",Ch,[Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.latexEditorVisible=!0})},{default:Object(y["withCtx"])((function(){return[kh]})),_:1})]),Object(y["createVNode"])(r),Object(y["createElementVNode"])("div",wh,[Eh,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLatex({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Nh,[Ih,Object(y["createVNode"])(s,{min:1,max:3,value:e.handleElement.strokeWidth,onChange:t[2]||(t[2]=function(t){return e.updateLatex({strokeWidth:t})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createVNode"])(p,{visible:e.latexEditorVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{value:e.handleElement.latex,onClose:t[3]||(t[3]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[4]||(t[4]=function(t){e.updateLatexData(t),e.latexEditorVisible=!1})},null,8,["value"])]})),_:1},8,["visible"])])}var Sh=Object(y["defineComponent"])({name:"latex-style-panel",components:{ColorButton:om,LaTeXEditor:Uf},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=Object(y["ref"])(!1),l=qe(),c=l.addHistorySnapshot,a=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())},r=function(e){a({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},i=function(){return o.value=!0};return $l.on(pl.OPEN_LATEX_EDITOR,i),Object(y["onUnmounted"])((function(){$l.off(pl.OPEN_LATEX_EDITOR,i)})),{handleElement:n,latexEditorVisible:o,updateLatex:a,updateLatexData:r}}});n("e5a8");const Bh=Ln()(Sh,[["render",Vh],["__scopeId","data-v-69f903b1"]]);var Lh=Bh,Th=function(e){return Object(y["pushScopeId"])("data-v-61bcaa2a"),e=e(),Object(y["popScopeId"])(),e},Mh={class:"video-style-panel"},_h=Th((function(){return Object(y["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),Dh={class:"background-image-wrapper"},zh={class:"background-image"},Ah={class:"row"},Fh=Object(y["createTextVNode"])("重置封面");function Rh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlus"),r=Object(y["resolveComponent"])("FileInput"),i=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Mh,[_h,Object(y["createElementVNode"])("div",Dh,[Object(y["createVNode"])(r,{onChange:t[0]||(t[0]=function(t){return e.setVideoPoster(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",zh,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.handleElement.poster,")")})},[Object(y["createVNode"])(a)],4)])]})),_:1})]),Object(y["createElementVNode"])("div",Ah,[Object(y["createVNode"])(i,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.updateVideo({poster:""})})},{default:Object(y["withCtx"])((function(){return[Fh]})),_:1})])])}var Ph=Object(y["defineComponent"])({name:"video-style-panel",setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())},a=function(e){var t=e[0];t&&We(t).then((function(e){return c({poster:e})}))};return{handleElement:n,updateVideo:c,setVideoPoster:a}}});n("c43a");const Hh=Ln()(Ph,[["render",Rh],["__scopeId","data-v-61bcaa2a"]]);var qh=Hh,Xh=function(e){return Object(y["pushScopeId"])("data-v-80767a46"),e=e(),Object(y["popScopeId"])(),e},Wh={class:"audio-style-panel"},Gh={class:"row"},Uh=Xh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),Yh={class:"row switch-row"},Zh=Xh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),Jh={class:"switch-wrapper",style:{flex:"3"}},Kh={class:"row switch-row"},Qh=Xh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),$h={class:"switch-wrapper",style:{flex:"3"}};function eO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ColorPicker"),r=Object(y["resolveComponent"])("ColorButton"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("Switch");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Wh,[Object(y["createElementVNode"])("div",Gh,[Uh,Object(y["createVNode"])(i,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateAudio({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Yh,[Zh,Object(y["createElementVNode"])("div",Jh,[Object(y["createVNode"])(u,{checked:e.handleElement.autoplay,onChange:t[1]||(t[1]=function(t){return e.updateAudio({autoplay:t})})},null,8,["checked"])])]),Object(y["createElementVNode"])("div",Kh,[Qh,Object(y["createElementVNode"])("div",$h,[Object(y["createVNode"])(u,{checked:e.handleElement.loop,onChange:t[2]||(t[2]=function(t){return e.updateAudio({loop:t})})},null,8,["checked"])])])])}var tO=Object(y["defineComponent"])({name:"audio-style-panel",components:{ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())};return{handleElement:n,updateAudio:c}}});n("d129");const nO=Ln()(tO,[["render",eO],["__scopeId","data-v-80767a46"]]);var oO=nO,lO=Object(y["defineComponent"])({name:"element-style-panel",setup:function(){var e=Object(g["c"])(ee()),t=e.handleElement,n=Object(y["computed"])((function(){var e;if(!t.value)return null;var n=(e={},Object(ae["a"])(e,oo.TEXT,Im),Object(ae["a"])(e,oo.IMAGE,db),Object(ae["a"])(e,oo.SHAPE,Vb),Object(ae["a"])(e,oo.LINE,$b),Object(ae["a"])(e,oo.CHART,Yv),Object(ae["a"])(e,oo.TABLE,yh),Object(ae["a"])(e,oo.LATEX,Lh),Object(ae["a"])(e,oo.VIDEO,qh),Object(ae["a"])(e,oo.AUDIO,oO),e);return n[t.value.type]||null}));return{handleElement:t,currentPanelComponent:n}}});const cO=Ln()(lO,[["render",xp]]);var aO=cO,rO=function(e){return Object(y["pushScopeId"])("data-v-3476ee65"),e=e(),Object(y["popScopeId"])(),e},iO={class:"element-positopn-panel"},uO=rO((function(){return Object(y["createElementVNode"])("div",{class:"title"},"层级:",-1)})),dO=Object(y["createTextVNode"])(" 置于顶层"),sO=Object(y["createTextVNode"])(" 置于底层"),fO=Object(y["createTextVNode"])(" 上移一层"),pO=Object(y["createTextVNode"])(" 下移一层"),mO=rO((function(){return Object(y["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),bO={class:"row"},vO=rO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),hO=rO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),OO=Object(y["createStaticVNode"])('
X
Y
',1),jO={class:"row"},yO=rO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),gO={key:1,style:{flex:"1"}},xO=Object(y["createStaticVNode"])('
',1),CO={class:"row"},kO=rO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),wO=rO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)}));function EO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconSendToBack"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("IconBringToFrontOne"),u=Object(y["resolveComponent"])("ButtonGroup"),d=Object(y["resolveComponent"])("IconBringToFront"),s=Object(y["resolveComponent"])("IconSentToBack"),f=Object(y["resolveComponent"])("Divider"),p=Object(y["resolveComponent"])("IconAlignLeft"),m=Object(y["resolveComponent"])("Tooltip"),b=Object(y["resolveComponent"])("IconAlignVertically"),v=Object(y["resolveComponent"])("IconAlignRight"),h=Object(y["resolveComponent"])("IconAlignTop"),O=Object(y["resolveComponent"])("IconAlignHorizontally"),j=Object(y["resolveComponent"])("IconAlignBottom"),g=Object(y["resolveComponent"])("InputNumber"),x=Object(y["resolveComponent"])("IconLock"),C=Object(y["resolveComponent"])("IconUnlock"),k=Object(y["resolveComponent"])("IconRotate");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",iO,[uO,Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.orderElement(e.handleElement,"top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:"btn-icon"}),dO]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,"bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{class:"btn-icon"}),sO]})),_:1})]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,"up")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"btn-icon"}),fO]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,"down")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"btn-icon"}),pO]})),_:1})]})),_:1}),Object(y["createVNode"])(f),mO,Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElementToCanvas("left")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas("horizontal")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas("right")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas("top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas("vertical")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas("bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(f),Object(y["createElementVNode"])("div",bO,[vO,Object(y["createVNode"])(g,{step:5,value:e.left,onChange:t[10]||(t[10]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),hO,Object(y["createVNode"])(g,{step:5,value:e.top,onChange:t[11]||(t[11]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),OO,"line"!==e.handleElement.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",jO,[yO,Object(y["createVNode"])(g,{min:e.minSize,max:1500,step:5,value:e.width,onChange:t[12]||(t[12]=function(t){return e.updateWidth(t)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape","audio"].includes(e.handleElement.type)?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[e.fixedRatio?(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gO)),Object(y["createVNode"])(g,{min:e.minSize,max:800,step:5,disabled:"text"===e.handleElement.type,value:e.height,onChange:t[15]||(t[15]=function(t){return e.updateHeight(t)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),xO],64)):Object(y["createCommentVNode"])("",!0),["line","video","audio"].includes(e.handleElement.type)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(f),Object(y["createElementVNode"])("div",CO,[kO,Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"icon-btn",onClick:t[16]||(t[16]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("+")}),style:Object(y["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),wO,Object(y["createVNode"])(g,{min:-180,max:180,step:5,value:e.rotate,onChange:t[18]||(t[18]=function(t){return e.updateRotate(t)}),style:{flex:"4"}},null,8,["value"])])],64))])}var NO=Object(y["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=Object(y["ref"])(0),c=Object(y["ref"])(0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["computed"])((function(){return n.value&&Un[n.value.type]||20}));Object(y["watch"])(n,(function(){n.value&&(l.value=Object(Z["round"])(n.value.left,1),c.value=Object(Z["round"])(n.value.top,1),u.value="fixedRatio"in n.value&&!!n.value.fixedRatio,"line"!==n.value.type&&(a.value=Object(Z["round"])(n.value.width,1),r.value=Object(Z["round"])(n.value.height,1),i.value="rotate"in n.value&&void 0!==n.value.rotate?Object(Z["round"])(n.value.rotate,1):0))}),{deep:!0,immediate:!0});var s=nt(),f=s.orderElement,p=lo(),m=p.alignElementToCanvas,b=qe(),v=b.addHistorySnapshot,h=function(t){var n={left:t};e.updateElement({id:o.value,props:n}),v()},O=function(t){var n={top:t};e.updateElement({id:o.value,props:n}),v()},j=function(t){var n={width:t};e.updateElement({id:o.value,props:n}),v()},x=function(t){var n={height:t};e.updateElement({id:o.value,props:n}),v()},C=function(t){var n={rotate:t};e.updateElement({id:o.value,props:n}),v()},k=function(t){var n={fixedRatio:t};e.updateElement({id:o.value,props:n}),v()},w=function(t){var n=45*Math.floor(i.value/45);"+"===t?n+=45:"-"===t&&(n-=45),n<-180&&(n=-180),n>180&&(n=180);var l={rotate:n};e.updateElement({id:o.value,props:l}),v()};return{handleElement:n,orderElement:f,alignElementToCanvas:m,left:l,top:c,width:a,height:r,rotate:i,fixedRatio:u,minSize:d,updateLeft:h,updateTop:O,updateWidth:j,updateHeight:x,updateRotate:C,updateFixedRatio:k,updateRotate45:w}}});n("f10d");const IO=Ln()(NO,[["render",EO],["__scopeId","data-v-3476ee65"]]);var VO=IO,SO=function(e){return Object(y["pushScopeId"])("data-v-696c81e2"),e=e(),Object(y["popScopeId"])(),e},BO={class:"element-animation-panel"},LO={key:0,class:"element-animation"},TO={class:"animation-pool"},MO={class:"type-title"},_O={class:"pool-item-wrapper"},DO=["onMouseenter","onClick"],zO={key:0,class:"mask"},AO=Object(y["createTextVNode"])(" 该元素暂不支持动画 "),FO={key:1,class:"tip"},RO=Object(y["createTextVNode"])(" 选中画布中的元素添加动画"),PO={class:"index"},HO={class:"text"},qO={class:"handler"},XO={key:2,class:"configs"},WO={class:"duration"},GO=SO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"4"}},"持续时间(毫秒):",-1)}));function UO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconEffects"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("IconClick"),d=Object(y["resolveComponent"])("Divider"),s=Object(y["resolveComponent"])("IconPlayOne"),f=Object(y["resolveComponent"])("Tooltip"),p=Object(y["resolveComponent"])("IconCloseSmall"),m=Object(y["resolveComponent"])("Draggable"),b=Object(y["resolveComponent"])("InputNumber");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",BO,[e.handleElement?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",LO,[["chart","video"].includes(e.handleElement.type)?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,class:"element-animation-btn",disabled:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{"margin-right":"5px"}}),AO]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[1]||(t[1]=function(t){return e.animationPoolVisible=t}),onVisibleChange:t[2]||(t[2]=function(t){return e.handlePopoverVisibleChange(t)})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",TO,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.animations,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-type",key:n.name},[Object(y["createElementVNode"])("div",MO,Object(y["toDisplayString"])(n.name)+":",1),Object(y["createElementVNode"])("div",_O,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n.children,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(t){return e.hoverPreviewAnimation=n.value},onMouseleave:t[0]||(t[0]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-box",["animate__animated","animate__faster",e.hoverPreviewAnimation===n.value&&"animate__".concat(n.value)]])},Object(y["toDisplayString"])(n.name),3)],40,DO)})),128))])])})),128)),e.popoverMaskHide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zO))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"element-animation-btn"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{"margin-right":"5px"}}),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(e.handleElementAnimationName||"点击选择动画"),1)]})),_:1})]})),_:1},8,["visible"]))])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",FO,[Object(y["createVNode"])(u,{style:{"margin-right":"5px"}}),RO])),Object(y["createVNode"])(d),Object(y["createVNode"])(m,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(y["withCtx"])((function(t){var n,o=t.element,l=t.index;return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["sequence-item",{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===o.elId}])},[Object(y["createElementVNode"])("div",PO,Object(y["toDisplayString"])(l+1),1),Object(y["createElementVNode"])("div",HO,"【"+Object(y["toDisplayString"])(o.elType)+"】"+Object(y["toDisplayString"])(o.animationType),1),Object(y["createElementVNode"])("div",qO,[Object(y["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(o.elId,o.type,o.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(y["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(o.elId)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])],2)]})),_:1},8,["modelValue","onEnd"]),e.handleElementAnimation?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",XO,[Object(y["createVNode"])(d),Object(y["createElementVNode"])("div",WO,[GO,Object(y["createVNode"])(b,{min:100,max:5e3,step:100,value:e.handleElementAnimation.duration,onChange:t[3]||(t[3]=function(t){return e.updateElementAnimationDuration(t)}),style:{flex:"3"}},null,8,["value"])])])):Object(y["createCommentVNode"])("",!0)])}var YO,ZO=[{type:"bounce",name:"弹跳",children:[{name:"弹入",value:"bounceIn"},{name:"向右弹入",value:"bounceInLeft"},{name:"向左弹入",value:"bounceInRight"},{name:"向上弹入",value:"bounceInUp"},{name:"向下弹入",value:"bounceInDown"}]},{type:"fade",name:"浮现",children:[{name:"浮入",value:"fadeIn"},{name:"向下浮入",value:"fadeInDown"},{name:"向下长距浮入",value:"fadeInDownBig"},{name:"向右浮入",value:"fadeInLeft"},{name:"向右长距浮入",value:"fadeInLeftBig"},{name:"向左浮入",value:"fadeInRight"},{name:"向左长距浮入",value:"fadeInRightBig"},{name:"向上浮入",value:"fadeInUp"},{name:"向上长距浮入",value:"fadeInUpBig"},{name:"从左上浮入",value:"fadeInTopLeft"},{name:"从右上浮入",value:"fadeInTopRight"},{name:"从左下浮入",value:"fadeInBottomLeft"},{name:"从右下浮入",value:"fadeInBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转进入",value:"rotateIn"},{name:"绕左下旋转进入",value:"rotateInDownLeft"},{name:"绕右下旋转进入",value:"rotateInDownRight"},{name:"绕左上旋转进入",value:"rotateInUpLeft"},{name:"绕右上旋转进入",value:"rotateInUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"放大进入",value:"zoomIn"},{name:"向下放大进入",value:"zoomInDown"},{name:"从左放大进入",value:"zoomInLeft"},{name:"从右放大进入",value:"zoomInRight"},{name:"向上放大进入",value:"zoomInUp"}]},{type:"slide",name:"滑入",children:[{name:"向下滑入",value:"slideInDown"},{name:"从右滑入",value:"slideInLeft"},{name:"从左滑入",value:"slideInRight"},{name:"向上滑入",value:"slideInUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转进入",value:"flipInX"},{name:"Y轴翻转进入",value:"flipInY"}]},{type:"back",name:"放大滑入",children:[{name:"向下放大滑入",value:"backInDown"},{name:"从左放大滑入",value:"backInLeft"},{name:"从右放大滑入",value:"backInRight"},{name:"向上放大滑入",value:"backInUp"}]},{type:"lightSpeed",name:"飞入",children:[{name:"从右飞入",value:"lightSpeedInRight"},{name:"从左飞入",value:"lightSpeedInLeft"}]}],JO=1e3,KO={},QO=Object(L["a"])(ZO);try{for(QO.s();!(YO=QO.n()).done;){var $O,ej=YO.value,tj=Object(L["a"])(ej.children);try{for(tj.s();!($O=tj.n()).done;){var nj=$O.value;KO[nj.value]=nj.name}}catch(Bw){tj.e(Bw)}finally{tj.f()}}}catch(Bw){QO.e(Bw)}finally{QO.f()}var oj=Object(y["defineComponent"])({name:"element-animation-panel",components:{Draggable:lp.a},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=Object(g["c"])(e),c=l.currentSlide,a=l.currentSlideAnimations,r=Object(y["ref"])(""),i=Object(y["ref"])(!1),u=qe(),d=u.addHistorySnapshot,s=ZO,f=Object(y["computed"])((function(){if(!a.value)return[];var e,t=[],n=Object(L["a"])(a.value);try{var o=function(){var n=e.value,o=c.value.elements.find((function(e){return e.id===n.elId}));if(!o)return"continue";var l=Gn[o.type],a=KO[n.type];t.push(Object(B["a"])(Object(B["a"])({},n),{},{elType:l,animationType:a}))};for(n.s();!(e=n.n()).done;)o()}catch(Bw){n.e(Bw)}finally{n.f()}return t})),p=Object(y["computed"])((function(){var e=a.value||[],t=e.find((function(e){return e.elId===o.value}));return t||null})),m=Object(y["computed"])((function(){return p.value?KO[p.value.type]:null})),b=function(t){var n=a.value.filter((function(e){return e.elId!==t}));e.updateSlide({animations:n}),d()},v=function(t){var n=t.newIndex,o=t.oldIndex;if(o!==n){var l=JSON.parse(JSON.stringify(a.value)),c=l[o];l.splice(o,1),l.splice(n,0,c),e.updateSlide({animations:l}),d()}},h=function(e,t,n){var o="animate__",l=document.querySelector("#editable-element-".concat(e," [class^=editable-element-]"));if(l){var c="".concat(o).concat(t);document.documentElement.style.setProperty("--animate-duration","".concat(n,"ms")),l.classList.add("".concat(o,"animated"),c);var a=function(){document.documentElement.style.removeProperty("--animate-duration"),l.classList.remove("".concat(o,"animated"),c)};l.addEventListener("animationend",a,{once:!0})}},O=function(t){if(a.value){var n=a.value.map((function(e){return e.elId===o.value?Object(B["a"])(Object(B["a"])({},e),{},{type:t}):e}));e.updateSlide({animations:n}),i.value=!1,d();var l=a.value.find((function(e){return e.elId===o.value})),c=(null===l||void 0===l?void 0:l.duration)||JO;h(o.value,t,c)}},j=function(t){if(a.value&&!(t<100||t>5e3)){var n=a.value.map((function(e){return e.elId===o.value?Object(B["a"])(Object(B["a"])({},e),{},{duration:t}):e}));e.updateSlide({animations:n}),d()}},x=function(t){if(m.value)O(t);else{var n=a.value?JSON.parse(JSON.stringify(a.value)):[];n.push({elId:o.value,type:t,duration:JO}),e.updateSlide({animations:n}),i.value=!1,d(),h(o.value,t,JO)}},C=Object(y["ref"])(!1),k=function(e){e?setTimeout((function(){return C.value=!0}),500):C.value=!1};return{handleElement:n,animationPoolVisible:i,animations:s,animationSequence:f,hoverPreviewAnimation:r,handleElementAnimation:p,handleElementAnimationName:m,popoverMaskHide:C,addAnimation:x,deleteAnimation:b,handleDragEnd:v,runAnimation:h,updateElementAnimationDuration:j,handlePopoverVisibleChange:k}}});n("c390");const lj=Ln()(oj,[["render",UO],["__scopeId","data-v-696c81e2"]]);var cj=lj,aj=function(e){return Object(y["pushScopeId"])("data-v-0e2f846d"),e=e(),Object(y["popScopeId"])(),e},rj={class:"slide-design-panel"},ij=aj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),uj={class:"row"},dj=Object(y["createTextVNode"])("纯色填充"),sj=Object(y["createTextVNode"])("图片填充"),fj=Object(y["createTextVNode"])("渐变填充"),pj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),mj=Object(y["createTextVNode"])("缩放"),bj=Object(y["createTextVNode"])("拼贴"),vj=Object(y["createTextVNode"])("缩放铺满"),hj=Object(y["createTextVNode"])("线性渐变"),Oj=Object(y["createTextVNode"])("径向渐变"),jj={key:0,class:"background-image-wrapper"},yj={class:"background-image"},gj={key:1,class:"background-gradient-wrapper"},xj={class:"row"},Cj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),kj={class:"row"},wj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Ej={key:0,class:"row"},Nj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Ij={class:"row"},Vj=Object(y["createTextVNode"])("应用背景到全部"),Sj={class:"row"},Bj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Lj=Object(y["createTextVNode"])("宽屏 16 : 9"),Tj=Object(y["createTextVNode"])("宽屏 16 :10"),Mj=Object(y["createTextVNode"])("标准 4 :3"),_j=aj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),Dj={class:"row"},zj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),Aj={class:"row"},Fj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),Rj={class:"row"},Pj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),Hj={class:"row"},qj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),Xj=Object(y["createTextVNode"])(" 预置主题 "),Wj={key:2,class:"theme-list"},Gj=["onClick"],Uj={class:"theme-item-content"},Yj={class:"row"},Zj=Object(y["createTextVNode"])("应用主题到全部");function Jj(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("IconPlus"),f=Object(y["resolveComponent"])("FileInput"),p=Object(y["resolveComponent"])("Slider"),m=Object(y["resolveComponent"])("Button"),b=Object(y["resolveComponent"])("Divider"),v=Object(y["resolveComponent"])("SelectOptGroup"),h=Object(y["resolveComponent"])("IconDown");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",rj,[ij,Object(y["createElementVNode"])("div",uj,[Object(y["createVNode"])(r,{style:{flex:"10"},value:e.background.type,onChange:t[0]||(t[0]=function(t){return e.updateBackgroundType(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"solid"},{default:Object(y["withCtx"])((function(){return[dj]})),_:1}),Object(y["createVNode"])(a,{value:"image"},{default:Object(y["withCtx"])((function(){return[sj]})),_:1}),Object(y["createVNode"])(a,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[fj]})),_:1})]})),_:1},8,["value"]),pj,"solid"===e.background.type?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,style:{flex:"10"},value:e.background.imageSize||"cover",onChange:t[2]||(t[2]=function(t){return e.updateBackground({imageSize:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"contain"},{default:Object(y["withCtx"])((function(){return[mj]})),_:1}),Object(y["createVNode"])(a,{value:"repeat"},{default:Object(y["withCtx"])((function(){return[bj]})),_:1}),Object(y["createVNode"])(a,{value:"cover"},{default:Object(y["withCtx"])((function(){return[vj]})),_:1})]})),_:1},8,["value"])):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:2,style:{flex:"10"},value:e.background.gradientType,onChange:t[3]||(t[3]=function(t){return e.updateBackground({gradientType:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"linear"},{default:Object(y["withCtx"])((function(){return[hj]})),_:1}),Object(y["createVNode"])(a,{value:"radial"},{default:Object(y["withCtx"])((function(){return[Oj]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jj,[Object(y["createVNode"])(f,{onChange:t[4]||(t[4]=function(t){return e.uploadBackgroundImage(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",yj,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.background.image,")")})},[Object(y["createVNode"])(s)],4)])]})),_:1})])):Object(y["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gj,[Object(y["createElementVNode"])("div",xj,[Cj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateBackground({gradientColor:[t,e.background.gradientColor[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",kj,[wj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateBackground({gradientColor:[e.background.gradientColor[0],t]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ej,[Nj,Object(y["createVNode"])(p,{class:"slider",min:0,max:360,step:15,value:e.background.gradientRotate,onChange:t[7]||(t[7]=function(t){return e.updateBackground({gradientRotate:t})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Ij,[Object(y["createVNode"])(m,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.applyBackgroundAllSlide()})},{default:Object(y["withCtx"])((function(){return[Vj]})),_:1})]),Object(y["createVNode"])(b),Object(y["createElementVNode"])("div",Sj,[Bj,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.viewportRatio,onChange:t[9]||(t[9]=function(t){return e.updateViewportRatio(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:.5625},{default:Object(y["withCtx"])((function(){return[Lj]})),_:1},8,["value"]),Object(y["createVNode"])(a,{value:.625},{default:Object(y["withCtx"])((function(){return[Tj]})),_:1},8,["value"]),Object(y["createVNode"])(a,{value:.75},{default:Object(y["withCtx"])((function(){return[Mj]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(y["createVNode"])(b),_j,Object(y["createElementVNode"])("div",Dj,[zj,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(v,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Aj,[Fj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Rj,[Pj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Hj,[qj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["title dropdown",{active:e.showPresetThemes}]),onClick:t[14]||(t[14]=function(t){return e.togglePresetThemesVisible()}),style:{"margin-top":"20px"}},[Xj,Object(y["createVNode"])(h,{class:"icon"})],2),e.showPresetThemes?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Wj,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.themes,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"theme-item",key:n,style:Object(y["normalizeStyle"])({backgroundColor:t.background}),onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(y["createElementVNode"])("div",Uj,[Object(y["createElementVNode"])("div",{class:"text",style:Object(y["normalizeStyle"])({color:t.text})},"Aa",4),Object(y["createElementVNode"])("div",{class:"color-block",style:Object(y["normalizeStyle"])({backgroundColor:t.color})},null,4)])],12,Gj)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yj,[Object(y["createVNode"])(m,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.applyThemeAllSlide()})},{default:Object(y["withCtx"])((function(){return[Zj]})),_:1})])])}var Kj=[{color:"#d14424",background:"#ffffff",text:"#333"},{color:"#42464b",background:"#ffffff",text:"#333"},{color:"#5d82ba",background:"#ffffff",text:"#333"},{color:"#005a6f",background:"#ffffff",text:"#333"},{color:"#d0614c",background:"#dfb044",text:"#333"},{color:"#86a1ad",background:"#dfdbd4",text:"#333"},{color:"#697586",background:"#d5c4a4",text:"#333"},{color:"#333333",background:"#7acfa6",text:"#333"},{color:"#42464b",background:"#415065",text:"#fff"},{color:"#0c5999",background:"#35a2cd",text:"#fff"},{color:"#c49a41",background:"#8c4357",text:"#fff"},{color:"#dfaa00",background:"#2e4e7d",text:"#fff"},{color:"#d1ad88",background:"#f99070",text:"#fff"},{color:"#464d52",background:"#657984",text:"#fff"},{color:"#ffcfb6",background:"#1e4c6f",text:"#fff"},{color:"#c3a043",background:"#43292a",text:"#fff"},{color:"#464d52",background:"#60546f",text:"#fff"},{color:"#df9636",background:"#5b89a0",text:"#fff"},{color:"#b898a4",background:"#93716b",text:"#fff"},{color:"#c47a11",background:"#187db1",text:"#fff"},{color:"#333333",background:"#759564",text:"#fff"},{color:"#355b5e",background:"#424b50",text:"#fff"},{color:"#d29090",background:"#942a32",text:"#fff"},{color:"#00cfdf",background:"#3b434d",text:"#fff"},{color:"#424246",background:"#c70042",text:"#fff"},{color:"#2e4155",background:"#b35d44",text:"#fff"},{color:"#11bfce",background:"#8f98aa",text:"#fff"},{color:"#333333",background:"#549688",text:"#fff"}],Qj=Kj,$j=S,ey=Object(y["defineComponent"])({name:"slide-design-panel",components:{ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.availableFonts,o=Object(g["c"])(e),l=o.slides,c=o.currentSlide,a=o.viewportRatio,r=o.theme,i=Object(y["computed"])((function(){return c.value.background?c.value.background:{type:"solid",value:"#fff"}})),u=qe(),d=u.addHistorySnapshot,s=function(t){if("solid"===t){var n=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"solid",color:i.value.color||"#fff"});e.updateSlide({background:n})}else if("image"===t){var o=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"image",image:i.value.image||"",imageSize:i.value.imageSize||"cover"});e.updateSlide({background:o})}else{var l=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"gradient",gradientType:i.value.gradientType||"linear",gradientColor:i.value.gradientColor||["#fff","#fff"],gradientRotate:i.value.gradientRotate||0});e.updateSlide({background:l})}d()},f=function(t){e.updateSlide({background:Object(B["a"])(Object(B["a"])({},i.value),t)}),d()},p=function(e){var t=e[0];t&&We(t).then((function(e){return f({image:e})}))},m=function(){var t=l.value.map((function(e){return Object(B["a"])(Object(B["a"])({},e),{},{background:c.value.background})}));e.setSlides(t),d()},b=function(t){e.setTheme(t)},v=function(){var t,n=JSON.parse(JSON.stringify(l.value)),o=r.value,c=o.themeColor,a=o.backgroundColor,i=o.fontColor,u=o.fontName,s=Object(L["a"])(n);try{for(s.s();!(t=s.n()).done;){var f=t.value;f.background&&"image"===f.background.type||(f.background=Object(B["a"])(Object(B["a"])({},f.background),{},{type:"solid",color:a}));var p,m=f.elements,b=Object(L["a"])(m);try{for(b.s();!(p=b.n()).done;){var v=p.value;if("shape"===v.type)v.fill=c;else if("line"===v.type)v.color=c;else if("text"===v.type)v.defaultColor=i,v.defaultFontName=u,v.fill&&(v.fill=c);else if("table"===v.type){v.theme&&(v.theme.color=c);var h,O=Object(L["a"])(v.data);try{for(O.s();!(h=O.n()).done;){var j,y=h.value,g=Object(L["a"])(y);try{for(g.s();!(j=g.n()).done;){var x=j.value;x.style&&(x.style.color=i,x.style.fontname=u)}}catch(Bw){g.e(Bw)}finally{g.f()}}}catch(Bw){O.e(Bw)}finally{O.f()}}else"chart"===v.type?(v.themeColor=[c],v.gridColor=i):"latex"===v.type?v.color=i:"audio"===v.type&&(v.color=c)}}catch(Bw){b.e(Bw)}finally{b.f()}}}catch(Bw){s.e(Bw)}finally{s.f()}e.setSlides(n),d()},h=Object(y["ref"])(!0),O=function(){h.value=!h.value},j=function(t){e.setViewportRatio(t)};return{availableFonts:n,background:i,updateBackgroundType:s,updateBackground:f,uploadBackgroundImage:p,applyBackgroundAllSlide:m,themes:Qj,theme:r,webFonts:$j,updateTheme:b,applyThemeAllSlide:v,viewportRatio:a,updateViewportRatio:j,showPresetThemes:h,togglePresetThemesVisible:O}}});n("eb2c");const ty=Ln()(ey,[["render",Jj],["__scopeId","data-v-0e2f846d"]]);var ny=ty,oy={class:"slide-animation-panel"},ly={class:"animation-pool"},cy=["onClick"],ay={class:"animation-text"},ry=Object(y["createTextVNode"])("应用到全部");function iy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",oy,[Object(y["createElementVNode"])("div",ly,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.animations,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["animation-item",{active:e.currentTurningMode===t.value}]),key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-block",t.value])},null,2),Object(y["createElementVNode"])("div",ay,Object(y["toDisplayString"])(t.label),1)],10,cy)})),128))]),Object(y["createVNode"])(a,{style:{width:"100%"},onClick:t[0]||(t[0]=function(t){return e.applyAllSlide()})},{default:Object(y["withCtx"])((function(){return[ry]})),_:1})])}var uy=Object(y["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=$(),t=Object(g["c"])(e),n=t.slides,o=t.currentSlide,l=Object(y["computed"])((function(){return o.value.turningMode||"slideY"})),c=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=qe(),r=a.addHistorySnapshot,i=function(t){t!==l.value&&(e.updateSlide({turningMode:t}),r())},u=function(){var t=n.value.map((function(e){return Object(B["a"])(Object(B["a"])({},e),{},{turningMode:o.value.turningMode})}));e.setSlides(t),r()};return{currentTurningMode:l,animations:c,updateTurningMode:i,applyAllSlide:u}}});n("6e42");const dy=Ln()(uy,[["render",iy],["__scopeId","data-v-251ceb05"]]);var sy=dy,fy={class:"multi-position-panel"},py=Object(y["createTextVNode"])("水平均匀分布"),my=Object(y["createTextVNode"])("垂直均匀分布"),by=Object(y["createTextVNode"])("组合"),vy=Object(y["createTextVNode"])("取消组合");function hy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconAlignLeft"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Tooltip"),u=Object(y["resolveComponent"])("IconAlignHorizontally"),d=Object(y["resolveComponent"])("IconAlignRight"),s=Object(y["resolveComponent"])("ButtonGroup"),f=Object(y["resolveComponent"])("IconAlignTop"),p=Object(y["resolveComponent"])("IconAlignVertically"),m=Object(y["resolveComponent"])("IconAlignBottom"),b=Object(y["resolveComponent"])("Divider"),v=Object(y["resolveComponent"])("IconGroup"),h=Object(y["resolveComponent"])("IconUngroup");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fy,[Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.alignElement("left")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignElement("horizontal")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignElement("right")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignElement("top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElement("vertical")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElement("bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),e.displayItemCount>2?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.uniformHorizontalDisplay()})},{default:Object(y["withCtx"])((function(){return[py]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.uniformVerticalDisplay()})},{default:Object(y["withCtx"])((function(){return[my]})),_:1})]})),_:1})):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(b),Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{disabled:!e.canCombine,onClick:t[8]||(t[8]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{style:{"margin-right":"3px"}}),by]})),_:1},8,["disabled"]),Object(y["createVNode"])(r,{disabled:e.canCombine,onClick:t[9]||(t[9]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{style:{"margin-right":"3px"}}),vy]})),_:1},8,["disabled"])]})),_:1})])}var Oy=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(t){var l,a=De(o.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(c.value.elements)),p={},m=Object(L["a"])(o.value);try{var b=function(){var e=l.value;if(e.groupId&&!p[e.groupId]){var t=o.value.filter((function(t){return t.groupId===e.groupId}));p[e.groupId]=De(t)}};for(m.s();!(l=m.n()).done;)b()}catch(Bw){m.e(Bw)}finally{m.f()}if(t===k.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.minX-i;e.left=e.left-o}else if("rotate"in e&&e.rotate){var l=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),c=l.offsetX;e.left=i-c}else e.left=i}));else if(t===k.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.maxX-u;e.left=e.left-o}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var c=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetX;e.left=u-l+a}else e.left=u-l}}));else if(t===k.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.minY-d;e.top=e.top-o}else if("rotate"in e&&e.rotate){var l=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),c=l.offsetY;e.top=d-c}else e.top=d}));else if(t===k.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.maxY-s;e.top=e.top-o}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var c=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetY;e.top=s-l+a}else e.top=s-l}}));else if(t===k.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=(t.maxX+t.minX)/2,l=o-v;e.left=e.left-l}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-c/2}}))}else if(t===k.VERTICAL){var h=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=(t.maxY+t.minY)/2,l=o-h;e.top=e.top-l}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=h-c/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},jy=(n("4e82"),function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=Object(y["computed"])((function(){var e,t=0,n=[],l=Object(L["a"])(o.value);try{for(l.s();!(e=l.n()).done;){var c=e.value;c.groupId?n.includes(c.groupId)||(n.push(c.groupId),t+=1):t+=1}}catch(Bw){l.e(Bw)}finally{l.f()}return t})),u=function(){var t,l=De(o.value),a=l.minX,i=l.maxX,u=JSON.parse(JSON.stringify(o.value)),d=JSON.parse(JSON.stringify(c.value.elements)),s=[],f=[],p=Object(L["a"])(u);try{var m=function(){var e=t.value;if(e.groupId){var n=f.find((function(t){return t.groupId===e.groupId}));n?f=f.map((function(t){return t.groupId===e.groupId?Object(B["a"])(Object(B["a"])({},t),{},{els:[].concat(Object(G["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var o=_e(e),l=o.minX,c=o.maxX;s.push({min:l,max:c,el:e})}};for(p.s();!(t=p.n()).done;)m()}catch(Bw){p.e(Bw)}finally{p.f()}var b,v=[],h=Object(L["a"])(f);try{for(h.s();!(b=h.n()).done;){var O=b.value,j=De(O.els),y=j.minX,g=j.maxX;v.push({min:y,max:g,els:O.els})}}catch(Bw){h.e(Bw)}finally{h.f()}var x=[].concat(s,v);x.sort((function(e,t){return e.min-t.min}));var C,k=0,w=Object(L["a"])(x);try{for(w.s();!(C=w.n()).done;){var E=C.value,N=E.max-E.min;k+=N}}catch(Bw){w.e(Bw)}finally{w.f()}var I=(i-a-k)/(x.length-1),V=[],S=x[0],T={min:S.min,max:S.max};if("el"in S)V.push({pos:S.min,el:S.el});else{var M,_=Object(L["a"])(S.els);try{for(_.s();!(M=_.n()).done;){var D=M.value,z=_e(D),A=z.minX;V.push({pos:A,el:D})}}catch(Bw){_.e(Bw)}finally{_.f()}}for(var F=1;F","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],By=Sy,Ly=Object(y["defineComponent"])({name:"symbol-panel",setup:function(){var e=Object(y["ref"])(By[0].key),t=Object(y["computed"])((function(){var t=By.find((function(t){return t.key===e.value}));return(null===t||void 0===t?void 0:t.children)||[]})),n=function(e){$l.emit(pl.RICH_TEXT_COMMAND,{command:"insert",value:e})};return{symbolPoolList:By,symbolPool:t,selectedSymbolKey:e,selectSymbol:n}}});n("56b6");const Ty=Ln()(Ly,[["render",Vy],["__scopeId","data-v-6b8c5938"]]);var My=Ty,_y=Object(y["defineComponent"])({name:"toolbar",setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.handleElement,l=t.toolbarState,c=Object(y["computed"])((function(){var e;return"text"===(null===(e=o.value)||void 0===e?void 0:e.type)?[{label:"样式",value:pp.EL_STYLE},{label:"符号",value:pp.SYMBOL},{label:"位置",value:pp.EL_POSITION},{label:"动画",value:pp.EL_ANIMATION}]:[{label:"样式",value:pp.EL_STYLE},{label:"位置",value:pp.EL_POSITION},{label:"动画",value:pp.EL_ANIMATION}]})),a=[{label:"设计",value:pp.SLIDE_DESIGN},{label:"切换",value:pp.SLIDE_ANIMATION},{label:"动画",value:pp.EL_ANIMATION}],r=[{label:"位置",value:pp.MULTI_POSITION},{label:"样式",value:pp.EL_STYLE}],i=function(t){e.setToolbarState(t)},u=Object(y["computed"])((function(){return n.value.length?n.value.length>1?r:c.value:a}));Object(y["watch"])(u,(function(){var t=u.value.map((function(e){return e.value}));t.includes(l.value)||e.setToolbarState(t[0])}));var d=Object(y["computed"])((function(){var e,t=(e={},Object(ae["a"])(e,pp.EL_STYLE,aO),Object(ae["a"])(e,pp.EL_POSITION,VO),Object(ae["a"])(e,pp.EL_ANIMATION,cj),Object(ae["a"])(e,pp.SLIDE_DESIGN,ny),Object(ae["a"])(e,pp.SLIDE_ANIMATION,sy),Object(ae["a"])(e,pp.MULTI_POSITION,xy),Object(ae["a"])(e,pp.SYMBOL,My),e);return t[l.value]||null}));return{toolbarState:l,currentTabs:u,setToolbarState:i,currentPanelComponent:d}}});n("6d15");const Dy=Ln()(_y,[["render",jp],["__scopeId","data-v-0df9576a"]]);var zy=Dy,Ay={class:"remark"},Fy=["value"];function Ry(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ay,[Object(y["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(t){return e.resize(t)})},null,32),Object(y["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,Fy)])}var Py=Object(y["defineComponent"])({name:"remark",emits:["update:height"],props:{height:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=$(),l=Object(g["c"])(o),c=l.currentSlide,a=Object(y["computed"])((function(){var e;return(null===(e=c.value)||void 0===e?void 0:e.remark)||""})),r=function(e){var t=e.target.value;o.updateSlide({remark:t})},i=function(t){var o=!0,l=t.pageY,c=e.height;document.onmousemove=function(e){if(o){var t=e.pageY,a=t-l,r=-a+c;r<40&&(r=40),r>120&&(r=120),n("update:height",r)}},document.onmouseup=function(){o=!1,document.onmousemove=null,document.onmouseup=null}};return{remark:a,handleInput:r,resize:i}}});n("c329");const Hy=Ln()(Py,[["render",Ry],["__scopeId","data-v-5a6e24c6"]]);var qy=Hy,Xy=Object(y["defineComponent"])({name:"editor",components:{EditorHeader:zn,Canvas:Ud,CanvasTool:Jf,Thumbnails:mp,Toolbar:zy,Remark:qy},setup:function(){var e=Object(y["ref"])(40);return it(),ut(),{remarkHeight:e}}});n("1fec");const Wy=Ln()(Xy,[["render",je],["__scopeId","data-v-55178b6a"]]);var Gy=Wy,Uy={class:"pptist-screen"},Yy={class:"tools"};function Zy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ScreenSlide"),r=Object(y["resolveComponent"])("SlideThumbnails"),i=Object(y["resolveComponent"])("WritingBoardTool"),u=Object(y["resolveComponent"])("IconLeftTwo"),d=Object(y["resolveComponent"])("IconRightTwo"),s=Object(y["resolveComponent"])("IconWrite"),f=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Uy,[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"slide-list",onMousewheel:t[0]||(t[0]=function(t){return e.mousewheelListener(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.touchStartListener(t)}),onTouchend:t[2]||(t[2]=function(t){return e.touchEndListener(t)})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["slide-item","turning-mode-".concat(t.turningMode||"slideY"),{current:n===e.slideIndex,before:ne.slideIndex,hide:(n===e.slideIndex-1||n===e.slideIndex+1)&&t.turningMode!==e.currentSlide.turningMode}]),key:t.id},[Math.abs(e.slideIndex-n)<2?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(a,{slide:t,scale:e.scale,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId},null,8,["slide","scale","animationIndex","turnSlideToId"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))],544),[[f,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[3]||(t[3]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(y["createCommentVNode"])("",!0),e.writingBoardToolVisible?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:1,onClose:t[4]||(t[4]=function(t){return e.writingBoardToolVisible=!1})})):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yy,[Object(y["createVNode"])(u,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[5]||(t[5]=function(t){return e.execPrev()})}),Object(y["createVNode"])(d,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=function(t){return e.execNext()})}),Object(y["createVNode"])(s,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[7]||(t[7]=function(t){return e.writingBoardToolVisible=!0})})]),e.showPageNumber?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:2,class:"page-number",onClick:t[8]||(t[8]=function(t){return e.slideThumbnailModelVisible=!0})},Object(y["toDisplayString"])(e.slideIndex+1)+" / "+Object(y["toDisplayString"])(e.slides.length),1)):Object(y["createCommentVNode"])("",!0)])}function Jy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ScreenElement");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-slide",style:Object(y["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.backgroundStyle))},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slide.elements,(function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId"])})),128))],4)}var Ky=["id","title"];function Qy(e,t,n,o,l,c){var a;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName,visibility:e.needWaitAnimation?"hidden":"visible"}),title:(null===(a=e.elementInfo.link)||void 0===a?void 0:a.target)||"",onClick:t[0]||(t[0]=function(t){return e.openLink()})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,Ky)}function $y(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BaseChartElement");return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"screen-element-chart",elementInfo:e.elementInfo,needScaleSize:!1},null,8,["elementInfo"])}var eg=Object(y["defineComponent"])({name:"screen-element-chart",components:{BaseChartElement:ad},props:{elementInfo:{type:Object,required:!0}}});const tg=Ln()(eg,[["render",$y]]);var ng=tg,og={class:"element-content"};function lg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("VideoPlayer");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",og,[e.inCurrentSlide?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:e.scale},null,8,["width","height","src","poster","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}var cg=Object(y["defineComponent"])({name:"screen-element-video",components:{VideoPlayer:ir},props:{elementInfo:{type:Object,required:!0}},setup:function(){var e=Object(g["c"])($()),t=e.currentSlide,n=Object(y["inject"])("slideScale")||Object(y["ref"])(1),o=Object(y["inject"])("slideId")||Object(y["ref"])(""),l=Object(y["computed"])((function(){return t.value.id===o.value}));return{scale:n,inCurrentSlide:l}}});n("7893");const ag=Ln()(cg,[["render",lg],["__scopeId","data-v-a45a17a4"]]);var rg=ag,ig={class:"element-content"};function ug(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice"),r=Object(y["resolveComponent"])("AudioPlayer");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",ig,[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color}),onClick:t[0]||(t[0]=function(t){return e.toggle()})},null,8,["style"]),e.inCurrentSlide?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,class:"audio-player",ref:"audioPlayerRef",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:e.scale},null,8,["style","src","loop","autoplay","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}var dg=Object(y["defineComponent"])({name:"screen-element-audio",components:{AudioPlayer:_r},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=t.currentSlide,l=Object(y["inject"])("slideScale")||Object(y["ref"])(1),c=Object(y["inject"])("slideId")||Object(y["ref"])(""),a=Object(y["computed"])((function(){return o.value.id===c.value})),r=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),i=Object(y["computed"])((function(){var t=Ge,o=Ge*n.value,c=280/l.value,a=50/l.value,r=e.elementInfo.width,i=e.elementInfo.height,u=e.elementInfo.left,d=e.elementInfo.top,s=0,f=i;return u+c>=t&&(s=r-c),d+i+a>=o&&(f=-a),{left:s+"px",top:f+"px"}})),u=Object(y["ref"])(),d=function(){u.value&&u.value.toggle()};return{scale:l,inCurrentSlide:a,audioIconSize:r,audioPlayerPosition:i,audioPlayerRef:u,toggle:d}}});n("eed2");const sg=Ln()(dg,[["render",ug],["__scopeId","data-v-b08df80e"]]);var fg=sg,pg=Object(y["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,default:-1},turnSlideToId:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Du),Object(ae["a"])(t,oo.TEXT,Pu),Object(ae["a"])(t,oo.SHAPE,Ju),Object(ae["a"])(t,oo.LINE,nd),Object(ae["a"])(t,oo.CHART,ng),Object(ae["a"])(t,oo.TABLE,Od),Object(ae["a"])(t,oo.LATEX,Ed),Object(ae["a"])(t,oo.VIDEO,rg),Object(ae["a"])(t,oo.AUDIO,fg),t);return n[e.elementInfo.type]||null})),n=Object(g["c"])($()),o=n.currentSlide,l=n.theme,c=Object(y["computed"])((function(){var t=o.value.animations||[],n=t.findIndex((function(t){return t.elId===e.elementInfo.id}));return-1!==n&&n>=e.animationIndex})),a=function(){var t=e.elementInfo.link;t&&("web"===t.type?window.open(t.target):"slide"===t.type&&e.turnSlideToId(t.target))};return{currentElementComponent:t,needWaitAnimation:c,theme:l,openLink:a}}});n("6042");const mg=Ln()(pg,[["render",Qy],["__scopeId","data-v-3b227002"]]);var bg=mg,vg=Object(y["defineComponent"])({name:"screen-slide",components:{ScreenElement:bg},props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,default:-1},turnSlideToId:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=Object(y["computed"])((function(){return e.slide.background})),l=$r(o),c=l.backgroundStyle,a=Object(y["computed"])((function(){return e.slide.id}));return Object(y["provide"])("slideId",a),{backgroundStyle:c,VIEWPORT_SIZE:Ge,viewportRatio:n}}});n("d530");const hg=Ln()(vg,[["render",Jy],["__scopeId","data-v-7827b40a"]]);var Og=hg,jg={class:"slide-thumbnails"},yg={class:"return-button"},gg={class:"slide-thumbnails-content"},xg=["onClick"];function Cg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconArrowCircleLeft"),r=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jg,[Object(y["createElementVNode"])("div",yg,[Object(y["createVNode"])(a,{class:"icon",onClick:t[0]||(t[0]=function(t){return e.close()})})]),Object(y["createElementVNode"])("div",gg,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:n===e.slideIndex}]),key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(y["createVNode"])(r,{slide:t,size:150,visible:n=o?a:c-i/o*c,-1===r?n:1*n/3+2*r/3},v=function(t,n){var o=(new Date).getTime();if("pen"===e.model){var c=m(t,n),i=o-a,u=b(c,i);f(t,n,u),r=u}else p(t,n);l={x:t,y:n},a=(new Date).getTime()},h=function(e){var t=e instanceof MouseEvent?e.offsetX:e.changedTouches[0].pageX,n=e instanceof MouseEvent?e.offsetY:e.changedTouches[0].pageY;c=!0,l={x:t,y:n},a=(new Date).getTime(),e instanceof TouchEvent&&(u(t,n),d.value=!0)},O=function(e){var t=e instanceof MouseEvent?e.offsetX:e.changedTouches[0].pageX,n=e instanceof MouseEvent?e.offsetY:e.changedTouches[0].pageY;u(t,n),c&&v(t,n)},j=function(){c&&(c=!1)},g=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)};return{mouse:i,mouseInCanvas:d,penSize:_g,rubberSize:Dg,writingBoardRef:n,canvasRef:o,handleMousedown:h,handleMousemove:O,handleMouseup:j,clearCanvas:g}}});n("097f");const Ag=Ln()(zg,[["render",Mg],["__scopeId","data-v-7ff9fa00"]]);var Fg=Ag,Rg=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],Pg=Object(y["defineComponent"])({name:"writing-board-tool",emits:["close"],components:{WritingBoard:Fg},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(),l=Object(y["ref"])("#e2534d"),c=Object(y["ref"])("pen"),a=Object(y["ref"])(!1),r=function(){c.value="pen"},i=function(){c.value="eraser"},u=function(){o.value.clearCanvas()},d=function(e){"pen"!==c.value&&(c.value="pen"),l.value=e},s=function(){n("close")};return{writingBoardRef:o,writingBoardColors:Rg,writingBoardColor:l,writingBoardModel:c,blackboard:a,changePen:r,changeEraser:i,clearCanvas:u,changeColor:d,closeWritingBoard:s}}});n("4c08");const Hg=Ln()(Pg,[["render",Bg],["__scopeId","data-v-7a2e5324"]]);var qg=Hg,Xg=Object(y["defineComponent"])({name:"screen",components:{ScreenSlide:Og,SlideThumbnails:Eg,WritingBoardTool:qg},setup:function(){var e=$(),t=Object(g["c"])(e),n=t.slides,o=t.slideIndex,l=t.currentSlide,c=t.viewportRatio,a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["computed"])((function(){return a.value/Ge})),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=Object(y["ref"])(!1),f=function(){var e,t,n=document.body.clientWidth,o=document.body.clientHeight;o/n===c.value?(e=n,t=o):o/n>c.value?(e=n,t=n*c.value):(e=o/c.value,t=o),a.value=e,r.value=t},p=at(),m=p.exitScreening,b=function(){f(),ct()||m()};Object(y["onMounted"])((function(){f(),window.addEventListener("resize",b)})),Object(y["onUnmounted"])((function(){window.removeEventListener("resize",b)}));var v=Object(y["computed"])((function(){return l.value.animations||[]})),h=Object(y["ref"])(0),O=function(){var e="animate__",t=v.value[h.value];h.value+=1;var n=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(n){var o="".concat(e).concat(t.type);document.documentElement.style.setProperty("--animate-duration","".concat(t.duration,"ms")),n.classList.add("".concat(e,"animated"),o);var l=function(){document.documentElement.style.removeProperty("--animate-duration"),n.classList.remove("".concat(e,"animated"),o)};n.addEventListener("animationend",l,{once:!0})}},j=Object(y["ref"])(0),x=function(){j.value&&(clearInterval(j.value),j.value=0)};Object(y["onUnmounted"])(x);var C=Object(Z["throttle"])((function(e){ge["a"].success(e)}),1e3,{leading:!0,trailing:!1}),k=function(){if(v.value.length&&h.value>0)h.value-=1;else if(o.value>0){e.updateSlideIndex(o.value-1);var t=v.value?v.value.length:0;h.value=t}else C("已经是第一页了")},w=function(){v.value.length&&h.value0&&w()}),500,{leading:!0,trailing:!1}),V=Object(y["ref"])(null),S=function(e){V.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},B=function(e){if(V.value){var t=Math.abs(V.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-V.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(V.value=null,n>0?k():w())}},L=function(e){var t=e.key.toUpperCase();t===I.UP||t===I.LEFT?k():t!==I.DOWN&&t!==I.RIGHT&&t!==I.SPACE&&t!==I.ENTER||w()};Object(y["onMounted"])((function(){document.addEventListener("keydown",L)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",L)}));var T=function(){e.updateSlideIndex(o.value-1),h.value=0},M=function(){e.updateSlideIndex(o.value+1),h.value=0},_=function(t){d.value=!1,e.updateSlideIndex(t),h.value=0},D=function(t){var o=n.value.findIndex((function(e){return e.id===t}));-1!==o&&(e.updateSlideIndex(o),h.value=0)},z=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return T()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return M()}},{text:"第一页",disable:0===o.value,handler:function(){return _(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return _(n.value.length-1)}},{divider:!0},{text:"显示页码",subText:u.value?"√":"",handler:function(){return u.value=!u.value}},{text:"查看所有幻灯片",handler:function(){return d.value=!0}},{text:"画笔",handler:function(){return s.value=!0}},{divider:!0},{text:j.value?"取消自动放映":"自动放映",handler:j.value?x:E},{text:"结束放映",subText:"ESC",handler:m}]};return Object(y["provide"])("slideScale",i),{slides:n,slideIndex:o,currentSlide:l,slideWidth:a,slideHeight:r,scale:i,mousewheelListener:N,touchStartListener:S,touchEndListener:B,animationIndex:h,contextmenus:z,execPrev:k,execNext:w,slideThumbnailModelVisible:d,turnSlideToIndex:_,turnSlideToId:D,writingBoardToolVisible:s,showPageNumber:u}}});n("ad18");const Wg=Ln()(Xg,[["render",Zy],["__scopeId","data-v-1d67bb30"]]);var Gg=Wg,Ug={class:"mobile",ref:"mobileRef"},Yg={class:"thumbnail-list"};function Zg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Alert"),r=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ug,[Object(y["createVNode"])(a,{class:"tip",message:"注意",description:"移动设备下仅支持预览,请在PC上进行编辑",type:"warning",closable:"","show-icon":""}),Object(y["createElementVNode"])("div",Yg,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-item",key:t.id},[Object(y["createVNode"])(r,{slide:t,size:e.slideWidth,visible:nl?1:Math.round(100*r/l)/100,o.value.a!==t&&n("colorChange",{r:o.value.r,g:o.value.g,b:o.value.b,a:t})}},r=function e(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",e)},i=function(e){a(e),window.addEventListener("mousemove",a),window.addEventListener("mouseup",r)};return Object(y["onUnmounted"])(r),{alphaRef:c,gradientColor:l,handleMouseDown:i,color:o}}});n("f418");const wk=Ln()(kk,[["render",vk],["__scopeId","data-v-6f2cb744"]]);var Ek=wk,Nk=function(e){return Object(y["pushScopeId"])("data-v-1766620e"),e=e(),Object(y["popScopeId"])(),e},Ik={class:"hue"},Vk=Nk((function(){return Object(y["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),Sk=[Vk];function Bk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ik,[Object(y["createElementVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Object(y["createElementVNode"])("div",{class:"hue-pointer",style:Object(y["normalizeStyle"])({left:e.pointerLeft})},Sk,4)],544)])}var Lk=Object(y["defineComponent"])({name:"hue",emits:["colorChange"],props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(0),l=Object(y["ref"])(""),c=Object(y["computed"])((function(){var t=Y()(e.value).toHsl();return-1!==e.hue&&(t.h=e.hue),t})),a=Object(y["computed"])((function(){return 0===c.value.h&&"right"===l.value?"100%":100*c.value.h/360+"%"}));Object(y["watch"])((function(){return e.value}),(function(){var t=Y()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(l.value="right"),0!==n&&n-o.value<0&&(l.value="left"),o.value=n}));var r=Object(y["ref"])(),i=function(t){if(t.preventDefault(),r.value){var o,l,a=r.value.clientWidth,i=r.value.getBoundingClientRect().left+window.pageXOffset,u=t.pageX-i;u<0?o=0:u>a?o=360:(l=100*u/a,o=360*l/100),-1!==e.hue&&c.value.h===o||n("colorChange",{h:o,l:c.value.l,s:c.value.s,a:c.value.a})}},u=function e(){window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)},d=function(e){i(e),window.addEventListener("mousemove",i),window.addEventListener("mouseup",u)};return Object(y["onUnmounted"])(u),{hueRef:r,handleMouseDown:d,pointerLeft:a}}});n("468f");const Tk=Ln()(Lk,[["render",Bk],["__scopeId","data-v-1766620e"]]);var Mk=Tk,_k=function(e){return Object(y["pushScopeId"])("data-v-8982eb4a"),e=e(),Object(y["popScopeId"])(),e},Dk=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),zk=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),Ak=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),Fk=[Ak];function Rk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"saturation",ref:"saturationRef",style:Object(y["normalizeStyle"])({background:e.bgColor}),onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Dk,zk,Object(y["createElementVNode"])("div",{class:"saturation-pointer",style:Object(y["normalizeStyle"])({top:e.pointerTop,left:e.pointerLeft})},Fk,4)],36)}var Pk=Object(y["defineComponent"])({name:"saturation",emits:["colorChange"],props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["computed"])((function(){var t=Y()(e.value).toHsv();return-1!==e.hue&&(t.h=e.hue),t})),l=Object(y["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),c=Object(y["computed"])((function(){return-100*o.value.v+1+100+"%"})),a=Object(y["computed"])((function(){return 100*o.value.s+"%"})),r=Object(Z["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(y["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,l=i.value.getBoundingClientRect().left+window.pageXOffset,c=i.value.getBoundingClientRect().top+window.pageYOffset,a=Object(Z["clamp"])(e.pageX-l,0,t),u=Object(Z["clamp"])(e.pageY-c,0,n),d=a/t,s=Object(Z["clamp"])(-u/n+1,0,1);r({h:o.value.h,s:d,v:s,a:o.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(y["onUnmounted"])(d),{saturationRef:i,bgColor:l,handleMouseDown:s,pointerTop:c,pointerLeft:a}}});n("a46e");const Hk=Ln()(Pk,[["render",Rk],["__scopeId","data-v-8982eb4a"]]);var qk=Hk,Xk={class:"editable-input"},Wk=["value"];function Gk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xk,[Object(y["createElementVNode"])("input",{class:"input-content",value:e.val,onInput:t[0]||(t[0]=function(t){return e.handleInput(t)})},null,40,Wk)])}var Uk=Object(y["defineComponent"])({name:"editable-input",emits:["colorChange"],props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["computed"])((function(){var t="";return t=e.value.a<1?Y()(e.value).toHex8String().toUpperCase():Y()(e.value).toHexString().toUpperCase(),t.replace("#","")})),l=function(e){var t=e.target.value;t.length>=6&&n("colorChange",Y()(t).toRgb())};return{val:o,handleInput:l}}});n("1a34");const Yk=Ln()(Uk,[["render",Gk],["__scopeId","data-v-00ea8dfc"]]);var Zk=Yk,Jk="RECENT_COLORS",Kk=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],Qk=function(e,t,n){for(var o=Y()(e).toRgb(),l=Y()(t).toRgb(),c=(l.r-o.r)/n,a=(l.g-o.g)/n,r=(l.b-o.b)/n,i=[],u=0;ut&&(l.value=l.value.slice(0,t))}}),300,{trailing:!0});Object(y["onMounted"])((function(){var e=localStorage.getItem(Jk);e&&(l.value=JSON.parse(e))})),Object(y["watch"])(l,(function(){var e=JSON.stringify(l.value);localStorage.setItem(Jk,e)}));var f=function(e){"h"in e?(o.value=e.h,c.value=Y()(e).toRgb()):(o.value=Y()(e).toHsl().h,c.value=e),s()};return{themeColors:a,standardColors:r,presetColors:i,color:c,hue:o,currentColor:u,changeColor:f,selectPresetColor:d,recentColors:l}}});n("6c3c");const tw=Ln()(ew,[["render",dk],["__scopeId","data-v-210672ee"]]);var nw=tw,ow={key:0,class:"fullscreen-spin"};function lw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Spin");return n.loading?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ow,[Object(y["createVNode"])(a,{tip:n.tip,size:"large"},null,8,["tip"])])):Object(y["createCommentVNode"])("",!0)}var cw={name:"fullscreen-spin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}}};n("3f8e");const aw=Ln()(cw,[["render",lw],["__scopeId","data-v-6275c730"]]);var rw=aw,iw={install:function(e){e.component("FileInput",zC),e.component("CheckboxButton",PC),e.component("CheckboxButtonGroup",GC),e.component("ColorPicker",nw),e.component("FullscreenSpin",rw)}};function uw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("MenuContent");return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",{class:"mask",onContextmenu:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[1]||(t[1]=function(t){return e.removeContextmenu()})},null,32),Object(y["createElementVNode"])("div",{class:"contextmenu",style:Object(y["normalizeStyle"])({left:e.style.left+"px",top:e.style.top+"px"}),onContextmenu:t[2]||(t[2]=Object(y["withModifiers"])((function(){}),["prevent"]))},[Object(y["createVNode"])(a,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var dw={class:"menu-content"},sw=["onClick"],fw={class:"text"},pw={key:0,class:"sub-text"};function mw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("menu-content",!0);return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",dw,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.menus,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:t.text||n},[t.hide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{key:0,class:Object(y["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(y["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(y["createElementVNode"])("span",fw,Object(y["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(y["openBlock"])(),Object(y["createElementBlock"])("span",pw,Object(y["toDisplayString"])(t.subText),1)):Object(y["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(y["createCommentVNode"])("",!0)],2))],10,sw))],64)})),128))])}var bw=Object(y["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("0c74");const vw=Ln()(bw,[["render",mw],["__scopeId","data-v-eb1555e8"]]);var hw=vw,Ow=Object(y["defineComponent"])({name:"contextmenu",components:{MenuContent:hw},props:{axis:{type:Object,required:!0},el:{type:Object,required:!0},menus:{type:Array,required:!0},removeContextmenu:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t=170,n=30,o=11,l=5,c=e.axis,a=c.x,r=c.y,i=e.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=e.menus.filter((function(e){return e.divider})).length,d=t,s=i*n+u*o+2*l,f=document.body.clientWidth,p=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:p<=r+s?r-s:r}})),n=function(t){t.disable||t.children&&!t.handler||(t.handler&&t.handler(e.el),e.removeContextmenu())};return{style:t,handleClickMenuItem:n}}});n("b837");const jw=Ln()(Ow,[["render",uw]]);var yw=jw,gw="CTX_CONTEXTMENU_HANDLER",xw=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var l=null,c=function t(){l&&(document.body.removeChild(l),l=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",t),window.removeEventListener("resize",t)},a={axis:{x:t.x,y:t.y},el:e,menus:o,removeContextmenu:c};l=document.createElement("div");var r=Object(y["createVNode"])(yw,a,null);Object(y["render"])(r,l),document.body.appendChild(l),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",c),window.addEventListener("resize",c)}},Cw={mounted:function(e,t){e[gw]=function(n){return xw(e,n,t)},e.addEventListener("contextmenu",e[gw])},unmounted:function(e){e&&e[gw]&&(e.removeEventListener("contextmenu",e[gw]),delete e[gw])}},kw=Cw,ww="CTX_CLICK_OUTSIDE_HANDLER",Ew=function(e,t,n){var o=n.value,l=t.composedPath(),c=l?l.indexOf(e)<0:!e.contains(t.target);c&&o(t)},Nw={mounted:function(e,t){e[ww]=function(n){return Ew(e,n,t)},setTimeout((function(){document.addEventListener("click",e[ww])}),0)},unmounted:function(e){e[ww]&&(document.removeEventListener("click",e[ww]),delete e[ww])}},Iw=Nw,Vw={install:function(e){e.directive("contextmenu",kw),e.directive("click-outside",Iw)}},Sw=Object(y["createApp"])(tx);Sw.component("InputNumber",j["a"]),Sw.component("Divider",O["a"]),Sw.component("Button",h["a"]),Sw.component("ButtonGroup",h["a"].Group),Sw.component("Tooltip",v["a"]),Sw.component("Popover",b["a"]),Sw.component("Slider",m["a"]),Sw.component("Select",p["a"]),Sw.component("SelectOption",p["a"].Option),Sw.component("SelectOptGroup",p["a"].OptGroup),Sw.component("Switch",f["a"]),Sw.component("Radio",s["a"]),Sw.component("RadioGroup",s["a"].Group),Sw.component("RadioButton",s["a"].Button),Sw.component("Input",d["a"]),Sw.component("InputGroup",d["a"].Group),Sw.component("TextArea",d["a"].TextArea),Sw.component("Modal",u["a"]),Sw.component("Dropdown",i["a"]),Sw.component("Menu",r["a"]),Sw.component("MenuItem",r["a"].Item),Sw.component("Checkbox",a["a"]),Sw.component("Drawer",c["a"]),Sw.component("Spin",l["a"]),Sw.component("Alert",o["a"]),Sw.use(LC),Sw.use(iw),Sw.use(Vw),Sw.use(Object(g["a"])()),Sw.mount("#app")},cdff:function(e,t,n){},d0e2:function(e,t,n){},d129:function(e,t,n){"use strict";n("1b9e")},d2f4:function(e,t,n){},d4cb:function(e,t,n){},d530:function(e,t,n){"use strict";n("c242")},d572:function(e,t,n){},d65a:function(e,t,n){},d6d3:function(e,t,n){},d908:function(e,t,n){"use strict";n("2ab1")},da17:function(e,t,n){"use strict";n("e44d")},dab5:function(e,t,n){"use strict";n("6702")},dbe5:function(e,t,n){},dc2f:function(e,t,n){},dc5e:function(e,t,n){},ddc3:function(e,t,n){},de30:function(e,t,n){"use strict";n("ddc3")},e09c:function(e,t,n){},e1f8:function(e,t,n){},e3df:function(e,t,n){"use strict";n("f0f3")},e44d:function(e,t,n){},e4ed:function(e,t,n){"use strict";n("1160")},e4fe:function(e,t,n){},e5a8:function(e,t,n){"use strict";n("6532")},e5b9:function(e,t,n){},e6a5:function(e,t,n){},e7b8:function(e,t,n){"use strict";n("46ba")},e9e0:function(e,t,n){},eacc:function(e,t,n){"use strict";n("50c5")},eaff:function(e,t,n){},eb2c:function(e,t,n){"use strict";n("fa63")},ec3f:function(e,t,n){},ec9c:function(e,t,n){"use strict";n("b994")},eed2:function(e,t,n){"use strict";n("4c0a")},efbe:function(e,t,n){"use strict";n("4fda")},f076:function(e,t,n){"use strict";n("e09c")},f0f3:function(e,t,n){},f10d:function(e,t,n){"use strict";n("4a74")},f33f:function(e,t,n){"use strict";n("a9ab")},f349:function(e,t,n){"use strict";n("013f")},f418:function(e,t,n){"use strict";n("0f92")},f9a0:function(e,t,n){"use strict";n("803b")},fa63:function(e,t,n){},fb1d:function(e,t,n){"use strict";n("d572")},fc7e:function(e,t,n){"use strict";n("9031")},ff8b:function(e,t,n){},ffb8:function(e,t,n){"use strict";n("3831")}}); +//# sourceMappingURL=app.750017ba.js.map \ No newline at end of file diff --git a/js/app.750017ba.js.map b/js/app.750017ba.js.map new file mode 100644 index 00000000..ef2e0e4e --- /dev/null +++ b/js/app.750017ba.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?d655","webpack:///./src/views/Editor/CanvasTool/index.vue?3499","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?cee8","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?a976","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?06f4","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?3ef0","webpack:///./src/components/WritingBoard.vue?2e18","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ced2","webpack:///./src/components/Contextmenu/MenuContent.vue?f410","webpack:///./src/views/components/element/LatexElement/index.vue?1604","webpack:///./src/views/components/element/TableElement/index.vue?47e0","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?43a5","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?56b7","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ac30","webpack:///./src/components/ColorPicker/EditableInput.vue?0adf","webpack:///./src/views/Editor/index.vue?b100","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?d975","webpack:///./src/views/Editor/Thumbnails/index.vue?4a6f","webpack:///./src/views/Editor/Canvas/index.vue?8810","webpack:///./src/views/components/element/AudioElement/index.vue?d3bb","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?3a9f","webpack:///./src/views/Editor/EditorHeader/index.vue?081c","webpack:///./src/views/components/element/ChartElement/Chart.vue?5228","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?9eed","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?2e8f","webpack:///./src/views/components/element/LineElement/index.vue?bff4","webpack:///./src/components/FullscreenSpin.vue?94b8","webpack:///./src/views/components/ThumbnailSlide/index.vue?5486","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?ea96","webpack:///./src/components/ColorPicker/Hue.vue?3cb1","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?2125","webpack:///./src/views/Screen/WritingBoardTool.vue?e13d","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?54ca","webpack:///./src/views/components/element/TextElement/index.vue?097b","webpack:///./src/views/components/element/ElementOutline.vue?53a5","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?2e80","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?0f15","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?ee88","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?99ff","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?d62e","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?a7f1","webpack:///./src/views/Screen/ScreenElement.vue?edad","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?2f25","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?3b58","webpack:///./src/views/Editor/Canvas/Operate/index.vue?a512","webpack:///./src/components/CheckboxButtonGroup.vue?2eb8","webpack:///./src/components/ColorPicker/index.vue?fb23","webpack:///./src/views/Editor/Toolbar/index.vue?8498","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?24bf","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?cd35","webpack:///./src/components/CheckboxButton.vue?4d8d","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?bbd4","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?e4fa","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?19e8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?177c","webpack:///./src/components/ColorPicker/Checkboard.vue?dbe5","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?c189","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?b2e7","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?e809","webpack:///./src/views/components/element/TableElement/StaticTable.vue?0130","webpack:///./src/views/components/element/ChartElement/Chart.vue?65b9","webpack:///./src/views/components/element/TableElement/EditableTable.vue?e1af","webpack:///./src/components/ColorPicker/Saturation.vue?6538","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?fdec","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?3ed9","webpack:///./src/views/Screen/index.vue?7152","webpack:///./src/views/components/element/ChartElement/index.vue?9df7","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?ba54","webpack:///./src/App.vue?2118","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?38fb","webpack:///./src/components/LaTeXEditor/index.vue?f977","webpack:///./src/components/Contextmenu/index.vue?694c","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?b95d","webpack:///./src/views/Editor/Remark/index.vue?3b8b","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?b489","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?18d8","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?3e23","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?60de","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?966c","webpack:///./src/views/Screen/SlideThumbnails.vue?eef4","webpack:///./src/App.vue?9e45","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/prosemirror/utils.ts","webpack:///./src/utils/font.ts","webpack:///./src/mocks/slides.ts","webpack:///./src/mocks/theme.ts","webpack:///./src/mocks/layout.ts","webpack:///./src/store/slides.ts","webpack:///./src/store/main.ts","webpack:///./src/utils/database.ts","webpack:///./src/store/snapshot.ts","webpack:///./src/store/keyboard.ts","webpack:///./src/store/screen.ts","webpack:///./src/utils/common.ts","webpack:///./src/views/Editor/index.vue?2c6d","webpack:///./src/utils/crypto.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/element.ts","webpack:///./src/utils/textParser.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/usePasteTextClipboardData.ts","webpack:///./src/hooks/useSlideHandler.ts","webpack:///./src/hooks/useLockElement.ts","webpack:///./src/hooks/useDeleteElement.ts","webpack:///./src/hooks/useCombineElement.ts","webpack:///./src/hooks/useCopyAndPasteElement.ts","webpack:///./src/hooks/useSelectAllElement.ts","webpack:///./src/hooks/useMoveElement.ts","webpack:///./src/hooks/useOrderElement.ts","webpack:///./src/utils/fullscreen.ts","webpack:///./src/hooks/useScreening.ts","webpack:///./src/hooks/useScaleCanvas.ts","webpack:///./src/hooks/useGlobalHotkey.ts","webpack:///./src/hooks/usePasteEvent.ts","webpack:///./src/views/Editor/EditorHeader/index.vue?207e","webpack:///./src/utils/htmlParser/tags.ts","webpack:///./src/utils/htmlParser/lexer.ts","webpack:///./src/utils/htmlParser/parser.ts","webpack:///./src/utils/htmlParser/format.ts","webpack:///./src/utils/htmlParser/index.ts","webpack:///./src/utils/svgPathParser.ts","webpack:///./src/utils/svg2Base64.ts","webpack:///./src/hooks/useExport.ts","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?b691","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","webpack:///./src/views/Editor/Canvas/index.vue?6132","webpack:///./src/utils/selection.ts","webpack:///./src/views/Editor/Canvas/hooks/useViewportSize.ts","webpack:///./src/views/Editor/Canvas/hooks/useMouseSelection.ts","webpack:///./src/views/Editor/Canvas/hooks/useDropImageOrText.ts","webpack:///./src/views/Editor/Canvas/hooks/useRotateElement.ts","webpack:///./src/configs/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useScaleElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useSelectElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragLineElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useInsertFromCreateSelection.ts","webpack:///./src/views/Editor/Canvas/EditableElement.vue?e3b3","webpack:///./src/types/slides.ts","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/ImageElement/index.vue?029e","webpack:///./src/views/components/element/hooks/useElementShadow.ts","webpack:///./src/configs/imageClip.ts","webpack:///./src/views/components/element/hooks/useElementFlip.ts","webpack:///./src/views/components/element/ImageElement/useClipImage.ts","webpack:///./src/views/components/element/ImageElement/useFilter.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?d64e","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?dedf","webpack:///./src/views/components/element/hooks/useElementOutline.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6e01","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?9a24","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?f9e6","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?f963","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?819e","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?a843","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?3210","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?2c28","webpack:///./src/views/components/element/ImageElement/index.vue","webpack:///./src/views/components/element/ImageElement/index.vue?ff2b","webpack:///./src/views/components/element/TextElement/index.vue?7653","webpack:///./src/views/components/element/ElementOutline.vue?b944","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","webpack:///./src/views/components/element/ProsemirrorEditor.vue?6651","webpack:///./src/utils/emitter.ts","webpack:///./src/utils/prosemirror/plugins/keymap.ts","webpack:///./src/utils/prosemirror/plugins/inputrules.ts","webpack:///./src/utils/prosemirror/plugins/index.ts","webpack:///./src/utils/prosemirror/schema/nodes.ts","webpack:///./src/utils/prosemirror/schema/marks.ts","webpack:///./src/utils/prosemirror/schema/index.ts","webpack:///./src/utils/prosemirror/index.ts","webpack:///./src/utils/prosemirror/commands/setTextAlign.ts","webpack:///./src/utils/prosemirror/commands/toggleList.ts","webpack:///./src/views/components/element/ProsemirrorEditor.vue","webpack:///./src/views/components/element/ProsemirrorEditor.vue?4854","webpack:///./src/views/components/element/TextElement/index.vue","webpack:///./src/views/components/element/TextElement/index.vue?6fb4","webpack:///./src/views/components/element/ShapeElement/index.vue?b1a4","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?49a1","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?def0","webpack:///./src/views/components/element/ShapeElement/index.vue","webpack:///./src/views/components/element/ShapeElement/index.vue?6caf","webpack:///./src/views/components/element/LineElement/index.vue?59e9","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?8de0","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?ee66","webpack:///./src/views/components/element/LineElement/index.vue","webpack:///./src/views/components/element/LineElement/index.vue?4793","webpack:///./src/views/components/element/ChartElement/index.vue?4de5","webpack:///./src/views/components/element/ChartElement/Chart.vue?03f6","webpack:///./src/views/components/element/ChartElement/Chart.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue?7db2","webpack:///./src/views/components/element/ChartElement/index.vue","webpack:///./src/views/components/element/ChartElement/index.vue?2bdf","webpack:///./src/views/components/element/TableElement/index.vue?9a52","webpack:///./src/views/components/element/TableElement/EditableTable.vue?0dcd","webpack:///./src/views/components/element/TableElement/utils.ts","webpack:///./src/views/components/element/TableElement/useHideCells.ts","webpack:///./src/views/components/element/TableElement/useSubThemeColor.ts","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?d975","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?abdd","webpack:///./src/views/components/element/TableElement/EditableTable.vue","webpack:///./src/views/components/element/TableElement/EditableTable.vue?adf9","webpack:///./src/views/components/element/TableElement/index.vue","webpack:///./src/views/components/element/TableElement/index.vue?a4cf","webpack:///./src/views/components/element/LatexElement/index.vue?6cc0","webpack:///./src/views/components/element/LatexElement/index.vue","webpack:///./src/views/components/element/LatexElement/index.vue?faec","webpack:///./src/views/components/element/VideoElement/index.vue?52dc","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?cfe6","webpack:///./src/views/components/element/VideoElement/VideoPlayer/useMSE.ts","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?a136","webpack:///./src/views/components/element/VideoElement/index.vue","webpack:///./src/views/components/element/VideoElement/index.vue?9c8b","webpack:///./src/views/components/element/AudioElement/index.vue?b2aa","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ffda","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?7c58","webpack:///./src/views/components/element/AudioElement/index.vue","webpack:///./src/views/components/element/AudioElement/index.vue?0032","webpack:///./src/views/Editor/Canvas/EditableElement.vue","webpack:///./src/views/Editor/Canvas/EditableElement.vue?e703","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?6f24","webpack:///./src/views/Editor/Canvas/MouseSelection.vue","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?4329","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?825f","webpack:///./src/views/Editor/Canvas/GridLines.vue?480d","webpack:///./src/views/Editor/Canvas/GridLines.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue?863a","webpack:///./src/hooks/useSlideBackgroundStyle.ts","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?db9c","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?bc40","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?2cad","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?f010","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?9d52","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?cd27","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?9c98","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?640d","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?962f","webpack:///./src/views/Editor/Canvas/Operate/index.vue?0f6b","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?a10f","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?7bca","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?8b12","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?1576","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?059a","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?3000","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?efcf","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?ab3e","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?ae63","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?8922","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?7dc9","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?e0eb","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?4924","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?b957","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?6521","webpack:///./src/hooks/useLink.ts","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?53bc","webpack:///./src/views/Editor/Canvas/Operate/index.vue","webpack:///./src/views/Editor/Canvas/Operate/index.vue?ec8a","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?bc4f","webpack:///./src/views/components/ThumbnailSlide/index.vue?503d","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?5010","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?4d4f","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?dbd8","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?345f","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?f2a6","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?9d0d","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?5afd","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?89e3","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2cb","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?1976","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?928d","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?9d51","webpack:///./src/views/components/element/TableElement/StaticTable.vue?622f","webpack:///./src/views/components/element/TableElement/StaticTable.vue","webpack:///./src/views/components/element/TableElement/StaticTable.vue?ff6d","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?e6c9","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?184e","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?45c1","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?f013","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?c20a","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?237b","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3937","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?ddb6","webpack:///./src/views/components/ThumbnailSlide/index.vue","webpack:///./src/views/components/ThumbnailSlide/index.vue?2e09","webpack:///./src/views/Editor/Canvas/LinkDialog.vue","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?19ad","webpack:///./src/views/Editor/Canvas/index.vue","webpack:///./src/views/Editor/Canvas/index.vue?5e25","webpack:///./src/views/Editor/CanvasTool/index.vue?ebd8","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?a5b8","webpack:///./src/configs/shapes.ts","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?9608","webpack:///./src/configs/lines.ts","webpack:///./src/views/Editor/CanvasTool/LinePool.vue","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?5b7d","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?f15b","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?2e9d","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?f19b","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?ddc5","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?58fa","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/index.vue?593a","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?76d2","webpack:///./src/components/LaTeXEditor/FormulaContent.vue","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ecb1","webpack:///./src/components/LaTeXEditor/SymbolContent.vue?673d","webpack:///./src/components/LaTeXEditor/SymbolContent.vue","webpack:///./src/components/LaTeXEditor/SymbolContent.vue?9c88","webpack:///./src/components/LaTeXEditor/index.vue","webpack:///./src/components/LaTeXEditor/index.vue?e61f","webpack:///./src/views/Editor/CanvasTool/index.vue","webpack:///./src/views/Editor/CanvasTool/index.vue?e1a6","webpack:///./src/views/Editor/Thumbnails/index.vue?fde6","webpack:///./src/hooks/useLoadSlides.ts","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?e54e","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?cca8","webpack:///./src/views/Editor/Thumbnails/index.vue","webpack:///./src/views/Editor/Thumbnails/index.vue?97d5","webpack:///./src/types/toolbar.ts","webpack:///./src/views/Editor/Toolbar/index.vue?92c2","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?3646","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?2b09","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?5a1a","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?8eaf","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?3bc0","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?32c9","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?6f8d","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?78bd","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?53af","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?7b9e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?90a9","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?8a9b","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ea9a","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?0828","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?a4b4","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?fefc","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?35b6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?cdd8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6e51","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?7782","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?ebc3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?433a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?7cbe","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?13cd","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?7d6e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?bca3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?1838","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?cdab","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?73c6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?c59d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?27ee","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?cc3e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?82fb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?ba7d","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?1004","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?5759","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?9f55","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?562d","webpack:///./src/configs/theme.ts","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?8ed6","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?a53d","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?8004","webpack:///./src/hooks/useAlignActiveElement.ts","webpack:///./src/hooks/useUniformDisplayElement.ts","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?82ab","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?7eed","webpack:///./src/configs/symbol.ts","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?8779","webpack:///./src/views/Editor/Toolbar/index.vue","webpack:///./src/views/Editor/Toolbar/index.vue?3efa","webpack:///./src/views/Editor/Remark/index.vue?9bb3","webpack:///./src/views/Editor/Remark/index.vue","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/index.vue","webpack:///./src/views/Editor/index.vue?fb1c","webpack:///./src/views/Screen/index.vue?290f","webpack:///./src/views/Screen/ScreenSlide.vue?0f03","webpack:///./src/views/Screen/ScreenElement.vue?ad3e","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?16d6","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?9bdc","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?77e4","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?1989","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?25bc","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?bb8a","webpack:///./src/views/Screen/ScreenElement.vue","webpack:///./src/views/Screen/ScreenElement.vue?448e","webpack:///./src/views/Screen/ScreenSlide.vue","webpack:///./src/views/Screen/ScreenSlide.vue?4983","webpack:///./src/views/Screen/SlideThumbnails.vue?b449","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","webpack:///./src/views/Screen/WritingBoardTool.vue?6969","webpack:///./src/components/WritingBoard.vue?07ad","webpack:///./src/components/WritingBoard.vue","webpack:///./src/components/WritingBoard.vue?daf9","webpack:///./src/views/Screen/WritingBoardTool.vue","webpack:///./src/views/Screen/WritingBoardTool.vue?56cc","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile.vue?a8ce","webpack:///./src/views/Mobile.vue","webpack:///./src/views/Mobile.vue?44c6","webpack:///./src/App.vue","webpack:///./src/App.vue?ae2f","webpack:///./src/plugins/icon.ts","webpack:///./src/components/FileInput.vue?2df9","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue?61b5","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue?37b7","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","webpack:///./src/components/ColorPicker/index.vue?ac23","webpack:///./src/components/ColorPicker/Alpha.vue?6cbb","webpack:///./src/components/ColorPicker/Checkboard.vue?d198","webpack:///./src/components/ColorPicker/Checkboard.vue","webpack:///./src/components/ColorPicker/Checkboard.vue?fca6","webpack:///./src/components/ColorPicker/Alpha.vue","webpack:///./src/components/ColorPicker/Alpha.vue?f3a6","webpack:///./src/components/ColorPicker/Hue.vue?481f","webpack:///./src/components/ColorPicker/Hue.vue","webpack:///./src/components/ColorPicker/Hue.vue?01db","webpack:///./src/components/ColorPicker/Saturation.vue?1bc0","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?7588","webpack:///./src/components/ColorPicker/EditableInput.vue?bb22","webpack:///./src/components/ColorPicker/EditableInput.vue","webpack:///./src/components/ColorPicker/EditableInput.vue?e9b2","webpack:///./src/components/ColorPicker/index.vue","webpack:///./src/components/ColorPicker/index.vue?260d","webpack:///./src/components/FullscreenSpin.vue?a4d8","webpack:///./src/components/FullscreenSpin.vue","webpack:///./src/components/FullscreenSpin.vue?40fd","webpack:///./src/plugins/component.ts","webpack:///./src/components/Contextmenu/index.vue?a623","webpack:///./src/components/Contextmenu/MenuContent.vue?5a42","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?0215","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/index.vue?0141","webpack:///./src/plugins/directive/contextmenu.ts","webpack:///./src/plugins/directive/clickOutside.ts","webpack:///./src/plugins/directive/index.ts","webpack:///./src/main.ts","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?74eb","webpack:///./src/views/Screen/ScreenSlide.vue?34b9","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?0174","webpack:///./src/views/components/element/ProsemirrorEditor.vue?43ca","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3687","webpack:///./src/views/components/element/VideoElement/index.vue?c05f","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?32d2","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?177e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?1f92","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?17f5","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?e445","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?d1ea","webpack:///./src/views/Mobile.vue?4d0f","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?c4c4","webpack:///./src/views/components/element/ShapeElement/index.vue?e85c","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?b877","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?c3d6","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?4190","webpack:///./src/components/FileInput.vue?3731","webpack:///./src/components/ColorPicker/Alpha.vue?9bb4","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?16b4","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?d038","webpack:///./src/views/components/element/ImageElement/index.vue?9fed","webpack:///./src/views/Editor/Canvas/GridLines.vue?f4b3"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_ctx","_cache","$props","$setup","$data","$options","_component_Screen","_component_Editor","_component_Mobile","screening","isPC","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","SYS_FONTS","label","WEB_FONTS","equalNodeType","nodeType","node","Array","isArray","indexOf","type","findParentNodeClosestToPos","$pos","predicate","depth","pos","before","start","findParentNode","_ref","$from","findParentNodeOfType","selection","isActiveOfParentNodeType","state","schema","nodes","getMarkAttrs","view","doc","from","nodeAt","lastChild","marks","markType","attr","mark","attrs","getAttrValueInSelection","to","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","defaultRichTextAttrs","isSupportFont","fontName","arial","toLowerCase","size","width","height","str","canvas","document","createElement","ctx","getContext","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","filter","item","join","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","themeColor","fontColor","backgroundColor","wordSpace","outline","text","useSlidesStore","theme","slides","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","layouts","subColor","isDark","layoutsString","JSON","stringify","replaceAll","parse","actions","setTheme","themeProps","this","setViewportRatio","setSlides","addSlide","slide","addIndex","updateSlide","props","deleteSlide","slideId","slidesId","deleteSlidesIndex","index","findIndex","newIndex","Math","min","maxIndex","updateSlideIndex","addElement","element","currentSlideEls","newEls","updateElement","elIdList","removeElementProps","propName","propsNames","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","canvasPercentage","canvasScale","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","creatingElement","availableFonts","toolbarState","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","editingShapeElementId","selectedSlidesIndex","activeElementList","slidesStore","handleElement","find","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setCanvasPercentage","percentage","setCanvasScale","scale","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLinesState","show","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","setEditingShapeElementId","ellId","updateSelectedSlidesIndex","version","stores","snapshots","table","snapshotDB","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","orderBy","toArray","lastSnapshot","clear","newFirstSnapshot","add","addSnapshot","keys","allKeys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","useScreenStore","setScreening","createRandomCode","len","charset","maxLen","ret","randomIndex","floor","random","digit","navigator","userAgent","match","_hoisted_1","class","_hoisted_2","_hoisted_3","_component_EditorHeader","_component_Thumbnails","_component_CanvasTool","_component_Canvas","_component_Remark","_component_Toolbar","remarkHeight","$event","HOTKEY_DOC","children","CRYPTO_KEY","msg","AES","encrypt","toString","ciphertext","bytes","decrypt","enc","Utf8","Promise","resolve","reject","fakeElement","clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","clipboardData","pasteExcelClipboardString","lines","split","pop","colCount","getRectRotatedRange","radius","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","max","yRange","getRectRotatedOffset","originXRange","originYRange","rotatedXRange","rotatedYRange","offsetX","offsetY","getElementRange","minX","maxX","minY","maxY","getElementListRange","elementList","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","uniqLines","line","_line","uniqLine","rangeMin","range","rangeMax","groupIdMap","elIdMap","groupId","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","htmlText","replace","paragraphs","string","paragraph","snapshotStore","addHistorySnapshot","trailing","redo","leading","undo","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","useHistorySnapshot","setTimeout","createImageElement","createChartElement","chartType","gridColor","labels","legends","series","createTableElement","row","col","rowCells","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","createShapeElement","newElement","special","createLineElement","isBroken","isCurve","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","useCreateElement","addElementsFromClipboard","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromClipboard","newSlides","createTextElementFromClipboard","pasteTextClipboardData","options","onlySlide","onlyElements","_selectedSlidesIndex","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","message","warning","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","lockElement","newElementList","lock","unlockElement","groupElementIdList","deleteElement","deleteAllElements","canCombine","firstGroupId","inSameGroup","every","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","pasteElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","move","LEFT","RIGHT","getCombineElementLevelRange","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","exitFullscreen","mozCancelFullScreen","webkitCancelFullScreen","isFullscreen","mozFullScreen","webkitIsFullScreen","webkitFullScreen","screenStore","enterScreening","enterScreeningFromStart","exitScreening","scaleCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","order","tabActiveElement","currentIndex","nextIndex","nextElementId","firstElement","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","F","preventDefault","C","X","D","Z","Y","A","L","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","TAB","keyupListener","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","getAsFile","getAsString","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","href","target","_hoisted_28","_component_IconFolderClose","_component_MenuItem","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_Tooltip","_component_IconGithub","_component_HotkeyDoc","_component_Drawer","_component_FullscreenSpin","trigger","overlay","default","onClick","exportJSON","_","exportPPTX","toggleGridLines","goIssues","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","visible","onClose","loading","exporting","tip","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","tr","td","voidTags","jumpPosition","movePositopn","findTextEnd","isEnd","textEnd","char","charAt","test","lexText","tokens","lexComment","contentEnd","commentEnd","lexTagName","isTagChar","tagName","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","newWord","thirdWord","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","close","firstChar","tagEndClose","isComment","safeTag","lexer","root","stack","tagParents","parentTagName","rewindStack","newLength","token","tagToken","shouldRewind","isClosingTag","shouldRewindToAutoClose","previousIndex","attributes","tagEndToken","_token","elementNode","hasChildren","innerState","splitHead","sep","idx","unquote","car","formatAttributes","attribute","parts","trim","format","typeMap","1","2","4","8","16","32","64","128","256","512","pathData","commands","x","y","relative","x1","y1","x2","y2","lastPoint","cubicBezierPoints","px","py","cx","cy","rx","rX","ry","rY","xAxisRotation","xRot","largeArcFlag","lArcFlag","sweepFlag","cbPoint","characters","PREFIX","utf8Encode","utftext","charCodeAt","String","fromCharCode","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","isNaN","svg2Base64","XMLS","XMLSerializer","svg","serializeToString","blob","Blob","formatColor","_color","alpha","getAlpha","toHexString","formatHTML","html","ast","slices","obj","baseStyleObj","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","_value","fontSize","parseInt","highlight","strike","italic","fontFace","formatPoints","point","undefined","moveTo","pptx","pptxSlide","image","transparency","gradientColor","color1","color2","mix","textProps","valign","charSpacing","lineSpacingMultiple","shadow","blur","offset","v","angle","addText","flipH","clip","shape","rounding","link","hyperlink","url","addImage","svgRef","querySelector","base64SVG","fillColor","dashType","addShape","beginArrowType","endArrowType","chartData","chartColors","analogous","supplement","legend","showLegend","legendPos","legendColor","legendFontSize","ChartType","bar","barDir","horizontalBars","showArea","area","showLine","scatter","lineSize","lineSmooth","donut","doughnut","holeSize","pie","addChart","hiddenCells","rowData","cell","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","writeFile","fileName","error","hotkeys","hotkey","setup","__exports__","components","HotkeyDoc","useExport","open","_component_ElementCreateSelection","_component_AlignmentLine","_component_MultiSelectOperate","_component_Operate","_component_ViewportBackground","_component_MouseSelection","_component_EditableElement","_component_LinkDialog","_component_Modal","_directive_contextmenu","_directive_click_outside","ref","onMousewheel","handleMousewheelCanvas","onMousedown","handleClickBlankArea","onCreated","insertElementFromCreateSelection","viewportStyles","alignmentLines","axis","scaleMultiElement","elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement","transform","mouseSelectionState","isShow","quadrant","elementIndex","selectElement","linkDialogVisible","footer","centered","destroyOnClose","contextmenus","removeEditorAreaFocus","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","resizeObserver","ResizeObserver","observe","unobserve","viewportRef","updateMouseSelection","isMouseDown","viewportRect","getBoundingClientRect","minSelectionRange","startPageX","pageX","startPageY","pageY","onmousemove","currentPageX","currentPageY","offsetWidth","offsetHeight","abs","onmouseup","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","mouseX","mouseY","sorptionRange","ELEMENT_TYPE_ZH","chart","video","audio","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","startMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","adsorptionPoints","startX","startY","endX","endY","midX","midY","START","adsorptionPoint","END","newEl","MID","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","zIndex","currentElementComponent","ElementTypes","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","_component_ImageClipHandler","_component_ImageOutline","isCliping","clipData","clipPath","clipShape","onClip","handleClip","shadowStyle","flipStyle","handleSelectElement","draggable","imgPosition","onDragstart","alt","ClipPathTypes","ClipPaths","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","filters","_component_ImageRectOutline","_component_ImageEllipseOutline","_component_ImagePolygonOutline","overflow","stroke","outlineColor","outlineWidth","outlineStyle","Number","required","useElementOutline","Function","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","clipWrapperPositionStyle","bottomImgPositionStyle","topImgWrapperPositionStyle","topImgPositionStyle","moveClipRange","rotateClassName","scaleClipRange","emits","emit","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","topLeft","topTop","topWidth","topHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","bottomPosition","originPositopn","minWidth","minHeight","targetWidth","targetHeight","prefix","ImageOutline","ImageClipHandler","useElementShadow","useElementFlip","useFilter","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_component_ElementOutline","_component_ProsemirrorEditor","textShadow","letterSpacing","fontFamily","elementId","editable","onUpdate","updateContent","EmitterEvents","cmd","strong","list_item","childCount","rules","ordered_list","bullet_list","code_block","_orderedList","group","_bulletList","parseDOM","tag","getAttrs","dom","getAttribute","toDOM","excludes","forecolor","inline","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","plugins","emitter","mitt","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","dispatch","isList","listType","itemType","$to","blockRange","parentList","validContent","Boolean","autoFocus","editorView","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","focus","keydown","execCommand","payload","empty","addMark","removeMark","insertText","RICH_TEXT_COMMAND","off","ElementOutline","ProsemirrorEditor","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","_component_GradientDefs","onDblclick","enterEditing","gradient","updateText","gradientTransform","GradientDefs","exitEditing","defaultText","_text","_component_LinePointMarker","svgWidth","svgHeight","baseSize","lineDashArray","markerUnits","orient","markerWidth","markerHeight","refX","refY","pathMap","dot","arrow","rotateMap","LinePointMarker","_component_Chart","openDataEditor","flexDirection","chartHeight","slideScale","themeColors","chartRef","getDataAndOptions","propsOptopns","renderChart","updateChart","colors","updateTheme","setProperty","updateGridColor","Chart","OPEN_CHART_DATA_EDITOR","_component_EditableTable","onChange","updateTableCells","onChangeColWidths","widths","updateColWidths","onChangeSelectedCells","updateSelectedCells","startEdit","_component_CustomTextarea","totalWidth","dragLinePosition","handleMousedownColHandler","subThemeColor","colSizeList","span","tableCells","rowIndex","colIndex","selectedCells","activedCell","borderStyle","borderColor","borderWidth","getTextStyle","handleCellMousedown","onMouseenter","handleCellMouseenter","contenteditable","onUpdateValue","onInsertExcelData","insertExcelData","formatText","hideCells","textDecoration","fontWeight","fontStyle","immediate","onFocus","onBlur","onInput","textareaRef","onpaste","excelData","CustomTextarea","isStartSelect","startCell","endCell","set","newData","useSubThemeColor","reduce","a","b","removeSelectedCells","useHideCells","oldValue","selectedRange","handleMouseup","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","originWidth","round","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","EditableTable","updateTableElementHeight","openLatexEditor","OPEN_LATEX_EDITOR","_component_VideoPlayer","poster","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","hideController","onMousemove","autoHideController","toggle","playsinline","onDurationchange","handleDurationchange","onTimeupdate","handleTimeupdate","onEnded","handleEnded","onProgress","handleProgress","onPlay","onPause","onError","handleError","bezelTransition","onAnimationend","paused","toggleVolume","volume","handleMousedownVolumeBar","onTouchstart","handleClickVolumeBar","volumeBarWidth","ptime","dtime","speedMenuVisible","onMouseleave","speedOptions","playbackRate","speed","toggleLoop","handleMousedownPlayBar","handleMousemovePlayBar","playBarTimeVisible","playBarTimeLeft","playBarTime","loadedBarWidth","playedBarWidth","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","secondToTime","second","add0","num","hour","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","currentTime","duration","loaded","seek","time","play","pause","setVolume","muted","rate","buffered","thumbMove","clientX","changedTouches","thumbUp","volumeMove","volumeUp","tx","autoHideControllerTimer","clearTimeout","played","useMSE","VideoPlayer","_component_AudioPlayer","audioIconSize","audioPlayerPosition","handlePlayed","audioRef","AudioPlayer","audioWidth","audioHeight","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","hide","validator","_component_GridLines","backgroundStyle","bgColor","colorList","mostReadable","includeFallbackColors","gridSize","getPath","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","GridLines","useSlideBackgroundStyle","sizeStyle","createSelection","onContextmenu","lineData","selectionRef","absX","absY","isOpposite","endPageX","endPageY","defaultSize","_startX","_startY","_endX","_endY","_component_BorderLine","_component_ResizeHandler","borderLines","disableResize","resizeHandlers","textElementResizeHandlers","T","R","isWide","ResizeHandler","BorderLine","localActiveElementList","useCommonOperate","setRange","_component_LinkHandler","transformOrigin","currentOperateComponent","handlerVisible","elementIndexInAnimation","_component_RotateHandler","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","midHandler","cannotRotate","_component_Divider","removeLink","setLink","linkRegExp","useLink","LinkHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","_component_Input","_component_SelectOption","_component_Select","_component_ThumbnailSlide","_component_Button","tabs","tab","address","placeholder","selectedSlide","save","_component_ThumbnailElement","needScaleSize","chartWidth","_component_StaticTable","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","ThumbnailSlide","success","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","ElementCreateSelection","MultiSelectOperate","Operate","LinkDialog","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","throttleScaleCanvas","throttleUpdateSlideIndex","deltaY","useInsertFromCreateSelection","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconPicture","_component_FileInput","_component_ShapePool","_component_IconGraphicDesign","_component_Popover","_component_LinePool","_component_IconConnection","_component_ChartPool","_component_IconChartProportion","_component_TableGenerator","_component_IconInsertTable","_component_IconFormula","_component_MediaInput","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","_component_LaTeXEditor","mouseEnterDelay","drawText","files","insertImageElement","shapePoolVisible","onSelect","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","onInsert","latexEditorVisible","mediaInputVisible","onInsertVideo","onInsertAudio","canvasScalePercentage","shapeList","selectShape","SHAPE_LIST","lineList","selectLine","LINE_LIST","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","chartList","selectChart","_component_InputNumber","isCustom","customRow","customCol","insertCustomTable","handleClickTable","videoSrc","insertVideo","audioSrc","insertAudio","_component_TextArea","_component_FormulaContent","_component_SymbolContent","symbolList","selectedSymbolKey","symbolPool","insertSymbol","formulaList","hfmath","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","boxW","boxH","SCALE_X","SCALE_Y","FormulaContent","SymbolContent","textAreaRef","selectedSymbol","ShapePool","LinePool","ChartPool","TableGenerator","MediaInput","LaTeXEditor","_component_LayoutPool","_component_IconDown","_component_Draggable","presetLayoutPopoverVisible","modelValue","scroll","scrollSensitivity","setData","onEnd","handleDragEnd","itemKey","handleClickSlideThumbnail","fillDigit","slidesLoadLimit","contextmenusThumbnailItem","contextmenusThumbnails","timer","loadSlide","selectSlideTemplate","Draggable","LayoutPool","useLoadSlides","changSlideIndex","minIndex","eventData","oldIndex","_slides","_slide","ToolbarStates","currentTabs","currentPanelComponent","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_component_ColorPicker","_component_IconText","_component_IconBackgroundColor","_component_IconFill","_component_ButtonGroup","_component_IconTextBold","_component_CheckboxButton","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_CheckboxButtonGroup","_component_IconUpOne","_component_IconDownOne","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconAlignTextLeft","_component_RadioButton","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_RadioGroup","_component_IconList","_component_IconOrderedList","_component_IconRowHeight","_component_IconFullwidth","_component_ElementShadow","_component_ElementOpacity","presetStyles","emitBatchRichTextCommand","compact","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","updateFill","checked","updateLineHeight","lineHeightOptions","updateWordSpace","wordSpaceOptions","_component_Slider","updateOpacity","deep","_component_Switch","_component_ColorButton","fixed","hasOutline","toggleOutline","updateOutline","_component_IconPlatte","ColorButton","outlineProps","_outline","hasShadow","toggleShadow","updateShadow","shadowProps","_shadow","ElementOpacity","ElementShadow","_component_ElementFlip","_component_IconTailoring","_component_ElementFilter","_component_IconTransform","_component_IconUndo","_component_IconTheme","clipImage","clipPanelVisible","shapeClipPathOptions","presetImageClip","ratioClipOptions","ratio","replaceImage","resetImage","setBackgroundImage","_component_IconFlipVertically","_component_IconFlipHorizontally","updateFlip","flipProps","hasFilters","toggleFilters","filterOptions","updateFilter","defaultFilters","unit","_handleElement","originFilters","ElementFlip","ElementFilter","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","originLeft","originTop","imageRatio","distance","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","fillType","updateFillType","updateGradient","showTextTools","updateTextAlign","gradientProps","_gradient","updateLine","_component_Checkbox","_component_IconCloseSmall","_component_ChartDataEditor","chartDataEditorVisible","updateOptions","updateLegend","deleteThemeColor","presetThemesVisible","presetChartThemes","applyPresetTheme","disabled","addThemeColor","closable","onSave","updateData","tempRangeSize","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","focusCell","onPaste","handlePaste","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","initData","_data","inputRef","moveNextRow","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","optionProps","newOptions","textAttrs","updateTextAttrs","setTableRow","setTableCol","hasTheme","toggleTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","textAttrProp","themeProp","_theme","newTableCells","newColSizeList","updateLatex","updateLatexData","setVideoPoster","updateVideo","updateAudio","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","_component_IconSendToBack","_component_IconBringToFrontOne","_component_IconBringToFront","_component_IconSentToBack","_component_IconAlignLeft","_component_IconAlignVertically","_component_IconAlignRight","_component_IconAlignTop","_component_IconAlignHorizontally","_component_IconAlignBottom","_component_IconLock","_component_IconUnlock","_component_IconRotate","updateLeft","updateTop","updateWidth","updateFixedRatio","updateHeight","updateRotate45","flex","updateRotate","_rotate","_component_IconEffects","_component_IconClick","animationPoolVisible","onVisibleChange","handlePopoverVisibleChange","hoverPreviewAnimation","addAnimation","popoverMaskHide","handleElementAnimationName","animationSequence","elType","animationType","runAnimation","deleteAnimation","handleElementAnimation","updateElementAnimationDuration","ANIMATIONS","defaultDuration","animationTypes","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimation","animationItem","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","updateBackgroundType","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","updateViewportRatio","showPresetThemes","togglePresetThemesVisible","themes","applyThemeAllSlide","PRESET_THEMES","newBackground","currentTurningMode","updateTurningMode","applyAllSlide","turningMode","_component_IconGroup","_component_IconUngroup","alignElement","displayItemCount","uniformHorizontalDisplay","uniformVerticalDisplay","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","count","groupIdList","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","symbolPoolList","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_DESIGN","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","remark","newHeight","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","Remark","useGlobalHotkey","usePasteEvent","_component_ScreenSlide","_component_SlideThumbnails","_component_WritingBoardTool","_component_IconLeftTwo","_component_IconRightTwo","_component_IconWrite","mousewheelListener","touchStartListener","onTouchend","touchEndListener","slideWidth","slideHeight","animationIndex","turnSlideToId","slideThumbnailModelVisible","turnSlideToIndex","writingBoardToolVisible","execPrev","execNext","showPageNumber","_component_ScreenElement","visibility","needWaitAnimation","openLink","_component_BaseChartElement","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","ScreenElement","_component_IconArrowCircleLeft","_component_WritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","writingBoardColor","blackboard","model","writingBoardModel","changePen","changeEraser","clearCanvas","writingBoardColors","changeColor","closeWritingBoard","handleMousedown","handleMousemove","onMouseup","onTouchmove","mouseInCanvas","mouse","penSize","rubberSize","writingBoardRef","lastTime","lastLineWidth","updateMousePosition","initCanvas","lineCap","lineJoin","draw","posX","posY","lineWidth","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","maxV","minV","maxWidth","handleMove","Date","getTime","MouseEvent","TouchEvent","WritingBoard","ScreenSlide","SlideThumbnails","WritingBoardTool","setSlideContentSize","winWidth","winHeight","windowResizeListener","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","lastIndex","autoPlay","setInterval","touchInfo","SPACE","turnPrevSlide","turnNextSlide","_component_Alert","description","mobileRef","Editor","Screen","Mobile","onbeforeunload","install","app","component","$slots","accept","handleChange","_component_Saturation","_component_Checkboard","_component_Hue","_component_Alpha","_component_EditableInput","hue","onColorChange","currentColor","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","toDataURL","getCheckboard","checkboard","Checkboard","rgbaStr","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","pointerLeft","oldHue","pullDirection","hsla","toHsl","hueRef","percent","pointerTop","hsva","toHsv","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","Alpha","Hue","Saturation","EditableInput","rgbaString","colorString","updateRecentColorsCache","maxLength","recentColorsCache","localStorage","getItem","setItem","_component_Spin","FileInput","CheckboxButton","CheckboxButtonGroup","ColorPicker","FullscreenSpin","_component_MenuContent","removeContextmenu","menus","handleClickMenuItem","_component_menu_content","menu","MenuContent","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenWidth","screenHeight","CTX_CONTEXTMENU_HANDLER","event","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","contains","ClickOutsideDirective","directive","App","Group","Option","OptGroup","Button","TextArea","Item","use","mount"],"mappings":"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AS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,gFAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,wEAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,sHAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,oIAER,CACED,QAAS,IACTC,KAAM,qEAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,2EAER,CACED,QAAS,IACTC,KAAM,6HAKZ,CACE3F,KAAM,KACNuR,SAAU,CACR,CACE7L,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qOAER,CACED,QAAS,IACTC,KAAM,uFAER,CACED,QAAS,IACTC,KAAM,sFAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,6FAER,CA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","file":"js/app.750017ba.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseLatexElement.vue?vue&type=style&index=0&id=4118f3dd&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=4ae7c9aa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LineStylePanel.vue?vue&type=style&index=0&id=cbc4d7fa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ResizeHandler.vue?vue&type=style&index=0&id=680e5917&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ViewportBackground.vue?vue&type=style&index=0&id=4d0018d8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageClipHandler.vue?vue&type=style&index=0&id=d8c610c6&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WritingBoard.vue?vue&type=style&index=0&id=7ff9fa00&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementFlip.vue?vue&type=style&index=0&id=7bd50f1a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MenuContent.vue?vue&type=style&index=0&id=eb1555e8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=3168526a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=426704b7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementFilter.vue?vue&type=style&index=0&id=181ae0aa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AudioPlayer.vue?vue&type=style&index=0&id=5cabbb47&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./EditableInput.vue?vue&type=style&index=0&id=00ea8dfc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=ec4c62e4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=1386e8fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=66dd4448&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MultiPositionPanel.vue?vue&type=style&index=0&id=88d13362&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=32a5341e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Chart.vue?vue&type=style&index=1&id=3ac5559a&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseImageElement.vue?vue&type=style&index=0&id=0b1f9460&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MediaInput.vue?vue&type=style&index=0&id=4916d8ab&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=603a705d&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FullscreenSpin.vue?vue&type=style&index=0&id=6275c730&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=06a163ec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseTableElement.vue?vue&type=style&index=0&id=3bbcc75c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Hue.vue?vue&type=style&index=0&id=1766620e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseVideoElement.vue?vue&type=style&index=0&id=1c831c75&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WritingBoardTool.vue?vue&type=style&index=0&id=7a2e5324&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImagePolygonOutline.vue?vue&type=style&index=0&id=21ca95cc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=58d3557f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOutline.vue?vue&type=style&index=0&id=722bf8fa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseTextElement.vue?vue&type=style&index=0&id=2ec235c4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./HotkeyDoc.vue?vue&type=style&index=0&id=0418e74e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinkHandler.vue?vue&type=style&index=0&id=3250b72d&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SymbolPanel.vue?vue&type=style&index=0&id=6b8c5938&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageStylePanel.vue?vue&type=style&index=0&id=64e5a614&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TableGenerator.vue?vue&type=style&index=0&id=e325ce98&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenElement.vue?vue&type=style&index=0&id=3b227002&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseShapeElement.vue?vue&type=style&index=0&id=68d8af98&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ChartDataEditor.vue?vue&type=style&index=0&id=9a62f784&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=71428444&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=210672ee&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=0df9576a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideAnimationPanel.vue?vue&type=style&index=0&id=251ceb05&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinkDialog.vue?vue&type=style&index=0&id=5a0d0b33&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenVideoElement.vue?vue&type=style&index=0&id=a45a17a4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseLineElement.vue?vue&type=style&index=0&id=4032440c&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageRectOutline.vue?vue&type=style&index=0&id=48a14431&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeStylePanel.vue?vue&type=style&index=0&id=0e201fca&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Checkboard.vue?vue&type=style&index=0&id=0a544b87&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageElementOperate.vue?vue&type=style&index=0&id=24706869&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementCreateSelection.vue?vue&type=style&index=0&id=a8c28cdc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StaticTable.vue?vue&type=style&index=0&id=74b60291&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Chart.vue?vue&type=style&index=0&id=3ac5559a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./EditableTable.vue?vue&type=style&index=0&id=c0c56b6e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Saturation.vue?vue&type=style&index=0&id=8982eb4a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MultiSelectOperate.vue?vue&type=style&index=0&id=2d010d5c&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=e716fb74&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=1d67bb30&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=c09631b6&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageEllipseOutline.vue?vue&type=style&index=0&id=692bbda6&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=039e9a08&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=ee2d8b14&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=129e1afa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOpacity.vue?vue&type=style&index=0&id=f62a02b6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=5a6e24c6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementAnimationPanel.vue?vue&type=style&index=0&id=696c81e2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./VideoStylePanel.vue?vue&type=style&index=0&id=61bcaa2a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseChartElement.vue?vue&type=style&index=0&id=60d9ae43&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TextStylePanel.vue?vue&type=style&index=0&id=2d6233f4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AlignmentLine.vue?vue&type=style&index=0&id=62c9018e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideThumbnails.vue?vue&type=style&index=0&id=2236d5e3&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Screen = _resolveComponent(\"Screen\")!\n const _component_Editor = _resolveComponent(\"Editor\")!\n const _component_Mobile = _resolveComponent(\"Mobile\")!\n\n return (_ctx.screening)\n ? (_openBlock(), _createBlock(_component_Screen, { key: 0 }))\n : (_ctx.isPC)\n ? (_openBlock(), _createBlock(_component_Editor, { key: 1 }))\n : (_openBlock(), _createBlock(_component_Mobile, { key: 2 }))\n}","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\n\r\nexport type ElementOrderCommand = 'up' | 'down' | 'top' | 'bottom'\r\n\r\nexport const enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport type ElementAlignCommand = 'top'| 'bottom' | 'left' | 'right' | 'vertical' | 'horizontal' | 'center'\r\n\r\nexport const enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport type OperateBorderLine = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport type OperateResizeHandler = '' | 'left-top' | 'top' | 'right-top' | 'left' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport type OperateLineHandler = 'start' | 'end' | 'mid'\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n MID = 'mid',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number; \r\n y: number;\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal';\r\n axis: AlignmentLineAxis;\r\n length: number;\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number;\r\n maxX: number;\r\n minY: number;\r\n maxY: number;\r\n}\r\n\r\nexport type ImageClipDataRange = [[number, number], [number, number]]\r\n\r\nexport interface ImageClipData {\r\n range: ImageClipDataRange;\r\n path: string;\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange;\r\n position: {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n };\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text';\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape';\r\n data: ShapePoolItem;\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line';\r\n data: LinePoolItem;\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement","export const enum KEYS {\n C = 'C',\n X = 'X',\n Z = 'Z',\n Y = 'Y',\n A = 'A',\n G = 'G',\n L = 'L',\n F = 'F',\n D = 'D',\n B = 'B',\n MINUS = '-',\n EQUAL = '=',\n DIGIT_0 = '0',\n DELETE = 'DELETE',\n UP = 'ARROWUP',\n DOWN = 'ARROWDOWN',\n LEFT = 'ARROWLEFT',\n RIGHT = 'ARROWRIGHT',\n ENTER = 'ENTER',\n SPACE = ' ',\n TAB = 'TAB',\n BACKSPACE = 'BACKSPACE',\n}\n\nexport const HOTKEY_DOC = [\n {\n type: '通用',\n children: [\n { label: '剪切', value: 'Ctrl + X' },\n { label: '复制', value: 'Ctrl + C' },\n { label: '粘贴', value: 'Ctrl + V' },\n { label: '快速复制粘贴', value: 'Ctrl + D' },\n { label: '全选', value: 'Ctrl + A' },\n { label: '撤销', value: 'Ctrl + Z' },\n { label: '恢复', value: 'Ctrl + Y' },\n { label: '删除', value: 'Delete / Backspace' },\n { label: '多选', value: '按住 Ctrl 或 Shift' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '开始放映幻灯片', value: 'Ctrl + F' },\n { label: '切换上一页', value: '↑ / ←' },\n { label: '切换下一页', value: '↓ / → / Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚动' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '缩放画布到合适大小', value: 'Ctrl + 0' },\n { label: '编辑上一页', value: '↑ / ← / 鼠标上滚' },\n { label: '编辑下一页', value: '↓ / → / 鼠标下滚' },\n ],\n },\n {\n type: '元素操作',\n children: [\n { label: '移动', value: '↑ / ← / ↓ / →' },\n { label: '锁定', value: 'Ctrl + L' },\n { label: '组合', value: 'Ctrl + G' },\n { label: '取消组合', value: 'Ctrl + Shift + G' },\n { label: '置顶层', value: 'Alt + F' },\n { label: '置底层', value: 'Alt + B' },\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\n { label: '切换焦点元素', value: 'Tab' },\n { label: '确认图片裁剪', value: 'Enter' },\n ],\n },\n {\n type: '表格编辑',\n children: [\n { label: '聚焦到下一个单元格', value: 'Tab' },\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\n { label: '在右侧插入一列', value: 'Ctrl + →' },\n ],\n },\n {\n type: '图表数据编辑',\n children: [\n { label: '聚焦到下一行', value: 'Enter' },\n ],\n },\n {\n type: '文本编辑',\n children: [\n { label: '加粗', value: 'Ctrl + B' },\n { label: '斜体', value: 'Ctrl + I' },\n { label: '下划线', value: 'Ctrl + U' },\n { label: '删除线', value: 'Ctrl + D' },\n ],\n },\n]","export const SYS_FONTS = [\n { label: 'Arial', value: 'Arial' },\n { label: '微软雅黑', value: 'Microsoft Yahei' },\n { label: '宋体', value: 'SimSun' },\n { label: '黑体', value: 'SimHei' },\n { label: '楷体', value: 'KaiTi' },\n { label: '新宋体', value: 'NSimSun' },\n { label: '仿宋', value: 'FangSong' },\n { label: '苹方', value: 'PingFang SC' },\n { label: '华文黑体', value: 'STHeiti' },\n { label: '华文楷体', value: 'STKaiti' },\n { label: '华文宋体', value: 'STSong' },\n { label: '华文仿宋', value: 'STFangSong' },\n { label: '华文中宋', value: 'STZhongSong' },\n { label: '华文琥珀', value: 'STHupo' },\n { label: '华文新魏', value: 'STXinwei' },\n { label: '华文隶书', value: 'STLiti' },\n { label: '华文行楷', value: 'STXingkai' },\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\n { label: '兰亭黑', value: 'Lantinghei SC' },\n { label: '偏偏体', value: 'Hanzipen SC' },\n { label: '手札体', value: 'Hannotate SC' },\n { label: '宋体', value: 'Songti SC' },\n { label: '娃娃体', value: 'Wawati SC' },\n { label: '行楷', value: 'Xingkai SC' },\n { label: '圆体', value: 'Yuanti SC' },\n { label: '华文细黑', value: 'STXihei' },\n { label: '幼圆', value: 'YouYuan' },\n { label: '隶书', value: 'LiSu' },\n]\n\nexport const WEB_FONTS = [\n { label: '仓耳小丸子', value: '仓耳小丸子' },\n { label: '优设标题黑', value: '优设标题黑' },\n { label: '峰广明锐体', value: '峰广明锐体' },\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\n { label: '站酷快乐体', value: '站酷快乐体' },\n { label: '字制区喜脉体', value: '字制区喜脉体' },\n { label: '素材集市康康体', value: '素材集市康康体' },\n { label: '联盟起艺卢帅正锐黑体', value: '联盟起艺卢帅正锐黑体' },\n { label: '素材集市酷方体', value: '素材集市酷方体' },\n { label: '途牛类圆体', value: '途牛类圆体' },\n { label: '锐字真言体', value: '锐字真言体' },\n { label: '阿里汉仪智能黑体', value: '阿里汉仪智能黑体' },\n]","import { Node, NodeType, ResolvedPos, Mark } from 'prosemirror-model'\nimport { EditorState, Selection } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\n\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\n}\n\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\n}\n\nexport const findParentNodeOfType = (nodeType: NodeType) => {\n return (selection: Selection) => {\n return findParentNode((node: Node) => {\n return equalNodeType(nodeType, node)\n })(selection)\n }\n}\n\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\n const node = state.schema.nodes[nodeType]\n return !!findParentNodeOfType(node)(state.selection)\n}\n\nexport const getMarkAttrs = (view: EditorView) => {\n const { selection, doc } = view.state\n const { from } = selection\n\n let node = doc.nodeAt(from) || doc.nodeAt(from - 1)\n if (node?.lastChild) node = node.lastChild\n\n return node?.marks || []\n}\n\nexport const getAttrValue = (marks: Mark[], markType: string, attr: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\n }\n return null\n}\n\nexport const isActiveMark = (marks: Mark[], markType: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType) return true\n }\n return false\n}\n\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\n const { selection, doc } = view.state\n const { from, to } = selection\n\n let keepChecking = true\n let value = ''\n doc.nodesBetween(from, to, node => {\n if (keepChecking && node.attrs[attr]) {\n keepChecking = false\n value = node.attrs[attr]\n }\n return keepChecking\n })\n return value\n}\n\ninterface DefaultAttrs {\n color?: string;\n backcolor?: string;\n fontsize?: string;\n fontname?: string;\n align?: string;\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '#000',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, defaultAttrs: DefaultAttrs = {}) => {\n defaultAttrs = { ..._defaultAttrs, ...defaultAttrs }\n\n const marks = getMarkAttrs(view)\n\n const isBold = isActiveMark(marks, 'strong')\n const isEm = isActiveMark(marks, 'em')\n const isUnderline = isActiveMark(marks, 'underline')\n const isStrikethrough = isActiveMark(marks, 'strikethrough')\n const isSuperscript = isActiveMark(marks, 'superscript')\n const isSubscript = isActiveMark(marks, 'subscript')\n const isCode = isActiveMark(marks, 'code')\n const color = getAttrValue(marks, 'forecolor', 'color') || defaultAttrs.color\n const backcolor = getAttrValue(marks, 'backcolor', 'backcolor') || defaultAttrs.backcolor\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || defaultAttrs.fontsize\n const fontname = getAttrValue(marks, 'fontname', 'fontname') || defaultAttrs.fontname\n const align = getAttrValueInSelection(view, 'align') || defaultAttrs.align\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\n\n return {\n bold: isBold,\n em: isEm,\n underline: isUnderline,\n strikethrough: isStrikethrough,\n superscript: isSuperscript,\n subscript: isSubscript,\n code: isCode,\n color: color,\n backcolor: backcolor,\n fontsize: fontsize,\n fontname: fontname,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const defaultRichTextAttrs: TextAttrs = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n superscript: false,\n subscript: false,\n code: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n bulletList: false,\n orderedList: false,\n blockquote: false,\n}","/**\n * 判断操作系统是否存在某字体\n * @param fontName 字体名\n */\nexport const isSupportFont = (fontName: string) => {\n if (typeof fontName !== 'string') return false\n\n const arial = 'Arial'\n if (fontName.toLowerCase() === arial.toLowerCase()) return true\n\n const size = 100\n const width = 100\n const height = 100\n const str = 'a'\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return false\n\n canvas.width = width\n canvas.height = height\n ctx.textAlign = 'center'\n ctx.fillStyle = 'black'\n ctx.textBaseline = 'middle'\n\n const getDotArray = (_fontFamily: string) => {\n ctx.clearRect(0, 0, width, height)\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\n ctx.fillText(str, width / 2, height / 2)\n const imageData = ctx.getImageData(0, 0, width, height).data\n return [].slice.call(imageData).filter(item => item !== 0)\n }\n\n return getDotArray(arial).join('') !== getDotArray(fontName).join('')\n}","import { Slide } from '@/types/slides'\n\nexport const slides: Slide[] = [\n {\n id: 'test123456',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'idn7Mx',\n left: 355,\n top: 65.25,\n width: 585,\n height: 188,\n lineHeight: 1.2,\n content: '

PPTIST

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'text',\n id: '7stmVP',\n left: 355,\n top: 253.25,\n width: 585,\n height: 56,\n content: '

基于 Vue 3.x + TypeScript 的在线演示文稿应用

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '#5b9bd5',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '#ffffff',\n },\n }\n]","import { SlideTheme } from '@/types/slides'\n\nexport const theme: SlideTheme = {\n themeColor: '#5b9bd5',\n fontColor: '#333',\n fontName: 'Microsoft Yahei',\n backgroundColor: '#fff',\n}","/* eslint-disable max-lines */\n\nimport { Slide } from '@/types/slides'\n\nexport const layouts: Slide[] = [\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'AkIh3E',\n left: 355,\n top: 95.11111111111111,\n width: 585,\n height: 116,\n lineHeight: 1.2,\n content: '

输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 6\n },\n {\n type: 'text',\n id: '7stmVP',\n left: 355,\n top: 253.25,\n width: 585,\n height: 56,\n content: '

请在此处输入副标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '{{themeColor}}',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'ptNnUJ',\n left: 145,\n top: 148,\n width: 711,\n height: 77,\n lineHeight: 1.2,\n content: '

在此处添加标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'mRHvQN',\n left: 207.50000000000003,\n top: 249.84259259259264,\n width: 585,\n height: 56,\n content: '

在此处添加副标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'line',\n id: '7CQDwc',\n left: 323.09259259259267,\n top: 238.33333333333334,\n start: [0, 0],\n end: [354.8148148148148, 0],\n points: ['', ''],\n color: '{{themeColor}}',\n style: 'solid',\n width: 4\n }, \n {\n type: 'shape',\n id: '09wqWw',\n left: -27.648148148148138,\n top: 432.73148148148147,\n width: 1056.2962962962963,\n height: 162.96296296296296,\n viewBox: 200,\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'vSheCJ',\n left: 183.5185185185185,\n top: 175.5092592592593,\n width: 605.1851851851851,\n height: 185.18518518518516,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n }, \n {\n type: 'shape',\n id: 'Mpwv7x',\n left: 211.29629629629628,\n top: 201.80555555555557,\n width: 605.1851851851851,\n height: 185.18518518518516,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n opacity: 0.7\n }, \n {\n type: 'text',\n id: 'WQOTAp',\n left: 304.9074074074074,\n top: 198.10185185185182,\n width: 417.9629629629629,\n height: 140,\n content: '

感谢观看

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 5\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'MZVO1kkj',\n elements: [\n {\n type: 'shape',\n id: 'cql0h8',\n left: 0,\n top: 0,\n width: 352.59259259259255,\n height: 562.5,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n },\n {\n type: 'shape',\n id: '_RTaF4',\n left: 171.4814814814814,\n top: 100.13888888888887,\n width: 362.22222222222223,\n height: 362.22222222222223,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: 'rgba(255,255,255,0)',\n fixedRatio: false,\n rotate: 0,\n outline: {\n width: 10,\n color: '{{backgroundColor}}',\n style: 'solid'\n }\n },\n {\n type: 'shape',\n id: 'UZfo8N',\n left: 216.66666666666663,\n top: 145.32407407407408,\n width: 271.85185185185185,\n height: 271.85185185185185,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

01

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n },\n {\n type: 'text',\n id: 'ysqtBg',\n left: 561.4814814814814,\n top: 100.1388888888889,\n width: 359.25925925925924,\n height: 80,\n content: '

在此处输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n },\n {\n type: 'text',\n id: 'lXsoHa',\n left: 572.5925925925925,\n top: 202.3611111111111,\n width: 257.77777777777777,\n height: 260,\n content: '
  1. 在此处输入内容

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n lineHeight: 2,\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'EBBnTr',\n left: 360.5996472663139,\n top: 141.8496472663139,\n width: 278.80070546737215,\n height: 278.80070546737215,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 0,\n color: '{{backgroundColor}}',\n style: 'solid'\n }\n }, \n {\n type: 'shape',\n id: 'gDIWDH',\n left: 456.4373897707231,\n top: 98.287037037037,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

1

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'DUWT7E',\n left: 317.037037037037,\n top: 237.68738977072314,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

4

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'pbhn38',\n left: 456.43738977072303,\n top: 377.08774250440916,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

3

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'CvMKrO',\n left: 595.8377425044091,\n top: 237.6873897707231,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

2

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'adudHB',\n left: 402.962962962963,\n top: 39.39814814814815,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: '9UpDwg',\n left: 402.962962962963,\n top: 473.1018518518518,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'GERdpB',\n left: 111.48148148148151,\n top: 256.25,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'G5qoho',\n left: 691.1111111111111,\n top: 256.25,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'shape',\n id: 'vdZcI6',\n left: 415.18518518518516,\n top: 196.4351851851852,\n width: 169.62962962962962,\n height: 169.62962962962962,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'tYUmrx',\n left: 156.66666666666683,\n top: 149.02777777777771,\n width: 264.4444444444445,\n height: 264.4444444444445,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

01

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n },\n {\n type: 'shape',\n id: '0GVHf8',\n left: 342.2222222222223,\n top: 217.17592592592587,\n width: 128.14814814814812,\n height: 128.14814814814812,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0\n },\n {\n type: 'text',\n id: 'BO33Sv',\n left: 378.8888888888889,\n top: 235.24999999999994,\n width: 464.4444444444444,\n height: 92,\n content: '

在此处添加标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'Hj7ttp',\n left: 69.35185185185185,\n top: 49.21759259259262,\n width: 420,\n height: 63,\n lineHeight: 1.2,\n content: '

1.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'FmKMNB',\n left: 69.35185185185185,\n top: 129.28240740740745,\n width: 420,\n height: 384,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'rI7ZeO',\n left: 510.64814814814815,\n top: 49.21759259259262,\n width: 420,\n height: 63,\n lineHeight: 1.2,\n content: '

2.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'KspwGc',\n left: 510.64814814814815,\n top: 129.28240740740745,\n width: 420,\n height: 384,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'Rx63Jo',\n left: 69.35185185185179,\n top: 51.71759259259262,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

1.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'ulyuzE',\n left: 69.35185185185179,\n top: 131.78240740740745,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'kr35Ca',\n left: 510.6481481481481,\n top: 51.71759259259262,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

2.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'BNQSpC',\n left: 510.6481481481481,\n top: 131.78240740740745,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'Vr38Nu',\n left: 69.35185185185185,\n top: 301.71759259259255,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

3.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'IwKRSu',\n left: 69.35185185185185,\n top: 381.7824074074074,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: '0Opr1v',\n left: 510.64814814814815,\n top: 301.71759259259255,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

4.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: '4L9Uzz',\n left: 510.64814814814815,\n top: 381.7824074074074,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'GdEGxg',\n left: 134.53703703703704,\n top: 127.25,\n width: 152.77777777777777,\n height: 308,\n lineHeight: 1.8,\n content: '

请在此处输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 8,\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'y5sAfw',\n left: 332.8703703703704,\n top: 127.25,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容1

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'VeuocM',\n left: 332.8703703703704,\n top: 212.0648148148148,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容2

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'RyFWQe',\n left: 332.8703703703704,\n top: 296.8796296296296,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容3

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'Q56viI',\n left: 332.8703703703704,\n top: 381.69444444444446,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容4

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'SUWirT',\n left: 73.8888888888889,\n top: 64.21296296296302,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

1

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'YjzN1M',\n left: 148.70370370370372,\n top: 64.21296296296302,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'fS09I7',\n left: 527.5925925925926,\n top: 64.21296296296302,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

2

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'qCnfB1',\n left: 602.4074074074074,\n top: 64.21296296296302,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n },\n {\n type: 'shape',\n id: 'difAAT',\n left: 73.8888888888889,\n top: 221.25000000000003,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

3

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'EUlvMo',\n left: 148.70370370370372,\n top: 221.25000000000003,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'US_9jB',\n left: 527.5925925925926,\n top: 221.25000000000003,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

4

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '243MnQ',\n left: 602.4074074074074,\n top: 221.25000000000003,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'Y_KUj0',\n left: 73.8888888888889,\n top: 378.287037037037,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

5

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '9GglMe',\n left: 148.70370370370372,\n top: 378.287037037037,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'eSInje',\n left: 527.5925925925926,\n top: 378.287037037037,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

6

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '0S3yUg',\n left: 602.4074074074074,\n top: 378.287037037037,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n]","import { defineStore } from 'pinia'\nimport tinycolor from 'tinycolor2'\nimport { omit } from 'lodash'\nimport { Slide, SlideTheme, PPTElement } from '@/types/slides'\nimport { slides } from '@/mocks/slides'\nimport { theme } from '@/mocks/theme'\nimport { layouts } from '@/mocks/layout'\n\ninterface RemoveElementPropData {\n id: string;\n propName: string | string[];\n}\n\ninterface UpdateElementData {\n id: string | string[];\n props: Partial;\n}\n\nexport interface SlidesState {\n theme: SlideTheme;\n slides: Slide[];\n slideIndex: number;\n viewportRatio: number;\n}\n\nexport const useSlidesStore = defineStore('slides', {\n state: (): SlidesState => ({\n theme: theme, // 主题样式\n slides: slides, // 幻灯片页面数据\n slideIndex: 0, // 当前页面索引\n viewportRatio: 0.5625, // 可是区域比例,默认16:9\n }),\n\n getters: {\n currentSlide(state) {\n return state.slides[state.slideIndex]\n },\n \n currentSlideAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide) return null\n const animations = currentSlide.animations\n if (!animations) return null\n \n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return animations.filter(animation => elIds.includes(animation.elId))\n },\n \n layouts(state) {\n const {\n themeColor,\n fontColor,\n fontName,\n backgroundColor,\n } = state.theme\n \n const subColor = tinycolor(fontColor).isDark() ? 'rgba(230, 230, 230, 0.5)' : 'rgba(180, 180, 180, 0.5)'\n \n const layoutsString = JSON.stringify(layouts)\n .replaceAll('{{themeColor}}', themeColor)\n .replaceAll('{{fontColor}}', fontColor)\n .replaceAll('{{fontName}}', fontName)\n .replaceAll('{{backgroundColor}}', backgroundColor)\n .replaceAll('{{subColor}}', subColor)\n \n return JSON.parse(layoutsString)\n },\n },\n\n actions: {\n setTheme(themeProps: Partial) {\n this.theme = { ...this.theme, ...themeProps }\n },\n \n setViewportRatio(viewportRatio: number) {\n this.viewportRatio = viewportRatio\n },\n \n setSlides(slides: Slide[]) {\n this.slides = slides\n },\n \n addSlide(slide: Slide | Slide[]) {\n const slides = Array.isArray(slide) ? slide : [slide]\n const addIndex = this.slideIndex + 1\n this.slides.splice(addIndex, 0, ...slides)\n this.slideIndex = addIndex\n },\n \n updateSlide(props: Partial) {\n const slideIndex = this.slideIndex\n this.slides[slideIndex] = { ...this.slides[slideIndex], ...props }\n },\n \n deleteSlide(slideId: string | string[]) {\n const slidesId = Array.isArray(slideId) ? slideId : [slideId]\n \n const deleteSlidesIndex = []\n for (let i = 0; i < slidesId.length; i++) {\n const index = this.slides.findIndex(item => item.id === slidesId[i])\n deleteSlidesIndex.push(index)\n }\n let newIndex = Math.min(...deleteSlidesIndex)\n \n const maxIndex = this.slides.length - slidesId.length - 1\n if (newIndex > maxIndex) newIndex = maxIndex\n \n this.slideIndex = newIndex\n this.slides = this.slides.filter(item => !slidesId.includes(item.id))\n },\n \n updateSlideIndex(index: number) {\n this.slideIndex = index\n },\n \n addElement(element: PPTElement | PPTElement[]) {\n const elements = Array.isArray(element) ? element : [element]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = [...currentSlideEls, ...elements]\n this.slides[this.slideIndex].elements = newEls\n },\n \n updateElement(data: UpdateElementData) {\n const { id, props } = data\n const elIdList = typeof id === 'string' ? [id] : id\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return elIdList.includes(el.id) ? { ...el, ...props } : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n \n removeElementProps(data: RemoveElementPropData) {\n const { id, propName } = data\n const propsNames = typeof propName === 'string' ? [propName] : propName\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return el.id === id ? omit(el, propsNames) : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n },\n})","import { defineStore } from 'pinia'\nimport { CreatingElement } from '@/types/edit'\nimport { ToolbarState } from '@/types/toolbar'\nimport { SYS_FONTS } from '@/configs/font'\nimport { TextAttrs, defaultRichTextAttrs } from '@/utils/prosemirror/utils'\nimport { isSupportFont } from '@/utils/font'\n\nimport { useSlidesStore } from './slides'\n\nexport interface MainState {\n activeElementIdList: string[];\n handleElementId: string;\n activeGroupElementId: string;\n canvasPercentage: number;\n canvasScale: number;\n thumbnailsFocus: boolean;\n editorAreaFocus: boolean;\n disableHotkeys: boolean;\n showGridLines: boolean;\n creatingElement: CreatingElement | null;\n availableFonts: typeof SYS_FONTS;\n toolbarState: ToolbarState;\n clipingImageElementId: string;\n isScaling: boolean;\n richTextAttrs: TextAttrs;\n selectedTableCells: string[];\n editingShapeElementId: string;\n selectedSlidesIndex: number[];\n}\n\nexport const useMainStore = defineStore('main', {\n state: (): MainState => ({\n activeElementIdList: [], // 被选中的元素ID集合,包含 handleElementId\n handleElementId: '', // 正在操作的元素ID\n activeGroupElementId: '', // 组合元素成员中,被选中可独立操作的元素ID\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n showGridLines: false, // 显示网格线\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n availableFonts: [], // 当前环境可用字体\n toolbarState: 'slideDesign', // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n editingShapeElementId: '', // 当前正处在编辑文字状态的形状ID \n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n }),\n\n getters: {\n activeElementList(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return []\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\n },\n \n handleElement(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return null\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\n },\n },\n\n actions: {\n setActiveElementIdList(activeElementIdList: string[]) {\n if (activeElementIdList.length === 1) this.handleElementId = activeElementIdList[0]\n else this.handleElementId = ''\n \n this.activeElementIdList = activeElementIdList\n },\n \n setHandleElementId(handleElementId: string) {\n this.handleElementId = handleElementId\n },\n \n setActiveGroupElementId(activeGroupElementId: string) {\n this.activeGroupElementId = activeGroupElementId\n },\n \n setCanvasPercentage(percentage: number) {\n this.canvasPercentage = percentage\n },\n \n setCanvasScale(scale: number) {\n this.canvasScale = scale\n },\n \n setThumbnailsFocus(isFocus: boolean) {\n this.thumbnailsFocus = isFocus\n },\n \n setEditorareaFocus(isFocus: boolean) {\n this.editorAreaFocus = isFocus\n },\n \n setDisableHotkeysState(disable: boolean) {\n this.disableHotkeys = disable\n },\n \n setGridLinesState(show: boolean) {\n this.showGridLines = show\n },\n \n setCreatingElement(element: CreatingElement | null) {\n this.creatingElement = element\n },\n \n setAvailableFonts() {\n this.availableFonts = SYS_FONTS.filter(font => isSupportFont(font.value))\n },\n \n setToolbarState(toolbarState: ToolbarState) {\n this.toolbarState = toolbarState\n },\n \n setClipingImageElementId(elId: string) {\n this.clipingImageElementId = elId\n },\n \n setRichtextAttrs(attrs: TextAttrs) {\n this.richTextAttrs = attrs\n },\n \n setSelectedTableCells(cells: string[]) {\n this.selectedTableCells = cells\n },\n \n setScalingState(isScaling: boolean) {\n this.isScaling = isScaling\n },\n \n setEditingShapeElementId(ellId: string) {\n this.editingShapeElementId = ellId\n },\n \n updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n },\n})","import Dexie from 'dexie'\nimport { Slide } from '@/types/slides'\n\nexport interface Snapshot {\n index: number;\n slides: Slide[];\n}\n\nclass SnapshotDatabase extends Dexie {\n public snapshots: Dexie.Table\n\n public constructor() {\n super('SnapshotDatabase')\n this.version(1).stores({\n snapshots: '++id'\n })\n this.snapshots = this.table('snapshots')\n }\n}\n\nexport const snapshotDB = new SnapshotDatabase()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { snapshotDB, Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number;\n snapshotLength: number;\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const lastSnapshot = snapshots.slice(-1)[0]\n \n if (lastSnapshot) {\n snapshotDB.snapshots.clear()\n }\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await snapshotDB.snapshots.add(newFirstSnapshot)\n this.setSnapshotCursor(0)\n this.setSnapshotLength(1)\n },\n \n async addSnapshot() {\n const slidesStore = useSlidesStore()\n\n // 获取当前indexeddb中全部快照的ID\n const allKeys = await snapshotDB.snapshots.orderBy('id').keys()\n \n let needDeleteKeys: IndexableTypeArray = []\n \n // 记录需要删除的快照ID\n // 若当前快照指针不处在最后一位,那么再添加快照时,应该将当前指针位置后面的快照全部删除,对应的实际情况是:\n // 用户撤回多次后,再进行操作(添加快照),此时原先被撤销的快照都应该被删除\n if (this.snapshotCursor >= 0 && this.snapshotCursor < allKeys.length - 1) {\n needDeleteKeys = allKeys.slice(this.snapshotCursor + 1)\n }\n \n // 添加新快照\n const snapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await snapshotDB.snapshots.add(snapshot)\n \n // 计算当前快照长度,用于设置快照指针的位置(此时指针应该处在最后一位,即:快照长度 - 1)\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\n \n // 快照数量超过长度限制时,应该将头部多余的快照删除\n const snapshotLengthLimit = 20\n if (snapshotLength > snapshotLengthLimit) {\n needDeleteKeys.push(allKeys[0])\n snapshotLength--\n }\n \n // 快照数大于1时,需要保证撤回操作后维持页面焦点不变:也就是将倒数第二个快照对应的索引设置为当前页的索引\n // https://github.com/pipipi-pikachu/PPTist/issues/27\n if (snapshotLength >= 2) {\n snapshotDB.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await snapshotDB.snapshots.bulkDelete(needDeleteKeys)\n \n this.setSnapshotCursor(snapshotLength - 1)\n this.setSnapshotLength(snapshotLength)\n },\n \n async unDo() {\n if (this.snapshotCursor <= 0) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor - 1\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n \n async reDo() {\n if (this.snapshotCursor >= this.snapshotLength - 1) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor + 1\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface KeyboardState {\n ctrlKeyState: boolean;\n shiftKeyState: boolean;\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n }),\n\n getters: {\n ctrlOrShiftKeyActive(state) {\n return state.ctrlKeyState || state.shiftKeyState\n },\n },\n\n actions: {\n setCtrlKeyState(active: boolean) {\n this.ctrlKeyState = active\n },\n setShiftKeyState(active: boolean) {\n this.shiftKeyState = active\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface ScreenState {\n screening: boolean;\n}\n\nexport const useScreenStore = defineStore('screen', {\n state: (): ScreenState => ({\n screening: false, // 是否进入放映状态\n }),\n\n actions: {\n setScreening(screening: boolean) {\n this.screening = screening\n },\n },\n})","import { padStart } from 'lodash'\n\n/**\n * 生成随机码\n * @param len 随机码长度\n */\nexport const createRandomCode = (len = 6) => {\n const charset = `_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`\n const maxLen = charset.length\n let ret = ''\n for (let i = 0; i < len; i++) {\n const randomIndex = Math.floor(Math.random() * maxLen)\n ret += charset[randomIndex]\n }\n return ret\n}\n\n/**\n * 补足数字位数\n * @param digit 数字\n * @param len 位数\n */\nexport const fillDigit = (digit: number, len: number) => {\n return padStart('' + digit, len, '0')\n}\n\n/**\n * 判断设备\n */\nexport const isPC = () => {\n return !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-55178b6a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-editor\" }\nconst _hoisted_2 = { class: \"layout-content\" }\nconst _hoisted_3 = { class: \"layout-content-center\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_EditorHeader = _resolveComponent(\"EditorHeader\")!\n const _component_Thumbnails = _resolveComponent(\"Thumbnails\")!\n const _component_CanvasTool = _resolveComponent(\"CanvasTool\")!\n const _component_Canvas = _resolveComponent(\"Canvas\")!\n const _component_Remark = _resolveComponent(\"Remark\")!\n const _component_Toolbar = _resolveComponent(\"Toolbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_EditorHeader, { class: \"layout-header\" }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Thumbnails, { class: \"layout-content-left\" }),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_CanvasTool, { class: \"center-top\" }),\n _createVNode(_component_Canvas, {\n class: \"center-body\",\n style: _normalizeStyle({ height: `calc(100% - ${_ctx.remarkHeight + 40}px)` })\n }, null, 8, [\"style\"]),\n _createVNode(_component_Remark, {\n class: \"center-bottom\",\n height: _ctx.remarkHeight,\n \"onUpdate:height\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.remarkHeight) = $event)),\n style: _normalizeStyle({ height: `${_ctx.remarkHeight}px` })\n }, null, 8, [\"height\", \"style\"])\n ]),\n _createVNode(_component_Toolbar, { class: \"layout-content-right\" })\n ])\n ]))\n}","import CryptoJS from 'crypto-js'\n\nconst CRYPTO_KEY = 'pptist'\n\n/**\n * 加密\n * @param msg 待加密字符串\n */\nexport const encrypt = (msg: string) => {\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\n}\n\n/**\n * 解密\n * @param ciphertext 待解密字符串\n */\nexport const decrypt = (ciphertext: string) => {\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\n return bytes.toString(CryptoJS.enc.Utf8)\n}","import Clipboard from 'clipboard'\nimport { decrypt } from '@/utils/crypto'\n\n/**\n * 复制文本到剪贴板\n * @param text 文本内容\n */\nexport const copyText = (text: string) => {\n return new Promise((resolve, reject) => {\n const fakeElement = document.createElement('button')\n const clipboard = new Clipboard(fakeElement, {\n text: () => text,\n action: () => 'copy',\n container: document.body,\n })\n clipboard.on('success', e => {\n clipboard.destroy()\n resolve(e)\n })\n clipboard.on('error', e => {\n clipboard.destroy()\n reject(e)\n })\n document.body.appendChild(fakeElement)\n fakeElement.click()\n document.body.removeChild(fakeElement)\n })\n}\n\n// 读取剪贴板\nexport const readClipboard = (): Promise => {\n return new Promise((resolve, reject) => {\n if (navigator.clipboard?.readText) {\n navigator.clipboard.readText().then(text => {\n if (!text) reject('剪贴板为空或者不包含文本')\n return resolve(text)\n })\n }\n else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V')\n })\n}\n\n// 解析加密后的剪贴板内容\nexport const pasteCustomClipboardString = (text: string) => {\n let clipboardData\n try {\n clipboardData = JSON.parse(decrypt(text))\n }\n catch {\n clipboardData = text\n }\n\n return clipboardData\n}\n\n// 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式\nexport const pasteExcelClipboardString = (text: string): string[][] | null => {\n const lines: string[] = text.split('\\r\\n')\n\n if (lines[lines.length - 1] === '') lines.pop()\n\n let colCount = -1\n const data: string[][] = []\n for (const index in lines) {\n data[index] = lines[index].split('\\t')\n\n if (data[index].length === 1) return null\n if (colCount === -1) colCount = data[index].length\n else if (colCount !== data[index].length) return null\n }\n return data\n}","import tinycolor from 'tinycolor2'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\n\r\ninterface RotatedElementData {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n rotate: number;\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置范围\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedRange = (element: RotatedElementData) => {\r\n const { left, top, width, height, rotate = 0 } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - rotate - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - rotate) * Math.PI / 180\r\n\r\n const middleLeft = left + width / 2\r\n const middleTop = top + height / 2\r\n\r\n const xAxis = [\r\n middleLeft + radius * Math.cos(tlbraRadian),\r\n middleLeft + radius * Math.cos(trblaRadian),\r\n middleLeft - radius * Math.cos(tlbraRadian),\r\n middleLeft - radius * Math.cos(trblaRadian),\r\n ]\r\n const yAxis = [\r\n middleTop - radius * Math.sin(tlbraRadian),\r\n middleTop - radius * Math.sin(trblaRadian),\r\n middleTop + radius * Math.sin(tlbraRadian),\r\n middleTop + radius * Math.sin(trblaRadian),\r\n ]\r\n\r\n return {\r\n xRange: [Math.min(...xAxis), Math.max(...xAxis)],\r\n yRange: [Math.min(...yAxis), Math.max(...yAxis)],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置与旋转之前位置的偏离距离\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedOffset = (element: RotatedElementData) => {\r\n const { xRange: originXRange, yRange: originYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: 0,\r\n })\r\n const { xRange: rotatedXRange, yRange: rotatedYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n return {\r\n offsetX: rotatedXRange[0] - originXRange[0],\r\n offsetY: rotatedYRange[0] - originYRange[0],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的位置范围\r\n * @param element 元素信息\r\n */\r\nexport const getElementRange = (element: PPTElement) => {\r\n let minX, maxX, minY, maxY\r\n\r\n if (element.type === 'line') {\r\n minX = element.left\r\n maxX = element.left + Math.max(element.start[0], element.end[0])\r\n minY = element.top\r\n maxY = element.top + Math.max(element.start[1], element.end[1])\r\n }\r\n else if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height, rotate } = element\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n minX = xRange[0]\r\n maxX = xRange[1]\r\n minY = yRange[0]\r\n maxY = yRange[1]\r\n }\r\n else {\r\n minX = element.left\r\n maxX = element.left + element.width\r\n minY = element.top\r\n maxY = element.top + element.height\r\n }\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\n/**\r\n * 计算一组元素在画布中的位置范围\r\n * @param elementList 一组元素信息\r\n */\r\nexport const getElementListRange = (elementList: PPTElement[]) => {\r\n const leftValues: number[] = []\r\n const topValues: number[] = []\r\n const rightValues: number[] = []\r\n const bottomValues: number[] = []\r\n\r\n elementList.forEach(element => {\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n leftValues.push(minX)\r\n topValues.push(minY)\r\n rightValues.push(maxX)\r\n bottomValues.push(maxY)\r\n })\r\n\r\n const minX = Math.min(...leftValues)\r\n const maxX = Math.max(...rightValues)\r\n const minY = Math.min(...topValues)\r\n const maxY = Math.max(...bottomValues)\r\n\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\nexport interface AlignLine {\r\n value: number;\r\n range: [number, number];\r\n}\r\n\r\n/**\r\n * 将一组对齐吸附线进行去重:同位置的的多条对齐吸附线仅留下一条,取该位置所有对齐吸附线的最大值和最小值为新的范围\r\n * @param lines 一组对齐吸附线信息\r\n */\r\nexport const uniqAlignLines = (lines: AlignLine[]) => {\r\n const uniqLines: AlignLine[] = []\r\n lines.forEach(line => {\r\n const index = uniqLines.findIndex(_line => _line.value === line.value)\r\n if (index === -1) uniqLines.push(line)\r\n else {\r\n const uniqLine = uniqLines[index]\r\n const rangeMin = Math.min(uniqLine.range[0], line.range[0])\r\n const rangeMax = Math.max(uniqLine.range[1], line.range[1])\r\n const range: [number, number] = [rangeMin, rangeMax]\r\n const _line = { value: line.value, range }\r\n uniqLines[index] = _line\r\n }\r\n })\r\n return uniqLines\r\n}\r\n\r\n/**\r\n * 以元素列表为基础,为每一个元素生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于复制元素时,维持数据中各处元素ID原有的关系\r\n * 例如:原本两个组合的元素拥有相同的groupId,复制后依然会拥有另一个相同的groupId\r\n * @param elements 元素列表数据\r\n */\r\nexport const createElementIdMap = (elements: PPTElement[]) => {\r\n const groupIdMap = {}\r\n const elIdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = createRandomCode()\r\n }\r\n elIdMap[element.id] = createRandomCode()\r\n }\r\n return {\r\n groupIdMap,\r\n elIdMap,\r\n }\r\n}\r\n\r\n/**\r\n * 根据表格的主题色,获取对应用于配色的子颜色\r\n * @param themeColor 主题色\r\n */\r\nexport const getTableSubThemeColor = (themeColor: string) => {\r\n const rgba = tinycolor(themeColor)\r\n return [\r\n rgba.setAlpha(0.3).toRgbString(),\r\n rgba.setAlpha(0.1).toRgbString(),\r\n ]\r\n}\r\n\r\n/**\r\n * 获取线条元素路径字符串\r\n * @param element 线条元素\r\n */\r\nexport const getLineElementPath = (element: PPTLineElement) => {\r\n const start = element.start.join(',')\r\n const end = element.end.join(',')\r\n if (element.broken) {\r\n const mid = element.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n}","/**\r\n * 将普通文本转为带段落信息的HTML字符串\r\n * @param text 文本\r\n */\r\nexport const parseText2Paragraphs = (text: string) => {\r\n const htmlText = text.replace(/[\\n\\r]+/g, '
')\r\n const paragraphs = htmlText.split('
')\r\n let string = ''\r\n for (const paragraph of paragraphs) {\r\n if (paragraph) string += `
${paragraph}
`\r\n }\r\n return string\r\n}","import { debounce, throttle} from 'lodash'\nimport { useSnapshotStore } from '@/store'\n\nexport default () => {\n const snapshotStore = useSnapshotStore()\n\n // 添加历史快照(历史记录)\n const addHistorySnapshot = debounce(function() {\n snapshotStore.addSnapshot()\n }, 300, { trailing: true })\n\n // 重做\n const redo = throttle(function() {\n snapshotStore.reDo()\n }, 100, { leading: true, trailing: false })\n\n // 撤销\n const undo = throttle(function() {\n snapshotStore.unDo()\n }, 100, { leading: true, trailing: false })\n\n return {\n addHistorySnapshot,\n redo,\n undo,\n }\n}","interface ImageSize {\n width: number;\n height: number;\n}\n\n/**\n * 获取图片的原始宽高\n * @param src 图片地址\n */\nexport const getImageSize = (src: string): Promise => {\n return new Promise(resolve => {\n const img = document.createElement('img')\n img.src = src\n img.style.opacity = '0'\n document.body.appendChild(img)\n\n img.onload = () => {\n const imgWidth = img.clientWidth\n const imgHeight = img.clientHeight\n \n img.onload = null\n img.onerror = null\n\n document.body.removeChild(img)\n\n resolve({ width: imgWidth, height: imgHeight })\n }\n\n img.onerror = () => {\n img.onload = null\n img.onerror = null\n }\n })\n}\n\n/**\n * 读取图片文件的dataURL\n * @param file 图片文件\n */\nexport const getImageDataURL = (file: File): Promise => {\n return new Promise(resolve => {\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n resolve(reader.result as string)\n })\n reader.readAsDataURL(file)\n })\n}","export const VIEWPORT_SIZE = 1000","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { createRandomCode } from '@/utils/common'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { PPTLineElement, ChartType, PPTElement, TableCell, TableCellStyle, PPTShapeElement } from '@/types/slides'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface CommonElementPosition {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface LineElementPosition {\n top: number;\n left: number;\n start: [number, number];\n end: [number, number];\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 创建(插入)一个元素并将其设置为被选中元素\n const createElement = (element: PPTElement) => {\n slidesStore.addElement(element)\n mainStore.setActiveElementIdList([element.id])\n\n if (creatingElement.value) mainStore.setCreatingElement(null)\n\n setTimeout(() => {\n mainStore.setEditorareaFocus(true)\n }, 0)\n\n addHistorySnapshot()\n }\n\n /**\n * 创建图片元素\n * @param src 图片地址\n */\n const createImageElement = (src: string) => {\n getImageSize(src).then(({ width, height }) => {\n const scale = height / width\n \n if (scale < viewportRatio.value && width > VIEWPORT_SIZE) {\n width = VIEWPORT_SIZE\n height = width * scale\n }\n else if (height > VIEWPORT_SIZE * viewportRatio.value) {\n height = VIEWPORT_SIZE * viewportRatio.value\n width = height / scale\n }\n\n createElement({\n type: 'image',\n id: createRandomCode(),\n src,\n width,\n height,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n fixedRatio: true,\n rotate: 0,\n })\n })\n }\n \n /**\n * 创建图表元素\n * @param chartType 图表类型\n */\n const createChartElement = (chartType: ChartType) => {\n createElement({\n type: 'chart',\n id: createRandomCode(),\n chartType,\n left: 300,\n top: 81.25,\n width: 400,\n height: 400,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\n legends: ['系列1'],\n series: [\n [12, 19, 5, 2, 18],\n ],\n },\n })\n }\n \n /**\n * 创建表格元素\n * @param row 行数\n * @param col 列数\n */\n const createTableElement = (row: number, col: number) => {\n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n rowCells.push({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '', style })\n }\n data.push(rowCells)\n }\n\n const DEFAULT_CELL_WIDTH = 100\n const DEFAULT_CELL_HEIGHT = 36\n\n const colWidths: number[] = new Array(col).fill(1 / col)\n\n const width = col * DEFAULT_CELL_WIDTH\n const height = row * DEFAULT_CELL_HEIGHT\n\n createElement({\n type: 'table',\n id: createRandomCode(),\n width,\n height,\n colWidths,\n rotate: 0,\n data,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: theme.value.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n const createTextElement = (position: CommonElementPosition, content = '请输入内容') => {\n const { left, top, width, height } = position\n createElement({\n type: 'text',\n id: createRandomCode(),\n left, \n top, \n width, \n height,\n content,\n rotate: 0,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n })\n }\n \n /**\n * 创建形状元素\n * @param position 位置大小信息\n * @param data 形状路径信息\n */\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem) => {\n const { left, top, width, height } = position\n const newElement: PPTShapeElement = {\n type: 'shape',\n id: createRandomCode(),\n left, \n top, \n width, \n height,\n viewBox: data.viewBox,\n path: data.path,\n fill: theme.value.themeColor,\n fixedRatio: false,\n rotate: 0,\n }\n if (data.special) newElement.special = true\n createElement(newElement)\n }\n \n /**\n * 创建线条元素\n * @param position 位置大小信息\n * @param data 线条的路径和样式\n */\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\n const { left, top, start, end } = position\n\n const newElement: PPTLineElement = {\n type: 'line',\n id: createRandomCode(),\n left, \n top, \n start,\n end,\n points: data.points,\n color: theme.value.themeColor,\n style: data.style,\n width: 2,\n }\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n createElement(newElement)\n }\n \n /**\n * 创建LaTeX元素\n * @param svg SVG代码\n */\n const createLatexElement = (data: { path: string; latex: string; w: number; h: number; }) => {\n createElement({\n type: 'latex',\n id: createRandomCode(),\n width: data.w,\n height: data.h,\n rotate: 0,\n left: (VIEWPORT_SIZE - data.w) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - data.h) / 2,\n path: data.path,\n latex: data.latex,\n color: theme.value.fontColor,\n strokeWidth: 2,\n viewBox: [data.w, data.h],\n fixedRatio: true,\n })\n }\n \n /**\n * 创建视频元素\n * @param src 视频地址\n */\n const createVideoElement = (src: string) => {\n createElement({\n type: 'video',\n id: createRandomCode(),\n width: 500,\n height: 300,\n rotate: 0,\n left: (VIEWPORT_SIZE - 500) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 300) / 2,\n src,\n })\n }\n \n /**\n * 创建音频元素\n * @param src 音频地址\n */\n const createAudioElement = (src: string) => {\n createElement({\n type: 'audio',\n id: createRandomCode(),\n width: 50,\n height: 50,\n rotate: 0,\n left: (VIEWPORT_SIZE - 50) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 50) / 2,\n loop: false,\n autoplay: false,\n fixedRatio: true,\n color: theme.value.themeColor,\n src,\n })\n }\n\n return {\n createImageElement,\n createChartElement,\n createTableElement,\n createTextElement,\n createShapeElement,\n createLineElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { PPTElement, Slide } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { createElementIdMap } from '@/utils/element'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useCreateElement from '@/hooks/useCreateElement'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean;\n onlyElements?: boolean;\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n const { createTextElement } = useCreateElement()\n\n /**\n * 粘贴元素(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromClipboard = (elements: PPTElement[]) => {\n const { groupIdMap, elIdMap } = createElementIdMap(elements)\n const currentSlideElementIdList = currentSlide.value.elements.map(el => el.id)\n \n for (const element of elements) {\n const inCurrentSlide = currentSlideElementIdList.includes(element.id)\n \n element.id = elIdMap[element.id]\n\n if (inCurrentSlide) {\n element.left = element.left + 10\n element.top = element.top + 10\n }\n\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n slidesStore.addElement(elements)\n mainStore.setActiveElementIdList(Object.values(elIdMap))\n addHistorySnapshot()\n }\n\n /**\n * 粘贴页面\n * @param slide 页面数据\n */\n const addSlidesFromClipboard = (slides: Slide[]) => {\n const newSlides = slides.map(slide => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: createRandomCode(8),\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n /**\n * 粘贴普通文本:创建为新的文本元素\n * @param text 文本\n */\n const createTextElementFromClipboard = (text: string) => {\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, text)\n }\n\n /**\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\n * @param text 剪贴板内容\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\n */\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\n const onlySlide = options?.onlySlide || false\n const onlyElements = options?.onlyElements || false\n\n const clipboardData = pasteCustomClipboardString(text)\n\n // 元素或页面\n if (typeof clipboardData === 'object') {\n const { type, data } = clipboardData\n\n if (type === 'elements' && !onlySlide) addElementsFromClipboard(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromClipboard(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n addSlidesFromClipboard,\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { createElementIdMap } from '@/utils/element'\nimport { KEYS } from '@/configs/hotkey'\nimport { message } from 'ant-design-vue'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex } = storeToRefs(mainStore)\n const { currentSlide, slides, theme, slideIndex } = storeToRefs(slidesStore)\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n const selectedSlides = computed(() => slides.value.filter((item, index) => selectedSlidesIndex.value.includes(index)))\n const selectedSlidesId = computed(() => selectedSlides.value.map(item => item.id))\n\n const { pasteTextClipboardData, addSlidesFromClipboard } = usePasteTextClipboardData()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: createRandomCode(8),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n slidesStore.updateSlideIndex(0)\n mainStore.setActiveElementIdList([])\n slidesStore.setSlides([emptySlide])\n }\n\n /**\n * 移动页面焦点\n * @param command 移动页面焦点命令:上移、下移\n */\n const updateSlideIndex = (command: string) => {\n if (command === KEYS.UP && slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n // 将当前页面数据加密后复制到剪贴板\n const copySlide = () => {\n const text = encrypt(JSON.stringify({\n type: 'slides',\n data: selectedSlides.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setThumbnailsFocus(true)\n })\n }\n\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\n const pasteSlide = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text, { onlySlide: true })\n }).catch(err => message.warning(err))\n }\n\n // 创建一页空白页并添加到下一页\n const createSlide = () => {\n const emptySlide: Slide = {\n id: createRandomCode(8),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(emptySlide)\n addHistorySnapshot()\n }\n\n // 根据模板创建新页面\n const createSlideByTemplate = (slide: Slide) => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n const newSlide = {\n ...slide,\n id: createRandomCode(8),\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(newSlide)\n addHistorySnapshot()\n }\n\n // 将当前页复制一份到下一页\n const copyAndPasteSlide = () => {\n const slide = JSON.parse(JSON.stringify(currentSlide.value))\n addSlidesFromClipboard([slide])\n }\n\n // 删除当前页,若将删除全部页面,则执行重置幻灯片操作\n const deleteSlide = (targetSlidesId = selectedSlidesId.value) => {\n if (slides.value.length === targetSlidesId.length) resetSlides()\n else slidesStore.deleteSlide(targetSlidesId)\n\n mainStore.updateSelectedSlidesIndex([])\n\n addHistorySnapshot()\n }\n\n // 将当前页复制后删除(剪切)\n // 由于复制操作会导致多选状态消失,所以需要提前将需要删除的页面ID进行缓存\n const cutSlide = () => {\n const targetSlidesId = [...selectedSlidesId.value]\n copySlide()\n deleteSlide(targetSlidesId)\n }\n\n // 选中全部幻灯片\n const selectAllSlide = () => {\n const newSelectedSlidesIndex = Array.from(Array(slides.value.length), (item, index) => index)\n mainStore.setActiveElementIdList([])\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 锁定选中的元素,并清空选中元素状态\n const lockElement = () => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n \n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) element.lock = true\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([])\n addHistorySnapshot()\n }\n\n /**\n * 解除元素的锁定状态,并将其设置为当前选择元素\n * @param handleElement 需要解锁的元素\n */\n const unlockElement = (handleElement: PPTElement) => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n if (handleElement.groupId) {\n const groupElementIdList = []\n for (const element of newElementList) {\n if (element.groupId === handleElement.groupId) {\n element.lock = false\n groupElementIdList.push(element.id)\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList(groupElementIdList)\n }\n else {\n for (const element of newElementList) {\n if (element.id === handleElement.id) {\n element.lock = false\n break\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([handleElement.id])\n }\n addHistorySnapshot()\n }\n\n return {\n lockElement,\n unlockElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 删除全部选中元素\n // 组合元素成员中,存在被选中可独立操作的元素时,优先删除该元素。否则默认删除所有被选中的元素\n const deleteElement = () => {\n if (!activeElementIdList.value.length) return\n\n let newElementList: PPTElement[] = []\n if (activeGroupElementId.value) {\n newElementList = currentSlide.value.elements.filter(el => el.id !== activeGroupElementId.value)\n }\n else {\n newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\n }\n\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n // 删除内面内全部元素(无论是否选中)\n const deleteAllElements = () => {\n if (!currentSlide.value.elements.length) return\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: [] })\n addHistorySnapshot()\n }\n\n return {\n deleteElement,\n deleteAllElements,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 判断当前选中的元素是否可以组合\n */\n const canCombine = computed(() => {\n if (activeElementList.value.length < 2) return false\n\n const firstGroupId = activeElementList.value[0].groupId\n if (!firstGroupId) return true\n\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\n return !inSameGroup\n })\n\n /**\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\n */\n const combineElements = () => {\n if (!activeElementList.value.length) return\n\n // 生成一个新元素列表进行后续操作\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n // 生成分组ID\n const groupId = createRandomCode()\n\n // 收集需要组合的元素列表,并赋上唯一分组ID\n const combineElementList: PPTElement[] = []\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) {\n element.groupId = groupId\n combineElementList.push(element)\n }\n }\n\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\n const combineElementIdList = combineElementList.map(_element => _element.id)\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\n\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\n newElementList.splice(insertLevel, 0, ...combineElementList)\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n /**\n * 取消组合元素:移除选中元素的分组ID\n */\n const uncombineElements = () => {\n if (!activeElementList.value.length) return\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\n if (!hasElementInGroup) return\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\n }\n slidesStore.updateSlide({ elements: newElementList })\n\n // 取消组合后,需要重置激活元素状态\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\n mainStore.setActiveElementIdList(handleElementIdList)\n\n addHistorySnapshot()\n }\n\n return {\n canCombine,\n combineElements,\n uncombineElements,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { message } from 'ant-design-vue'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useDeleteElement from './useDeleteElement'\n\nexport default () => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeElementList } = storeToRefs(mainStore)\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { deleteElement } = useDeleteElement()\n\n // 将选中元素数据加密后复制到剪贴板\n const copyElement = () => {\n if (!activeElementIdList.value.length) return\n\n const text = encrypt(JSON.stringify({\n type: 'elements',\n data: activeElementList.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setEditorareaFocus(true)\n })\n }\n\n // 将选中元素复制后删除(剪切)\n const cutElement = () => {\n copyElement()\n deleteElement()\n }\n\n // 尝试将剪贴板元素数据解密后进行粘贴\n const pasteElement = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text)\n }).catch(err => message.warning(err))\n }\n\n // 将选中元素复制后立刻粘贴\n const quickCopyElement = () => {\n copyElement()\n pasteElement()\n }\n\n return {\n copyElement,\n cutElement,\n pasteElement,\n quickCopyElement,\n }\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\n\r\nexport default () => {\r\n const mainStore = useMainStore()\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n mainStore.setActiveElementIdList(newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将元素向指定方向移动指定的距离\r\n * 组合元素成员中,存在被选中可独立操作的元素时,优先移动该元素。否则默认移动所有被选中的元素\r\n * @param command 移动方向\r\n * @param step 移动距离\r\n */\r\n const moveElement = (command: string, step = 1) => {\r\n let newElementList: PPTElement[] = []\r\n\r\n const move = (el: PPTElement) => {\r\n let { left, top } = el\r\n switch (command) {\r\n case KEYS.LEFT: \r\n left = left - step\r\n break\r\n case KEYS.RIGHT: \r\n left = left + step\r\n break\r\n case KEYS.UP: \r\n top = top - step\r\n break\r\n case KEYS.DOWN: \r\n top = top + step\r\n break\r\n default: break\r\n }\r\n return { ...el, left, top }\r\n }\r\n\r\n if (activeGroupElementId.value) {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeGroupElementId.value === el.id ? move(el) : el\r\n })\r\n }\r\n else {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeElementIdList.value.includes(el.id) ? move(el) : el\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 获取组合元素层级范围\n * @param elementList 本页所有元素列表\n * @param combineElementList 组合元素列表\n */\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\n return {\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\n }\n }\n\n /**\n * 上移一层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n const nextElement = copyOfElementList[maxLevel + 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (nextElement.groupId) {\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return\n\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n const nextElement = copyOfElementList[level + 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n if (nextElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level + 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 下移一层,操作方式同上移\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const prevElement = copyOfElementList[minLevel - 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (prevElement.groupId) {\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n const prevElement = copyOfElementList[level - 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n if (prevElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level - 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置顶层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.push(...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\n copyOfElementList.splice(level, 1)\n copyOfElementList.push(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置底层,操作方式同置顶\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.unshift(...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n copyOfElementList.splice(level, 1)\n copyOfElementList.unshift(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 调整元素层级\n * @param element 需要调整层级的元素\n * @param command 调整命令:上移、下移、置顶、置底\n */\n const orderElement = (element: PPTElement, command: ElementOrderCommand) => {\n let newElementList\n \n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\n\n if (!newElementList) return\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n orderElement,\n }\n}","// 进入全屏\nexport const enterFullscreen = () => {\n const docElm = document.documentElement\n if (docElm.requestFullscreen) docElm.requestFullscreen() \n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => (\n document.mozFullScreen || \n document.webkitIsFullScreen || \n document.webkitFullScreen\n)","import { useScreenStore, useSlidesStore } from '@/store'\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\n\nexport default () => {\n const screenStore = useScreenStore()\n const slidesStore = useSlidesStore()\n\n // 进入放映状态(从当前页开始)\n const enterScreening = () => {\n enterFullscreen()\n screenStore.setScreening(true)\n }\n\n // 进入放映状态(从第一页开始)\n const enterScreeningFromStart = () => {\n slidesStore.updateSlideIndex(0)\n enterScreening()\n }\n\n // 退出放映状态\n const exitScreening = () => {\n screenStore.setScreening(false)\n if (isFullscreen()) exitFullscreen()\n }\n\n return {\n enterScreening,\n enterScreeningFromStart,\n exitScreening,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage } = storeToRefs(mainStore)\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 120\n const min = 60\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画笔百分比\n * @param percentage 百分比(小数形式,如0.8)\n */\n const setCanvasPercentage = (percentage: number) => {\n mainStore.setCanvasPercentage(percentage)\n }\n \n return {\n scaleCanvas,\n setCanvasPercentage,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useSlideHandler from './useSlideHandler'\nimport useLockElement from './useLockElement'\nimport useDeleteElement from './useDeleteElement'\nimport useCombineElement from './useCombineElement'\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\nimport useSelectAllElement from './useSelectAllElement'\nimport useMoveElement from './useMoveElement'\nimport useOrderElement from './useOrderElement'\nimport useHistorySnapshot from './useHistorySnapshot'\nimport useScreening from './useScreening'\nimport useScaleCanvas from './useScaleCanvas'\n\nexport default () => {\n const mainStore = useMainStore()\n const keyboardStore = useKeyboardStore()\n const {\n activeElementIdList,\n disableHotkeys,\n handleElement,\n handleElementId,\n editorAreaFocus,\n thumbnailsFocus,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\n const {\n updateSlideIndex,\n copySlide,\n createSlide,\n deleteSlide,\n cutSlide,\n copyAndPasteSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement } = useLockElement()\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n const { moveElement } = useMoveElement()\n const { orderElement } = useOrderElement()\n const { redo, undo } = useHistorySnapshot()\n const { enterScreening } = useScreening()\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\n\n const copy = () => {\n if (activeElementIdList.value.length) copyElement()\n else if (thumbnailsFocus.value) copySlide()\n }\n\n const cut = () => {\n if (activeElementIdList.value.length) cutElement()\n else if (thumbnailsFocus.value) cutSlide()\n }\n\n const quickCopy = () => {\n if (activeElementIdList.value.length) quickCopyElement()\n else if (thumbnailsFocus.value) copyAndPasteSlide()\n }\n\n const selectAll = () => {\n if (editorAreaFocus.value) selectAllElement()\n if (thumbnailsFocus.value) selectAllSlide()\n }\n\n const lock = () => {\n if (!editorAreaFocus.value) return\n lockElement()\n }\n const combine = () => {\n if (!editorAreaFocus.value) return\n combineElements()\n }\n\n const uncombine = () => {\n if (!editorAreaFocus.value) return\n uncombineElements()\n }\n\n const remove = () => {\n if (activeElementIdList.value.length) deleteElement()\n else if (thumbnailsFocus.value) deleteSlide()\n }\n\n const move = (key: string) => {\n if (activeElementIdList.value.length) moveElement(key)\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\n }\n\n const order = (command: ElementOrderCommand) => {\n if (!handleElement.value) return\n orderElement(handleElement.value, command)\n }\n\n const create = () => {\n if (!thumbnailsFocus.value) return\n createSlide()\n }\n\n const tabActiveElement = () => {\n if (!currentSlide.value.elements.length) return\n if (!handleElementId.value) {\n const firstElement = currentSlide.value.elements[0]\n mainStore.setActiveElementIdList([firstElement.id])\n return\n }\n const currentIndex = currentSlide.value.elements.findIndex(el => el.id === handleElementId.value)\n const nextIndex = currentIndex >= currentSlide.value.elements.length - 1 ? 0 : currentIndex + 1\n const nextElementId = currentSlide.value.elements[nextIndex].id\n\n mainStore.setActiveElementIdList([nextElementId])\n }\n\n const keydownListener = (e: KeyboardEvent) => {\n const { ctrlKey, shiftKey, altKey, metaKey } = e\n const ctrlOrMetaKeyActive = ctrlKey || metaKey\n \n const key = e.key.toUpperCase()\n\n if (ctrlOrMetaKeyActive && !ctrlKeyState.value) keyboardStore.setCtrlKeyState(true)\n if (shiftKey && !shiftKeyState.value) keyboardStore.setShiftKeyState(true)\n\n if (ctrlOrMetaKeyActive && key === KEYS.F) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setCtrlKeyState(false)\n }\n \n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \n\n if (ctrlOrMetaKeyActive && key === KEYS.C) {\n if (disableHotkeys.value) return\n e.preventDefault()\n copy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.X) {\n if (disableHotkeys.value) return\n e.preventDefault()\n cut()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.D) {\n if (disableHotkeys.value) return\n e.preventDefault()\n quickCopy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Z) {\n if (disableHotkeys.value) return\n e.preventDefault()\n undo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Y) {\n if (disableHotkeys.value) return\n e.preventDefault()\n redo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.A) {\n if (disableHotkeys.value) return\n e.preventDefault()\n selectAll()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.L) {\n if (disableHotkeys.value) return\n e.preventDefault()\n lock()\n }\n if (!shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n combine()\n }\n if (shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n uncombine()\n }\n if (altKey && key === KEYS.F) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.TOP)\n }\n if (altKey && key === KEYS.B) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.BOTTOM)\n }\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\n if (disableHotkeys.value) return\n e.preventDefault()\n remove()\n }\n if (key === KEYS.UP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.UP)\n }\n if (key === KEYS.DOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.DOWN)\n }\n if (key === KEYS.LEFT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.LEFT)\n }\n if (key === KEYS.RIGHT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.RIGHT)\n }\n if (key === KEYS.ENTER) {\n if (disableHotkeys.value) return\n e.preventDefault()\n create()\n }\n if (key === KEYS.MINUS) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('-')\n }\n if (key === KEYS.EQUAL) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('+')\n }\n if (key === KEYS.DIGIT_0) {\n if (disableHotkeys.value) return\n e.preventDefault()\n setCanvasPercentage(90)\n }\n if (key === KEYS.TAB) {\n if (disableHotkeys.value) return\n e.preventDefault()\n tabActiveElement()\n }\n }\n \n const keyupListener = () => {\n if (ctrlKeyState.value) keyboardStore.setCtrlKeyState(false)\n if (shiftKeyState.value) keyboardStore.setShiftKeyState(false)\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n document.addEventListener('keyup', keyupListener)\n window.addEventListener('blur', keyupListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n document.removeEventListener('keyup', keyupListener)\n window.removeEventListener('blur', keyupListener)\n })\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\nimport useCreateElement from './useCreateElement'\n\nexport default () => {\n const { editorAreaFocus, thumbnailsFocus, disableHotkeys } = storeToRefs(useMainStore())\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { createImageElement } = useCreateElement()\n\n // 粘贴图片到幻灯片元素\n const pasteImageFile = (imageFile: File) => {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n /**\n * 粘贴事件监听\n * @param e ClipboardEvent\n */\n const pasteListener = (e: ClipboardEvent) => {\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\n if (disableHotkeys.value) return\n\n if (!e.clipboardData) return\n\n const clipboardDataItems = e.clipboardData.items\n const clipboardDataFirstItem = clipboardDataItems[0]\n\n if (!clipboardDataFirstItem) return\n\n // 如果剪贴板内有图片,优先尝试读取图片\n for (const item of clipboardDataItems) {\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\n const imageFile = item.getAsFile()\n if (imageFile) pasteImageFile(imageFile)\n return\n }\n }\n \n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\n }\n }\n\n onMounted(() => {\n document.addEventListener('paste', pasteListener)\n })\n onUnmounted(() => {\n document.removeEventListener('paste', pasteListener)\n })\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-32a5341e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-header\" }\nconst _hoisted_2 = { class: \"left\" }\nconst _hoisted_3 = { class: \"menu-item\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"文件\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_8 = { class: \"menu-item\" }\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"撤销\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"重做\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"添加页面\")\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"删除页面\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"重置幻灯片\")\nconst _hoisted_16 = { class: \"menu-item\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"从头开始\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\"从当前页开始\")\nconst _hoisted_21 = { class: \"menu-item\" }\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\"意见反馈\")\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\"快捷键\")\nconst _hoisted_26 = { class: \"right\" }\nconst _hoisted_27 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_28 = { class: \"menu-item\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFolderClose = _resolveComponent(\"IconFolderClose\")!\n const _component_MenuItem = _resolveComponent(\"MenuItem\")!\n const _component_Menu = _resolveComponent(\"Menu\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconPpt = _resolveComponent(\"IconPpt\")!\n const _component_IconHelpcenter = _resolveComponent(\"IconHelpcenter\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconGithub = _resolveComponent(\"IconGithub\")!\n const _component_HotkeyDoc = _resolveComponent(\"HotkeyDoc\")!\n const _component_Drawer = _resolveComponent(\"Drawer\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.exportJSON()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.exportPPTX()))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconFolderClose),\n _hoisted_4,\n _hoisted_5\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.undo()))\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.redo()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.showGridLines ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.resetSlides()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_IconEdit),\n _hoisted_9,\n _hoisted_10\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.enterScreeningFromStart()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.enterScreening()))\n }, {\n default: _withCtx(() => [\n _hoisted_20\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_IconPpt),\n _hoisted_17,\n _hoisted_18\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_24\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.hotkeyDrawerVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_25\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_21, [\n _createVNode(_component_IconHelpcenter),\n _hoisted_22,\n _hoisted_23\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.enterScreening()))\n }, [\n _createVNode(_component_IconPpt, {\n size: \"18\",\n fill: \"#666\",\n style: {\"margin-top\":\"2px\"}\n })\n ])\n ]),\n _: 1\n }),\n _createElementVNode(\"a\", _hoisted_27, [\n _createElementVNode(\"div\", _hoisted_28, [\n _createVNode(_component_IconGithub, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ])\n ]),\n _createVNode(_component_Drawer, {\n width: \"320\",\n placement: \"right\",\n visible: _ctx.hotkeyDrawerVisible,\n onClose: _cache[13] || (_cache[13] = ($event: any) => (_ctx.hotkeyDrawerVisible = false))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","export const childlessTags = ['style', 'script', 'template']\n\nexport const closingTags = ['html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option', 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup']\n\nexport const closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table'],\n}\n\nexport const voidTags = ['!doctype', 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']","import { startsWith, endsWith } from 'lodash'\nimport { Token } from './types'\nimport { childlessTags } from './tags'\n\ninterface State {\n str: string;\n position: number;\n tokens: Token[];\n}\n\nconst jumpPosition = (state: State, end: number) => {\n const len = end - state.position\n movePositopn(state, len)\n}\n\nconst movePositopn = (state: State, len: number) => {\n state.position = state.position + len\n}\n\nconst findTextEnd = (str: string, index: number) => {\n const isEnd = false\n while (!isEnd) {\n const textEnd = str.indexOf('<', index)\n if (textEnd === -1) {\n return textEnd\n }\n const char = str.charAt(textEnd + 1)\n if (char === '/' || char === '!' || /[A-Za-z0-9]/.test(char)) {\n return textEnd\n }\n index = textEnd + 1\n }\n return -1\n}\n\nconst lexText = (state: State) => {\n const { str } = state\n let textEnd = findTextEnd(str, state.position)\n if (textEnd === state.position) return\n if (textEnd === -1) {\n textEnd = str.length\n }\n\n const content = str.slice(state.position, textEnd)\n jumpPosition(state, textEnd)\n\n state.tokens.push({\n type: 'text', \n content, \n })\n}\n\nconst lexComment = (state: State) => {\n const { str } = state\n\n movePositopn(state, 4)\n let contentEnd = str.indexOf('-->', state.position)\n let commentEnd = contentEnd + 3\n if (contentEnd === -1) {\n contentEnd = commentEnd = str.length\n }\n\n const content = str.slice(state.position, contentEnd)\n jumpPosition(state, commentEnd)\n\n state.tokens.push({\n type: 'comment',\n content,\n })\n}\n\nconst lexTagName = (state: State) => {\n const { str } = state\n const len = str.length\n let start = state.position\n\n while (start < len) {\n const char = str.charAt(start)\n const isTagChar = !(/\\s/.test(char) || char === '/' || char === '>')\n if (isTagChar) break\n start++\n }\n\n let end = start + 1\n while (end < len) {\n const char = str.charAt(end)\n const isTagChar = !(/\\s/.test(char) || char === '/' || char === '>')\n if (!isTagChar) break\n end++\n }\n\n jumpPosition(state, end)\n const tagName = str.slice(start, end)\n state.tokens.push({\n type: 'tag',\n content: tagName\n })\n return tagName\n}\n\nconst lexTagAttributes = (state: State) => {\n const { str, tokens } = state\n let cursor = state.position\n let quote = null\n let wordBegin = cursor\n const words = []\n const len = str.length\n while (cursor < len) {\n const char = str.charAt(cursor)\n if (quote) {\n const isQuoteEnd = char === quote\n if (isQuoteEnd) quote = null\n cursor++\n continue\n }\n\n const isTagEnd = char === '/' || char === '>'\n if (isTagEnd) {\n if (cursor !== wordBegin) words.push(str.slice(wordBegin, cursor))\n break\n }\n\n const isWordEnd = /\\s/.test(char)\n if (isWordEnd) {\n if (cursor !== wordBegin) words.push(str.slice(wordBegin, cursor))\n wordBegin = cursor + 1\n cursor++\n continue\n }\n\n const isQuoteStart = char === '\\'' || char === '\"'\n if (isQuoteStart) {\n quote = char\n cursor++\n continue\n }\n\n cursor++\n }\n jumpPosition(state, cursor)\n\n const type = 'attribute'\n for (let i = 0; i < words.length; i++) {\n const word = words[i]\n\n const isNotPair = word.indexOf('=') === -1\n if (isNotPair) {\n const secondWord = words[i + 1]\n if (secondWord && startsWith(secondWord, '=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n const thirdWord = words[i + 2]\n i += 1\n if (thirdWord) {\n const newWord = word + '=' + thirdWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n }\n }\n if (endsWith(word, '=')) {\n const secondWord = words[i + 1]\n if (secondWord && secondWord.indexOf('=') === -1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n\n const newWord = word.slice(0, -1)\n tokens.push({ type, content: newWord })\n continue\n }\n\n tokens.push({ type, content: word })\n }\n}\n\nconst lexSkipTag = (tagName: string, state: State) => {\n const { str, tokens } = state\n const safeTagName = tagName.toLowerCase()\n const len = str.length\n let index = state.position\n \n while (index < len) {\n const nextTag = str.indexOf(' {\n const { str } = state\n const secondChar = str.charAt(state.position + 1)\n const tagStartClose = secondChar === '/'\n movePositopn(state, tagStartClose ? 2 : 1)\n state.tokens.push({\n type: 'tag-start',\n close: tagStartClose,\n })\n\n const tagName = lexTagName(state)\n lexTagAttributes(state)\n\n const firstChar = str.charAt(state.position)\n const tagEndClose = firstChar === '/'\n movePositopn(state, tagEndClose ? 2 : 1)\n state.tokens.push({\n type: 'tag-end',\n close: tagEndClose,\n })\n return tagName\n}\n\nconst lex = (state: State) => {\n const str = state.str\n const len = str.length\n\n while (state.position < len) {\n const start = state.position\n lexText(state)\n\n if (state.position === start) {\n const isComment = startsWith(str, '!--', start + 1)\n if (isComment) lexComment(state)\n else {\n const tagName = lexTag(state)\n const safeTag = tagName.toLowerCase()\n if (childlessTags.includes(safeTag)) lexSkipTag(tagName, state)\n }\n }\n }\n}\n\nexport const lexer = (str: string): Token[] => {\n const state = {\n str,\n position: 0,\n tokens: [],\n }\n lex(state)\n return state.tokens\n}","import { Token, HTMLNode, TagToken, NormalElement, TagEndToken, AttributeToken, TextToken } from './types'\nimport { closingTags, closingTagAncestorBreakers, voidTags } from './tags'\n\ninterface StackItem {\n tagName: string | null;\n children: HTMLNode[];\n}\n\ninterface State {\n stack: StackItem[];\n cursor: number;\n tokens: Token[];\n}\n\nexport const parser = (tokens: Token[]) => {\n const root: StackItem = { tagName: null, children: [] }\n const state: State = { tokens, cursor: 0, stack: [root] }\n parse(state)\n return root.children\n}\n\nexport const hasTerminalParent = (tagName: string, stack: StackItem[]) => {\n const tagParents = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) break\n if (tagParents.includes(parentTagName)) return true\n currentIndex--\n }\n }\n return false\n}\n\nexport const rewindStack = (stack: StackItem[], newLength: number) => {\n stack.splice(newLength)\n}\n\nexport const parse = (state: State) => {\n const { stack, tokens } = state\n let { cursor } = state\n let nodes = stack[stack.length - 1].children\n const len = tokens.length\n \n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n nodes.push(token as TextToken)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor] as TagToken\n cursor++\n const tagName = tagToken.content.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n if (tokens[cursor].type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n rewindStack(stack, index)\n break\n } \n else continue\n }\n\n const isClosingTag = closingTags.includes(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n rewindStack(stack, currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes = []\n let tagEndToken: TagEndToken | undefined\n while (cursor < len) {\n const _token = tokens[cursor]\n if (_token.type === 'tag-end') {\n tagEndToken = _token\n break\n }\n attributes.push((_token as AttributeToken).content)\n cursor++\n }\n\n if (!tagEndToken) break\n\n cursor++\n const children: HTMLNode[] = []\n const elementNode: NormalElement = {\n type: 'element',\n tagName: tagToken.content,\n attributes,\n children,\n }\n nodes.push(elementNode)\n\n const hasChildren = !(tagEndToken.close || voidTags.includes(tagName))\n if (hasChildren) {\n stack.push({tagName, children})\n const innerState = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n state.cursor = cursor\n}","import { HTMLNode, CommentOrTextAST, ElementAST, AST } from './types'\n\nexport const splitHead = (str: string, sep: string) => {\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n return [str.slice(0, idx), str.slice(idx + sep.length)]\n}\n\nconst unquote = (str: string) => {\n const car = str.charAt(0)\n const end = str.length - 1\n const isQuoteStart = car === '\"' || car === \"'\"\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end)\n }\n return str\n}\n\nconst formatAttributes = (attributes: string[]) => {\n return attributes.map(attribute => {\n const parts = splitHead(attribute.trim(), '=')\n const key = parts[0]\n const value = typeof parts[1] === 'string' ? unquote(parts[1]) : null\n return { key, value }\n })\n}\n\nexport const format = (nodes: HTMLNode[]): AST[] => {\n return nodes.map(node => { \n if (node.type === 'element') {\n const children = format(node.children)\n const item: ElementAST = {\n type: 'element',\n tagName: node.tagName.toLowerCase(),\n attributes: formatAttributes(node.attributes),\n children,\n }\n return item\n }\n\n const item: CommentOrTextAST = {\n type: node.type,\n content: node.content,\n }\n return item\n })\n}","// 参考:https://github.com/andrejewski/himalaya 用TypeScript重写并简化部分功能\n\nimport { lexer } from './lexer'\nimport { parser } from './parser'\nimport { format } from './format'\nimport { toHTML } from './stringify'\nimport type { AST } from './types'\n\nexport const toAST = (str: string) => {\n const tokens = lexer(str)\n const nodes = parser(tokens)\n return format(nodes)\n}\n\nexport { toHTML, AST }","import { SVGPathData } from 'svg-pathdata'\nimport arcToBezier from 'svg-arc-to-cubic-bezier'\n\nconst typeMap = {\n 1: 'Z',\n 2: 'M',\n 4: 'H',\n 8: 'V',\n 16: 'L',\n 32: 'C',\n 64: 'S',\n 128: 'Q',\n 256: 'T',\n 512: 'A',\n}\n\n/**\n * 简单解析SVG路径\n * @param d SVG path d属性\n */\nexport const parseSvgPath = (d: string) => {\n const pathData = new SVGPathData(d)\n\n const ret = pathData.commands.map(item => {\n return { ...item, type: typeMap[item.type] }\n })\n return ret\n}\n\nexport type SvgPath = ReturnType\n\n/**\n * 解析SVG路径,并将圆弧(A)类型的路径转为三次贝塞尔(C)类型的路径\n * @param d SVG path d属性\n */\nexport const toPoints = (d: string) => {\n const pathData = new SVGPathData(d)\n \n const points = []\n for (const item of pathData.commands) {\n const type = typeMap[item.type]\n\n if (item.type === 2 || item.type === 16) {\n points.push({\n x: item.x,\n y: item.y,\n relative: item.relative,\n type,\n })\n }\n if (item.type === 32) {\n points.push({\n x: item.x, \n y: item.y,\n curve: {\n type: 'cubic',\n x1: item.x1,\n y1: item.y1,\n x2: item.x2,\n y2: item.y2,\n },\n relative: item.relative,\n type,\n })\n }\n else if (item.type === 128) {\n points.push({\n x: item.x, \n y: item.y,\n curve: {\n type: 'quadratic',\n x1: item.x1,\n y1: item.y1,\n },\n relative: item.relative,\n type,\n })\n }\n else if (item.type === 512) {\n const lastPoint = points[points.length - 1]\n if (!['M', 'L', 'Q', 'C'].includes(lastPoint.type)) continue\n\n const cubicBezierPoints = arcToBezier({\n px: lastPoint.x as number,\n py: lastPoint.y as number,\n cx: item.x,\n cy: item.y,\n rx: item.rX,\n ry: item.rY,\n xAxisRotation: item.xRot,\n largeArcFlag: item.lArcFlag,\n sweepFlag: item.sweepFlag,\n })\n for (const cbPoint of cubicBezierPoints) {\n points.push({\n x: cbPoint.x, \n y: cbPoint.y,\n curve: {\n type: 'cubic',\n x1: cbPoint.x1,\n y1: cbPoint.y1,\n x2: cbPoint.x2,\n y2: cbPoint.y2,\n },\n relative: false,\n type: 'C',\n })\n }\n }\n else if (item.type === 1) {\n points.push({ close: true, type })\n }\n else continue\n }\n return points\n}\n\nexport type SvgPoints = ReturnType","// svg转base64图片,参考:https://github.com/scriptex/svg64\n\nconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\nconst PREFIX = 'data:image/svg+xml;base64,'\n\nconst utf8Encode = (string: string) => {\n string = string.replace(/\\r\\n/g, '\\n')\n let utftext = ''\n\n for (let n = 0; n < string.length; n++) {\n const c = string.charCodeAt(n)\n\n if (c < 128) {\n utftext += String.fromCharCode(c)\n }\n else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224)\n utftext += String.fromCharCode(((c >> 6) & 63) | 128)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n }\n\n return utftext\n}\n\nconst encode = (input: string) => {\n let output = ''\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4\n let i = 0\n input = utf8Encode(input)\n while (i < input.length) {\n chr1 = input.charCodeAt(i++)\n chr2 = input.charCodeAt(i++)\n chr3 = input.charCodeAt(i++)\n enc1 = chr1 >> 2\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4)\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6)\n enc4 = chr3 & 63\n if (isNaN(chr2)) enc3 = enc4 = 64\n else if (isNaN(chr3)) enc4 = 64\n output = output + characters.charAt(enc1) + characters.charAt(enc2) + characters.charAt(enc3) + characters.charAt(enc4)\n }\n return output\n}\n\nexport const svg2Base64 = (element: Element) => {\n const XMLS = new XMLSerializer()\n const svg = XMLS.serializeToString(element)\n\n return PREFIX + encode(svg)\n}","import { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { trim } from 'lodash'\nimport { saveAs } from 'file-saver'\nimport pptxgen from 'pptxgenjs'\nimport tinycolor from 'tinycolor2'\nimport { useSlidesStore } from '@/store'\nimport { getElementRange, getLineElementPath, getTableSubThemeColor } from '@/utils/element'\nimport { AST, toAST } from '@/utils/htmlParser'\nimport { SvgPoints, toPoints } from '@/utils/svgPathParser'\nimport { svg2Base64 } from '@/utils/svg2Base64'\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const { slides } = storeToRefs(useSlidesStore())\n\n const exporting = ref(false)\n \n // 导出JSON文件\n const exportJSON = () => {\n const blob = new Blob([JSON.stringify(slides.value)], { type: '' })\n saveAs(blob, 'pptist_slides.json')\n }\n\n // 格式化颜色值为 透明度 + HexString,供pptxgenjs使用\n const formatColor = (_color: string) => {\n const c = tinycolor(_color)\n const alpha = c.getAlpha()\n const color = alpha === 0 ? '#ffffff' : c.setAlpha(1).toHexString()\n return {\n alpha,\n color,\n }\n }\n\n type FormatColor = ReturnType\n\n // 将HTML字符串格式化为pptxgenjs所需的格式\n // 核心思路:将HTML字符串按样式分片平铺,每个片段需要继承祖先元素的样式信息,遇到块级元素需要换行\n const formatHTML = (html: string) => {\n const ast = toAST(html)\n\n const slices: pptxgen.TextProps[] = []\n const parse = (obj: AST[], baseStyleObj = {}) => {\n for (const item of obj) {\n if ('tagName' in item && ['div', 'ul', 'li', 'p'].includes(item.tagName) && slices.length) {\n const lastSlice = slices[slices.length - 1]\n if (!lastSlice.options) lastSlice.options = {}\n lastSlice.options.breakLine = true\n }\n\n const styleObj = { ...baseStyleObj }\n const styleAttr = 'attributes' in item ? item.attributes.find(attr => attr.key === 'style') : null\n if (styleAttr && styleAttr.value) {\n const styleArr = styleAttr.value.split(';')\n for (const styleItem of styleArr) {\n const [_key, _value] = styleItem.split(': ')\n const [key, value] = [trim(_key), trim(_value)]\n if (key && value) styleObj[key] = value\n }\n }\n\n if ('tagName' in item) {\n if (item.tagName === 'em') {\n styleObj['font-style'] = 'italic'\n }\n if (item.tagName === 'strong') {\n styleObj['font-weight'] = 'bold'\n }\n if (item.tagName === 'sup') {\n styleObj['vertical-align'] = 'super'\n }\n if (item.tagName === 'sub') {\n styleObj['vertical-align'] = 'sub'\n }\n }\n\n if ('tagName' in item && item.tagName === 'br') {\n slices.push({ text: '', options: { breakLine: true } })\n }\n else if ('content' in item) {\n const text = item.content.replace(/\\n/g, '').replace(/ /g, ' ')\n const options: pptxgen.TextPropsOptions = {}\n\n if (styleObj['font-size']) {\n options.fontSize = parseInt(styleObj['font-size']) * 0.75\n }\n if (styleObj['color']) {\n options.color = formatColor(styleObj['color']).color\n }\n if (styleObj['background-color']) {\n options.highlight = formatColor(styleObj['background-color']).color\n }\n if (styleObj['text-decoration-line']) {\n if (styleObj['text-decoration-line'].indexOf('underline') !== -1) {\n options.underline = {\n color: options.color || '#000000',\n style: 'sng',\n }\n }\n if (styleObj['text-decoration-line'].indexOf('line-through') !== -1) {\n options.strike = 'sngStrike'\n }\n }\n if (styleObj['text-decoration']) {\n if (styleObj['text-decoration'].indexOf('underline') !== -1) {\n options.underline = {\n color: options.color || '#000000',\n style: 'sng',\n }\n }\n if (styleObj['text-decoration'].indexOf('line-through') !== -1) {\n options.strike = 'sngStrike'\n }\n }\n if (styleObj['vertical-align']) {\n if (styleObj['vertical-align'] === 'super') options.superscript = true\n if (styleObj['vertical-align'] === 'sub') options.subscript = true\n }\n if (styleObj['text-align']) options.align = styleObj['text-align']\n if (styleObj['font-weight']) options.bold = styleObj['font-weight'] === 'bold'\n if (styleObj['font-style']) options.italic = styleObj['font-style'] === 'italic'\n if (styleObj['font-family']) options.fontFace = styleObj['font-family']\n\n slices.push({ text, options })\n }\n else if ('children' in item) parse(item.children, styleObj)\n }\n }\n parse(ast)\n return slices\n }\n\n type Points = Array<\n | { x: number; y: number; moveTo?: boolean }\n | { x: number; y: number; curve: { type: 'arc'; hR: number; wR: number; stAng: number; swAng: number } }\n | { x: number; y: number; curve: { type: 'quadratic'; x1: number; y1: number } }\n | { x: number; y: number; curve: { type: 'cubic'; x1: number; y1: number; x2: number; y2: number } }\n | { close: true }\n >\n\n // 将SVG路径信息格式化为pptxgenjs所需要的格式\n const formatPoints = (points: SvgPoints, scale = { x: 1, y: 1 }): Points => {\n return points.map(point => {\n if (point.close !== undefined) {\n return { close: true }\n }\n else if (point.type === 'M') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n moveTo: true,\n }\n }\n else if (point.curve) {\n if (point.curve.type === 'cubic') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n curve: {\n type: 'cubic',\n x1: (point.curve.x1 as number) / 100 * scale.x,\n y1: (point.curve.y1 as number) / 100 * scale.y,\n x2: (point.curve.x2 as number) / 100 * scale.x,\n y2: (point.curve.y2 as number) / 100 * scale.y,\n },\n }\n }\n else if (point.curve.type === 'quadratic') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n curve: {\n type: 'quadratic',\n x1: (point.curve.x1 as number) / 100 * scale.x,\n y1: (point.curve.y1 as number) / 100 * scale.y,\n },\n }\n }\n }\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n }\n })\n }\n\n // 导出PPTX文件\n const exportPPTX = () => {\n exporting.value = true\n const pptx = new pptxgen()\n\n for (const slide of slides.value) {\n const pptxSlide = pptx.addSlide()\n\n if (slide.background) {\n const background = slide.background\n if (background.type === 'image' && background.image) {\n pptxSlide.background = { data: background.image }\n }\n else if (background.type === 'solid' && background.color) {\n const c = formatColor(background.color)\n pptxSlide.background = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n else if (background.type === 'gradient' && background.gradientColor) {\n const [color1, color2] = background.gradientColor\n const color = tinycolor.mix(color1, color2).toHexString()\n const c = formatColor(color)\n pptxSlide.background = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n }\n\n if (!slide.elements) continue\n\n for (const el of slide.elements) {\n if (el.type === 'text') {\n const textProps = formatHTML(el.content)\n\n const options: pptxgen.TextPropsOptions = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fontSize: 20 * 0.75,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: 'middle',\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.wordSpace) options.charSpacing = el.wordSpace * 0.75\n if (el.lineHeight) options.lineSpacingMultiple = el.lineHeight * 0.75\n if (el.fill) {\n const c = formatColor(el.fill)\n const opacity = el.opacity === undefined ? 1 : el.opacity\n options.fill = { color: c.color, transparency: (1 - c.alpha * opacity) * 100 }\n }\n if (el.defaultColor) options.color = formatColor(el.defaultColor).color\n if (el.defaultFontName) options.fontFace = el.defaultFontName\n if (el.shadow) {\n const c = formatColor(el.shadow.color)\n options.shadow = {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: el.shadow.blur * 0.75,\n offset: (el.shadow.h + el.shadow.v) / 2 * 0.75,\n angle: 45,\n }\n }\n\n pptxSlide.addText(textProps, options)\n }\n\n else if (el.type === 'image') {\n const options: pptxgen.ImageProps = {\n path: el.src,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.flipH) options.flipH = el.flipH\n if (el.flipV) options.flipV = el.flipV\n if (el.rotate) options.rotate = el.rotate\n if (el.clip && el.clip.shape === 'ellipse') options.rounding = true\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n\n else if (el.type === 'shape') {\n if (el.special) {\n const svgRef = document.querySelector(`.thumbnail-list .base-element-${el.id} svg`) as HTMLElement\n const base64SVG = svg2Base64(svgRef)\n\n const options: pptxgen.ImageProps = {\n data: base64SVG,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n else {\n const scale = {\n x: el.width / el.viewBox,\n y: el.height / el.viewBox,\n }\n const points = formatPoints(toPoints(el.path), scale)\n \n const fillColor = formatColor(el.fill)\n const opacity = el.opacity === undefined ? 1 : el.opacity\n \n const options: pptxgen.ShapeProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fill: { color: fillColor.color, transparency: (1 - fillColor.alpha * opacity) * 100 },\n points,\n }\n if (el.flipH) options.flipH = el.flipH\n if (el.flipV) options.flipV = el.flipV\n if (el.outline?.width) {\n options.line = {\n color: formatColor(el.outline?.color || '#000000').color, \n width: el.outline.width * 0.75, \n dashType: el.outline.style === 'solid' ? 'solid' : 'dash',\n }\n }\n if (el.shadow) {\n const c = formatColor(el.shadow.color)\n options.shadow = {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: el.shadow.blur * 0.75,\n offset: (el.shadow.h + el.shadow.v) / 2 * 0.75,\n angle: 45,\n }\n }\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addShape('custGeom' as pptxgen.ShapeType, options)\n }\n if (el.text) {\n const textProps = formatHTML(el.text.content)\n\n const options: pptxgen.TextPropsOptions = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fontSize: 20 * 0.75,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: el.text.align,\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.text.defaultColor) options.color = formatColor(el.text.defaultColor).color\n if (el.text.defaultFontName) options.fontFace = el.text.defaultFontName\n\n pptxSlide.addText(textProps, options)\n }\n }\n\n else if (el.type === 'line') {\n const path = getLineElementPath(el)\n const points = formatPoints(toPoints(path))\n const { minX, maxX, minY, maxY } = getElementRange(el)\n\n const options: pptxgen.ShapeProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: (maxX - minX) / 100,\n h: (maxY - minY) / 100,\n line: {\n color: formatColor(el.color).color, \n width: el.width * 0.75, \n dashType: el.style === 'solid' ? 'solid' : 'dash',\n beginArrowType: el.points[0] ? 'arrow' : 'none',\n endArrowType: el.points[1] ? 'arrow' : 'none',\n },\n points,\n }\n pptxSlide.addShape('custGeom' as pptxgen.ShapeType, options)\n }\n\n else if (el.type === 'chart') {\n const chartData = []\n for (let i = 0; i < el.data.series.length; i++) {\n const item = el.data.series[i]\n chartData.push({\n name: `系列${i + 1}`,\n labels: el.data.labels,\n values: item,\n })\n }\n\n let chartColors: string[] = []\n if (el.themeColor.length === 10) chartColors = el.themeColor.map(color => formatColor(color).color)\n else if (el.themeColor.length === 1) chartColors = tinycolor(el.themeColor[0]).analogous(10).map(color => formatColor(color.toHexString()).color)\n else {\n const len = el.themeColor.length\n const supplement = tinycolor(el.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toHexString())\n chartColors = [...el.themeColor.slice(0, len - 1), ...supplement].map(color => formatColor(color).color)\n }\n \n const options: pptxgen.IChartOpts = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n chartColors: el.chartType === 'pie' ? chartColors : chartColors.slice(0, el.data.series.length),\n }\n\n if (el.fill) options.fill = formatColor(el.fill).color\n if (el.legend) {\n options.showLegend = true\n options.legendPos = el.legend === 'top' ? 't' : 'b'\n options.legendColor = formatColor(el.gridColor || '#000000').color\n options.legendFontSize = 14 * 0.75\n }\n\n let type = pptx.ChartType.bar\n if (el.chartType === 'bar') {\n type = pptx.ChartType.bar\n options.barDir = el.options?.horizontalBars ? 'bar' : 'col'\n }\n else if (el.chartType === 'line') {\n if (el.options?.showArea) type = pptx.ChartType.area\n else if (el.options?.showLine === false) {\n type = pptx.ChartType.scatter\n\n chartData.unshift({ name: 'X-Axis', values: Array(el.data.series[0].length).fill(0).map((v, i) => i) })\n options.lineSize = 0\n }\n else type = pptx.ChartType.line\n\n if (el.options?.lineSmooth) options.lineSmooth = true\n }\n else if (el.chartType === 'pie') {\n if (el.options?.donut) {\n type = pptx.ChartType.doughnut\n options.holeSize = 75\n }\n else type = pptx.ChartType.pie\n }\n \n pptxSlide.addChart(type, chartData, options)\n }\n\n else if (el.type === 'table') {\n const hiddenCells = []\n for (let i = 0; i < el.data.length; i++) {\n const rowData = el.data[i]\n\n for (let j = 0; j < rowData.length; j++) {\n const cell = rowData[j]\n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) hiddenCells.push(`${row}_${col}`)\n }\n }\n }\n }\n\n const tableData = []\n\n const theme = el.theme\n let themeColor: FormatColor | null = null\n let subThemeColors: FormatColor[] = []\n if (theme) {\n themeColor = formatColor(theme.color)\n subThemeColors = getTableSubThemeColor(theme.color).map(item => formatColor(item))\n }\n\n for (let i = 0; i < el.data.length; i++) {\n const row = el.data[i]\n const _row = []\n\n for (let j = 0; j < row.length; j++) {\n const cell = row[j]\n const cellOptions: pptxgen.TableCellProps = {\n colspan: cell.colspan,\n rowspan: cell.rowspan,\n bold: cell.style?.bold || false,\n italic: cell.style?.em || false,\n underline: { style: cell.style?.underline ? 'sng' : 'none' },\n align: cell.style?.align || 'left',\n valign: 'middle',\n fontFace: cell.style?.fontname || '微软雅黑',\n fontSize: (cell.style?.fontsize ? parseInt(cell.style?.fontsize) : 14) * 0.75,\n }\n if (theme && themeColor) {\n let c: FormatColor\n if (i % 2 === 0) c = subThemeColors[1]\n else c = subThemeColors[0]\n\n if (theme.rowHeader && i === 0) c = themeColor\n else if (theme.rowFooter && i === el.data.length - 1) c = themeColor\n else if (theme.colHeader && j === 0) c = themeColor\n else if (theme.colFooter && j === row.length - 1) c = themeColor\n\n cellOptions.fill = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n if (cell.style?.backcolor) {\n const c = formatColor(cell.style.backcolor)\n cellOptions.fill = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n if (cell.style?.color) cellOptions.color = formatColor(cell.style.color).color\n\n if (!hiddenCells.includes(`${i}_${j}`)) {\n _row.push({\n text: cell.text,\n options: cellOptions,\n })\n }\n }\n if (_row.length) tableData.push(_row)\n }\n\n const options: pptxgen.TableProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n colW: el.colWidths.map(item => el.width * item / 100),\n }\n if (el.theme) options.fill = { color: '#ffffff' }\n if (el.outline.width && el.outline.color) {\n options.border = {\n type: el.outline.style === 'solid' ? 'solid' : 'dash',\n pt: el.outline.width * 0.75,\n color: formatColor(el.outline.color).color,\n }\n }\n\n pptxSlide.addTable(tableData, options)\n }\n \n else if (el.type === 'latex') {\n const svgRef = document.querySelector(`.thumbnail-list .base-element-${el.id} svg`) as HTMLElement\n const base64SVG = svg2Base64(svgRef)\n\n const options: pptxgen.ImageProps = {\n data: base64SVG,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n }\n }\n pptx.writeFile({ fileName: `pptist.pptx` }).then(() => exporting.value = false).catch(() => {\n exporting.value = false\n message.error('导出失败')\n })\n }\n\n return {\n exporting,\n exportJSON,\n exportPPTX,\n }\n}","\n\n\n\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=0418e74e&scoped=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=0418e74e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0418e74e\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useExport from '@/hooks/useExport'\n\nimport HotkeyDoc from './HotkeyDoc.vue'\n\nexport default defineComponent({\n name: 'editor-header',\n components: {\n HotkeyDoc,\n },\n setup() {\n const mainStore = useMainStore()\n const { showGridLines } = storeToRefs(mainStore)\n\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { createSlide, deleteSlide, resetSlides } = useSlideHandler()\n const { redo, undo } = useHistorySnapshot()\n const { exporting, exportJSON, exportPPTX } = useExport()\n\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n const hotkeyDrawerVisible = ref(false)\n\n const goIssues = () => {\n window.open('https://github.com/pipipi-pikachu/PPTist/issues')\n }\n\n return {\n redo,\n undo,\n showGridLines,\n hotkeyDrawerVisible,\n exporting,\n enterScreening,\n enterScreeningFromStart,\n createSlide,\n deleteSlide,\n toggleGridLines,\n resetSlides,\n exportJSON,\n exportPPTX,\n goIssues,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=32a5341e&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=32a5341e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32a5341e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1386e8fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementCreateSelection = _resolveComponent(\"ElementCreateSelection\")!\n const _component_AlignmentLine = _resolveComponent(\"AlignmentLine\")!\n const _component_MultiSelectOperate = _resolveComponent(\"MultiSelectOperate\")!\n const _component_Operate = _resolveComponent(\"Operate\")!\n const _component_ViewportBackground = _resolveComponent(\"ViewportBackground\")!\n const _component_MouseSelection = _resolveComponent(\"MouseSelection\")!\n const _component_EditableElement = _resolveComponent(\"EditableElement\")!\n const _component_LinkDialog = _resolveComponent(\"LinkDialog\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"canvas\",\n ref: \"canvasRef\",\n onMousewheel: _cache[3] || (_cache[3] = $event => _ctx.handleMousewheelCanvas($event)),\n onMousedown: _cache[4] || (_cache[4] = $event => _ctx.handleClickBlankArea($event))\n }, [\n (_ctx.creatingElement)\n ? (_openBlock(), _createBlock(_component_ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _ctx.insertElementFromCreateSelection(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _ctx.canvasScale + 'px',\n height: _ctx.viewportStyles.height * _ctx.canvasScale + 'px',\n left: _ctx.viewportStyles.left + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.alignmentLines, (line, index) => {\n return (_openBlock(), _createBlock(_component_AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length\n }, null, 8, [\"type\", \"axis\", \"length\"]))\n }), 128)),\n (_ctx.activeElementIdList.length > 1)\n ? (_openBlock(), _createBlock(_component_MultiSelectOperate, {\n key: 0,\n elementList: _ctx.elementList,\n scaleMultiElement: _ctx.scaleMultiElement\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element) => {\n return (_openBlock(), _createBlock(_component_Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _ctx.activeElementIdList.includes(element.id),\n isActive: _ctx.handleElementId === element.id,\n isActiveGroupElement: _ctx.activeGroupElementId === element.id,\n isMultiSelect: _ctx.activeElementIdList.length > 1,\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n openLinkDialog: _ctx.openLinkDialog,\n dragLineElement: _ctx.dragLineElement\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"openLinkDialog\", \"dragLineElement\"]))\n }), 128)),\n _createVNode(_component_ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref: \"viewportRef\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_ctx.mouseSelectionState.isShow)\n ? (_openBlock(), _createBlock(_component_MouseSelection, {\n key: 0,\n top: _ctx.mouseSelectionState.top,\n left: _ctx.mouseSelectionState.left,\n width: _ctx.mouseSelectionState.width,\n height: _ctx.mouseSelectionState.height,\n quadrant: _ctx.mouseSelectionState.quadrant\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element, index) => {\n return (_openBlock(), _createBlock(_component_EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _ctx.activeElementIdList.length > 1,\n selectElement: _ctx.selectElement,\n openLinkDialog: _ctx.openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\", \"openLinkDialog\"]))\n }), 128))\n ], 4)\n ], 4),\n _createVNode(_component_Modal, {\n visible: _ctx.linkDialogVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.linkDialogVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 540,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LinkDialog, {\n onClose: _cache[1] || (_cache[1] = ($event: any) => (_ctx.linkDialogVisible = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 544)), [\n [_directive_contextmenu, _ctx.contextmenus],\n [_directive_click_outside, _ctx.removeEditorAreaFocus]\n ])\n}","// 清除文字选区\nexport const removeAllRanges = () => {\n const selection = window.getSelection()\n selection && selection.removeAllRanges()\n}","import { ref, computed, onMounted, onUnmounted, Ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nexport default (canvasRef: Ref) => {\n const viewportLeft = ref(0)\n const viewportTop = ref(0)\n\n const mainStore = useMainStore()\n const { canvasPercentage } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n // 计算画布可视区域的位置\n const setViewportPosition = () => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualWidth / VIEWPORT_SIZE)\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\n viewportTop.value = (canvasHeight - viewportActualWidth * viewportRatio.value) / 2\n }\n else {\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n viewportLeft.value = (canvasWidth - viewportActualHeight / viewportRatio.value) / 2\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\n }\n }\n\n // 可视区域缩放或比例变化时,更新可视区域的位置\n watch([canvasPercentage, viewportRatio], setViewportPosition)\n\n // 画布可视区域位置和大小的样式\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n left: viewportLeft.value,\n top: viewportTop.value,\n }))\n\n // 监听画布尺寸发生变化时,更新可视区域的位置\n const resizeObserver = new ResizeObserver(setViewportPosition)\n\n onMounted(() => {\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\n })\n onUnmounted(() => {\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\n })\n\n return {\n viewportStyles,\n }\n}","import { Ref, reactive } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementRange } from '@/utils/element'\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale } = storeToRefs(mainStore)\n\n const mouseSelectionState = reactive({\n isShow: false,\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n quadrant: 1,\n })\n\n // 更新鼠标框选范围\n const updateMouseSelection = (e: MouseEvent) => {\n if (!viewportRef.value) return\n\n let isMouseDown = true\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const minSelectionRange = 5\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const left = (startPageX - viewportRect.x) / canvasScale.value\n const top = (startPageY - viewportRect.y) / canvasScale.value\n\n // 确定框选的起始位置和其他默认值初始化\n mouseSelectionState.isShow = false\n mouseSelectionState.quadrant = 4\n mouseSelectionState.top = top\n mouseSelectionState.left = left\n mouseSelectionState.width = 0\n mouseSelectionState.height = 0\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\n\n const width = Math.abs(offsetWidth)\n const height = Math.abs(offsetHeight)\n\n if ( width < minSelectionRange || height < minSelectionRange ) return\n \n // 计算鼠标框选(移动)的方向\n // 按四个象限的位置区分,如右下角为第四象限\n let quadrant = 0\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 1\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 2\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\n\n // 更新框选范围\n mouseSelectionState.isShow = true\n mouseSelectionState.quadrant = quadrant\n mouseSelectionState.width = width\n mouseSelectionState.height = height\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n isMouseDown = false\n\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\n let inRangeElementList: PPTElement[] = []\n for (let i = 0; i < elementList.value.length; i++) {\n const element = elementList.value[i]\n const mouseSelectionLeft = mouseSelectionState.left\n const mouseSelectionTop = mouseSelectionState.top\n const mouseSelectionWidth = mouseSelectionState.width\n const mouseSelectionHeight = mouseSelectionState.height\n\n const quadrant = mouseSelectionState.quadrant\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (quadrant === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (quadrant === 1) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (quadrant === 2) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (quadrant === 3) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n\n // 被锁定的元素即使在范围内,也不需要设置为选中状态\n if (isInclude && !element.lock) inRangeElementList.push(element)\n }\n\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\n if (inRangeElement.groupId) {\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\n }\n return true\n })\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n mainStore.setActiveElementIdList(inRangeElementIdList)\n\n mouseSelectionState.isShow = false\n }\n }\n\n return {\n mouseSelectionState,\n updateMouseSelection,\n }\n}","import { onMounted, onUnmounted, Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (elementRef: Ref) => {\n const { disableHotkeys } = storeToRefs(useMainStore())\n\n const { createImageElement, createTextElement } = useCreateElement()\n\n // 拖拽元素到画布中\n const handleDrop = (e: DragEvent) => {\n if (!e.dataTransfer || e.dataTransfer.items.length === 0) return\n const dataTransferItem = e.dataTransfer.items[0]\n\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\n const imageFile = dataTransferItem.getAsFile()\n if (imageFile) {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n }\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\n dataTransferItem.getAsString(text => {\n if (disableHotkeys.value) return\n const string = parseText2Paragraphs(text)\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, string)\n })\n }\n }\n\n onMounted(() => {\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\n\n document.ondragleave = e => e.preventDefault()\n document.ondrop = e => e.preventDefault()\n document.ondragenter = e => e.preventDefault()\n document.ondragover = e => e.preventDefault()\n })\n onUnmounted(() => {\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\n\n document.ondragleave = null\n document.ondrop = null\n document.ondragenter = null\n document.ondragover = null\n })\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTTextElement, PPTImageElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n/**\n * 计算给定坐标到原点连线的弧度\n * @param x 坐标x\n * @param y 坐标y\n */\nconst getAngleFromCoordinate = (x: number, y: number) => {\n const radian = Math.atan2(x, y)\n const angle = 180 / Math.PI * radian\n return angle\n}\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 旋转元素\n const rotateElement = (element: PPTTextElement | PPTImageElement | PPTShapeElement) => {\n let isMouseDown = true\n let angle = 0\n const elOriginRotate = element.rotate || 0\n\n const elLeft = element.left\n const elTop = element.top\n const elWidth = element.width\n const elHeight = element.height\n\n // 元素中心点(旋转中心点)\n const centerX = elLeft + elWidth / 2\n const centerY = elTop + elHeight / 2\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\n const mouseX = (e.pageX - viewportRect.left) / canvasScale.value\n const mouseY = (e.pageY - viewportRect.top) / canvasScale.value\n const x = mouseX - centerX\n const y = centerY - mouseY\n\n angle = getAngleFromCoordinate(x, y)\n\n // 靠近45倍数的角度时有吸附效果\n const sorptionRange = 5\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\n\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (elOriginRotate === angle) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n rotateElement,\n }\n}","export const ELEMENT_TYPE_ZH = {\n text: '文本',\n image: '图片',\n shape: '形状',\n line: '线条',\n chart: '图表',\n table: '表格',\n video: '视频',\n audio: '音频',\n}\n\nexport const MIN_SIZE = {\n text: 20,\n image: 20,\n shape: 15,\n chart: 200,\n table: 20,\n video: 250,\n audio: 20,\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandlers, AlignmentLineProps, MultiSelectRange } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { MIN_SIZE } from '@/configs/element'\nimport { AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface RotateElementData {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\n/**\n * 计算旋转后的元素八个缩放点的位置\n * @param element 元素原始位置大小信息\n * @param angle 旋转角度\n */\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\n const { left, top, width, height } = element\n\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\n\n const tlbraRadian = (180 - angle - auxiliaryAngle) * Math.PI / 180\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\n const taRadian = (90 - angle) * Math.PI / 180\n const raRadian = angle * Math.PI / 180\n\n const halfWidth = width / 2\n const halfHeight = height / 2\n\n const middleLeft = left + halfWidth\n const middleTop = top + halfHeight\n\n const leftTopPoint = {\n left: middleLeft + radius * Math.cos(tlbraRadian),\n top: middleTop - radius * Math.sin(tlbraRadian),\n }\n const topPoint = {\n left: middleLeft + halfHeight * Math.cos(taRadian),\n top: middleTop - halfHeight * Math.sin(taRadian),\n }\n const rightTopPoint = {\n left: middleLeft + radius * Math.cos(trblaRadian),\n top: middleTop - radius * Math.sin(trblaRadian),\n }\n const rightPoint = {\n left: middleLeft + halfWidth * Math.cos(raRadian),\n top: middleTop + halfWidth * Math.sin(raRadian),\n }\n const rightBottomPoint = {\n left: middleLeft - radius * Math.cos(tlbraRadian),\n top: middleTop + radius * Math.sin(tlbraRadian),\n }\n const bottomPoint = {\n left: middleLeft - halfHeight * Math.sin(raRadian),\n top: middleTop + halfHeight * Math.cos(raRadian),\n }\n const leftBottomPoint = {\n left: middleLeft - radius * Math.cos(trblaRadian),\n top: middleTop + radius * Math.sin(trblaRadian),\n }\n const leftPoint = {\n left: middleLeft - halfWidth * Math.cos(raRadian),\n top: middleTop - halfWidth * Math.sin(raRadian),\n }\n\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\n}\n\n/**\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\n * @param direction 当前操作的缩放点\n * @param points 旋转后的元素八个缩放点的位置\n */\nconst getOppositePoint = (direction: string, points: ReturnType): { left: number; top: number } => {\n const oppositeMap = {\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\n [OperateResizeHandlers.TOP]: points.bottomPoint,\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\n [OperateResizeHandlers.LEFT]: points.rightPoint,\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\n }\n return oppositeMap[direction]\n}\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId, canvasScale } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => {\n let isMouseDown = true\n mainStore.setScalingState(true)\n\n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = element.height\n \n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n const rotateRadian = Math.PI * elRotate / 180\n\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\n const aspectRatio = elOriginWidth / elOriginHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n // 元素最小缩放限制\n const minSize = MIN_SIZE[element.type] || 20\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\n\n let points: ReturnType\n let baseLeft = 0\n let baseTop = 0\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\n if ('rotate' in element && element.rotate) {\n const { left, top, width, height } = element\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\n const oppositePoint = getOppositePoint(command, points)\n\n baseLeft = oppositePoint.left\n baseTop = oppositePoint.top\n }\n\n // 未旋转的元素具有缩放时的对齐吸附功能,在这处收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\n // 其中线条和被旋转过的元素不参与吸附对齐\n else {\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n const isActiveGroupElement = element.id === activeGroupElementId.value\n \n for (const el of elementList.value) {\n if ('rotate' in el && el.rotate) continue\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n const left = el.left\n const top = el.top\n const width = el.width\n const height = el.height\n const right = left + width\n const bottom = top + height\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine)\n verticalLines.push(leftLine, rightLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n }\n \n // 对齐吸附方法\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\n // 水平和垂直两个方向需要分开计算\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\n const sorptionRange = 5\n\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n const correctionVal = { offsetX: 0, offsetY: 0 }\n \n if (currentY || currentY === 0) {\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, currentX || 0)\n const max = Math.max(...range, currentX || 0)\n \n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\n correctionVal.offsetY = currentY - value\n isHorizontalAdsorbed = true\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\n }\n }\n }\n if (currentX || currentX === 0) {\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, (currentY || 0))\n const max = Math.max(...range, (currentY || 0))\n\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\n correctionVal.offsetX = currentX - value\n isVerticalAdsorbed = true\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\n }\n }\n }\n alignmentLines.value = _alignmentLines\n return correctionVal\n }\n\n // 开始缩放\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n let width = elOriginWidth\n let height = elOriginHeight\n let left = elOriginLeft\n let top = elOriginTop\n \n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\n if (elRotate) {\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\n\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\n }\n\n // 根据不同的操作点分别计算元素缩放后的大小和位置\n // 需要注意:\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getSizeWithinRange(elOriginHeight + revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getSizeWithinRange(elOriginHeight - revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.TOP) {\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n }\n\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\n const currentOppositePoint = getOppositePoint(command, currentPoints)\n const currentBaseLeft = currentOppositePoint.left\n const currentBaseTop = currentOppositePoint.top\n\n const offsetX = currentBaseLeft - baseLeft\n const offsetY = currentBaseTop - baseTop\n\n left = left - offsetX\n top = top - offsetY\n }\n\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\n // 额外需要处理对齐吸附相关的操作\n // 锁定宽高比例相关的操作同上,不再赘述\n else {\n let moveX = x / canvasScale.value\n let moveY = y / canvasScale.value\n\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getSizeWithinRange(elOriginHeight + moveY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getSizeWithinRange(elOriginHeight - moveY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth - moveX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth + moveX)\n }\n else if (command === OperateResizeHandlers.TOP) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n }\n \n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, left, top, width, height } : el)\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n alignmentLines.value = []\n \n if (startPageX === e.pageX && startPageY === e.pageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n }\n\n // 多选元素缩放\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\n let isMouseDown = true\n \n const { minX, maxX, minY, maxY } = range\n const operateWidth = maxX - minX\n const operateHeight = maxY - minY\n const aspectRatio = operateWidth / operateHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = (currentPageX - startPageX) / canvasScale.value\n let y = (currentPageY - startPageY) / canvasScale.value\n\n // 锁定宽高比例,逻辑同上\n if (ctrlOrShiftKeyActive.value) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\n }\n\n // 所有选中元素的整体范围\n let currentMinX = minX\n let currentMaxX = maxX\n let currentMinY = minY\n let currentMaxY = maxY\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n currentMaxX = maxX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n currentMinX = minX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n currentMinX = minX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n currentMaxX = maxX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.TOP) {\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT) {\n currentMinX = minX + x\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n currentMaxX = maxX + x\n }\n\n // 所有选中元素的整体宽高\n const currentOppositeWidth = currentMaxX - currentMinX\n const currentOppositeHeight = currentMaxY - currentMinY\n\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\n let widthScale = currentOppositeWidth / operateWidth\n let heightScale = currentOppositeHeight / operateHeight\n\n if (widthScale <= 0) widthScale = 0\n if (heightScale <= 0) heightScale = 0\n \n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\n elementList.value = elementList.value.map(el => {\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\n return {\n ...el,\n width: originElement.width * widthScale,\n height: originElement.height * heightScale,\n left: currentMinX + (originElement.left - minX) * widthScale,\n top: currentMinY + (originElement.top - minY) * heightScale,\n }\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (startPageX === e.pageX && startPageY === e.pageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n scaleElement,\n scaleMultiElement,\n }\n}","import { Ref } from 'vue'\nimport { uniq } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\n\nexport default (\n elementList: Ref,\n moveElement: (e: MouseEvent, element: PPTElement) => void,\n) => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeGroupElementId, handleElementId, editorAreaFocus } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n // 选中元素\n // startMove 表示是否需要再选中操作后进入到开始移动的状态\n const selectElement = (e: MouseEvent, element: PPTElement, startMove = true) => {\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n\n // 如果目标元素当前未被选中,则将他设为选中状态\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一起设置为选中状态,否则仅将目标元素设置为选中状态\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\n if (!activeElementIdList.value.includes(element.id)) {\n let newActiveIdList: string[] = []\n\n if (ctrlOrShiftKeyActive.value) {\n newActiveIdList = [...activeElementIdList.value, element.id]\n }\n else newActiveIdList = [element.id]\n \n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\n }\n\n mainStore.setActiveElementIdList(uniq(newActiveIdList))\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\n else if (ctrlOrShiftKeyActive.value) {\n let newActiveIdList: string[] = []\n\n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\n }\n else {\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\n }\n\n if (newActiveIdList.length > 0) {\n mainStore.setActiveElementIdList(newActiveIdList)\n }\n }\n\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\n else if (handleElementId.value !== element.id) {\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\n else if (activeGroupElementId.value !== element.id) {\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) {\n mainStore.setActiveGroupElementId(element.id)\n ;(e.target as HTMLElement).onmouseup = null\n }\n }\n }\n\n if (startMove) moveElement(e, element)\n }\n\n // 选中页面内的全部元素\n const selectAllElement = () => {\n const unlockedElements = elementList.value.filter(el => !el.lock)\n const newActiveElementIdList = unlockedElements.map(el => el.id)\n mainStore.setActiveElementIdList(newActiveElementIdList)\n }\n\n return {\n selectElement,\n selectAllElement,\n }\n}\n","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { getRectRotatedRange, AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId, canvasScale } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent, element: PPTElement) => {\n if (!activeElementIdList.value.includes(element.id)) return\n let isMouseDown = true\n\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n \n const sorptionRange = 5\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\n \n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n let isMisoperation: boolean | null = null\n\n const isActiveGroupElement = element.id === activeGroupElementId.value\n\n // 收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n for (const el of elementList.value) {\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n let left, top, width, height\n if ('rotate' in el && el.rotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: el.left,\n top: el.top,\n width: el.width,\n height: el.height,\n rotate: el.rotate,\n })\n left = xRange[0]\n top = yRange[0]\n width = xRange[1] - xRange[0]\n height = yRange[1] - yRange[0]\n }\n else {\n left = el.left\n top = el.top\n width = el.width\n height = el.height\n }\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n // 对齐吸附线去重\n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n\n // 开始移动\n document.onmousemove = e => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\n if (isMisoperation !== false) {\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \n Math.abs(startPageY - currentPageY) < sorptionRange\n }\n if (!isMouseDown || isMisoperation) return\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n // 基础目标位置\n let targetLeft = elOriginLeft + moveX\n let targetTop = elOriginTop + moveY\n\n // 计算目标元素在画布中的位置范围,用于吸附对齐\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\n\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n if (elOriginRotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: targetLeft,\n top: targetTop,\n width: elOriginWidth,\n height: elOriginHeight,\n rotate: elOriginRotate,\n })\n targetMinX = xRange[0]\n targetMaxX = xRange[1]\n targetMinY = yRange[0]\n targetMaxY = yRange[1]\n }\n else if (element.type === 'line') {\n targetMinX = targetLeft\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\n targetMinY = targetTop\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\n }\n else {\n targetMinX = targetLeft\n targetMaxX = targetLeft + elOriginWidth\n targetMinY = targetTop\n targetMaxY = targetTop + elOriginHeight\n }\n }\n else {\n const leftValues = []\n const topValues = []\n const rightValues = []\n const bottomValues = []\n \n for (let i = 0; i < originActiveElementList.length; i++) {\n const element = originActiveElementList[i]\n const left = element.left + moveX\n const top = element.top + moveY\n const width = element.width\n const height = ('height' in element && element.height) ? element.height : 0\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n\n if ('rotate' in element && element.rotate) {\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\n leftValues.push(xRange[0])\n topValues.push(yRange[0])\n rightValues.push(xRange[1])\n bottomValues.push(yRange[1])\n }\n else if (element.type === 'line') {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\n }\n else {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + width)\n bottomValues.push(top + height)\n }\n }\n\n targetMinX = Math.min(...leftValues)\n targetMaxX = Math.max(...rightValues)\n targetMinY = Math.min(...topValues)\n targetMaxY = Math.max(...bottomValues)\n }\n \n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\n\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\n // 水平和垂直两个方向需要分开计算\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, targetMinX, targetMaxX)\n const max = Math.max(...range, targetMinX, targetMaxX)\n \n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMinY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMaxY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetCenterY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n }\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, targetMinY, targetMaxY)\n const max = Math.max(...range, targetMinY, targetMaxY)\n\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMinX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMaxX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetCenterX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n }\n alignmentLines.value = _alignmentLines\n \n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n elementList.value = elementList.value.map(el => {\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\n })\n }\n\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\n else {\n const handleElement = elementList.value.find(el => el.id === element.id)\n if (!handleElement) return\n\n elementList.value = elementList.value.map(el => {\n if (activeElementIdList.value.includes(el.id)) {\n if (el.id === element.id) {\n return {\n ...el,\n left: targetLeft,\n top: targetTop,\n }\n }\n return {\n ...el,\n left: el.left + (targetLeft - handleElement.left),\n top: el.top + (targetTop - handleElement.top),\n }\n }\n return el\n })\n }\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n alignmentLines.value = []\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragElement,\n }\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTLineElement } from '@/types/slides'\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface AdsorptionPoint {\n x: number;\n y: number;\n}\n\nexport default (elementList: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 拖拽线条端点\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => {\n let isMouseDown = true\n\n const sorptionRange = 8\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const adsorptionPoints: AdsorptionPoint[] = []\n\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\n for (let i = 0; i < elementList.value.length; i++) {\n const _element = elementList.value[i]\n if (_element.type === 'line' || _element.rotate) continue\n\n const left = _element.left\n const top = _element.top\n const width = _element.width\n const height = _element.height\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topPoint = { x: centerY, y: top }\n const bottomPoint = { x: centerY, y: bottom }\n const leftPoint = { x: left, y: centerX }\n const rightPoint = { x: right, y: centerX }\n\n const leftTopPoint = { x: left, y: top }\n const rightTopPoint = { x: right, y: top }\n const leftBottomPoint = { x: left, y: bottom }\n const rightBottomPoint = { x: right, y: bottom }\n\n adsorptionPoints.push(\n topPoint,\n bottomPoint,\n leftPoint,\n rightPoint,\n leftTopPoint,\n rightTopPoint,\n leftBottomPoint,\n rightBottomPoint,\n )\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n \n // 线条起点和终点在编辑区域中的位置\n let startX = element.left + element.start[0]\n let startY = element.top + element.start[1]\n let endX = element.left + element.end[0]\n let endY = element.top + element.end[1]\n\n const mid = element.broken || element.curve || [0, 0]\n let midX = element.left + mid[0]\n let midY = element.top + mid[1]\n\n // 拖拽起点或终点的位置\n // 水平和垂直方向上有吸附\n if (command === OperateLineHandlers.START) {\n startX = startX + moveX\n startY = startY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\n startX = x\n startY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.END) {\n endX = endX + moveX\n endY = endY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\n endX = x\n endY = y\n break\n }\n }\n }\n else {\n midX = midX + moveX\n midY = midY + moveY\n\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\n midX = (startX + endX) / 2\n midY = (startY + endY) / 2\n }\n }\n\n // 计算更新起点和终点基于自身元素位置的坐标\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const start: [number, number] = [0, 0]\n const end: [number, number] = [maxX - minX, maxY - minY]\n if (startX > endX) {\n start[0] = maxX - minX\n end[0] = 0\n }\n if (startY > endY) {\n start[1] = maxY - minY\n end[1] = 0\n }\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id) {\n const newEl: PPTLineElement = {\n ...(el as PPTLineElement),\n left: minX,\n top: minY,\n start: start,\n end: end,\n }\n if (command !== OperateLineHandlers.MID) {\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n }\n else {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n return newEl\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragLineElement,\n }\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { CreateElementSelectionData, CreatingLineElement, CreatingShapeElement } from '@/types/edit'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, creatingElement } = storeToRefs(mainStore)\n\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n return { left, top, width, height }\n }\n\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n const _start: [number, number] = [\n startX === minX ? 0 : width,\n startY === minY ? 0 : height,\n ]\n const _end: [number, number] = [\n endX === minX ? 0 : width,\n endY === minY ? 0 : height,\n ]\n\n return {\n left,\n top,\n start: _start,\n end: _end,\n }\n }\n\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\n\n // 根据鼠标选区的位置大小插入元素\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\n if (!creatingElement.value) return\n\n const type = creatingElement.value.type\n if (type === 'text') {\n const position = formatCreateSelection(selectionData)\n position && createTextElement(position)\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, (creatingElement.value as CreatingShapeElement).data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, (creatingElement.value as CreatingLineElement).data)\n }\n mainStore.setCreatingElement(null)\n }\n\n return {\n insertElementFromCreateSelection,\n }\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), {\n elementInfo: _ctx.elementInfo,\n selectElement: _ctx.selectElement,\n contextmenus: _ctx.contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 12, _hoisted_1))\n}","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\n\nexport const enum ElementTypes {\n TEXT = 'text',\n IMAGE = 'image',\n SHAPE = 'shape',\n LINE = 'line',\n CHART = 'chart',\n TABLE = 'table',\n LATEX = 'latex',\n VIDEO = 'video',\n AUDIO = 'audio',\n}\n\n/**\n * 元素阴影\n * \n * h: 水平偏移量\n * \n * v: 垂直偏移量\n * \n * blur: 模糊程度\n * \n * color: 阴影颜色\n */\nexport interface PPTElementShadow {\n h: number;\n v: number;\n blur: number;\n color: string;\n}\n\n/**\n * 元素边框\n * \n * style?: 边框样式(实线或虚线)\n * \n * width?: 边框宽度\n * \n * color?: 边框颜色\n */\nexport interface PPTElementOutline {\n style?: 'dashed' | 'solid';\n width?: number;\n color?: string;\n}\n\n/**\n * 元素超链接\n * \n * type: 链接类型(网页、幻灯片页面)\n * \n * target: 目标地址(网页链接、幻灯片页面ID)\n */\nexport interface PPTElementLink {\n type: 'web' | 'slide';\n target: string;\n}\n\n\n/**\n * 元素通用属性\n * \n * id: 元素ID\n * \n * left: 元素水平方向位置(距离画布左侧)\n * \n * top: 元素垂直方向位置(距离画布顶部)\n * \n * lock?: 锁定元素\n * \n * groupId?: 组合ID(拥有相同组合ID的元素即为同一组合元素成员)\n * \n * width: 元素宽度\n * \n * height: 元素高度\n * \n * rotate: 旋转角度\n * \n * link?: 超链接\n */\ninterface PPTBaseElement {\n id: string;\n left: number;\n top: number;\n lock?: boolean;\n groupId?: string;\n width: number;\n height: number;\n rotate: number;\n link?: PPTElementLink;\n}\n\n\n/**\n * 文本元素\n * \n * type: 元素类型(text)\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * outline?: 边框\n * \n * fill?: 填充色\n * \n * lineHeight?: 行高(倍),默认1.5\n * \n * wordSpace?: 字间距,默认0\n * \n * opacity?: 不透明度,默认1\n * \n * shadow?: 阴影\n */\nexport interface PPTTextElement extends PPTBaseElement {\n type: 'text';\n content: string;\n defaultFontName: string;\n defaultColor: string;\n outline?: PPTElementOutline;\n fill?: string;\n lineHeight?: number;\n wordSpace?: number;\n opacity?: number;\n shadow?: PPTElementShadow;\n}\n\n\n/**\n * 图片翻转、形状翻转\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n */\nexport interface ImageOrShapeFlip {\n flipH?: boolean;\n flipV?: boolean;\n}\n\n/**\n * 图片滤镜\n * \n * https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter\n * \n * 'blur'?: 模糊,默认0(px)\n * \n * 'brightness'?: 亮度,默认100(%)\n * \n * 'contrast'?: 对比度,默认100(%)\n * \n * 'grayscale'?: 灰度,默认0(%)\n * \n * 'saturate'?: 饱和度,默认100(%)\n * \n * 'hue-rotate'?: 色相旋转,默认0(deg)\n * \n * 'opacity'?: 不透明度,默认100(%)\n */\nexport interface ImageElementFilters {\n 'blur'?: string;\n 'brightness'?: string;\n 'contrast'?: string;\n 'grayscale'?: string;\n 'saturate'?: string;\n 'hue-rotate'?: string;\n 'opacity'?: string;\n}\n\n/**\n * 图片裁剪\n * \n * range: 裁剪范围,例如:[[10, 10], [90, 90]] 表示裁取原图从左上角 10%, 10% 到 90%, 90% 的范围\n * \n * shape: 裁剪形状,见 configs/imageClip.ts CLIPPATHS \n */\nexport interface ImageElementClip {\n range: [[number, number], [number, number]];\n shape: string;\n}\n\n/**\n * 图片元素\n * \n * type: 元素类型(image)\n * \n * fixedRatio: 固定图片宽高比例\n * \n * src: 图片地址\n * \n * outline?: 边框\n * \n * filters?: 图片滤镜\n * \n * clip?: 裁剪信息\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n */\nexport interface PPTImageElement extends PPTBaseElement {\n type: 'image';\n fixedRatio: boolean;\n src: string;\n outline?: PPTElementOutline;\n filters?: ImageElementFilters;\n clip?: ImageElementClip;\n flipH?: boolean;\n flipV?: boolean;\n shadow?: PPTElementShadow;\n}\n\n\n/**\n * 形状渐变\n * \n * type: 渐变类型(径向、线性)\n * \n * color: 渐变颜色\n * \n * rotate: 渐变角度(线性渐变)\n */\nexport interface ShapeGradient {\n type: 'linear' | 'radial';\n color: [string, string];\n rotate: number;\n}\n\n/**\n * 形状内文本\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * align: 文本对齐方向(垂直方向)\n */\nexport interface ShapeText {\n content: string;\n defaultFontName: string;\n defaultColor: string;\n align: 'top' | 'middle' | 'bottom';\n}\n\n/**\n * 形状元素\n * \n * type: 元素类型(shape)\n * \n * viewBox: SVG的viewBox属性,默认为正方形,例如 1000 表示 '0 0 1000 1000'\n * \n * path: 形状路径,SVG path 的 d 属性\n * \n * fixedRatio: 固定形状宽高比例\n * \n * fill: 填充,不存在渐变时生效\n * \n * gradient?: 渐变,该属性存在时将优先作为填充\n * \n * outline?: 边框\n * \n * opacity?: 不透明度\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n * \n * special?: 特殊形状(标记一些难以解析的形状,例如路径使用了 L Q C A 以外的类型,该类形状在导出后将变为图片的形式)\n * \n * text?: 形状内文本\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape';\n viewBox: number;\n path: string;\n fixedRatio: boolean;\n fill: string;\n gradient?: ShapeGradient;\n outline?: PPTElementOutline;\n opacity?: number;\n flipH?: boolean;\n flipV?: boolean;\n shadow?: PPTElementShadow;\n special?: boolean;\n text?: ShapeText;\n}\n\n\nexport type LinePoint = '' | 'arrow' | 'dot' \n\n/**\n * 线条元素\n * \n * type: 元素类型(line)\n * \n * start: 起点位置([x, y])\n * \n * end: 终点位置([x, y])\n * \n * style: 线条样式(实线、虚线)\n * \n * color: 线条颜色\n * \n * points: 端点样式([起点样式, 终点样式],可选:无、箭头、圆点)\n * \n * shadow?: 阴影\n * \n * broken?: 折线中点位置([x, y])\n * \n * curve?: 曲线中点位置([x, y])\n */\nexport interface PPTLineElement extends Omit {\n type: 'line';\n start: [number, number];\n end: [number, number];\n style: 'solid' | 'dashed';\n color: string;\n points: [LinePoint, LinePoint];\n shadow?: PPTElementShadow;\n broken?: [number, number];\n curve?: [number, number];\n}\n\n\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport interface ChartData {\n labels: string[];\n legends: string[];\n series: number[][];\n}\n\n/**\n * 图表元素\n * \n * type: 元素类型(chart)\n * \n * fill?: 填充色\n * \n * chartType: 图表类型\n * \n * data: 图表数据\n * \n * options?: 图表配置项\n * \n * outline?: 边框\n * \n * themeColor: 主题色\n * \n * gridColor?: 网格&坐标颜色\n * \n * legend?: 图例/位置\n */\nexport interface PPTChartElement extends PPTBaseElement {\n type: 'chart';\n fill?: string;\n chartType: ChartType;\n data: ChartData;\n options?: ILineChartOptions & IBarChartOptions & IPieChartOptions;\n outline?: PPTElementOutline;\n themeColor: string[];\n gridColor?: string;\n legend?: '' | 'top' | 'bottom',\n}\n\n\n/**\n * 表格单元格样式\n * \n * bold?: 加粗\n * \n * em?: 斜体\n * \n * underline?: 下划线\n * \n * strikethrough?: 删除线\n * \n * color?: 字体颜色\n * \n * backcolor?: 填充色\n * \n * fontsize?: 字体大小\n * \n * fontname?: 字体\n * \n * align?: 对齐方式\n */\nexport interface TableCellStyle {\n bold?: boolean;\n em?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n color?: string;\n backcolor?: string;\n fontsize?: string;\n fontname?: string;\n align?: 'left' | 'center' | 'right';\n}\n\n\n/**\n * 表格单元格\n * \n * id: 单元格ID\n * \n * colspan: 合并列数\n * \n * rowspan: 合并行数\n * \n * text: 文字内容\n * \n * style?: 单元格样式\n */\nexport interface TableCell {\n id: string;\n colspan: number;\n rowspan: number;\n text: string;\n style?: TableCellStyle;\n}\n\n/**\n * 表格主题\n * \n * color: 主题色\n * \n * rowHeader: 标题行\n * \n * rowFooter: 汇总行\n * \n * colHeader: 第一列\n * \n * colFooter: 最后一列\n */\nexport interface TableTheme {\n color: string;\n rowHeader: boolean;\n rowFooter: boolean;\n colHeader: boolean;\n colFooter: boolean;\n}\n\n/**\n * 表格元素\n * \n * type: 元素类型(table)\n * \n * outline: 边框\n * \n * theme?: 主题\n * \n * colWidths: 列宽数组,如[30, 50, 20]表示三列宽度分别为30%, 50%, 20%\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table';\n outline: PPTElementOutline;\n theme?: TableTheme;\n colWidths: number[];\n data: TableCell[][];\n}\n\n\n/**\n * LaTeX元素(公式)\n * \n * type: 元素类型(latex)\n * \n * latex: latex代码\n * \n * path: svg path\n * \n * color: 颜色\n * \n * strokeWidth: 路径宽度\n * \n * viewBox: SVG的viewBox属性\n * \n * fixedRatio: 固定形状宽高比例\n */\nexport interface PPTLatexElement extends PPTBaseElement {\n type: 'latex';\n latex: string;\n path: string;\n color: string;\n strokeWidth: number;\n viewBox: [number, number];\n fixedRatio: boolean;\n}\n\n/**\n * 视频元素\n * \n * type: 元素类型(video)\n * \n * src: 视频地址\n * \n * poster: 预览封面\n */\nexport interface PPTVideoElement extends PPTBaseElement {\n type: 'video';\n src: string;\n poster?: string;\n}\n\n/**\n * 音频元素\n * \n * type: 元素类型(audio)\n * \n * fixedRatio: 固定图标宽高比例\n * \n * color: 图标颜色\n * \n * loop: 循环播放\n * \n * autoplay: 自动播放\n * \n * src: 音频地址\n */\nexport interface PPTAudioElement extends PPTBaseElement {\n type: 'audio';\n fixedRatio: boolean;\n color: string,\n loop: boolean,\n autoplay: boolean,\n src: string;\n}\n\n\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement | PPTLatexElement | PPTVideoElement | PPTAudioElement\n\n\n/**\n * 元素动画\n * \n * elId: 元素ID\n * \n * type: 动画类型\n * \n * duration: 动画持续时间\n */\nexport interface PPTAnimation {\n elId: string;\n type: string;\n duration: number;\n}\n\n/**\n * 幻灯片背景\n * \n * type: 背景类型(纯色、图片、渐变)\n * \n * color?: 背景颜色(纯色)\n * \n * image?: 图片地址(图片)\n * \n * imageSize?: 图片填充方式\n * \n * gradientType?: 渐变类型(线性、径向)\n * \n * gradientColor?: 渐变颜色\n * \n * gradientRotate?: 渐变角度(线性)\n */\nexport interface SlideBackground {\n type: 'solid' | 'image' | 'gradient';\n color?: string;\n image?: string;\n imageSize?: 'cover' | 'contain' | 'repeat';\n gradientType?: 'linear' | 'radial';\n gradientColor?: [string, string];\n gradientRotate?: number;\n}\n\n\nexport type TurningMode = 'no' | 'fade' | 'slideX' | 'slideY'\n\n/**\n * 幻灯片页面\n * \n * id: 页面ID\n * \n * elements: 元素集合\n * \n * remark?: 备注\n * \n * background?: 页面背景\n * \n * animations?: 元素动画集合\n * \n * turningMode?: 翻页方式\n */\nexport interface Slide {\n id: string;\n elements: PPTElement[];\n remark?: string;\n background?: SlideBackground;\n animations?: PPTAnimation[];\n turningMode?: TurningMode;\n}\n\n/**\n * 幻灯片主题\n * \n * backgroundColor: 页面背景颜色\n * \n * themeColor: 主题色,用于默认创建的形状颜色等\n * \n * fontColor: 字体颜色\n * \n * fontName: 字体\n */\nexport interface SlideTheme {\n backgroundColor: string;\n themeColor: string;\n fontColor: string;\n fontName: string;\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\nimport { getElementListRange } from '@/utils/element'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useHistorySnapshot from './useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 将所有选中的元素对齐到画布\n * @param command 对齐方向\n */\n const alignElementToCanvas = (command: ElementAlignCommand) => {\n const viewportWidth = VIEWPORT_SIZE\n const viewportHeight = VIEWPORT_SIZE * viewportRatio.value\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (!activeElementIdList.value.includes(element.id)) continue\n \n // 水平垂直居中\n if (command === ElementAlignCommands.CENTER) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.top = element.top - offsetY \n element.left = element.left - offsetX \n }\n\n // 顶部对齐\n if (command === ElementAlignCommands.TOP) {\n const offsetY = minY - 0\n element.top = element.top - offsetY \n }\n\n // 垂直居中\n else if (command === ElementAlignCommands.VERTICAL) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n element.top = element.top - offsetY \n }\n\n // 底部对齐\n else if (command === ElementAlignCommands.BOTTOM) {\n const offsetY = maxY - viewportHeight\n element.top = element.top - offsetY \n }\n \n // 左侧对齐\n else if (command === ElementAlignCommands.LEFT) {\n const offsetX = minX - 0\n element.left = element.left - offsetX \n }\n\n // 水平居中\n else if (command === ElementAlignCommands.HORIZONTAL) {\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.left = element.left - offsetX \n }\n\n // 右侧对齐\n else if (command === ElementAlignCommands.RIGHT) {\n const offsetX = maxX - viewportWidth\n element.left = element.left - offsetX \n }\n }\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n alignElementToCanvas,\n }\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-288ee59d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageClipHandler = _resolveComponent(\"ImageClipHandler\")!\n const _component_ImageOutline = _resolveComponent(\"ImageOutline\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n (_ctx.isCliping)\n ? (_openBlock(), _createBlock(_component_ImageClipHandler, {\n key: 0,\n src: _ctx.elementInfo.src,\n clipData: _ctx.elementInfo.clip,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n top: _ctx.elementInfo.top,\n left: _ctx.elementInfo.left,\n rotate: _ctx.elementInfo.rotate,\n clipPath: _ctx.clipShape.style,\n onClip: _cache[0] || (_cache[0] = range => _ctx.handleClip(range))\n }, null, 8, [\"src\", \"clipData\", \"width\", \"height\", \"top\", \"left\", \"rotate\", \"clipPath\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _ctx.clipShape.style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _ctx.imgPosition.top,\n left: _ctx.imgPosition.left,\n width: _ctx.imgPosition.width,\n height: _ctx.imgPosition.height,\n filter: _ctx.filter,\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { computed, Ref } from 'vue'\nimport { PPTElementShadow } from '@/types/slides'\n\n// 计算元素的阴影样式\nexport default (shadow: Ref) => {\n const shadowStyle = computed(() => {\n if (shadow.value) {\n const { h, v, blur, color } = shadow.value\n return `${h}px ${v}px ${blur}px ${color}`\n }\n return ''\n })\n\n return {\n shadowStyle,\n }\n}","export const enum ClipPathTypes {\n RECT = 'rect',\n ELLIPSE = 'ellipse',\n POLYGON = 'polygon',\n}\n\nexport const enum ClipPaths {\n RECT = 'rect',\n ROUNDRECT = 'roundRect',\n ELLIPSE = 'ellipse',\n TRIANGLE = 'triangle',\n PENTAGON = 'pentagon',\n RHOMBUS = 'rhombus',\n STAR = 'star',\n}\n\nexport const CLIPPATHS = {\n rect: {\n name: '矩形',\n type: ClipPathTypes.RECT,\n radius: '0',\n style: '',\n },\n rect2: {\n name: '矩形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\n },\n },\n rect3: {\n name: '矩形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.8} Z`\n },\n },\n roundRect: {\n name: '圆角矩形',\n type: ClipPathTypes.RECT,\n radius: '10%',\n style: 'inset(0 0 0 0 round 10% 10% 10% 10%)',\n },\n ellipse: {\n name: '圆形',\n type: ClipPathTypes.ELLIPSE,\n style: 'ellipse(50% 50% at 50% 50%)',\n },\n triangle: {\n name: '三角形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n triangle2: {\n name: '三角形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\n },\n },\n triangle3: {\n name: '三角形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n rhombus: {\n name: '菱形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\n },\n },\n hexagon: {\n name: '六边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.2} 0 L ${width * 0.8} 0 L ${width} ${height * 0.5} L ${width * 0.8} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.5} Z`\n },\n },\n pentagon: {\n name: '五边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${0.38 * height} L ${0.82 * width} ${height} L ${0.18 * width} ${height} L 0 ${0.38 * height} Z`\n },\n },\n parallelogram: {\n name: '平行四边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\n },\n },\n parallelogram2: {\n name: '平行四边形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\n },\n },\n trapezoid: {\n name: '梯形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\n },\n },\n trapezoid2: {\n name: '梯形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\n },\n },\n}","import { computed, Ref } from 'vue'\n\n// 计算元素的翻转样式\nexport default (flipH: Ref, flipV: Ref) => {\n const flipStyle = computed(() => {\n let style = ''\n \n if (flipH.value && flipV.value) style = 'rotateX(180deg) rotateY(180deg)'\n else if (flipV.value) style = 'rotateX(180deg)'\n else if (flipH.value) style = 'rotateY(180deg)'\n\n return style\n })\n\n return {\n flipStyle,\n }\n}","import { computed, Ref } from 'vue'\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\nimport { ImageElementClip } from '@/types/slides'\n\nexport default (clip: Ref) => {\n const clipShape = computed(() => {\n if (!clip.value) return CLIPPATHS.rect\n const shape = clip.value.shape || ClipPathTypes.RECT\n\n return CLIPPATHS[shape]\n })\n\n const imgPosition = computed(() => {\n if (!clip.value) {\n return {\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n }\n }\n\n const [start, end] = clip.value.range\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return {\n left: -left + '%',\n top: -top + '%',\n width: 100 / widthScale + '%',\n height: 100 / heightScale + '%',\n }\n })\n\n return {\n clipShape,\n imgPosition,\n }\n}","import { computed, Ref } from 'vue'\nimport { ImageElementFilters } from '@/types/slides'\n\nexport default (filters: Ref) => {\n const filter = computed(() => {\n if (!filters.value) return ''\n let filter = ''\n for (const key of Object.keys(filters.value)) {\n filter += `${key}(${filters.value[key]}) `\n }\n return filter\n })\n\n return {\n filter,\n }\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageRectOutline = _resolveComponent(\"ImageRectOutline\")!\n const _component_ImageEllipseOutline = _resolveComponent(\"ImageEllipseOutline\")!\n const _component_ImagePolygonOutline = _resolveComponent(\"ImagePolygonOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.clipShape.type === 'rect')\n ? (_openBlock(), _createBlock(_component_ImageRectOutline, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n radius: _ctx.clipShape.radius,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_ctx.clipShape.type === 'ellipse')\n ? (_openBlock(), _createBlock(_component_ImageEllipseOutline, {\n key: 1,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_ctx.clipShape.type === 'polygon')\n ? (_openBlock(), _createBlock(_component_ImagePolygonOutline, {\n key: 2,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline,\n createPath: _ctx.clipShape.createPath\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-48a14431\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n rx: _ctx.radius,\n ry: _ctx.radius,\n width: _ctx.width,\n height: _ctx.height,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","import { computed, Ref } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\n\n// 计算边框相关属性值,主要是对默认值的处理\nexport default (outline: Ref) => {\n const outlineWidth = computed(() => outline.value?.width ?? 0)\n const outlineStyle = computed(() => outline.value?.style || 'solid')\n const outlineColor = computed(() => outline.value?.color || '#d14424')\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-rect-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n radius: {\n type: String,\n default: '0',\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImageRectOutline.vue?vue&type=template&id=48a14431&scoped=true&ts=true\"\nimport script from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=48a14431&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-48a14431\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-692bbda6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n cx: _ctx.width / 2,\n cy: _ctx.height / 2,\n rx: _ctx.width / 2,\n ry: _ctx.height / 2,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-ellipse-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImageEllipseOutline.vue?vue&type=template&id=692bbda6&scoped=true&ts=true\"\nimport script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=692bbda6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-692bbda6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-21ca95cc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n d: _ctx.createPath(_ctx.width, _ctx.height),\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-polygon-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n createPath: {\n type: Function,\n required: true,\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImagePolygonOutline.vue?vue&type=template&id=21ca95cc&scoped=true&ts=true\"\nimport script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=21ca95cc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-21ca95cc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTImageElement } from '@/types/slides'\nimport useClipImage from '../useClipImage'\n\nimport ImageRectOutline from './ImageRectOutline.vue'\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\n\nexport default defineComponent({\n name: 'image-outline',\n components: {\n ImageRectOutline,\n ImageEllipseOutline,\n ImagePolygonOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const clip = computed(() => props.elementInfo.clip)\n const { clipShape } = useClipImage(clip)\n\n return {\n clipShape,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=6b56be7d&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d8c610c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z\"\n })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = [\"onMousedown\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 4 L 16 4 Z\"\n })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(_ctx.clipWrapperPositionStyle)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_ctx.bottomImgPositionStyle)\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ..._ctx.topImgWrapperPositionStyle,\n clipPath: _ctx.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_ctx.topImgPositionStyle)\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(_ctx.topImgWrapperPositionStyle),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['left-top', 'right-top', 'left-bottom', 'right-bottom'], (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _ctx.rotateClassName]),\n key: point,\n onMousedown: _withModifiers($event => _ctx.scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['top', 'bottom', 'left', 'right'], (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, _ctx.rotateClassName]),\n key: point,\n onMousedown: _withModifiers($event => _ctx.scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, _ctx.handleClip]\n ])\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, reactive, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ImageClipData, ImageClipDataRange, ImageClipedEmitData, OperateResizeHandler, OperateResizeHandlers } from '@/types/edit'\n\nexport default defineComponent({\n name: 'image-clip-handler',\n emits: ['clip'],\n props: {\n src: {\n type: String,\n required: true,\n },\n clipData: {\n type: Object as PropType,\n },\n clipPath: {\n type: String,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n top: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n required: true,\n },\n rotate: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const { canvasScale } = storeToRefs(useMainStore())\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const clipWrapperPositionStyle = reactive({\n top: '0',\n left: '0',\n })\n const isSettingClipRange = ref(false)\n const currentRange = ref(null)\n\n // 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\n const getClipDataTransformInfo = () => {\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return { widthScale, heightScale, left, top }\n }\n \n // 底层图片位置大小(遮罩区域图片)\n const imgPosition = computed(() => {\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\n return {\n left: -left,\n top: -top,\n width: 100 / widthScale,\n height: 100 / heightScale,\n }\n })\n\n // 底层图片位置大小样式(遮罩区域图片)\n const bottomImgPositionStyle = computed(() => {\n return {\n top: imgPosition.value.top + '%',\n left: imgPosition.value.left + '%',\n width: imgPosition.value.width + '%',\n height: imgPosition.value.height + '%',\n }\n })\n\n // 顶层图片容器位置大小(裁剪高亮区域)\n const topImgWrapperPosition = reactive({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 顶层图片容器位置大小样式(裁剪高亮区域)\n const topImgWrapperPositionStyle = computed(() => {\n return {\n top: topImgWrapperPosition.top + '%',\n left: topImgWrapperPosition.left + '%',\n width: topImgWrapperPosition.width + '%',\n height: topImgWrapperPosition.height + '%',\n }\n })\n\n // 顶层图片位置大小样式(裁剪区域图片)\n const topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const topLeft = topImgWrapperPosition.left\n const topTop = topImgWrapperPosition.top\n const topWidth = topImgWrapperPosition.width\n const topHeight = topImgWrapperPosition.height\n \n return {\n left: -topLeft * (100 / topWidth) + '%',\n top: -topTop * (100 / topHeight) + '%',\n width: bottomWidth / topWidth * 100 + '%',\n height: bottomHeight / topHeight * 100 + '%',\n }\n })\n\n // 初始化裁剪位置信息\n const initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.left = left\n topImgWrapperPosition.top = top\n topImgWrapperPosition.width = 100\n topImgWrapperPosition.height = 100\n \n clipWrapperPositionStyle.top = -top + '%'\n clipWrapperPositionStyle.left = -left + '%'\n }\n\n // 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\n const handleClip = () => {\n if (isSettingClipRange.value) return\n\n if (!currentRange.value) {\n emit('clip', null)\n return\n }\n\n const { left, top } = getClipDataTransformInfo()\n\n const position = {\n left: (topImgWrapperPosition.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.height - 100) / 100 * props.height,\n }\n\n const clipedEmitData: ImageClipedEmitData = {\n range: currentRange.value,\n position,\n }\n emit('clip', clipedEmitData)\n }\n\n // 快捷键监听:回车确认裁剪\n const keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n }\n\n onMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n })\n\n // 计算并更新裁剪区域范围数据\n const updateRange = () => {\n const retPosition = {\n left: parseInt(topImgPositionStyle.value.left),\n top: parseInt(topImgPositionStyle.value.top),\n width: parseInt(topImgPositionStyle.value.width),\n height: parseInt(topImgPositionStyle.value.height),\n }\n\n const widthScale = 100 / retPosition.width\n const heightScale = 100 / retPosition.height\n\n const start: [number, number] = [\n -retPosition.left * widthScale,\n -retPosition.top * heightScale,\n ]\n const end: [number, number] = [\n widthScale * 100 + start[0],\n heightScale * 100 + start[1],\n ]\n\n currentRange.value = [start, end]\n }\n\n // 移动裁剪区域\n const moveClipRange = (e: MouseEvent) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = {\n left: topImgWrapperPosition.left,\n top: topImgWrapperPosition.top,\n width: topImgWrapperPosition.width,\n height: topImgWrapperPosition.height,\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n let targetLeft = originPositopn.left + moveX\n let targetTop = originPositopn.top + moveY\n\n if (targetLeft < 0) targetLeft = 0\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\n targetLeft = bottomPosition.width - originPositopn.width\n }\n if (targetTop < 0) targetTop = 0\n else if (targetTop + originPositopn.height > bottomPosition.height) {\n targetTop = bottomPosition.height - originPositopn.height\n }\n \n topImgWrapperPosition.left = targetLeft\n topImgWrapperPosition.top = targetTop\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => {\n isSettingClipRange.value = false\n }, 0)\n }\n }\n\n // 缩放裁剪区域\n const scaleClipRange = (e: MouseEvent, type: OperateResizeHandler) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const minWidth = 50 / props.width * 100\n const minHeight = 50 / props.height * 100\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = {\n left: topImgWrapperPosition.left,\n top: topImgWrapperPosition.top,\n width: topImgWrapperPosition.width,\n height: topImgWrapperPosition.height,\n }\n\n const aspectRatio = topImgWrapperPosition.width / topImgWrapperPosition.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n if (ctrlOrShiftKeyActive.value) {\n if (type === OperateResizeHandlers.RIGHT_BOTTOM || type === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (type === OperateResizeHandlers.LEFT_BOTTOM || type === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n let targetLeft, targetTop, targetWidth, targetHeight\n\n if (type === OperateResizeHandlers.LEFT_TOP) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.RIGHT_TOP) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.LEFT_BOTTOM) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.RIGHT_BOTTOM) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.TOP) {\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.BOTTOM) {\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.LEFT) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n targetHeight = originPositopn.height\n targetWidth = originPositopn.width + moveX\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n \n topImgWrapperPosition.left = targetLeft\n topImgWrapperPosition.top = targetTop\n topImgWrapperPosition.width = targetWidth\n topImgWrapperPosition.height = targetHeight\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => isSettingClipRange.value = false, 0)\n }\n }\n\n const rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n })\n\n return {\n clipWrapperPositionStyle,\n bottomImgPositionStyle,\n topImgWrapperPositionStyle,\n topImgPositionStyle,\n rotateClassName,\n handleClip,\n moveClipRange,\n scaleClipRange,\n }\n },\n})\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=d8c610c6&scoped=true&ts=true\"\nimport script from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=d8c610c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d8c610c6\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageElementClip, PPTImageElement } from '@/types/slides'\nimport { ImageClipedEmitData } from '@/types/edit'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\nimport ImageClipHandler from './ImageClipHandler.vue'\n\nexport default defineComponent({\n name: 'editable-element-image',\n components: {\n ImageOutline,\n ImageClipHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { clipingImageElementId } = storeToRefs(mainStore)\n\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const clip = computed(() => props.elementInfo.clip)\n const { clipShape, imgPosition } = useClipImage(clip)\n\n const filters = computed(() => props.elementInfo.filters)\n const { filter } = useFilter(filters)\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n }\n\n const handleClip = (data: ImageClipedEmitData) => {\n mainStore.setClipingImageElementId('')\n \n if (!data) return\n\n const { range, position } = data\n const originClip: ImageElementClip = props.elementInfo.clip || { shape: 'rect', range: [[0, 0], [100, 100]] }\n\n const left = props.elementInfo.left + position.left\n const top = props.elementInfo.top + position.top\n const width = props.elementInfo.width + position.width\n const height = props.elementInfo.height + position.height\n\n let centerOffsetX = 0\n let centerOffsetY = 0\n\n if (props.elementInfo.rotate) {\n const centerX = (left + width / 2) - (props.elementInfo.left + props.elementInfo.width / 2)\n const centerY = -((top + height / 2) - (props.elementInfo.top + props.elementInfo.height / 2))\n\n const radian = -props.elementInfo.rotate * Math.PI / 180\n\n const rotatedCenterX = centerX * Math.cos(radian) - centerY * Math.sin(radian)\n const rotatedCenterY = centerX * Math.sin(radian) + centerY * Math.cos(radian)\n\n centerOffsetX = rotatedCenterX - centerX\n centerOffsetY = -(rotatedCenterY - centerY)\n }\n\n const _props = {\n clip: { ...originClip, range },\n left: left + centerOffsetX,\n top: top + centerOffsetY,\n width,\n height,\n }\n slidesStore.updateElement({ id: props.elementInfo.id, props: _props })\n \n addHistorySnapshot()\n }\n\n return {\n isCliping,\n handleClip,\n clipingImageElementId,\n shadowStyle,\n handleSelectElement,\n clipShape,\n imgPosition,\n filter,\n flipStyle,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=288ee59d&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=288ee59d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-288ee59d\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58d3557f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler top\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler bottom\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ProsemirrorEditor = _resolveComponent(\"ProsemirrorEditor\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': _ctx.elementInfo.lock }]),\n ref: \"elementRef\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _ctx.shadowStyle,\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_ProsemirrorEditor, {\n class: \"text\",\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.elementInfo.defaultColor,\n defaultFontName: _ctx.elementInfo.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: _ctx.elementInfo.content,\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]),\n _hoisted_1,\n _hoisted_2\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-722bf8fa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n d: `M0,0 L${_ctx.width},0 L${_ctx.width},${_ctx.height} L0,${_ctx.height} Z`,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'element-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=722bf8fa&scoped=true&ts=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=722bf8fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-722bf8fa\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0d6ea86\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"prosemirror-editor\",\n ref: \"editorViewRef\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, null, 512))\n}","import mitt, { Emitter } from 'mitt'\n\nexport const enum EmitterEvents {\n RICH_TEXT_COMMAND = 'RICH_TEXT_COMMAND',\n OPEN_CHART_DATA_EDITOR = 'OPEN_CHART_DATA_EDITOR',\n OPEN_LATEX_EDITOR = 'OPEN_LATEX_EDITOR',\n}\n\nexport interface RichTextCommand {\n command: string;\n value?: string;\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: RichTextCommand | RichTextCommand[];\n [EmitterEvents.OPEN_CHART_DATA_EDITOR]: void;\n [EmitterEvents.OPEN_LATEX_EDITOR]: void;\n} \n\nconst emitter: Emitter = mitt()\n\nexport default emitter","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\n Command,\n} from 'prosemirror-commands'\n\nexport const buildKeymap = (schema: Schema) => {\n const keys = {}\n const bind = (key: string, cmd: Command) => keys[key] = cmd\n\n bind('Alt-ArrowUp', joinUp)\n bind('Alt-ArrowDown', joinDown)\n bind('Ctrl-z', undo)\n bind('Ctrl-y', redo)\n bind('Backspace', undoInputRule)\n bind('Escape', selectParentNode)\n bind('Ctrl-b', toggleMark(schema.marks.strong))\n bind('Ctrl-i', toggleMark(schema.marks.em))\n bind('Ctrl-u', toggleMark(schema.marks.underline))\n bind('Ctrl-d', toggleMark(schema.marks.strikethrough))\n\n bind('Enter', splitListItem(schema.nodes.list_item))\n bind('Mod-[', liftListItem(schema.nodes.list_item))\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\n\n return keys\n}","import { NodeType, Schema } from 'prosemirror-model'\nimport {\n inputRules,\n wrappingInputRule,\n textblockTypeInputRule,\n smartQuotes,\n emDash,\n ellipsis,\n} from 'prosemirror-inputrules'\n\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\n\nconst orderedListRule = (nodeType: NodeType) => (\n wrappingInputRule(\n /^(\\d+)\\.\\s$/, \n nodeType, \n match => ({order: +match[1]}),\n (match, node) => node.childCount + node.attrs.order === +match[1],\n )\n)\n\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\n\nconst codeBlockRule = (nodeType: NodeType) => textblockTypeInputRule(/^```$/, nodeType)\n\nexport const buildInputRules = (schema: Schema) => {\n const rules = [\n ...smartQuotes,\n ellipsis,\n emDash,\n ]\n rules.push(blockQuoteRule(schema.nodes.blockquote))\n rules.push(orderedListRule(schema.nodes.ordered_list))\n rules.push(bulletListRule(schema.nodes.bullet_list))\n rules.push(codeBlockRule(schema.nodes.code_block))\n\n return inputRules({ rules })\n}","import { keymap } from 'prosemirror-keymap'\nimport { Schema } from 'prosemirror-model'\nimport { history } from 'prosemirror-history'\nimport { baseKeymap } from 'prosemirror-commands'\nimport { dropCursor } from 'prosemirror-dropcursor'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\nimport { buildKeymap } from './keymap'\nimport { buildInputRules } from './inputrules'\n\nexport const buildPlugins = (schema: Schema) => {\n return [\n buildInputRules(schema),\n keymap(buildKeymap(schema)),\n keymap(baseKeymap),\n dropCursor(),\n gapCursor(),\n history(),\n ]\n}","import { nodes } from 'prosemirror-schema-basic'\nimport { Node, NodeSpec } from 'prosemirror-model'\nimport { orderedList, bulletList, listItem } from 'prosemirror-schema-list'\n\nconst _orderedList: NodeSpec = {\n ...orderedList,\n content: 'list_item+',\n group: 'block',\n}\n\nconst _bulletList: NodeSpec = {\n ...bulletList,\n content: 'list_item+',\n group: 'block',\n}\n\nconst _listItem: NodeSpec = {\n ...listItem,\n content: 'paragraph block*',\n group: 'block',\n}\n\nconst paragraph: NodeSpec = {\n attrs: {\n align: {\n default: '',\n },\n },\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: 'p',\n getAttrs: dom => {\n const { textAlign } = (dom as HTMLElement).style\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n \n return { align }\n }\n }\n ],\n toDOM: (node: Node) => {\n const { align } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n\n return ['p', { style }, 0]\n },\n}\n\nexport default {\n ...nodes,\n 'ordered_list': _orderedList,\n 'bullet_list': _bulletList,\n 'list_item': _listItem,\n paragraph,\n}\n","import { marks } from 'prosemirror-schema-basic'\nimport { MarkSpec } from 'prosemirror-model'\n\nconst subscript: MarkSpec = {\n excludes: 'subscript',\n parseDOM: [\n { tag: 'sub' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'sub' && null\n },\n ],\n toDOM: () => ['sub', 0],\n}\n\nconst superscript: MarkSpec = {\n excludes: 'superscript',\n parseDOM: [\n { tag: 'sup' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'super' && null\n },\n ],\n toDOM: () => ['sup', 0],\n}\n\nconst strikethrough: MarkSpec = {\n parseDOM: [\n { tag: 'strike' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'line-through' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'line-through' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration-line: line-through' }, 0],\n}\n\nconst underline: MarkSpec = {\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'underline' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'underline' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration: underline' }, 0],\n}\n\nconst forecolor: MarkSpec = {\n attrs: {\n color: {},\n },\n parseDOM: [\n {\n style: 'color',\n getAttrs: color => color ? { color } : {}\n },\n ],\n toDOM: mark => {\n const { color } = mark.attrs\n let style = ''\n if (color) style += `color: ${color};`\n return ['span', { style }, 0]\n },\n}\n\nconst backcolor: MarkSpec = {\n attrs: {\n backcolor: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n tag: 'span[style*=background-color]',\n getAttrs: backcolor => backcolor ? { backcolor } : {}\n },\n ],\n toDOM: mark => {\n const { backcolor } = mark.attrs\n let style = ''\n if (backcolor) style += `background-color: ${backcolor};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontsize: MarkSpec = {\n attrs: {\n fontsize: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-size',\n getAttrs: fontsize => fontsize ? { fontsize } : {}\n },\n ],\n toDOM: mark => {\n const { fontsize } = mark.attrs\n let style = ''\n if (fontsize) style += `font-size: ${fontsize}`\n return ['span', { style }, 0]\n },\n}\n\nconst fontname: MarkSpec = {\n attrs: {\n fontname: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-family',\n getAttrs: fontname => {\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\n }\n },\n ],\n toDOM: mark => {\n const { fontname } = mark.attrs\n let style = ''\n if (fontname) style += `font-family: ${fontname}`\n return ['span', { style }, 0]\n },\n}\n\nexport default {\n ...marks,\n subscript,\n superscript,\n strikethrough,\n underline,\n forecolor,\n backcolor,\n fontsize,\n fontname,\n}","import nodes from './nodes'\nimport marks from './marks'\n\nexport const schemaNodes = nodes\nexport const schemaMarks = marks\n","import { EditorState } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { Schema, DOMParser } from 'prosemirror-model'\n\nimport { buildPlugins } from './plugins/index'\nimport { schemaNodes, schemaMarks } from './schema/index'\n\nconst schema = new Schema({\n nodes: schemaNodes,\n marks: schemaMarks,\n})\n\nexport const createDocument = (content: string) => {\n const htmlString = `
${content}
`\n const parser = new window.DOMParser()\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\n return DOMParser.fromSchema(schema).parse(element as Element)\n}\n\nexport const initProsemirrorEditor = (dom: Element, content: string, props = {}) => {\n return new EditorView(dom, {\n state: EditorState.create({\n doc: createDocument(content),\n plugins: buildPlugins(schema),\n }),\n ...props,\n })\n}","import { Schema, Node, NodeType } from 'prosemirror-model'\nimport { Transaction } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\n\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n const { from, to } = selection\n const { nodes } = schema\n\n const blockquote = nodes.blockquote\n const listItem = nodes.list_item\n const paragraph = nodes.paragraph\n\n interface Task {\n node: Node;\n pos: number;\n nodeType: NodeType;\n }\n\n const tasks: Task[] = []\n alignment = alignment || ''\n\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n const align = node.attrs.align || ''\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\n tasks.push({\n node,\n pos,\n nodeType,\n })\n }\n return true\n })\n\n if (!tasks.length) return tr\n\n tasks.forEach(task => {\n const { node, pos, nodeType } = task\n let { attrs } = node\n if (alignment) attrs = { ...attrs, align: alignment }\n else attrs = { ...attrs, align: null }\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\n })\n\n return tr\n}\n\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\n const { state } = view\n const { schema, selection } = state\n const tr = setTextAlign(\n state.tr.setSelection(selection),\n schema,\n alignment,\n )\n view.dispatch(tr)\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\nimport { Schema, Node, NodeType } from 'prosemirror-model'\nimport { Transaction, EditorState } from 'prosemirror-state'\nimport { findParentNode } from '../utils'\n\nconst isList = (node: Node, schema: Schema) => {\n return (\n node.type === schema.nodes.bullet_list ||\n node.type === schema.nodes.ordered_list\n )\n}\n\nexport const toggleList = (listType: NodeType, itemType: NodeType) => {\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\n const { schema, selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) return false\n\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n tr.setNodeMarkup(parentList.pos, listType)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n return wrapInList(listType)(state, dispatch)\n }\n}\n","\nimport { computed, defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { EditorView } from 'prosemirror-view'\nimport { toggleMark, wrapIn, selectAll } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { getTextAttrs } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { toggleList } from '@/utils/prosemirror/commands/toggleList'\n\nexport default defineComponent({\n name: 'prosemirror-editor',\n emits: ['update', 'focus', 'blur'],\n props: {\n elementId: {\n type: String,\n required: true,\n },\n defaultColor: {\n type: String,\n required: true,\n },\n defaultFontName: {\n type: String,\n required: true,\n },\n editable: {\n type: Boolean,\n default: false,\n },\n value: {\n type: String,\n required: true,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const mainStore = useMainStore()\n const { handleElementId } = storeToRefs(mainStore)\n\n const editorViewRef = ref()\n let editorView: EditorView\n\n // 富文本的各种交互事件监听:\n // 聚焦时取消全局快捷键事件\n // 输入文字时同步数据到vuex\n // 点击鼠标和键盘时同步富文本状态到工具栏\n const handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n }, 300, { trailing: true })\n\n const handleFocus = () => {\n if (props.value === '请输入内容') {\n setTimeout(() => {\n selectAll(editorView.state, editorView.dispatch)\n }, 0)\n }\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n }\n\n const handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n }\n\n const handleClick = debounce(function() {\n const attrs = getTextAttrs(editorView, {\n color: props.defaultColor,\n fontname: props.defaultFontName,\n })\n mainStore.setRichtextAttrs(attrs)\n }, 30, { trailing: true })\n\n const handleKeydown = () => {\n handleInput()\n handleClick()\n }\n\n // 将富文本内容同步到DOM\n const textContent = computed(() => props.value)\n watch(textContent, () => {\n if (!editorView) return\n if (editorView.hasFocus()) return\n\n const { doc, tr } = editorView.state\n editorView.dispatch(tr.replaceRangeWith(0, doc.content.size, createDocument(textContent.value)))\n })\n\n // 打开/关闭编辑器的编辑模式\n watch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n })\n\n // Prosemirror编辑器的初始化和卸载\n onMounted(() => {\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\n handleDOMEvents: {\n focus: handleFocus,\n blur: handleBlur,\n keydown: handleKeydown,\n click: handleClick,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n })\n onUnmounted(() => {\n editorView && editorView.destroy()\n })\n \n // 执行富文本命令(可以是一个或多个)\n // 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\n const execCommand = (payload: RichTextCommand | RichTextCommand[]) => {\n if (handleElementId.value !== props.elementId) return\n\n const commands = ('command' in payload) ? [payload] : payload\n\n for (const item of commands) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'bold') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'subscript') {\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'superscript') {\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'blockquote') {\n wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'code') {\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'align' && item.value) {\n alignmentCommand(editorView, item.value)\n }\n else if (item.command === 'bulletList') {\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(bulletList, listItem)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(orderedList, listItem)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n }\n\n emitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n onUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n })\n\n return {\n editorViewRef,\n }\n },\n})\n","import { render } from \"./ProsemirrorEditor.vue?vue&type=template&id=f0d6ea86&scoped=true&ts=true\"\nimport script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=f0d6ea86&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f0d6ea86\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTextElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\nexport default defineComponent({\n name: 'editable-element-text',\n components: {\n ElementOutline,\n ProsemirrorEditor,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElementId, isScaling } = storeToRefs(mainStore)\n \n const { addHistorySnapshot } = useHistorySnapshot()\n\n const elementRef = ref()\n\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n }\n\n // 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\n const realHeightCache = ref(-1)\n\n watch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n })\n\n const updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n }\n const resizeObserver = new ResizeObserver(updateTextElementHeight)\n\n onMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n })\n onUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n })\n\n const updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n }\n\n return {\n elementRef,\n shadowStyle,\n updateContent,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=58d3557f&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=58d3557f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58d3557f\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4faf3734\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GradientDefs = _resolveComponent(\"GradientDefs\")!\n const _component_ProsemirrorEditor = _resolveComponent(\"ProsemirrorEditor\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n color: _ctx.text.defaultColor,\n fontFamily: _ctx.text.defaultFontName,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.enterEditing()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(_component_GradientDefs, {\n id: `editabel-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#editabel-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", [_ctx.text.align, { 'editable': _ctx.editable }]])\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createBlock(_component_ProsemirrorEditor, {\n key: 0,\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.text.defaultColor,\n defaultFontName: _ctx.text.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n autoFocus: true,\n value: _ctx.text.content,\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateText(value)),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"show-text ProseMirror-static\",\n innerHTML: _ctx.text.content\n }, null, 8, _hoisted_5))\n ], 2)\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"gradientTransform\"]\nconst _hoisted_2 = [\"stop-color\"]\nconst _hoisted_3 = [\"stop-color\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"stop-color\"]\nconst _hoisted_6 = [\"stop-color\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: _ctx.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${_ctx.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: _ctx.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}","\r\nimport { defineComponent, PropType } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'gradient-defs',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'linear' | 'radial'>,\r\n },\r\n color1: {\r\n type: String,\r\n required: true,\r\n },\r\n color2: {\r\n type: String,\r\n required: true,\r\n },\r\n rotate: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n})\r\n","import { render } from \"./GradientDefs.vue?vue&type=template&id=b787d5ea&ts=true\"\nimport script from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTShapeElement, ShapeText } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport GradientDefs from './GradientDefs.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n GradientDefs,\n ProsemirrorEditor,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElementId } = storeToRefs(mainStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n const outline = computed(() => props.elementInfo.outline)\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const editable = ref(false)\n\n const enterEditing = () => {\n editable.value = true\n mainStore.setEditingShapeElementId(props.elementInfo.id)\n }\n\n const exitEditing = () => {\n editable.value = false\n mainStore.setEditingShapeElementId('')\n }\n \n watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) exitEditing()\n }\n })\n\n const text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n })\n\n const updateText = (content: string) => {\n const _text = { ...text.value, content }\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { text: _text },\n })\n \n addHistorySnapshot()\n }\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n editable,\n text,\n handleSelectElement,\n updateText,\n enterEditing,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=4faf3734&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4faf3734&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4faf3734\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-603a705d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.svgWidth,\n height: _ctx.svgHeight\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: _ctx.path,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": _ctx.lineDashArray,\n fill: \"none\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: _ctx.path,\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"markerWidth\", \"markerHeight\", \"refX\", \"refY\"]\nconst _hoisted_2 = [\"d\", \"fill\", \"transform\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${_ctx.id}-${_ctx.type}-${_ctx.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: _ctx.size * 3,\n markerHeight: _ctx.size * 3,\n refX: _ctx.size * 1.5,\n refY: _ctx.size * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.path,\n fill: _ctx.color,\n transform: `scale(${_ctx.size * 0.3}, ${_ctx.size * 0.3}) rotate(${_ctx.rotate}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\n\nconst pathMap = {\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\n arrow: 'M0,0 L10,5 0,10 Z',\n}\nconst rotateMap = {\n 'arrow-start': 180,\n 'arrow-end': 0,\n}\n\nexport default defineComponent({\n name: 'line-point-marker',\n props: {\n id: {\n type: String,\n required: true,\n },\n position: {\n type: String as PropType<'start' | 'end'>,\n required: true,\n },\n type: {\n type: String as PropType<'dot' | 'arrow'>,\n required: true,\n },\n color: {\n type: String,\n },\n baseSize: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const path = computed(() => pathMap[props.type])\n const rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\n const size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\n return {\n path,\n rotate,\n size,\n }\n },\n})\n","import { render } from \"./LinePointMarker.vue?vue&type=template&id=62085f5a&ts=true\"\nimport script from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n LinePointMarker,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n })\n const svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n })\n\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\n\n const path = computed(() => {\n return getLineElementPath(props.elementInfo)\n })\n\n return {\n handleSelectElement,\n shadowStyle,\n svgWidth,\n svgHeight,\n lineDashArray,\n path,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=603a705d&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=603a705d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-603a705d\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_Chart = _resolveComponent(\"Chart\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openDataEditor()))\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_Chart, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: _ctx.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref: \"chartRef\",\n style: _normalizeStyle({\n width: _ctx.width + 'px',\n height: _ctx.chartHeight + 'px',\n transform: `scale(${1 / _ctx.slideScale})`,\n })\n }, null, 4),\n (_ctx.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.slideScale})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: _ctx.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: _ctx.themeColors[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { computed, defineComponent, inject, onMounted, PropType, ref, Ref, watch } from 'vue'\nimport { upperFirst } from 'lodash'\nimport tinycolor from 'tinycolor2'\nimport Chartist, {\n IChartistLineChart,\n IChartistBarChart,\n IChartistPieChart,\n ILineChartOptions,\n IBarChartOptions,\n IPieChartOptions,\n} from 'chartist'\nimport { ChartData, ChartType } from '@/types/slides'\n\nimport 'chartist/dist/scss/chartist.scss'\n\nexport default defineComponent({\n name: 'chart',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n type: {\n type: String as PropType,\n required: true,\n },\n data: {\n type: Object as PropType,\n required: true,\n },\n options: {\n type: Object as PropType,\n },\n themeColor: {\n type: Array as PropType,\n required: true,\n },\n legends: {\n type: Array as PropType,\n required: true,\n },\n gridColor: {\n type: String,\n },\n legend: {\n type: String as PropType<'' | 'top' | 'bottom'>,\n },\n },\n setup(props) {\n const chartRef = ref()\n const slideScale: Ref = inject('slideScale') || ref(1)\n\n let chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\n\n const chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n })\n\n const getDataAndOptions = () => {\n const propsOptopns = props.options || {}\n const options = {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n const data = props.type === 'pie' ? { ...props.data, series: props.data.series[0] } : props.data\n return { data, options }\n }\n\n const renderChart = () => {\n if (!chartRef.value) return\n\n const type = upperFirst(props.type)\n const { data, options } = getDataAndOptions()\n chart = new Chartist[type](chartRef.value, data, options)\n }\n\n const updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const { data, options } = getDataAndOptions()\n chart.update(data, options)\n }\n\n watch([\n () => props.width,\n () => props.height,\n () => props.data,\n slideScale,\n ], updateChart)\n\n onMounted(renderChart)\n\n const themeColors = computed(() => {\n let colors: string[] = []\n if (props.themeColor.length >= 10) colors = props.themeColor\n else if (props.themeColor.length === 1) colors = tinycolor(props.themeColor[0]).analogous(10).map(color => color.toHexString())\n else {\n const len = props.themeColor.length\n const supplement = tinycolor(props.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toHexString())\n colors = [...props.themeColor.slice(0, len - 1), ...supplement]\n }\n return colors\n })\n\n // 更新主题配色:\n // 如果当前所设置的主题色数小于10,剩余部分获取最后一个主题色的相近颜色作为配色\n const updateTheme = () => {\n if (!chartRef.value) return\n\n for (let i = 0; i < 10; i++) {\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, themeColors.value[i])\n }\n }\n\n watch(themeColors, updateTheme)\n onMounted(updateTheme)\n\n // 更新网格颜色,包括坐标的文字部分\n const updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n }\n\n watch(() => props.gridColor, updateGridColor)\n onMounted(updateGridColor)\n\n return {\n chartHeight,\n themeColors,\n slideScale,\n chartRef,\n }\n },\n})\n","import { render } from \"./Chart.vue?vue&type=template&id=3ac5559a&scoped=true&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=3ac5559a&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=3ac5559a&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3ac5559a\"]])\n\nexport default __exports__","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n }\r\n\r\n return {\r\n handleSelectElement,\r\n openDataEditor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=c09631b6&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c09631b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c09631b6\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-426704b7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_EditableTable = _resolveComponent(\"EditableTable\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': _ctx.elementInfo.lock }]),\n ref: \"elementRef\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme,\n editable: _ctx.editable,\n onChange: _cache[1] || (_cache[1] = data => _ctx.updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => _ctx.updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => _ctx.updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!_ctx.editable || _ctx.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': _ctx.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => _ctx.handleSelectElement($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _ctx.canvasScale })` })\n }, \"双击编辑\", 4)\n ], 34))\n : _createCommentVNode(\"\", true)\n ], 512), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createBlock as _createBlock, vShow as _vShow, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c0c56b6e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = [\"onMousedown\"]\nconst _hoisted_3 = [\"width\"]\nconst _hoisted_4 = [\"rowspan\", \"colspan\", \"data-cell-index\", \"onMousedown\", \"onMouseenter\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CustomTextarea = _resolveComponent(\"CustomTextarea\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: _ctx.totalWidth + 'px' })\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.dragLinePosition, (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => _ctx.handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _ctx.theme,\n 'row-header': _ctx.theme?.rowHeader,\n 'row-footer': _ctx.theme?.rowFooter,\n 'col-header': _ctx.theme?.colHeader,\n 'col-footer': _ctx.theme?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_ctx.theme?.color}; --subThemeColor1: ${_ctx.subThemeColor[0]}; --subThemeColor2: ${_ctx.subThemeColor[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colSizeList, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tableCells, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", { key: rowIndex }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: _normalizeClass([\"cell\", {\n 'selected': _ctx.selectedCells.includes(`${rowIndex}_${colIndex}`) && _ctx.selectedCells.length > 1,\n 'active': _ctx.activedCell === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._ctx.getTextStyle(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n \"data-cell-index\": `${rowIndex}_${colIndex}`,\n onMousedown: $event => _ctx.handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (_ctx.handleCellMouseenter(rowIndex, colIndex))\n }, [\n (_ctx.activedCell === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(_component_CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': _ctx.activedCell === `${rowIndex}_${colIndex}` }]),\n contenteditable: \"plaintext-only\",\n value: cell.text,\n onUpdateValue: value => _ctx.handleInput(value, rowIndex, colIndex),\n onInsertExcelData: value => _ctx.insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n innerHTML: _ctx.formatText(cell.text)\n }, null, 8, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_ctx.hideCells.includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, el => _ctx.contextmenus(el)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}","import { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle) => {\n if (!style) return {}\n const {\n bold,\n em,\n underline,\n strikethrough,\n color,\n backcolor,\n fontsize,\n fontname,\n align,\n } = style\n\n let textDecoration = `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`\n if (textDecoration === ' ') textDecoration = 'none'\n \n return {\n fontWeight: bold ? 'bold' : 'normal',\n fontStyle: em ? 'italic' : 'normal',\n textDecoration,\n color: color || '#000',\n backgroundColor: backcolor || '',\n fontSize: fontsize || '14px',\n fontFamily: fontname || '微软雅黑',\n textAlign: align || 'left',\n }\n}\n\nexport const formatText = (text: string) => {\n return text.replace(/\\n/g, '
').replace(/ /g, ' ')\n}","import { computed, Ref } from 'vue'\nimport { TableCell } from '@/types/slides'\n\n// 计算无效的单元格位置(被合并的单元格位置)集合\n\nexport default (cells: Ref) => {\n const hideCells = computed(() => {\n const hideCells = []\n \n for (let i = 0; i < cells.value.length; i++) {\n const rowCells = cells.value[i]\n\n for (let j = 0; j < rowCells.length; j++) {\n const cell = rowCells[j]\n \n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\n hideCells.push(`${row}_${col}`)\n }\n }\n }\n }\n }\n return hideCells\n })\n\n return {\n hideCells,\n }\n}","import { ref, Ref, watch } from 'vue'\nimport { TableTheme } from '@/types/slides'\nimport { getTableSubThemeColor } from '@/utils/element'\n\n// 通过表格的主题色计算辅助颜色\n\nexport default (theme: Ref) => {\n const subThemeColor = ref(['', ''])\n watch(() => theme.value, () => {\n if (theme.value) {\n subThemeColor.value = getTableSubThemeColor(theme.value.color)\n }\n }, { immediate: true })\n\n return {\n subThemeColor,\n }\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-59f468e0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"contenteditable\", \"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref: \"textareaRef\",\n contenteditable: _ctx.contenteditable,\n onFocus: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.handleFocus && _ctx.handleFocus(...args))),\n onBlur: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleBlur && _ctx.handleBlur(...args))),\n onInput: _cache[2] || (_cache[2] = $event => _ctx.handleInput($event)),\n innerHTML: _ctx.text\n }, null, 40, _hoisted_1))\n}","\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\nexport default defineComponent({\n name: 'custom-textarea',\n emits: ['updateValue', 'insertExcelData'],\n props: {\n value: {\n type: String,\n default: '',\n },\n contenteditable: {\n type: [Boolean, String],\n default: false,\n },\n },\n setup(props, { emit }) {\n const textareaRef = ref()\n const text = ref('')\n const isFocus = ref(false)\n\n // 自定义v-modal,同步数据\n // 当文本框聚焦时,不执行数据同步\n watch(() => props.value, () => {\n if (isFocus.value) return\n text.value = props.value\n if (textareaRef.value) textareaRef.value.innerHTML = props.value\n }, { immediate: true })\n\n const handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n }\n\n // 聚焦时更新焦点标记,并监听粘贴事件\n const handleFocus = () => {\n isFocus.value = true\n\n if (!textareaRef.value) return\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\n e.preventDefault()\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n emit('insertExcelData', excelData)\n if (textareaRef.value) textareaRef.value.innerHTML = excelData[0][0]\n return\n }\n\n emit('updateValue', text)\n document.execCommand('insertText', false, text)\n })\n }\n }\n }\n\n // 失焦时更新焦点标记,清除粘贴事件监听\n const handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n }\n\n // 清除粘贴事件监听\n onUnmounted(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n })\n\n return {\n textareaRef,\n handleFocus,\n handleInput,\n handleBlur,\n text,\n }\n },\n})\n","import { render } from \"./CustomTextarea.vue?vue&type=template&id=59f468e0&scoped=true&ts=true\"\nimport script from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=59f468e0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59f468e0\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { debounce, isEqual } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\nimport { createRandomCode } from '@/utils/common'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nimport CustomTextarea from './CustomTextarea.vue'\n\nexport default defineComponent({\n name: 'editable-table',\n emits: ['change', 'changeColWidths', 'changeSelectedCells'],\n components: {\n CustomTextarea,\n },\n props: {\n data: {\n type: Array as PropType,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n colWidths: {\n type: Array as PropType,\n required: true,\n },\n outline: {\n type: Object as PropType,\n required: true,\n },\n theme: {\n type: Object as PropType,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { emit }) {\n const { canvasScale } = storeToRefs(useMainStore())\n \n const isStartSelect = ref(false)\n const startCell = ref([])\n const endCell = ref([])\n\n const tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n })\n\n // 主题辅助色\n const theme = computed(() => props.theme)\n const { subThemeColor } = useSubThemeColor(theme)\n\n // 计算表格每一列的列宽和总宽度\n const colSizeList = ref([])\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n watch([\n () => props.colWidths,\n () => props.width,\n ], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n }, { immediate: true })\n \n // 清除全部单元格的选中状态\n // 表格处于不可编辑状态时也需要清除\n const removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n }\n\n watch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n })\n\n // 用于拖拽列宽的操作节点位置\n const dragLinePosition = computed(() => {\n const dragLinePosition: number[] = []\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\n dragLinePosition.push(pos)\n }\n return dragLinePosition\n })\n\n // 无效的单元格位置(被合并的单元格位置)集合\n const cells = computed(() => props.data)\n const { hideCells } = useHideCells(cells)\n\n // 当前选中的单元格集合\n const selectedCells = computed(() => {\n if (!startCell.value.length) return []\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return [`${startX}_${startY}`]\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\n\n const selectedCells = []\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n for (let j = 0; j < rowCells.length; j++) {\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\n }\n }\n return selectedCells\n })\n\n watch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n })\n\n // 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\n const activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n })\n\n // 当前选中的单元格位置范围\n const selectedRange = computed(() => {\n if (!startCell.value.length) return null\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return { row: [startX, startX], col: [startY, startY] }\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return { row: [startX, startX], col: [startY, startY] }\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n return {\n row: [minX, maxX],\n col: [minY, maxY],\n }\n })\n\n // 设置选中单元格状态(鼠标点击或拖选)\n const handleMouseup = () => isStartSelect.value = false\n\n const handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\n if (e.button === 0) {\n endCell.value = []\n isStartSelect.value = true\n startCell.value = [rowIndex, colIndex]\n }\n }\n\n const handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n }\n\n onMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n })\n onUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n })\n\n // 判断某位置是否为无效单元格(被合并掉的位置)\n const isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n // 选中指定的列\n const selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n }\n\n // 选中指定的行\n const selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n }\n\n // 选中全部单元格\n const selectAll = () => {\n const maxRow = tableCells.value.length - 1\n const maxCol = tableCells.value[maxRow].length - 1\n startCell.value = [0, 0]\n endCell.value = [maxRow, maxCol]\n }\n\n // 删除一行\n const deleteRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const targetCells = tableCells.value[rowIndex]\n const hideCellsPos = []\n for (let i = 0; i < targetCells.length; i++) {\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\n }\n \n for (const pos of hideCellsPos) {\n for (let i = rowIndex; i >= 0; i--) {\n if (!isHideCell(i, pos)) {\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\n break\n }\n }\n }\n\n _tableCells.splice(rowIndex, 1)\n tableCells.value = _tableCells\n }\n\n // 删除一列\n const deleteCol = (colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const hideCellsPos = []\n for (let i = 0; i < tableCells.value.length; i++) {\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\n }\n\n for (const pos of hideCellsPos) {\n for (let i = colIndex; i >= 0; i--) {\n if (!isHideCell(pos, i)) {\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\n break\n }\n }\n }\n\n tableCells.value = _tableCells.map(item => {\n item.splice(colIndex, 1)\n return item\n })\n colSizeList.value.splice(colIndex, 1)\n emit('changeColWidths', colSizeList.value)\n }\n \n // 插入一行\n const insertRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const rowCells: TableCell[] = []\n for (let i = 0; i < _tableCells[0].length; i++) {\n rowCells.push({\n colspan: 1,\n rowspan: 1,\n text: '',\n id: createRandomCode(),\n })\n }\n\n _tableCells.splice(rowIndex, 0, rowCells)\n tableCells.value = _tableCells\n }\n\n // 插入一列\n const insertCol = (colIndex: number) => {\n tableCells.value = tableCells.value.map(item => {\n const cell = {\n colspan: 1,\n rowspan: 1,\n text: '',\n id: createRandomCode(),\n }\n item.splice(colIndex, 0, cell)\n return item\n })\n colSizeList.value.splice(colIndex, 0, 100)\n emit('changeColWidths', colSizeList.value)\n }\n\n // 填充指定的行/列数\n const fillTable = (rowCount: number, colCount: number) => {\n let _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n const defaultCell = { colspan: 1, rowspan: 1, text: '' }\n \n if (rowCount) {\n const newRows = []\n for (let i = 0; i < rowCount; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < _tableCells[0].length; j++) {\n rowCells.push({\n ...defaultCell,\n id: createRandomCode(),\n })\n }\n newRows.push(rowCells)\n }\n _tableCells = [..._tableCells, ...newRows]\n }\n if (colCount) {\n _tableCells = _tableCells.map(item => {\n const cells: TableCell[] = []\n for (let i = 0; i < colCount; i++) {\n const cell = {\n ...defaultCell,\n id: createRandomCode(),\n }\n cells.push(cell)\n }\n return [...item, ...cells]\n })\n colSizeList.value = [...colSizeList.value, ...new Array(colCount).fill(100)]\n emit('changeColWidths', colSizeList.value)\n }\n\n tableCells.value = _tableCells\n }\n \n // 合并单元格\n const mergeCells = () => {\n const [startX, startY] = startCell.value\n const [endX, endY] = endCell.value\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n \n _tableCells[minX][minY].rowspan = maxX - minX + 1\n _tableCells[minX][minY].colspan = maxY - minY + 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n }\n\n // 拆分单元格\n const splitCells = (rowIndex: number, colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n _tableCells[rowIndex][colIndex].rowspan = 1\n _tableCells[rowIndex][colIndex].colspan = 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n }\n\n // 鼠标拖拽调整列宽\n const handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\n removeSelectedCells()\n let isMouseDown = true\n\n const originWidth = colSizeList.value[colIndex]\n const startPageX = e.pageX\n\n const minWidth = 50\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const moveX = (e.pageX - startPageX) / canvasScale.value\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\n\n colSizeList.value[colIndex] = width\n }\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n emit('changeColWidths', colSizeList.value)\n }\n }\n\n // 清空选中单元格内的文字\n const clearSelectedCellText = () => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n for (let i = 0; i < _tableCells.length; i++) {\n for (let j = 0; j < _tableCells[i].length; j++) {\n if (selectedCells.value.includes(`${i}_${j}`)) {\n _tableCells[i][j].text = ''\n }\n }\n }\n tableCells.value = _tableCells\n }\n\n // 将焦点移动到下一个单元格\n // 当前行右边有单元格时,焦点右移\n // 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动至下一行行首\n // 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\n const tabActiveCell = () => {\n const getNextCell = (i: number, j: number): [number, number] | null => {\n if (!tableCells.value[i]) return null\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\n return [i, j]\n }\n\n endCell.value = []\n\n const nextRow = startCell.value[0]\n const nextCol = startCell.value[1] + 1\n\n const nextCell = getNextCell(nextRow, nextCol)\n if (!nextCell) {\n insertRow(nextRow + 1)\n startCell.value = [nextRow + 1, 0]\n }\n else startCell.value = nextCell\n\n // 移动焦点后自动聚焦文本\n nextTick(() => {\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\n if (textRef) textRef.focus()\n })\n }\n\n // 表格快捷键监听\n const keydownListener = (e: KeyboardEvent) => {\n if (!props.editable || !selectedCells.value.length) return\n\n const key = e.key.toUpperCase()\n if (selectedCells.value.length < 2) {\n if (key === KEYS.TAB) {\n e.preventDefault()\n tabActiveCell()\n }\n if (e.ctrlKey && key === KEYS.UP) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex)\n }\n if (e.ctrlKey && key === KEYS.DOWN) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex + 1)\n }\n if (e.ctrlKey && key === KEYS.LEFT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex)\n }\n if (e.ctrlKey && key === KEYS.RIGHT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex + 1)\n }\n }\n else if (key === KEYS.DELETE) {\n clearSelectedCellText()\n }\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n })\n\n // 单元格文字输入时更新表格数据\n const handleInput = debounce(function(value, rowIndex, colIndex) {\n tableCells.value[rowIndex][colIndex].text = value\n emit('change', tableCells.value)\n }, 300, { trailing: true })\n\n // 插入来自Excel的数据,表格的行/列数不够时自动补足\n const insertExcelData = (data: string[][], rowIndex: number, colIndex: number) => {\n const maxRow = data.length\n const maxCol = data[0].length\n\n let fillRowCount = 0\n let fillColCount = 0\n if (rowIndex + maxRow > tableCells.value.length) fillRowCount = rowIndex + maxRow - tableCells.value.length\n if (colIndex + maxCol > tableCells.value[0].length) fillColCount = colIndex + maxCol - tableCells.value[0].length\n if (fillRowCount || fillColCount) fillTable(fillRowCount, fillColCount)\n\n nextTick(() => {\n for (let i = 0; i < maxRow; i++) {\n for (let j = 0; j < maxCol; j++) {\n if (tableCells.value[rowIndex + i][colIndex + j]) {\n tableCells.value[rowIndex + i][colIndex + j].text = data[i][j]\n }\n }\n }\n emit('change', tableCells.value)\n })\n }\n\n // 获取有效的单元格(排除掉被合并的单元格)\n const getEffectiveTableCells = () => {\n const effectiveTableCells = []\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n const _rowCells = []\n for (let j = 0; j < rowCells.length; j++) {\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\n }\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\n }\n\n return effectiveTableCells\n }\n\n // 检查是否可以删除行和列:有效的行/列数大于1\n const checkCanDeleteRowOrCol = () => {\n const effectiveTableCells = getEffectiveTableCells()\n const canDeleteRow = effectiveTableCells.length > 1\n const canDeleteCol = effectiveTableCells[0].length > 1\n\n return { canDeleteRow, canDeleteCol }\n }\n\n // 检查是否可以合并或拆分\n // 必须多选才可以合并\n // 必须单选且所选单元格为合并单元格才可以拆分\n const checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\n const isMultiSelected = selectedCells.value.length > 1\n const targetCell = tableCells.value[rowIndex][colIndex]\n\n const canMerge = isMultiSelected\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\n\n return { canMerge, canSplit }\n }\n\n const contextmenus = (el: HTMLElement): ContextmenuItem[] => {\n const cellIndex = el.dataset.cellIndex as string\n const rowIndex = +cellIndex.split('_')[0]\n const colIndex = +cellIndex.split('_')[1]\n\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\n startCell.value = [rowIndex, colIndex]\n endCell.value = []\n }\n\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\n\n return [\n {\n text: '插入列',\n children: [\n { text: '到左侧', handler: () => insertCol(colIndex) },\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\n ],\n },\n {\n text: '插入行',\n children: [\n { text: '到上方', handler: () => insertRow(rowIndex) },\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\n ],\n },\n {\n text: '删除列',\n disable: !canDeleteCol,\n handler: () => deleteCol(colIndex),\n },\n {\n text: '删除行',\n disable: !canDeleteRow,\n handler: () => deleteRow(rowIndex),\n },\n { divider: true },\n {\n text: '合并单元格',\n disable: !canMerge,\n handler: mergeCells,\n },\n {\n text: '取消合并单元格',\n disable: !canSplit,\n handler: () => splitCells(rowIndex, colIndex),\n },\n { divider: true },\n {\n text: '选中当前列',\n handler: () => selectCol(colIndex),\n },\n {\n text: '选中当前行',\n handler: () => selectRow(rowIndex),\n },\n {\n text: '选中全部单元格',\n handler: selectAll,\n },\n ]\n }\n\n return {\n getTextStyle,\n dragLinePosition,\n tableCells,\n colSizeList,\n totalWidth,\n hideCells,\n selectedCells,\n activedCell,\n selectedRange,\n handleCellMousedown,\n handleCellMouseenter,\n selectCol,\n selectRow,\n handleMousedownColHandler,\n contextmenus,\n handleInput,\n insertExcelData,\n subThemeColor,\n formatText,\n }\n },\n})\n","import { render } from \"./EditableTable.vue?vue&type=template&id=c0c56b6e&scoped=true&ts=true\"\nimport script from \"./EditableTable.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=c0c56b6e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0c56b6e\"]])\n\nexport default __exports__","\nimport { defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport EditableTable from './EditableTable.vue'\n\nexport default defineComponent({\n name: 'editable-element-table',\n components: {\n EditableTable,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n \n const elementRef = ref()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n // 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\n const editable = ref(false)\n\n watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n })\n\n watch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n })\n\n const startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n }\n\n // 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\n const realHeightCache = ref(-1)\n\n watch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (isScaling.value) editable.value = false\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n })\n\n const updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n }\n\n const resizeObserver = new ResizeObserver(updateTableElementHeight)\n\n onMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n })\n onUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n })\n\n // 更新表格内容数据\n const updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n }\n\n // 更新表格的列宽数据\n const updateColWidths = (widths: number[]) => {\n const width = widths.reduce((a, b) => a + b)\n const colWidths = widths.map(item => item / width)\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { width, colWidths },\n })\n addHistorySnapshot()\n }\n\n // 更新表格当前选中的单元格\n const updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n }\n\n return {\n elementRef,\n canvasScale,\n handleSelectElement,\n updateTableCells,\n updateColWidths,\n editable,\n startEdit,\n updateSelectedCells,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=426704b7&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=426704b7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-426704b7\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3168526a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\nexport default defineComponent({\n name: 'editable-element-latex',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLatexElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n const openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n }\n\n return {\n handleSelectElement,\n openLatexEditor,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=3168526a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3168526a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3168526a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPlayer = _resolveComponent(\"VideoPlayer\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event, false))\n }, [\n _createVNode(_component_VideoPlayer, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _ctx.canvasScale\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t', 'b', 'l', 'r'], (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['handler-border', item]),\n key: item,\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e716fb74\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"poster\"]\nconst _hoisted_2 = { class: \"bezel\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_4 = { class: \"controller\" }\nconst _hoisted_5 = { class: \"icons icons-left\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = { class: \"volume\" }\nconst _hoisted_8 = { class: \"icon-content\" }\nconst _hoisted_9 = {\n class: \"volume-bar\",\n ref: \"volumeBarRef\"\n}\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_15 = { class: \"dtime\" }\nconst _hoisted_16 = { class: \"icons icons-right\" }\nconst _hoisted_17 = { class: \"speed\" }\nconst _hoisted_18 = { class: \"icon speed-icon\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"icon-content\" }, \"循环\", -1))\nconst _hoisted_21 = [\n _hoisted_20\n]\nconst _hoisted_22 = { class: \"bar\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_24 = [\n _hoisted_23\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"video-player\", { 'hide-controller': _ctx.hideController }]),\n style: _normalizeStyle({\n width: _ctx.width * _ctx.scale + 'px',\n height: _ctx.height * _ctx.scale + 'px',\n transform: `scale(${1 / _ctx.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (_ctx.autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (_ctx.autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"video\", {\n class: \"video\",\n ref: \"videoRef\",\n src: _ctx.src,\n poster: _ctx.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (_ctx.handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => (_ctx.autoHideController())),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (_ctx.autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (_ctx.handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': _ctx.bezelTransition }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (_ctx.bezelTransition = false))\n }, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPause, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPlayOne, { key: 1 }))\n ], 34)\n ])\n ]),\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_8, [\n (_ctx.volume === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (_ctx.volume === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[11] || (_cache[11] = $event => _ctx.handleMousedownVolumeBar($event)),\n onTouchstart: _cache[12] || (_cache[12] = $event => _ctx.handleMousedownVolumeBar($event)),\n onClick: _cache[13] || (_cache[13] = $event => _ctx.handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _ctx.volumeBarWidth })\n }, _hoisted_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.ptime), 1),\n _hoisted_14,\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.dtime), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.speedMenuVisible = !_ctx.speedMenuVisible))\n }, \"倍速\"),\n (_ctx.speedMenuVisible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (_ctx.speedMenuVisible = false))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.speedOptions, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === _ctx.playbackRate }]),\n key: item.label,\n onClick: ($event: any) => (_ctx.speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_19))\n }), 128))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': _ctx.loop }])\n }, _hoisted_21, 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref: \"playBarWrap\",\n onMousedown: _cache[17] || (_cache[17] = $event => _ctx.handleMousedownPlayBar($event)),\n onTouchstart: _cache[18] || (_cache[18] = $event => _ctx.handleMousedownPlayBar($event)),\n onMousemove: _cache[19] || (_cache[19] = $event => _ctx.handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (_ctx.playBarTimeVisible = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (_ctx.playBarTimeVisible = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !_ctx.playBarTimeVisible }]),\n style: _normalizeStyle({ left: _ctx.playBarTimeLeft })\n }, _toDisplayString(_ctx.playBarTime), 7),\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _ctx.loadedBarWidth })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _ctx.playedBarWidth })\n }, _hoisted_24, 4)\n ])\n ], 544)\n ])\n ], 38))\n}","/* eslint-disable */\n\nimport { onMounted, Ref } from 'vue'\n\nexport default (\n src: string,\n videoRef: Ref,\n) => {\n onMounted(() => {\n if (!videoRef.value) return\n\n let type = 'normal'\n if (/m3u8(#|\\?|$)/i.exec(src)) type = 'hls'\n else if (/.flv(#|\\?|$)/i.exec(src)) type = 'flv'\n\n if (videoRef.value && type === 'hls' && (videoRef.value.canPlayType('application/x-mpegURL') || videoRef.value.canPlayType('application/vnd.apple.mpegURL'))) {\n type = 'normal'\n }\n\n if (type === 'hls') {\n const Hls = (window as any).Hls\n \n if (Hls && Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(src)\n hls.attachMedia(videoRef.value)\n }\n }\n else if (type === 'flv') {\n const flvjs = (window as any).flvjs\n if (flvjs && flvjs.isSupported()) {\n const flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: src,\n })\n flvPlayer.attachMediaElement(videoRef.value)\n flvPlayer.load()\n }\n }\n })\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport useMSE from './useMSE'\nimport { message } from 'ant-design-vue'\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nexport default defineComponent({\n name: 'video-player',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n src: {\n type: String,\n required: true,\n },\n poster: {\n type: String,\n default: '',\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n setup(props) {\n const videoRef = ref()\n const playBarWrap = ref()\n const volumeBarRef = ref()\n\n const volume = ref(0.5)\n const paused = ref(true)\n const currentTime = ref(0)\n const duration = ref(0)\n const loaded = ref(0)\n const loop = ref(false)\n const bezelTransition = ref(false)\n const playbackRate = ref(1)\n\n const playBarTimeVisible = ref(false)\n const playBarTime = ref('00:00')\n const playBarTimeLeft = ref('0')\n\n const ptime = computed(() => secondToTime(currentTime.value))\n const dtime = computed(() => secondToTime(duration.value))\n const playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\n const loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\n const volumeBarWidth = computed(() => volume.value * 100 + '%')\n\n const speedMenuVisible = ref(false)\n const speedOptions = [\n { label: '2x', value: 2 },\n { label: '1.5x', value: 1.5 },\n { label: '1.25x', value: 1.25 },\n { label: '1x', value: 1 },\n { label: '0.75x', value: 0.75 },\n { label: '0.5x', value: 0.5 },\n ]\n\n const seek = (time: number) => {\n if (!videoRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n videoRef.value.currentTime = time\n currentTime.value = time\n }\n\n const play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n }\n\n const pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n }\n\n const toggle = () => {\n if (paused.value) play() \n else pause()\n }\n\n const setVolume = (percentage: number) => {\n if (!videoRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n videoRef.value.volume = percentage\n volume.value = percentage\n if (videoRef.value.muted && percentage !== 0) videoRef.value.muted = false\n }\n\n const speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n }\n\n const handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n }\n\n const handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n }\n\n const handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n }\n\n const handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n }\n\n const handleError = () => message.error('视频加载失败')\n\n const thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n }\n\n const thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n }\n\n const handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n }\n\n const volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n }\n\n const handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n }\n\n const handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n }\n\n const toggleVolume = () => {\n if (!videoRef.value) return\n\n if (videoRef.value.muted) {\n videoRef.value.muted = false\n setVolume(0.5)\n }\n else {\n videoRef.value.muted = true\n setVolume(0)\n }\n }\n\n const toggleLoop = () => {\n loop.value = !loop.value\n }\n\n const autoHideControllerTimer = ref(-1)\n const hideController = ref(false)\n const autoHideController = () => {\n hideController.value = false\n clearTimeout(autoHideControllerTimer.value)\n autoHideControllerTimer.value = setTimeout(() => {\n if (videoRef.value?.played.length) hideController.value = true\n }, 3000)\n }\n \n useMSE(props.src, videoRef)\n\n return {\n videoRef,\n playBarWrap,\n volumeBarRef,\n volume,\n loop,\n paused,\n ptime,\n dtime,\n playBarTime,\n playBarTimeVisible,\n playBarTimeLeft,\n playedBarWidth,\n loadedBarWidth,\n volumeBarWidth,\n hideController,\n bezelTransition,\n playbackRate,\n speedMenuVisible,\n speedOptions,\n seek,\n play,\n pause,\n toggle,\n setVolume,\n speed,\n handleDurationchange,\n handleTimeupdate,\n handleEnded,\n handleProgress,\n handleMousedownPlayBar,\n handleMousedownVolumeBar,\n handleClickVolumeBar,\n handleMousemovePlayBar,\n toggleVolume,\n toggleLoop,\n autoHideController,\n handleError,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=e716fb74&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e716fb74&scoped=true&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e716fb74\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\nexport default defineComponent({\n name: 'editable-element-video',\n components: {\n VideoPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTVideoElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n }\n\n return {\n canvasScale,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=7f80f8ee&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7f80f8ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7f80f8ee\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_AudioPlayer = _resolveComponent(\"AudioPlayer\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_ctx.handleElementId === _ctx.elementInfo.id)\n ? (_openBlock(), _createBlock(_component_AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ..._ctx.audioPlayerPosition }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n scale: _ctx.canvasScale,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5cabbb47\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"autoplay\"]\nconst _hoisted_2 = { class: \"controller\" }\nconst _hoisted_3 = { class: \"icons\" }\nconst _hoisted_4 = { class: \"icon-content\" }\nconst _hoisted_5 = { class: \"volume\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = {\n class: \"volume-bar\",\n ref: \"volumeBarRef\"\n}\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = { class: \"time\" }\nconst _hoisted_11 = { class: \"ptime\" }\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_13 = { class: \"dtime\" }\nconst _hoisted_14 = { class: \"bar\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"audio-player\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref: \"audioRef\",\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (_ctx.handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (_ctx.handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (_ctx.handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (_ctx.volume === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (_ctx.volume === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[8] || (_cache[8] = $event => _ctx.handleMousedownVolumeBar($event)),\n onTouchstart: _cache[9] || (_cache[9] = $event => _ctx.handleMousedownVolumeBar($event)),\n onClick: _cache[10] || (_cache[10] = $event => _ctx.handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _ctx.volumeBarWidth })\n }, _hoisted_9, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.ptime), 1),\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.dtime), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref: \"playBarWrap\",\n onMousedown: _cache[11] || (_cache[11] = $event => _ctx.handleMousedownPlayBar($event)),\n onTouchstart: _cache[12] || (_cache[12] = $event => _ctx.handleMousedownPlayBar($event)),\n onMousemove: _cache[13] || (_cache[13] = $event => _ctx.handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (_ctx.playBarTimeVisible = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (_ctx.playBarTimeVisible = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !_ctx.playBarTimeVisible }]),\n style: _normalizeStyle({ left: _ctx.playBarTimeLeft })\n }, _toDisplayString(_ctx.playBarTime), 7),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _ctx.loadedBarWidth })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _ctx.playedBarWidth })\n }, _hoisted_16, 4)\n ])\n ], 544)\n ])\n ], 4))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nexport default defineComponent({\n name: 'audio-player',\n props: {\n src: {\n type: String,\n required: true,\n },\n loop: {\n type: Boolean,\n required: true,\n },\n autoplay: {\n type: Boolean,\n default: false,\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n setup(props) {\n const audioRef = ref()\n const playBarWrap = ref()\n const volumeBarRef = ref()\n\n const volume = ref(0.5)\n const paused = ref(true)\n const currentTime = ref(0)\n const duration = ref(0)\n const loaded = ref(0)\n\n const playBarTimeVisible = ref(false)\n const playBarTime = ref('00:00')\n const playBarTimeLeft = ref('0')\n\n const ptime = computed(() => secondToTime(currentTime.value))\n const dtime = computed(() => secondToTime(duration.value))\n const playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\n const loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\n const volumeBarWidth = computed(() => volume.value * 100 + '%')\n\n const seek = (time: number) => {\n if (!audioRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n audioRef.value.currentTime = time\n currentTime.value = time\n }\n\n const play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n }\n\n const pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n }\n\n const toggle = () => {\n if (paused.value) play() \n else pause()\n }\n\n const setVolume = (percentage: number) => {\n if (!audioRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n audioRef.value.volume = percentage\n volume.value = percentage\n if (audioRef.value.muted && percentage !== 0) audioRef.value.muted = false\n }\n\n const handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n }\n\n const handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n }\n\n const handlePlayed = () => {\n paused.value = false\n }\n\n const handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n }\n\n const handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n }\n\n const handleError = () => message.error('视频加载失败')\n\n const thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n }\n\n const thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n }\n\n const handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n }\n\n const volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n }\n\n const handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n }\n\n const handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n }\n\n const toggleVolume = () => {\n if (!audioRef.value) return\n\n if (audioRef.value.muted) {\n audioRef.value.muted = false\n setVolume(0.5)\n }\n else {\n audioRef.value.muted = true\n setVolume(0)\n }\n }\n\n return {\n audioRef,\n playBarWrap,\n volumeBarRef,\n volume,\n paused,\n ptime,\n dtime,\n playBarTime,\n playBarTimeVisible,\n playBarTimeLeft,\n playedBarWidth,\n loadedBarWidth,\n volumeBarWidth,\n play,\n pause,\n toggle,\n setVolume,\n handleDurationchange,\n handleTimeupdate,\n handlePlayed,\n handleEnded,\n handleProgress,\n handleError,\n handleMousedownPlayBar,\n handleMousedownVolumeBar,\n handleClickVolumeBar,\n handleMousemovePlayBar,\n toggleVolume,\n }\n },\n})\n","import { render } from \"./AudioPlayer.vue?vue&type=template&id=5cabbb47&scoped=true&ts=true\"\nimport script from \"./AudioPlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=5cabbb47&scoped=true&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5cabbb47\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\nexport default defineComponent({\n name: 'editable-element-audio',\n components: {\n AudioPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTAudioElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const { canvasScale, handleElementId } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n const audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / canvasScale.value\n const audioHeight = 50 / canvasScale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n })\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n return {\n canvasScale,\n handleElementId,\n audioIconSize,\n audioPlayerPosition,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=66dd4448&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=66dd4448&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66dd4448\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport useLockElement from '@/hooks/useLockElement'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\n\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\n\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\nimport TextElement from '@/views/components/element/TextElement/index.vue'\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\nimport LineElement from '@/views/components/element/LineElement/index.vue'\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\nimport TableElement from '@/views/components/element/TableElement/index.vue'\nimport LatexElement from '@/views/components/element/LatexElement/index.vue'\nimport VideoElement from '@/views/components/element/VideoElement/index.vue'\nimport AudioElement from '@/views/components/element/AudioElement/index.vue'\n\nexport default defineComponent({\n name: 'editable-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n isMultiSelect: {\n type: Boolean,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTElement, canMove?: boolean) => void>,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: ImageElement,\n [ElementTypes.TEXT]: TextElement,\n [ElementTypes.SHAPE]: ShapeElement,\n [ElementTypes.LINE]: LineElement,\n [ElementTypes.CHART]: ChartElement,\n [ElementTypes.TABLE]: TableElement,\n [ElementTypes.LATEX]: LatexElement,\n [ElementTypes.VIDEO]: VideoElement,\n [ElementTypes.AUDIO]: AudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement, unlockElement } = useLockElement()\n const { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n\n const contextmenus = (): ContextmenuItem[] => {\n if (props.elementInfo.lock) {\n return [{\n text: '解锁', \n handler: () => unlockElement(props.elementInfo),\n }]\n }\n\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutElement,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copyElement,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n { divider: true },\n {\n text: '水平居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER), },\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\n ],\n },\n {\n text: '垂直居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\n ],\n },\n { divider: true },\n {\n text: '置于顶层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP),\n children: [\n { text: '置于顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\n ],\n },\n {\n text: '置于底层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM),\n children: [\n { text: '置于底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\n ],\n },\n { divider: true },\n {\n text: '设置链接',\n handler: props.openLinkDialog,\n },\n {\n text: props.elementInfo.groupId ? '取消组合' : '组合',\n subText: 'Ctrl + G',\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\n hide: !props.isMultiSelect,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '锁定',\n subText: 'Ctrl + L',\n handler: lockElement,\n },\n {\n text: '删除',\n subText: 'Delete',\n handler: deleteElement,\n },\n ]\n }\n\n return {\n currentElementComponent,\n contextmenus,\n }\n },\n})\n","import { render } from \"./EditableElement.vue?vue&type=template&id=19fcaa81&ts=true\"\nimport script from \"./EditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${$props.quadrant}`),\n style: _normalizeStyle({\n top: $props.top + 'px',\n left: $props.left + 'px',\n width: $props.width + 'px',\n height: $props.height + 'px',\n })\n }, null, 6))\n}","\nexport default {\n name: 'mouse-selection',\n props: {\n top: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n quadrant: {\n type: Number,\n required: true,\n validator(value: number) {\n return [1, 2, 3, 4].includes(value)\n },\n },\n }\n}\n","import { render } from \"./MouseSelection.vue?vue&type=template&id=1619c258&scoped=true&ts=true\"\nimport script from \"./MouseSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1619c258\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GridLines = _resolveComponent(\"GridLines\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, [\n (_ctx.showGridLines)\n ? (_openBlock(), _createBlock(_component_GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9b94cc34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_ctx.canvasScale})`,\n }),\n d: _ctx.path,\n fill: \"none\",\n stroke: _ctx.gridColor,\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}","\nimport { defineComponent, computed } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { SlideBackground } from '@/types/slides'\n\nexport default defineComponent({\n name: 'grid-lines',\n setup() {\n const { canvasScale } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => currentSlide.value?.background)\n\n // 计算网格线的颜色,避免与背景的颜色太接近\n const gridColor = computed(() => {\n const bgColor = background.value?.color || '#fff'\n const colorList = ['#000', '#fff']\n return tinycolor.mostReadable(bgColor, colorList, { includeFallbackColors: true }).setAlpha(.5).toRgbString()\n })\n\n const gridSize = 50\n\n // 计算网格路径\n const getPath = () => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let path = ''\n for (let i = 0; i <= Math.floor(maxY / gridSize); i++) {\n path += `M0 ${i * gridSize} L${maxX} ${i * gridSize} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridSize); i++) {\n path += `M${i * gridSize} 0 L${i * gridSize} ${maxY} `\n }\n return path\n }\n\n return {\n canvasScale,\n gridColor,\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n path: getPath(),\n }\n },\n})\n","import { render } from \"./GridLines.vue?vue&type=template&id=9b94cc34&scoped=true&ts=true\"\nimport script from \"./GridLines.vue?vue&type=script&lang=ts\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=9b94cc34&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9b94cc34\"]])\n\nexport default __exports__","import { Ref, computed } from 'vue'\nimport { SlideBackground } from '@/types/slides'\n\n// 将页面背景数据转换为css样式\nexport default (background: Ref) => {\n const backgroundStyle = computed(() => {\n if (!background.value) return { backgroundColor: '#fff' }\n\n const {\n type,\n color,\n image,\n imageSize,\n gradientColor,\n gradientRotate,\n gradientType,\n } = background.value\n\n // 纯色背景\n if (type === 'solid') return { backgroundColor: color }\n\n // 背景图模式\n // 包括:背景图、背景大小,是否重复\n else if (type === 'image') {\n if (!image) return { backgroundColor: '#fff' }\n if (imageSize === 'repeat') {\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'repeat',\n backgroundSize: 'contain',\n }\n }\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: imageSize || 'cover',\n }\n }\n\n // 渐变色背景\n else if (type === 'gradient') {\n const rotate = gradientRotate || 0\n const color1 = gradientColor ? gradientColor[0] : '#fff'\n const color2 = gradientColor ? gradientColor[1] : '#fff'\n \n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\n }\n\n return { backgroundColor: '#fff' }\n })\n\n return {\n backgroundStyle,\n }\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { SlideBackground } from '@/types/slides'\nimport GridLines from './GridLines.vue'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nexport default defineComponent({\n name: 'viewport-background',\n components: {\n GridLines,\n },\n setup() {\n const { showGridLines } = storeToRefs(useMainStore())\n const { currentSlide } = storeToRefs(useSlidesStore())\n const background = computed(() => currentSlide.value?.background)\n\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n return {\n showGridLines,\n backgroundStyle,\n }\n },\n})\n","import { render } from \"./ViewportBackground.vue?vue&type=template&id=4d0018d8&scoped=true&ts=true\"\nimport script from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=4d0018d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4d0018d8\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: _ctx.left, top: _ctx.top })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', _ctx.type]),\n style: _normalizeStyle(_ctx.sizeStyle)\n }, null, 6)\n ], 4))\n}","\nimport { computed, PropType, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { AlignmentLineAxis } from '@/types/edit'\n\nexport default defineComponent({\n name: 'alignment-line',\n props: {\n type: {\n type: String as PropType<'vertical' | 'horizontal'>,\n required: true,\n },\n axis: {\n type: Object as PropType,\n required: true,\n },\n length: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n // 吸附对齐线的位置\n const left = computed(() => props.axis.x * canvasScale.value + 'px')\n const top = computed(() => props.axis.y * canvasScale.value + 'px')\n\n // 吸附对齐线的长度\n const sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * canvasScale.value + 'px' }\n return { width: props.length * canvasScale.value + 'px' }\n })\n\n return {\n left,\n top,\n sizeStyle,\n }\n },\n})\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=62c9018e&scoped=true&ts=true\"\nimport script from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=62c9018e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62c9018e\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a8c28cdc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref: \"selectionRef\",\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (_ctx.start && _ctx.end)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _ctx.creatingElement.type]),\n style: _normalizeStyle(_ctx.position)\n }, [\n (_ctx.creatingElement.type === 'line' && _ctx.lineData)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: _ctx.lineData.svgWidth,\n height: _ctx.lineData.svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.lineData.path,\n stroke: \"#d14424\",\n fill: \"none\",\n \"stroke-width\": \"1\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}","\nimport { computed, defineComponent, onMounted, reactive, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\n\nexport default defineComponent({\n name: 'element-create-selection',\n emits: ['created'],\n setup(props, { emit }) {\n const mainStore = useMainStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const start = ref<[number, number]>()\n const end = ref<[number, number]>()\n\n const selectionRef = ref()\n const offset = reactive({\n x: 0,\n y: 0,\n })\n onMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.x = x\n offset.y = y\n })\n\n // 鼠标拖动创建元素生成位置大小\n // 获取范围的起始位置和终点位置\n const createSelection = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n start.value = [startPageX, startPageY]\n\n document.onmousemove = e => {\n if (!creatingElement.value || !isMouseDown) return\n\n let currentPageX = e.pageX\n let currentPageY = e.pageY\n\n // 按住Ctrl键或者Shift键时:\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\n if (ctrlOrShiftKeyActive.value) {\n const moveX = currentPageX - startPageX\n const moveY = currentPageY - startPageY\n\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\n const absX = Math.abs(moveX)\n const absY = Math.abs(moveY)\n\n if (creatingElement.value.type === 'shape') {\n\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\n\n if (absX > absY) {\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\n }\n else {\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\n }\n }\n\n else if (creatingElement.value.type === 'line') {\n if (absX > absY) currentPageY = startPageY\n else currentPageX = startPageX\n }\n }\n\n end.value = [currentPageX, currentPageY]\n }\n\n document.onmouseup = e => {\n document.onmousemove = null\n document.onmouseup = null\n\n if (e.button === 2) {\n setTimeout(() => mainStore.setCreatingElement(null), 0)\n return\n }\n\n isMouseDown = false\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n const minSize = 30\n\n if (\n creatingElement.value?.type === 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value,\n end: end.value,\n })\n }\n else if (\n creatingElement.value?.type !== 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize && Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value,\n end: end.value,\n })\n }\n else {\n const defaultSize = 200\n const minX = Math.min(endPageX, startPageX)\n const minY = Math.min(endPageY, startPageY)\n const maxX = Math.max(endPageX, startPageX)\n const maxY = Math.max(endPageY, startPageY)\n const offsetX = maxX - minX >= minSize ? maxX - minX : defaultSize\n const offsetY = maxY - minY >= minSize ? maxY - minY : defaultSize\n emit('created', {\n start: [minX, minY],\n end: [minX + offsetX, minY + offsetY],\n })\n }\n }\n }\n\n // 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\n const lineData = computed(() => {\n if (!start.value || !end.value) return null\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\n\n const [_startX, _startY] = start.value\n const [_endX, _endY] = end.value\n const minX = Math.min(_startX, _endX)\n const maxX = Math.max(_startX, _endX)\n const minY = Math.min(_startY, _endY)\n const maxY = Math.max(_startY, _endY)\n\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\n\n const startX = _startX === minX ? 0 : maxX - minX\n const startY = _startY === minY ? 0 : maxY - minY\n const endX = _endX === minX ? 0 : maxX - minX\n const endY = _endY === minY ? 0 : maxY - minY\n\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\n\n return {\n svgWidth,\n svgHeight,\n startX,\n startY,\n endX,\n endY,\n path,\n }\n })\n\n // 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\n const position = computed(() => {\n if (!start.value || !end.value) return {}\n\n const [startX, startY] = start.value\n const [endX, endY] = end.value\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const width = maxX - minX\n const height = maxY - minY\n\n return {\n left: minX - offset.x + 'px',\n top: minY - offset.y + 'px',\n width: width + 'px',\n height: height + 'px',\n }\n })\n\n return {\n selectionRef,\n start,\n end,\n creatingElement,\n createSelection,\n lineData,\n position,\n }\n },\n})\n","import { render } from \"./ElementCreateSelection.vue?vue&type=template&id=a8c28cdc&scoped=true&ts=true\"\nimport script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=a8c28cdc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a8c28cdc\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: _ctx.minX * _ctx.canvasScale + 'px',\n top: _ctx.minY * _ctx.canvasScale + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!_ctx.disableResize)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (_ctx.scaleMultiElement($event, { minX: _ctx.minX, maxX: _ctx.maxX, minY: _ctx.minY, maxY: _ctx.maxY }, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","import { computed, Ref } from 'vue'\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\n\nexport default (width: Ref, height: Ref) => {\n // 元素缩放点\n const resizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 文本元素缩放点\n const textElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n ]\n })\n\n // 元素选中边框线\n const borderLines = computed(() => {\n return [\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\n ]\n })\n\n return {\n resizeHandlers,\n textElementResizeHandlers,\n borderLines,\n }\n}","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', _ctx.rotateClassName, _ctx.type])\n }, null, 2))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { OperateResizeHandler } from '@/types/edit'\n\nexport default defineComponent({\n name: 'resize-handler',\n props: {\n type: {\n type: String as PropType,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n },\n setup(props) {\n const rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n })\n\n return {\n rotateClassName,\n }\n },\n})\n","import { render } from \"./ResizeHandler.vue?vue&type=template&id=680e5917&scoped=true&ts=true\"\nimport script from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=680e5917&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-680e5917\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', $props.type, { 'wide': $props.isWide }])\n }, null, 2))\n}","\nimport { PropType } from 'vue'\nimport { OperateBorderLine } from '@/types/edit'\n\nexport default {\n name: 'border-line',\n props: {\n type: {\n type: String as PropType,\n required: true,\n },\n isWide: {\n type: Boolean,\n default: false,\n },\n },\n}\n","import { render } from \"./BorderLine.vue?vue&type=template&id=630e246b&scoped=true&ts=true\"\nimport script from \"./BorderLine.vue?vue&type=script&lang=ts\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-630e246b\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, reactive, PropType, watchEffect, toRefs } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport { OperateResizeHandler, MultiSelectRange } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'multi-select-operate',\n components: {\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementList: {\n type: Array as PropType,\n required: true,\n },\n scaleMultiElement: {\n type: Function as PropType<(e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\n const localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\n const range = reactive({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n })\n\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\n const width = computed(() => (range.maxX - range.minX) * canvasScale.value)\n const height = computed(() => (range.maxY - range.minY) * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n // 计算多选元素整体在画布中的范围\n const setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.minX = minX\n range.maxX = maxX\n range.minY = minY\n range.maxY = maxY\n }\n watchEffect(setRange)\n\n // 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\n const disableResize = computed(() => {\n return localActiveElementList.value.some(item => {\n if (\n (item.type === 'image' || item.type === 'shape') && \n !item.rotate\n ) return false\n return true\n })\n })\n\n return {\n ...toRefs(range),\n canvasScale,\n borderLines,\n disableResize,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=2d010d5c&scoped=true&ts=true\"\nimport script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=2d010d5c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d010d5c\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-71428444\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinkHandler = _resolveComponent(\"LinkHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': _ctx.isMultiSelect && !_ctx.isActive }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top * _ctx.canvasScale + 'px',\r\n left: _ctx.elementInfo.left * _ctx.canvasScale + 'px',\r\n transform: `rotate(${_ctx.elementInfo.rotate}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.elementInfo.height * _ctx.canvasScale / 2}px`,\r\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentOperateComponent), {\n key: 0,\n elementInfo: _ctx.elementInfo,\n handlerVisible: !_ctx.elementInfo.lock && (_ctx.isActiveGroupElement || !_ctx.isMultiSelect),\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n dragLineElement: _ctx.dragLineElement\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.toolbarState === 'elAnimation' && _ctx.elementIndexInAnimation !== -1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(_ctx.elementIndexInAnimation + 1), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(_component_LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': _ctx.isCliping }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a549510\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"rotate-handler\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\nexport default {\n name: 'rotate-handler',\n}\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=9a549510&scoped=true&ts=true\"\nimport script from \"./RotateHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a549510\"]])\n\nexport default __exports__","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n handlerVisible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTImageElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n isCliping,\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageElementOperate.vue?vue&type=template&id=24706869&scoped=true&ts=true\"\nimport script from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=24706869&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24706869\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textElementResizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n handlerVisible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTTextElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale } = storeToRefs(useMainStore())\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextElementOperate.vue?vue&type=template&id=449ddc8c&ts=true\"\nimport script from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"shape-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'shape-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTShapeElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n scaleWidth,\n resizeHandlers,\n borderLines,\n }\n },\n})\n","import { render } from \"./ShapeElementOperate.vue?vue&type=template&id=29fcec33&ts=true\"\nimport script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handlerVisible)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTLineElement } from '@/types/slides'\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'text-element-operate',\n inheritAttrs: false,\n components: {\n ResizeHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n dragLineElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const resizeHandlers = computed(() => {\n const handlers = [\n {\n handler: OperateLineHandlers.START,\n style: {\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\n }\n },\n {\n handler: OperateLineHandlers.END,\n style: {\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\n }\n },\n ]\n\n if (props.elementInfo.curve || props.elementInfo.broken) {\n const midHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.MID,\n style: {\n left: midHandler[0] * canvasScale.value + 'px',\n top: midHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n return handlers\n })\n\n return {\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=02ece9c9&ts=true\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"table-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textElementResizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTTableElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'table-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTTableElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\n const scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n scaleWidth,\n textElementResizeHandlers,\n borderLines,\n }\n },\n})\n","import { render } from \"./TableElementOperate.vue?vue&type=template&id=7e9fb017&ts=true\"\nimport script from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!_ctx.cannotRotate)\n ? (_openBlock(), _createBlock(_component_RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTShapeElement, PPTVideoElement, PPTLatexElement, PPTAudioElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\ntype PPTElement = PPTShapeElement | PPTVideoElement | PPTLatexElement | PPTAudioElement\n\nexport default defineComponent({\n name: 'common-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n const cannotRotate = computed(() => ['video', 'audio'].includes(props.elementInfo.type))\n\n return {\n scaleWidth,\n resizeHandlers,\n borderLines,\n cannotRotate,\n }\n },\n})\n","import { render } from \"./CommonElementOperate.vue?vue&type=template&id=3d82b467&ts=true\"\nimport script from \"./CommonElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3250b72d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = {\n key: 1,\n class: \"link\"\n}\nconst _hoisted_3 = { class: \"btns\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Divider = _resolveComponent(\"Divider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: _ctx.elementInfo.height * _ctx.canvasScale + 10 + 'px' })\n }, [\n (_ctx.elementInfo.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.elementInfo.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.elementInfo.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(_ctx.elementInfo.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_component_Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeLink(_ctx.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}","import { useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const setLink = (handleElement: PPTElement, link: PPTElementLink) => {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (link.type === 'web' && !linkRegExp.test(link.target)) {\n message.error('不是正确的网页链接地址')\n return false\n }\n const props = { link }\n slidesStore.updateElement({ id: handleElement.id, props })\n addHistorySnapshot()\n\n return true\n }\n\n const removeLink = (handleElement: PPTElement) => {\n slidesStore.removeElementProps({ id: handleElement.id, propName: 'link' })\n addHistorySnapshot()\n }\n\n return {\n setLink,\n removeLink,\n }\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nexport default defineComponent({\n name: 'link-handler',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup() {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { removeLink } = useLink()\n\n return {\n canvasScale,\n removeLink,\n }\n },\n})\n","import { render } from \"./LinkHandler.vue?vue&type=template&id=3250b72d&scoped=true&ts=true\"\nimport script from \"./LinkHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=3250b72d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3250b72d\"]])\n\nexport default __exports__","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateResizeHandler } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\nimport CommonElementOperate from './CommonElementOperate.vue'\r\nimport LinkHandler from './LinkHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'operate',\r\n components: {\r\n LinkHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isSelected: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n openLinkDialog: {\r\n type: Function as PropType<() => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n\r\n const currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n [ElementTypes.CHART]: CommonElementOperate,\r\n [ElementTypes.LATEX]: CommonElementOperate,\r\n [ElementTypes.VIDEO]: CommonElementOperate,\r\n [ElementTypes.AUDIO]: CommonElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const elementIndexInAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n return animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n })\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexInAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=71428444&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=71428444&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-71428444\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a0d0b33\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"link-dialog\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = {\n key: 2,\n class: \"preview\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", null, \"预览:\", -1))\nconst _hoisted_6 = { class: \"btns\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.type === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.type = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n (_ctx.type === 'web')\n ? (_openBlock(), _createBlock(_component_Input, {\n key: 0,\n class: \"input\",\n value: _ctx.address,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.address) = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'slide')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n class: \"input\",\n value: _ctx.slideId,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.slideId) = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: slide.id,\n value: slide.id\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"幻灯片 \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'slide' && _ctx.selectedSlide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: _ctx.selectedSlide,\n size: 490\n }, null, 8, [\"slide\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Button, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.save()))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ])\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-06a163ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailElement = _resolveComponent(\"ThumbnailElement\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: _ctx.size + 'px',\n height: _ctx.size * _ctx.viewportRatio + 'px',\n })\n }, [\n (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _ctx.VIEWPORT_SIZE + 'px',\n height: _ctx.VIEWPORT_SIZE * _ctx.viewportRatio + 'px',\n transform: `scale(${_ctx.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(_component_ThumbnailElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"加载中 ...\"))\n ], 4))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${_ctx.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), {\n elementInfo: _ctx.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b1f9460\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageOutline = _resolveComponent(\"ImageOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n })\n }, [\n _createVNode(_component_ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _ctx.clipShape.style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _ctx.imgPosition.top,\n left: _ctx.imgPosition.left,\n width: _ctx.imgPosition.width,\n height: _ctx.imgPosition.height,\n filter: _ctx.filter,\n }),\n alt: \"\"\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTImageElement } from '@/types/slides'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\n\nexport default defineComponent({\n name: 'base-element-image',\n components: {\n ImageOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n \n const clip = computed(() => props.elementInfo.clip)\n const { clipShape, imgPosition } = useClipImage(clip)\n\n const filters = computed(() => props.elementInfo.filters)\n const { filter } = useFilter(filters)\n\n return {\n imgPosition,\n filter,\n flipStyle,\n shadowStyle,\n clipShape,\n }\n },\n})\n","import { render } from \"./BaseImageElement.vue?vue&type=template&id=0b1f9460&scoped=true&ts=true\"\nimport script from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=0b1f9460&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0b1f9460\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2ec235c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _ctx.shadowStyle,\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n })\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n innerHTML: _ctx.elementInfo.content\n }, null, 8, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType, computed } from 'vue'\nimport { PPTTextElement } from '@/types/slides'\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\n\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nexport default defineComponent({\n name: 'base-element-text',\n components: {\n ElementOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n return {\n shadowStyle,\n }\n },\n})\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=2ec235c4&scoped=true&ts=true\"\nimport script from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=2ec235c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2ec235c4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68d8af98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GradientDefs = _resolveComponent(\"GradientDefs\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n color: _ctx.text.defaultColor,\n fontFamily: _ctx.text.defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(_component_GradientDefs, {\n id: `base-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#base-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 5' : '0 0'\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", _ctx.text.align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: _ctx.text.content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTShapeElement, ShapeText } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\n\nimport GradientDefs from './GradientDefs.vue'\n\nexport default defineComponent({\n name: 'base-element-shape',\n components: {\n GradientDefs,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const outline = computed(() => props.elementInfo.outline)\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n })\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n text,\n }\n },\n})\n","import { render } from \"./BaseShapeElement.vue?vue&type=template&id=68d8af98&scoped=true&ts=true\"\nimport script from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=68d8af98&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-68d8af98\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4032440c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.svgWidth,\n height: _ctx.svgHeight\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: _ctx.path,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": _ctx.lineDashArray,\n fill: \"none\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n LinePointMarker,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n })\n const svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n })\n\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\n\n const path = computed(() => {\n return getLineElementPath(props.elementInfo)\n })\n\n return {\n shadowStyle,\n svgWidth,\n svgHeight,\n lineDashArray,\n path,\n }\n },\n})\n","import { render } from \"./BaseLineElement.vue?vue&type=template&id=4032440c&scoped=true&ts=true\"\nimport script from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=4032440c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4032440c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n })\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_Chart, {\n class: _normalizeClass({ 'need-scale': _ctx.needScaleSize }),\n width: _ctx.chartWidth,\n height: _ctx.chartHeight,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"class\", \"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 4)\n ], 4)\n ], 4))\n}","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n needScaleSize: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props) {\r\n return {\r\n chartWidth: computed(() => props.needScaleSize ? props.elementInfo.width * 10 : props.elementInfo.width),\r\n chartHeight: computed(() => props.needScaleSize ? props.elementInfo.height * 10 : props.elementInfo.height),\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=60d9ae43&scoped=true&ts=true\"\nimport script from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=60d9ae43&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-60d9ae43\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3bbcc75c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_StaticTable = _resolveComponent(\"StaticTable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_StaticTable, {\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74b60291\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: _ctx.totalWidth + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _ctx.theme,\n 'row-header': _ctx.theme?.rowHeader,\n 'row-footer': _ctx.theme?.rowFooter,\n 'col-header': _ctx.theme?.colHeader,\n 'col-footer': _ctx.theme?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_ctx.theme?.color}; --subThemeColor1: ${_ctx.subThemeColor[0]}; --subThemeColor2: ${_ctx.subThemeColor[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colSizeList, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_1))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.data, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", { key: rowIndex }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: \"cell\",\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._ctx.getTextStyle(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan\n }, [\n _createElementVNode(\"div\", {\n class: \"cell-text\",\n innerHTML: _ctx.formatText(cell.text)\n }, null, 8, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_ctx.hideCells.includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}","\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nexport default defineComponent({\n name: 'static-table',\n props: {\n data: {\n type: Array as PropType,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n colWidths: {\n type: Array as PropType,\n required: true,\n },\n outline: {\n type: Object as PropType,\n required: true,\n },\n theme: {\n type: Object as PropType,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n },\n setup(props) {\n const colSizeList = ref([])\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\n watch([\n () => props.colWidths,\n () => props.width,\n ], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n }, { immediate: true })\n\n const cells = computed(() => props.data)\n const { hideCells } = useHideCells(cells)\n\n const theme = computed(() => props.theme)\n const { subThemeColor } = useSubThemeColor(theme)\n\n return {\n colSizeList,\n totalWidth,\n hideCells,\n getTextStyle,\n formatText,\n subThemeColor,\n }\n },\n})\n","import { render } from \"./StaticTable.vue?vue&type=template&id=74b60291&scoped=true&ts=true\"\nimport script from \"./StaticTable.vue?vue&type=script&lang=ts\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=74b60291&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-74b60291\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\nexport default defineComponent({\n name: 'base-element-table',\n components: {\n StaticTable,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseTableElement.vue?vue&type=template&id=3bbcc75c&scoped=true&ts=true\"\nimport script from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=3bbcc75c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3bbcc75c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4118f3dd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-latex',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseLatexElement.vue?vue&type=template&id=4118f3dd&scoped=true&ts=true\"\nimport script from \"./BaseLatexElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=4118f3dd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4118f3dd\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.elementInfo.poster})` })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTVideoElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-video',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseVideoElement.vue?vue&type=template&id=1c831c75&scoped=true&ts=true\"\nimport script from \"./BaseVideoElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=1c831c75&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c831c75\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-513e91c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTAudioElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-audio',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n\n return {\n audioIconSize,\n }\n },\n})\n","import { render } from \"./BaseAudioElement.vue?vue&type=template&id=513e91c4&scoped=true&ts=true\"\nimport script from \"./BaseAudioElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=513e91c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-513e91c4\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport BaseVideoElement from '@/views/components/element/VideoElement/BaseVideoElement.vue'\nimport BaseAudioElement from '@/views/components/element/AudioElement/BaseAudioElement.vue'\n\nexport default defineComponent({\n name: 'base-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: BaseChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: BaseVideoElement,\n [ElementTypes.AUDIO]: BaseAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n return {\n currentElementComponent,\n }\n },\n})\n","import { render } from \"./ThumbnailElement.vue?vue&type=template&id=36b099d8&ts=true\"\nimport script from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, PropType, defineComponent, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ThumbnailElement from './ThumbnailElement.vue'\n\nexport default defineComponent({\n name: 'thumbnail-slide',\n components: {\n ThumbnailElement,\n },\n props: {\n slide: {\n type: Object as PropType,\n required: true,\n },\n size: {\n type: Number,\n required: true,\n },\n visible: {\n type: Boolean,\n default: true,\n },\n },\n setup(props) {\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => props.slide.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const scale = computed(() => props.size / VIEWPORT_SIZE)\n provide('slideScale', scale)\n\n return {\n scale,\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=06a163ec&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=06a163ec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-06a163ec\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'link-dialog',\n emits: ['close'],\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { handleElement } = storeToRefs(useMainStore())\n const { slides } = storeToRefs(useSlidesStore())\n\n const type = ref<'web' | 'slide'>('web')\n const address = ref('')\n const slideId = ref('')\n\n const selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n })\n\n const tabs = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n ]\n\n const { setLink } = useLink()\n\n onMounted(() => {\n if (handleElement.value?.link) {\n if (handleElement.value.link.type === 'web') address.value = handleElement.value.link.target\n else if (handleElement.value.link.type === 'slide') slideId.value = handleElement.value.link.target\n\n type.value = handleElement.value.link.type\n }\n })\n\n const close = () => emit('close')\n\n const save = () => {\n const link: PPTElementLink = {\n type: type.value,\n target: type.value === 'web' ? address.value : slideId.value,\n }\n if (handleElement.value) {\n const success = setLink(handleElement.value, link)\n if (success) close()\n else address.value = ''\n }\n }\n\n return {\n slides,\n tabs,\n type,\n address,\n slideId,\n selectedSlide,\n close,\n save,\n }\n },\n})\n","import { render } from \"./LinkDialog.vue?vue&type=template&id=5a0d0b33&scoped=true&ts=true\"\nimport script from \"./LinkDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=5a0d0b33&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a0d0b33\"]])\n\nexport default __exports__","\nimport { defineComponent, provide, ref, watch, watchEffect } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { removeAllRanges } from '@/utils/selection'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useViewportSize from './hooks/useViewportSize'\nimport useMouseSelection from './hooks/useMouseSelection'\nimport useDropImageOrText from './hooks/useDropImageOrText'\nimport useRotateElement from './hooks/useRotateElement'\nimport useScaleElement from './hooks/useScaleElement'\nimport useSelectElement from './hooks/useSelectElement'\nimport useDragElement from './hooks/useDragElement'\nimport useDragLineElement from './hooks/useDragLineElement'\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\n\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\n\nimport EditableElement from './EditableElement.vue'\nimport MouseSelection from './MouseSelection.vue'\nimport ViewportBackground from './ViewportBackground.vue'\nimport AlignmentLine from './AlignmentLine.vue'\nimport ElementCreateSelection from './ElementCreateSelection.vue'\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\nimport Operate from './Operate/index.vue'\nimport LinkDialog from './LinkDialog.vue'\n\nexport default defineComponent({\n name: 'editor-canvas',\n components: {\n EditableElement,\n MouseSelection,\n ViewportBackground,\n AlignmentLine,\n ElementCreateSelection,\n MultiSelectOperate,\n Operate,\n LinkDialog,\n },\n setup() {\n const mainStore = useMainStore()\n const {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n editorAreaFocus,\n showGridLines,\n creatingElement,\n canvasScale,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const viewportRef = ref()\n const alignmentLines = ref([])\n\n const linkDialogVisible = ref(false)\n const openLinkDialog = () => linkDialogVisible.value = true\n\n watch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n })\n\n const elementList = ref([])\n const setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n }\n watchEffect(setLocalElementList)\n\n const canvasRef = ref()\n const { viewportStyles } = useViewportSize(canvasRef)\n\n useDropImageOrText(canvasRef)\n\n const { mouseSelectionState, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\n const { dragElement } = useDragElement(elementList, alignmentLines)\n const { dragLineElement } = useDragLineElement(elementList)\n const { selectElement } = useSelectElement(elementList, dragElement)\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines)\n const { rotateElement } = useRotateElement(elementList, viewportRef)\n\n const { selectAllElement } = useSelectAllElement()\n const { deleteAllElements } = useDeleteElement()\n const { pasteElement } = useCopyAndPasteElement()\n const { enterScreening } = useScreening()\n const { updateSlideIndex } = useSlideHandler()\n\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\n const handleClickBlankArea = (e: MouseEvent) => {\n mainStore.setActiveElementIdList([])\n if (!ctrlOrShiftKeyActive.value) updateMouseSelection(e)\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n removeAllRanges()\n }\n\n // 移除画布编辑区域焦点\n const removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n }\n\n // 滚动鼠标\n const { scaleCanvas } = useScaleCanvas()\n const throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\n const throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\n const handleMousewheelCanvas = (e: WheelEvent) => {\n e.preventDefault()\n\n // 按住Ctrl键时:缩放画布\n if (ctrlKeyState.value) {\n if (e.deltaY > 0) throttleScaleCanvas('-')\n else if (e.deltaY < 0) throttleScaleCanvas('+')\n }\n // 上下翻页\n else {\n if (e.deltaY > 0) throttleUpdateSlideIndex(KEYS.DOWN)\n else if (e.deltaY < 0) throttleUpdateSlideIndex(KEYS.UP)\n }\n }\n\n // 开关网格线\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n // 在鼠标绘制的范围插入元素\n const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\n const contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '网格线',\n subText: showGridLines.value ? '√' : '',\n handler: toggleGridLines,\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '从当前页演示',\n subText: 'Ctrl+F',\n handler: enterScreening,\n },\n ]\n }\n\n provide('slideScale', canvasScale)\n\n return {\n elementList,\n activeElementIdList,\n handleElementId,\n activeGroupElementId,\n canvasRef,\n viewportRef,\n viewportStyles,\n canvasScale,\n mouseSelectionState,\n currentSlide,\n creatingElement,\n alignmentLines,\n linkDialogVisible,\n openLinkDialog,\n handleClickBlankArea,\n removeEditorAreaFocus,\n insertElementFromCreateSelection,\n selectElement,\n rotateElement,\n scaleElement,\n dragLineElement,\n scaleMultiElement,\n handleMousewheelCanvas,\n contextmenus,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=1386e8fc&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1386e8fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1386e8fc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4ae7c9aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"canvas-tool\" }\nconst _hoisted_2 = { class: \"left-handler\" }\nconst _hoisted_3 = { class: \"add-element-handler\" }\nconst _hoisted_4 = { class: \"right-handler\" }\nconst _hoisted_5 = { class: \"text\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconBack = _resolveComponent(\"IconBack\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_ShapePool = _resolveComponent(\"ShapePool\")!\n const _component_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_LinePool = _resolveComponent(\"LinePool\")!\n const _component_IconConnection = _resolveComponent(\"IconConnection\")!\n const _component_ChartPool = _resolveComponent(\"ChartPool\")!\n const _component_IconChartProportion = _resolveComponent(\"IconChartProportion\")!\n const _component_TableGenerator = _resolveComponent(\"TableGenerator\")!\n const _component_IconInsertTable = _resolveComponent(\"IconInsertTable\")!\n const _component_IconFormula = _resolveComponent(\"IconFormula\")!\n const _component_MediaInput = _resolveComponent(\"MediaInput\")!\n const _component_IconVideoTwo = _resolveComponent(\"IconVideoTwo\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_IconFullScreen = _resolveComponent(\"IconFullScreen\")!\n const _component_LaTeXEditor = _resolveComponent(\"LaTeXEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"撤销\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBack, {\n class: _normalizeClass([\"handler-item\", { 'disable': !_ctx.canUndo }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.undo()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"重做\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconNext, {\n class: _normalizeClass([\"handler-item\", { 'disable': !_ctx.canRedo }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.redo()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入文字\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize, {\n class: \"handler-item\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.drawText()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_FileInput, {\n onChange: _cache[3] || (_cache[3] = files => _ctx.insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入图片\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.shapePoolVisible,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.shapePoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ShapePool, {\n onSelect: _cache[4] || (_cache[4] = shape => _ctx.drawShape(shape))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入形状\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconGraphicDesign, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.linePoolVisible,\n \"onUpdate:visible\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.linePoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_LinePool, {\n onSelect: _cache[6] || (_cache[6] = line => _ctx.drawLine(line))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入线条\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconConnection, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.chartPoolVisible,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.chartPoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ChartPool, {\n onSelect: _cache[8] || (_cache[8] = chart => { _ctx.createChartElement(chart); _ctx.chartPoolVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入图表\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconChartProportion, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.tableGeneratorVisible,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.tableGeneratorVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_TableGenerator, {\n onClose: _cache[10] || (_cache[10] = ($event: any) => (_ctx.tableGeneratorVisible = false)),\n onInsert: _cache[11] || (_cache[11] = ({ row, col }) => { _ctx.createTableElement(row, col); _ctx.tableGeneratorVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入表格\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconInsertTable, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入公式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormula, {\n class: \"handler-item\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.latexEditorVisible = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.mediaInputVisible,\n \"onUpdate:visible\": _cache[17] || (_cache[17] = ($event: any) => ((_ctx.mediaInputVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_MediaInput, {\n onClose: _cache[14] || (_cache[14] = ($event: any) => (_ctx.mediaInputVisible = false)),\n onInsertVideo: _cache[15] || (_cache[15] = src => { _ctx.createVideoElement(src); _ctx.mediaInputVisible = false }),\n onInsertAudio: _cache[16] || (_cache[16] = src => { _ctx.createAudioElement(src); _ctx.mediaInputVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入音视频\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconVideoTwo, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_IconMinus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.scaleCanvas('-')))\n }),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.canvasScalePercentage), 1),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[19] || (_cache[19] = ($event: any) => (_ctx.scaleCanvas('+')))\n }),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"适配屏幕\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFullScreen, {\n class: \"handler-item viewport-size-adaptation\",\n onClick: _cache[20] || (_cache[20] = ($event: any) => (_ctx.setCanvasPercentage(90)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[23] || (_cache[23] = ($event: any) => ((_ctx.latexEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LaTeXEditor, {\n onClose: _cache[21] || (_cache[21] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[22] || (_cache[22] = data => { _ctx.createLatexElement(data); _ctx.latexEditorVisible = false })\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0f50713a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_6 = [\"transform\"]\nconst _hoisted_7 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.shapeList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"shape-content\",\n onClick: ($event: any) => (_ctx.selectShape(shape))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / shape.viewBox}, ${18 / shape.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n stroke: \"#999\",\n \"stroke-width\": \"2\",\n d: shape.path\n }, null, 8, _hoisted_7)\n ], 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}","export interface ShapePoolItem {\n viewBox: number;\n path: string;\n special?: boolean;\n}\n\nexport const SHAPE_LIST = [\n {\n type: '矩形',\n children: [\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200'\n },\n {\n viewBox: 200,\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z'\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z'\n },\n {\n viewBox: 200,\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z'\n },\n {\n viewBox: 200,\n path: 'M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z'\n },\n {\n viewBox: 200,\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z',\n },\n {\n viewBox: 200,\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: 200,\n path: 'M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z'\n },\n {\n viewBox: 1024,\n path: 'M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z',\n special: true,\n },\n ],\n },\n\n {\n type: '其他形状',\n children: [\n {\n viewBox: 1024,\n path: 'M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z',\n special: true,\n },\n ],\n },\n]","\nimport { defineComponent } from 'vue'\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\n\nexport default defineComponent({\n name: 'shape-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const shapeList = SHAPE_LIST\n\n const selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n }\n\n return {\n shapeList,\n selectShape,\n }\n },\n})\n","import { render } from \"./ShapePool.vue?vue&type=template&id=0f50713a&scoped=true&ts=true\"\nimport script from \"./ShapePool.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=0f50713a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f50713a\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-78517932\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"line-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"20\",\n height: \"20\"\n}\nconst _hoisted_6 = [\"d\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.lineList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (line, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"line-content\",\n onClick: ($event: any) => (_ctx.selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n class: \"line-marker\",\n id: `preset-line-${index}`,\n position: \"start\",\n type: line.points[0],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (line.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n class: \"line-marker\",\n id: `preset-line-${index}`,\n position: \"end\",\n type: line.points[1],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-path\",\n d: line.path,\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": line.style === 'solid' ? '0, 0' : '4, 1',\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": line.points[0] ? `url(#${`preset-line-${index}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${index}`}-${line.points[1]}-end)` : ''\n }, null, 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}","import { LinePoint } from '@/types/slides'\n\n\nexport interface LinePoolItem {\n path: string;\n style: 'solid' | 'dashed';\n points: [LinePoint, LinePoint];\n isBroken?: boolean;\n isCurve?: boolean;\n}\n\ninterface PresetLine {\n type: string;\n children: LinePoolItem[];\n}\n\nexport const LINE_LIST: PresetLine[] = [\n {\n type: '直线',\n children: [\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\n ],\n },\n {\n type: '折线、曲线',\n children: [\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\n ],\n },\n]","\nimport { defineComponent } from 'vue'\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'line-pool',\n emits: ['select'],\n components: {\n LinePointMarker,\n },\n setup(props, { emit }) {\n const lineList = LINE_LIST\n\n const selectLine = (line: LinePoolItem) => {\n emit('select', line)\n }\n\n return {\n lineList,\n selectLine,\n }\n },\n})\n","import { render } from \"./LinePool.vue?vue&type=template&id=78517932&scoped=true&ts=true\"\nimport script from \"./LinePool.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=78517932&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-78517932\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ab6a141a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconChartLine = _resolveComponent(\"IconChartLine\")!\n const _component_IconChartHistogram = _resolveComponent(\"IconChartHistogram\")!\n const _component_IconChartPie = _resolveComponent(\"IconChartPie\")!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.chartList, (chart, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (_ctx.selectChart(chart))\n }, [\n (chart === 'line')\n ? (_openBlock(), _createBlock(_component_IconChartLine, {\n key: 0,\n size: \"24\"\n }))\n : (chart === 'bar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogram, {\n key: 1,\n size: \"24\"\n }))\n : (chart === 'pie')\n ? (_openBlock(), _createBlock(_component_IconChartPie, {\n key: 2,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ]))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'chart-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const chartList = ['bar', 'line', 'pie']\n\n const selectChart = (chart: string) => {\n emit('select', chart)\n }\n\n return {\n chartList,\n selectChart,\n }\n },\n})\n","import { render } from \"./ChartPool.vue?vue&type=template&id=ab6a141a&scoped=true&ts=true\"\nimport script from \"./ChartPool.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=ab6a141a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ab6a141a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e325ce98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-generator\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"lef\" }\nconst _hoisted_4 = [\"onMouseenter\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"custom\"\n}\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"flex\":\"1\"}\n}, \"行数:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"flex\":\"1\"}\n}, \"列数:\", -1))\nconst _hoisted_10 = { class: \"btns\" }\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, \"表格 \" + _toDisplayString(_ctx.endCell.length ? `${_ctx.endCell[0]} x ${_ctx.endCell[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.isCustom = !_ctx.isCustom))\n }, _toDisplayString(_ctx.isCustom ? '返回' : '自定义'), 1)\n ]),\n (!_ctx.isCustom)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (_ctx.endCell = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleClickTable()))\n }, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (row) => {\n return _createElementVNode(\"tr\", { key: row }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (col) => {\n return _createElementVNode(\"td\", {\n onMouseenter: ($event: any) => (_ctx.endCell = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': _ctx.endCell.length && row <= _ctx.endCell[0] && col <= _ctx.endCell[1] }])\n }, null, 2)\n ], 40, _hoisted_4)\n }), 64))\n ])\n }), 64))\n ])\n ], 32))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 20,\n value: _ctx.customRow,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.customRow) = $event)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 20,\n value: _ctx.customCol,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.customCol) = $event)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\n\nimport { message } from 'ant-design-vue'\n\nexport default defineComponent({\n name: 'table-generator',\n emits: ['insert', 'close'],\n setup(props, { emit }) {\n const endCell = ref([])\n const customRow = ref(3)\n const customCol = ref(3)\n const isCustom = ref(false)\n\n const handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n }\n\n const insertCustomTable = () => {\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\n emit('insert', { row: customRow.value, col: customCol.value })\n isCustom.value = false\n }\n\n const close = () => {\n emit('close')\n isCustom.value = false\n }\n\n return {\n endCell,\n customRow,\n customCol,\n handleClickTable,\n insertCustomTable,\n isCustom,\n close,\n }\n },\n})\n","import { render } from \"./TableGenerator.vue?vue&type=template&id=e325ce98&scoped=true&ts=true\"\nimport script from \"./TableGenerator.vue?vue&type=script&lang=ts\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=e325ce98&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e325ce98\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4916d8ab\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"media-input\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"btns\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"确认\")\nconst _hoisted_7 = { class: \"btns\" }\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.type === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.type = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n (_ctx.type === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_Input, {\n value: _ctx.videoSrc,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.videoSrc) = $event)),\n placeholder: \"请输入视频地址,e.g. https://xxx.mp4\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Button, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.insertVideo()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Input, {\n value: _ctx.audioSrc,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.audioSrc) = $event)),\n placeholder: \"请输入音频地址,e.g. https://xxx.mp3\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.insertAudio()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\nexport default defineComponent({\n name: 'media-input',\n emits: ['insertVideo', 'insertAudio', 'close'],\n setup(props, { emit }) {\n const type = ref<'video' | 'audio'>('video')\n\n const videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\n const audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\n const tabs = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n ]\n\n const insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n }\n\n const insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n }\n\n const close = () => emit('close')\n\n return {\n type,\n videoSrc,\n audioSrc,\n tabs,\n insertVideo,\n insertAudio,\n close,\n }\n },\n})\n","import { render } from \"./MediaInput.vue?vue&type=template&id=4916d8ab&scoped=true&ts=true\"\nimport script from \"./MediaInput.vue?vue&type=script&lang=ts\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=4916d8ab&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4916d8ab\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-129e1afa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-editor\" }\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"left\" }\nconst _hoisted_4 = { class: \"input-area\" }\nconst _hoisted_5 = { class: \"preview\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"placeholder\"\n}\nconst _hoisted_7 = {\n key: 1,\n class: \"preview-content\"\n}\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = { class: \"tabs\" }\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = { class: \"content\" }\nconst _hoisted_12 = {\n key: 0,\n class: \"symbol\"\n}\nconst _hoisted_13 = { class: \"symbol-tabs\" }\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"symbol-pool\" }\nconst _hoisted_16 = [\"onClick\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"formula\"\n}\nconst _hoisted_18 = { class: \"formula-title\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = { class: \"footer\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"确定\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TextArea = _resolveComponent(\"TextArea\")!\n const _component_FormulaContent = _resolveComponent(\"FormulaContent\")!\n const _component_SymbolContent = _resolveComponent(\"SymbolContent\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_TextArea, {\n value: _ctx.latex,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.latex) = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref: \"textAreaRef\"\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_ctx.latex)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(_component_FormulaContent, {\n width: 518,\n height: 138,\n latex: _ctx.latex\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _ctx.toolbarState }]),\n key: tab.value,\n onClick: ($event: any) => (_ctx.toolbarState = tab.value)\n }, _toDisplayString(tab.label), 11, _hoisted_10))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_ctx.toolbarState === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolList, (group) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"symbol-tab\", { 'active': _ctx.selectedSymbolKey === group.type }]),\n key: group.type,\n onClick: ($event: any) => (_ctx.selectedSymbolKey = group.type)\n }, _toDisplayString(group.label), 11, _hoisted_14))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPool, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (_ctx.insertSymbol(item.latex))\n }, [\n _createVNode(_component_SymbolContent, {\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_16))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formulaList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"formula-item\",\n key: item.label\n }, [\n _createElementVNode(\"div\", _hoisted_18, _toDisplayString(item.label), 1),\n _createElementVNode(\"div\", {\n class: \"formula-item-content\",\n onClick: ($event: any) => (_ctx.latex =item.latex)\n }, [\n _createVNode(_component_FormulaContent, {\n width: 236,\n height: 60,\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_19)\n ]))\n }), 128))\n ]))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.update()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ])\n ]))\n}","import { hfmath, CONFIG as hfmathConfig } from 'hfmath'\n\nhfmathConfig.SUB_SUP_SCALE = 0.5\n\nexport { hfmath }","export const FORMULA_LIST = [\n {\n label: '高斯公式',\n latex: `\\\\int\\\\int\\\\int _ { \\\\Omega } \\\\left( \\\\frac { \\\\partial {P} } { \\\\partial {x} } + \\\\frac { \\\\partial {Q} } { \\\\partial {y} } + \\\\frac { \\\\partial {R} }{ \\\\partial {z} } \\\\right) \\\\mathrm { d } V = \\\\oint _ { \\\\partial \\\\Omega } ( P \\\\cos \\\\alpha + Q \\\\cos \\\\beta + R \\\\cos \\\\gamma ) \\\\mathrm{ d} S`\n },\n {\n label: '傅里叶级数',\n latex: `f(x) = \\\\frac {a_0} 2 + \\\\sum_{n = 1}^\\\\infty {({a_n}\\\\cos {nx} + {b_n}\\\\sin {nx})}`,\n },\n {\n label: '泰勒展开式',\n latex: `e ^ { x } = 1 + \\\\frac { x } { 1 ! } + \\\\frac { x ^ { 2 } } { 2 ! } + \\\\frac { x ^ { 3 } } { 3 ! } + ... , \\\\quad - \\\\infty < x < \\\\infty`,\n },\n {\n label: '定积分',\n latex: `\\\\lim_ { n \\\\rightarrow + \\\\infty } \\\\sum _ { i = 1 } ^ { n } f \\\\left[ a + \\\\frac { i } { n } ( b - a ) \\\\right] \\\\frac { b - a } { n } = \\\\int _ { a } ^ { b } f ( x ) dx`,\n },\n {\n label: '三角恒等式1',\n latex: `\\\\sin \\\\alpha \\\\pm \\\\sin \\\\beta = 2 \\\\sin \\\\frac { 1 } { 2 } ( \\\\alpha \\\\pm \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha \\\\mp \\\\beta )`,\n },\n {\n label: '三角恒等式2',\n latex: `\\\\cos \\\\alpha + \\\\cos \\\\beta = 2 \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha + \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha - \\\\beta )`,\n },\n {\n label: '和的展开式',\n latex: `( 1 + x ) ^ { n } = 1 + \\\\frac { n x } { 1 ! } + \\\\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ...`,\n },\n {\n label: '欧拉公式',\n latex: ` e^{ix} = \\\\cos {x} + i\\\\sin {x}`,\n },\n {\n label: '贝努利方程',\n latex: `\\\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\\\not= {0,1})`,\n },\n {\n label: '全微分方程',\n latex: `du(x,y) = P(x,y)dx + Q(x,y)dy = 0`,\n },\n {\n label: '非齐次方程',\n latex: `y = (\\\\int Q(x) e^{\\\\int {P(x)dx}}dx + C)e^{-\\\\int {P(x)dx}}`,\n },\n {\n label: '柯西中值定理',\n latex: `\\\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\\\frac{{f'(\\\\xi )}}{{F'(\\\\xi )}}`,\n },\n {\n label: '拉格朗日中值定理',\n latex: `f(b) - f(a) = f'(\\\\xi )(b - a)`,\n },\n {\n label: '导数公式',\n latex: `(\\\\arcsin x)' = \\\\frac{1}{{\\\\sqrt {1 - x^2} }}`,\n },\n {\n label: '三角函数积分',\n latex: `\\\\int {tgxdx = - \\\\ln \\\\left| {\\\\cos x} \\\\right| + C}`,\n },\n {\n label: '二次曲面',\n latex: `\\\\frac{{{x^2}}}{{{a^2}}} + \\\\frac{{{y^2}}}{{{b^2}}} - \\\\frac{{{z^2}}}{{{c^2}}} = 1`,\n },\n {\n label: '二阶微分',\n latex: `\\\\frac {{d^2}y} {dx^2} + P(x) \\\\frac {dy} {dx} + Q(x)y = f(x)`,\n },\n {\n label: '方向导数',\n latex: `\\\\frac{{\\\\partial f}}{{\\\\partial l}} = \\\\frac{{\\\\partial f}}{{\\\\partial x}}\\\\cos \\\\phi + \\\\frac{{\\\\partial f}}{{\\\\partial y}}\\\\sin \\\\phi`,\n },\n]\n\nexport const SYMBOL_LIST = [\n {\n type: 'operators',\n label: '数学',\n children: [\n { latex: '\\\\cdot' },\n { latex: '\\\\pm' },\n { latex: '\\\\mp' },\n { latex: '+' },\n { latex: '-' },\n { latex: '\\\\times' },\n { latex: '\\\\div' },\n { latex: '<' },\n { latex: '>' },\n { latex: '=' },\n { latex: '\\\\neq\\\\ne' },\n { latex: '\\\\leqq' },\n { latex: '\\\\geqq' },\n { latex: '\\\\leq' },\n { latex: '\\\\geq' },\n { latex: '\\\\propto' },\n { latex: '\\\\sim' },\n { latex: '\\\\equiv' },\n { latex: '\\\\dagger' },\n { latex: '\\\\ddagger' },\n { latex: '\\\\ell' },\n { latex: '\\\\#' },\n { latex: '\\\\$' },\n { latex: '\\\\&' },\n { latex: '\\\\%' },\n { latex: '\\\\langle\\\\rangle' },\n { latex: '()' },\n { latex: '[]' },\n { latex: '\\\\{\\\\}' },\n { latex: '||' },\n { latex: '\\\\|' },\n { latex: '\\\\exists' },\n { latex: '\\\\in' },\n { latex: '\\\\subset' },\n { latex: '\\\\supset' },\n { latex: '\\\\cup' },\n { latex: '\\\\cap' },\n { latex: '\\\\infty' },\n { latex: '\\\\partial' },\n { latex: '\\\\nabla' },\n { latex: '\\\\aleph' },\n { latex: '\\\\wp' },\n { latex: '\\\\therefore' },\n { latex: '\\\\mid' },\n { latex: '\\\\sum' },\n { latex: '\\\\prod' },\n { latex: '\\\\bigoplus' },\n { latex: '\\\\bigodot' },\n { latex: '\\\\int' },\n { latex: '\\\\oint' },\n { latex: '\\\\oplus' },\n { latex: '\\\\odot' },\n { latex: '\\\\perp' },\n { latex: '\\\\angle' },\n { latex: '\\\\triangle' },\n { latex: '\\\\Box' },\n { latex: '\\\\rightarrow' },\n { latex: '\\\\to' },\n { latex: '\\\\leftarrow' },\n { latex: '\\\\gets' },\n { latex: '\\\\circ' },\n { latex: '\\\\bigcirc' },\n { latex: '\\\\bullet' },\n { latex: '\\\\star' },\n { latex: '\\\\diamond' },\n { latex: '\\\\ast' },\n { latex: ',' },\n { latex: '.' },\n { latex: ';' },\n { latex: '!' },\n ],\n },\n {\n type: 'group',\n label: '组合',\n children: [\n { latex: '\\\\frac{a}{b}' },\n { latex: '\\\\frac{dx}{dx}' },\n { latex: '\\\\frac{\\\\partial a}{\\\\partial b}' },\n { latex: '\\\\sqrt{x}' },\n { latex: '\\\\sqrt[n]{x}' },\n { latex: 'x^{n}' },\n { latex: 'x_{n}' },\n { latex: 'x_a^b' },\n { latex: '\\\\int_{a}^{b}' },\n { latex: '\\\\oint_a^b' },\n { latex: '\\\\lim_{a \\\\rightarrow b}' },\n { latex: '\\\\prod_a^b' },\n { latex: '\\\\sum_a^b' },\n { latex: '\\\\left(\\\\begin{array}a \\\\\\\\ b\\\\end{array}\\\\right)' },\n { latex: '\\\\begin{bmatrix}a & b \\\\\\\\ c & d \\\\end{bmatrix}' },\n { latex: '\\\\begin{cases}a & x = 0 \\\\\\\\ b & x > 0\\\\end{cases}' },\n { latex: '\\\\hat{a}' },\n { latex: '\\\\breve{a}' },\n { latex: '\\\\acute{a}' },\n { latex: '\\\\grave{a}' },\n { latex: '\\\\tilde{a}' },\n { latex: '\\\\bar{a}' },\n { latex: '\\\\vec{a}' },\n { latex: '\\\\underline{a}' },\n { latex: '\\\\overline{a}' },\n { latex: '\\\\widehat{ab}' },\n { latex: '\\\\overleftarrow{ab}' },\n { latex: '\\\\overrightarrow{ab}' },\n ],\n },\n {\n type: 'verbatim',\n label: '函数',\n children: [\n { latex: '\\\\log' },\n { latex: '\\\\ln' },\n { latex: '\\\\exp' },\n { latex: '\\\\mod' },\n { latex: '\\\\lim' },\n { latex: '\\\\sin' },\n { latex: '\\\\cos' },\n { latex: '\\\\tan' },\n { latex: '\\\\csc' },\n { latex: '\\\\sec' },\n { latex: '\\\\cot' },\n { latex: '\\\\sinh' },\n { latex: '\\\\cosh' },\n { latex: '\\\\tanh' },\n { latex: '\\\\csch' },\n { latex: '\\\\sech' },\n { latex: '\\\\coth' },\n { latex: '\\\\arcsin' },\n { latex: '\\\\arccos' },\n { latex: '\\\\arctan' },\n { latex: '\\\\arccsc' },\n { latex: '\\\\arcsec' },\n { latex: '\\\\arccot' },\n ],\n },\n {\n type: 'greek',\n label: '希腊字母',\n children: [\n { latex: '\\\\alpha' },\n { latex: '\\\\beta' },\n { latex: '\\\\gamma' },\n { latex: '\\\\delta' },\n { latex: '\\\\varepsilon' },\n { latex: '\\\\zeta' },\n { latex: '\\\\eta' },\n { latex: '\\\\vartheta' },\n { latex: '\\\\iota' },\n { latex: '\\\\kappa' },\n { latex: '\\\\lambda' },\n { latex: '\\\\mu' },\n { latex: '\\\\nu' },\n { latex: '\\\\xi' },\n { latex: '\\\\omicron' },\n { latex: '\\\\pi' },\n { latex: '\\\\rho' },\n { latex: '\\\\sigma' },\n { latex: '\\\\tau' },\n { latex: '\\\\upsilon' },\n { latex: '\\\\varphi' },\n { latex: '\\\\chi' },\n { latex: '\\\\psi' },\n { latex: '\\\\omega' },\n { latex: '\\\\epsilon' },\n { latex: '\\\\theta' },\n { latex: '\\\\phi' },\n { latex: '\\\\varsigma' },\n { latex: '\\\\Alpha' },\n { latex: '\\\\Beta' },\n { latex: '\\\\Gamma' },\n { latex: '\\\\Delta' },\n { latex: '\\\\Epsilon' },\n { latex: '\\\\Zeta' },\n { latex: '\\\\Eta' },\n { latex: '\\\\Theta' },\n { latex: '\\\\Iota' },\n { latex: '\\\\Kappa' },\n { latex: '\\\\Lambda' },\n { latex: '\\\\Mu' },\n { latex: '\\\\Nu' },\n { latex: '\\\\Xi' },\n { latex: '\\\\Omicron' },\n { latex: '\\\\Pi' },\n { latex: '\\\\Rho' },\n { latex: '\\\\Sigma' },\n { latex: '\\\\Tau' },\n { latex: '\\\\Upsilon' },\n { latex: '\\\\Phi' },\n { latex: '\\\\Chi' },\n { latex: '\\\\Psi' },\n { latex: '\\\\Omega' },\n ],\n },\n]","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: _ctx.box.w + 32,\n height: _ctx.box.h + 32,\n stroke: \"#000\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.scale}, ${_ctx.scale}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: _ctx.pathd }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\nexport default defineComponent({\n name: 'formula-content',\n props: {\n latex: {\n type: String,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const box = ref({ x: 0, y: 0, w: 0, h: 0 })\n const pathd = ref('')\n\n watch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n }, { immediate: true })\n\n const scale = computed(() => {\n const boxW = box.value.w + 32\n const boxH = box.value.h + 32\n\n if (boxW > props.width || boxH > props.height) {\n if (boxW / boxH > props.width / props.height) return props.width / boxW\n return props.height / boxH\n }\n return 1\n })\n\n return {\n box,\n pathd,\n scale,\n }\n },\n})\n","import { render } from \"./FormulaContent.vue?vue&type=template&id=1e4ff171&ts=true\"\nimport script from \"./FormulaContent.vue?vue&type=script&lang=ts\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: _ctx.svg\n }, null, 8, _hoisted_1))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { hfmath } from './hfmath'\n\nexport default defineComponent({\n name: 'symbol-content',\n props: {\n latex: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n })\n\n return {\n svg,\n }\n },\n})\n","import { render } from \"./SymbolContent.vue?vue&type=template&id=3a83adf0&ts=true\"\nimport script from \"./SymbolContent.vue?vue&type=script&lang=ts\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport { hfmath } from './hfmath'\nimport { FORMULA_LIST, SYMBOL_LIST } from '@/configs/latex'\n\nimport FormulaContent from './FormulaContent.vue'\nimport SymbolContent from './SymbolContent.vue'\n\nconst tabs = [\n { label: '常用符号', value: 'symbol' },\n { label: '预置公式', value: 'formula' },\n]\n\nexport default defineComponent({\n name: 'latex-editor',\n emits: ['update', 'close'],\n components: {\n FormulaContent,\n SymbolContent,\n },\n props: {\n value: {\n type: String,\n default: '',\n },\n },\n setup(props, { emit }) {\n const latex = ref('')\n const toolbarState = ref('symbol')\n const textAreaRef = ref()\n\n const selectedSymbolKey = ref(SYMBOL_LIST[0].type)\n const symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n })\n\n onMounted(() => {\n if (props.value) latex.value = props.value\n })\n\n const update = () => {\n if (!latex.value) return\n\n const eq = new hfmath(latex.value)\n const pathd = eq.pathd({})\n const box = eq.box({})\n \n emit('update', {\n latex: latex.value,\n path: pathd,\n w: box.w + 32,\n h: box.h + 32,\n })\n }\n\n const close = () => emit('close')\n\n const insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n }\n\n return {\n tabs,\n latex,\n toolbarState,\n selectedSymbolKey,\n formulaList: FORMULA_LIST,\n symbolList: SYMBOL_LIST,\n symbolPool,\n textAreaRef,\n update,\n close,\n insertSymbol,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=129e1afa&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=129e1afa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-129e1afa\"]])\n\nexport default __exports__","\nimport { defineComponent, computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSnapshotStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nimport ShapePool from './ShapePool.vue'\nimport LinePool from './LinePool.vue'\nimport ChartPool from './ChartPool.vue'\nimport TableGenerator from './TableGenerator.vue'\nimport MediaInput from './MediaInput.vue'\nimport LaTeXEditor from '@/components/LaTeXEditor/index.vue'\n\nexport default defineComponent({\n name: 'canvas-tool',\n components: {\n ShapePool,\n LinePool,\n ChartPool,\n TableGenerator,\n MediaInput,\n LaTeXEditor,\n },\n setup() {\n const mainStore = useMainStore()\n const { canvasScale } = storeToRefs(mainStore)\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\n const canvasScalePercentage = computed(() => parseInt(canvasScale.value * 100 + '') + '%')\n\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\n const { redo, undo } = useHistorySnapshot()\n\n const {\n createImageElement,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n } = useCreateElement()\n\n const insertImageElement = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n const shapePoolVisible = ref(false)\n const linePoolVisible = ref(false)\n const chartPoolVisible = ref(false)\n const tableGeneratorVisible = ref(false)\n const mediaInputVisible = ref(false)\n const latexEditorVisible = ref(false)\n\n // 绘制文字范围\n const drawText = () => {\n mainStore.setCreatingElement({\n type: 'text',\n })\n }\n\n // 绘制形状范围\n const drawShape = (shape: ShapePoolItem) => {\n mainStore.setCreatingElement({\n type: 'shape',\n data: shape,\n })\n shapePoolVisible.value = false\n }\n\n // 绘制线条路径\n const drawLine = (line: LinePoolItem) => {\n mainStore.setCreatingElement({\n type: 'line',\n data: line,\n })\n linePoolVisible.value = false\n }\n\n return {\n scaleCanvas,\n setCanvasPercentage,\n canvasScalePercentage,\n canUndo,\n canRedo,\n redo,\n undo,\n insertImageElement,\n shapePoolVisible,\n linePoolVisible,\n chartPoolVisible,\n tableGeneratorVisible,\n mediaInputVisible,\n latexEditorVisible,\n drawText,\n drawShape,\n drawLine,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=4ae7c9aa&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4ae7c9aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ae7c9aa\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ec4c62e4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"add-slide\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"添加幻灯片\")\nconst _hoisted_3 = { class: \"select-btn\" }\nconst _hoisted_4 = [\"onMousedown\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_LayoutPool = _resolveComponent(\"LayoutPool\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnails\",\n onMousedown: _cache[3] || (_cache[3] = () => _ctx.setThumbnailsFocus(true))\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.createSlide()))\n }, [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_2\n ]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n placement: \"bottomLeft\",\n visible: _ctx.presetLayoutPopoverVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.presetLayoutPopoverVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_LayoutPool, {\n onSelect: _cache[1] || (_cache[1] = slide => { _ctx.createSlideByTemplate(slide); _ctx.presetLayoutPopoverVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconDown)\n ])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _createVNode(_component_Draggable, {\n class: \"thumbnail-list\",\n modelValue: _ctx.slides,\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n setData: null,\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", {\n 'active': _ctx.slideIndex === index,\n 'selected': _ctx.selectedSlidesIndex.includes(index),\n }]),\n onMousedown: $event => _ctx.handleClickSlideThumbnail($event, index)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"label\", { 'offset-left': index >= 99 }])\n }, _toDisplayString(_ctx.fillDigit(index + 1, 2)), 3),\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 42, _hoisted_4), [\n [_directive_contextmenu, _ctx.contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"])\n ], 544)), [\n [_directive_click_outside, () => _ctx.setThumbnailsFocus(false)],\n [_directive_contextmenu, _ctx.contextmenusThumbnails]\n ])\n}","import { ref, onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default () => {\n const { slides } = storeToRefs(useSlidesStore())\n\n const timer = ref(null)\n const slidesLoadLimit = ref(50)\n\n const loadSlide = () => {\n if (slides.value.length > slidesLoadLimit.value) {\n timer.value = setTimeout(() => {\n slidesLoadLimit.value = slidesLoadLimit.value + 20\n loadSlide()\n }, 600)\n }\n else slidesLoadLimit.value = 9999\n }\n\n onMounted(loadSlide)\n\n onUnmounted(() => {\n if (timer.value) clearTimeout(timer.value)\n })\n\n return {\n slidesLoadLimit,\n }\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-741b366e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.layouts, (slide) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-item\",\n key: slide.id,\n onClick: ($event: any) => (_ctx.selectSlideTemplate(slide))\n }, [\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 180\n }, null, 8, [\"slide\"])\n ], 8, _hoisted_2))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'layout-pool',\n emits: ['select'],\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { layouts } = storeToRefs(useSlidesStore())\n\n const selectSlideTemplate = (slide: Slide) => {\n emit('select', slide)\n }\n\n return {\n layouts,\n selectSlideTemplate,\n }\n },\n})\n","import { render } from \"./LayoutPool.vue?vue&type=template&id=741b366e&scoped=true&ts=true\"\nimport script from \"./LayoutPool.vue?vue&type=script&lang=ts\"\nexport * from \"./LayoutPool.vue?vue&type=script&lang=ts\"\n\nimport \"./LayoutPool.vue?vue&type=style&index=0&id=741b366e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-741b366e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { fillDigit } from '@/utils/common'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport Draggable from 'vuedraggable'\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport LayoutPool from './LayoutPool.vue'\n\nexport default defineComponent({\n name: 'thumbnails',\n components: {\n Draggable,\n ThumbnailSlide,\n LayoutPool,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const keyboardStore = useKeyboardStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore)\n const { slides, slideIndex } = storeToRefs(slidesStore)\n const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\n const { slidesLoadLimit } = useLoadSlides()\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n\n const presetLayoutPopoverVisible = ref(false)\n\n const {\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n // 切换页面\n const changSlideIndex = (index: number) => {\n mainStore.setActiveElementIdList([])\n\n if (slideIndex.value === index) return\n slidesStore.updateSlideIndex(index)\n }\n\n // 点击缩略图\n const handleClickSlideThumbnail = (e: MouseEvent, index: number) => {\n const isMultiSelected = selectedSlidesIndex.value.length > 1\n\n if (isMultiSelected && selectedSlidesIndex.value.includes(index) && e.button !== 0) return\n\n // 按住Ctrl键,点选幻灯片,再次点击已选中的页面则取消选中\n if (ctrlKeyState.value) {\n if (slideIndex.value === index) {\n if (!isMultiSelected) return\n\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(selectedSlidesIndex.value[0])\n }\n else {\n if (selectedSlidesIndex.value.includes(index)) {\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n else {\n const newSelectedSlidesIndex = [...selectedSlidesIndex.value, index]\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(index)\n }\n }\n }\n // 按住Shift键,选择范围内的全部幻灯片\n else if (shiftKeyState.value) {\n if (slideIndex.value === index && !isMultiSelected) return\n\n let minIndex = Math.min(...selectedSlidesIndex.value)\n let maxIndex = index\n\n if (index < minIndex) {\n maxIndex = Math.max(...selectedSlidesIndex.value)\n minIndex = index\n }\n\n const newSelectedSlidesIndex = []\n for (let i = minIndex; i <= maxIndex; i++) newSelectedSlidesIndex.push(i)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(index)\n }\n // 正常切换页面\n else {\n mainStore.updateSelectedSlidesIndex([])\n changSlideIndex(index)\n }\n }\n\n // 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\n const setThumbnailsFocus = (focus: boolean) => {\n if (thumbnailsFocus.value === focus) return\n mainStore.setThumbnailsFocus(focus)\n\n if (!focus) mainStore.updateSelectedSlidesIndex([])\n }\n\n // 拖拽调整顺序后进行数据的同步\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n if (oldIndex === newIndex) return\n\n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n const { enterScreening } = useScreening()\n\n const contextmenusThumbnails = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteSlide,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllSlide,\n },\n {\n text: '新建页面',\n subText: 'Enter',\n handler: createSlide,\n },\n {\n text: '开始演示',\n subText: 'Ctrl + F',\n handler: enterScreening,\n },\n ]\n }\n\n const contextmenusThumbnailItem = (): ContextmenuItem[] => {\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutSlide,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copySlide,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteSlide,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllSlide,\n },\n { divider: true },\n {\n text: '新建页面',\n subText: 'Enter',\n handler: createSlide,\n },\n {\n text: '复制页面',\n subText: 'Ctrl + D',\n handler: copyAndPasteSlide,\n },\n {\n text: '删除页面',\n subText: 'Delete',\n handler: () => deleteSlide(),\n },\n { divider: true },\n {\n text: '从当前页演示',\n subText: 'Ctrl + F',\n handler: enterScreening,\n },\n ]\n }\n\n return {\n slides,\n slideIndex,\n selectedSlidesIndex,\n presetLayoutPopoverVisible,\n slidesLoadLimit,\n createSlide,\n createSlideByTemplate,\n setThumbnailsFocus,\n handleClickSlideThumbnail,\n contextmenusThumbnails,\n contextmenusThumbnailItem,\n fillDigit,\n handleDragEnd,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=ec4c62e4&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ec4c62e4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ec4c62e4\"]])\n\nexport default __exports__","export type ToolbarState = 'symbol' | 'elAnimation' | 'elStyle' | 'elPosition' | 'slideDesign' | 'slideAnimation' | 'multiPosition'\n\nexport const enum ToolbarStates {\n SYMBOL = 'symbol',\n EL_ANIMATION = 'elAnimation',\n EL_STYLE = 'elStyle',\n EL_POSITION = 'elPosition',\n SLIDE_DESIGN = 'slideDesign',\n SLIDE_ANIMATION = 'slideAnimation',\n MULTI_POSITION = 'multiPosition',\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0df9576a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.currentTabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _ctx.toolbarState }]),\n key: tab.value,\n onClick: ($event: any) => (_ctx.setToolbarState(tab.value))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent)))\n ])\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.currentPanelComponent)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, \" 请先选中要编辑的元素 \"))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent), { key: 1 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d6233f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行间距:\", -1))\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconBackgroundColor = _resolveComponent(\"IconBackgroundColor\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconUpOne = _resolveComponent(\"IconUpOne\")!\n const _component_IconDownOne = _resolveComponent(\"IconDownOne\")!\n const _component_IconCode = _resolveComponent(\"IconCode\")!\n const _component_IconQuote = _resolveComponent(\"IconQuote\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_IconList = _resolveComponent(\"IconList\")!\n const _component_IconOrderedList = _resolveComponent(\"IconOrderedList\")!\n const _component_IconRowHeight = _resolveComponent(\"IconRowHeight\")!\n const _component_IconFullwidth = _resolveComponent(\"IconFullwidth\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_ElementOpacity = _resolveComponent(\"ElementOpacity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetStyles, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-style-item\",\n key: item.label,\n style: _normalizeStyle(item.style),\n onClick: ($event: any) => (_ctx.emitBatchRichTextCommand(item.cmd))\n }, _toDisplayString(item.label), 13, _hoisted_3))\n }), 128))\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.richTextAttrs.fontname,\n onChange: _cache[0] || (_cache[0] = value => _ctx.emitRichTextCommand('fontname', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.richTextAttrs.fontsize,\n onChange: _cache[1] || (_cache[1] = value => _ctx.emitRichTextCommand('fontsize', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.emitRichTextCommand('color', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.emitRichTextCommand('backcolor', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBackgroundColor),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.backcolor })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文本框填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.fill })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.strikethrough,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上标\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.superscript,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.emitRichTextCommand('superscript')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUpOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下标\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.subscript,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('subscript')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDownOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"行内代码\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.code,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('code')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCode)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"引用\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.blockquote,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.emitRichTextCommand('blockquote')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconQuote)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[14] || (_cache[14] = e => _ctx.emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"项目符号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bulletList,\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.emitRichTextCommand('bulletList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconList)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"编号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.orderedList,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.emitRichTextCommand('orderedList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconOrderedList)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.lineHeight,\n onChange: _cache[17] || (_cache[17] = value => _ctx.updateLineHeight(value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconRowHeight)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.lineHeightOptions, (item) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"倍\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.wordSpace,\n onChange: _cache[18] || (_cache[18] = value => _ctx.updateWordSpace(value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFullwidth)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.wordSpaceOptions, (item) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"px\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOpacity)\n ]))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f62a02b6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-opacity\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"不透明度:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Slider = _resolveComponent(\"Slider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 1,\n step: 0.1,\n value: _ctx.opacity,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateOpacity(value))\n }, null, 8, [\"step\", \"value\"])\n ])\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-opacity',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const opacity = ref(1)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n opacity.value = 'opacity' in handleElement.value && handleElement.value.opacity !== undefined ? handleElement.value.opacity : 1\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateOpacity = (value: number) => {\n if (!handleElement.value) return\n const props = { opacity: value }\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n opacity,\n updateOpacity,\n }\n },\n})\n","import { render } from \"./ElementOpacity.vue?vue&type=template&id=f62a02b6&scoped=true&ts=true\"\nimport script from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=f62a02b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f62a02b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35c4c4a3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-outline\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用边框:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框样式:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"实线边框\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"虚线边框\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框颜色:\", -1))\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框粗细:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.fixed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasOutline,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleOutline(checked))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.hasOutline)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.outline.style,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateOutline({ style: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.outline.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.outline.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createVNode(_component_InputNumber, {\n value: _ctx.outline.width,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateOutline({ width: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlatte = _resolveComponent(\"IconPlatte\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createBlock(_component_Button, { class: \"color-btn\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: $props.color })\n }, null, 4),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}","\nexport default {\n name: 'color-button',\n props: {\n color: {\n type: String,\n required: true,\n },\n },\n}\n","import { render } from \"./ColorButton.vue?vue&type=template&id=39016b60&scoped=true&ts=true\"\nimport script from \"./ColorButton.vue?vue&type=script&lang=ts\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39016b60\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementOutline } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\n\nexport default defineComponent({\n name: 'element-outline',\n components: {\n ColorButton,\n },\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const outline = ref()\n const hasOutline = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n outline.value = 'outline' in handleElement.value ? handleElement.value.outline : undefined\n hasOutline.value = !!outline.value\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateOutline = (outlineProps: Partial) => {\n if (!handleElement.value) return\n const props = { outline: { ...outline.value, ...outlineProps } }\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n const toggleOutline = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n const _outline: PPTElementOutline = { width: 2, color: '#000', style: 'solid' }\n slidesStore.updateElement({ id: handleElement.value.id, props: { outline: _outline } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'outline' })\n }\n addHistorySnapshot()\n }\n\n return {\n outline,\n hasOutline,\n toggleOutline,\n updateOutline,\n }\n },\n})\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=35c4c4a3&scoped=true&ts=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=35c4c4a3&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-35c4c4a3\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77a6414\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-shadow\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用阴影:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"水平阴影:\", -1))\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"垂直阴影:\", -1))\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"模糊距离:\", -1))\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"阴影颜色:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasShadow,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleShadow(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasShadow)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 10,\n step: 1,\n value: _ctx.shadow.h,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateShadow({ h: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 10,\n step: 1,\n value: _ctx.shadow.v,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateShadow({ v: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 1,\n max: 20,\n step: 1,\n value: _ctx.shadow.blur,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateShadow({ blur: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.shadow.color,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateShadow({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.shadow.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementShadow } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\n\nexport default defineComponent({\n name: 'element-shadow',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const shadow = ref()\n const hasShadow = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n shadow.value = 'shadow' in handleElement.value ? handleElement.value.shadow : undefined\n hasShadow.value = !!shadow.value\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateShadow = (shadowProps: Partial) => {\n if (!handleElement.value || !shadow.value) return\n const _shadow = { ...shadow.value, ...shadowProps }\n slidesStore.updateElement({ id: handleElement.value.id, props: { shadow: _shadow } })\n addHistorySnapshot()\n }\n\n const toggleShadow = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n const _shadow: PPTElementShadow = { h: 1, v: 1, blur: 2, color: '#000' }\n slidesStore.updateElement({ id: handleElement.value.id, props: { shadow: _shadow } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'shadow' })\n }\n addHistorySnapshot()\n }\n\n return {\n shadow,\n hasShadow,\n toggleShadow,\n updateShadow,\n }\n },\n})\n","import { render } from \"./ElementShadow.vue?vue&type=template&id=c77a6414&scoped=true&ts=true\"\nimport script from \"./ElementShadow.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=c77a6414&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c77a6414\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport { PPTTextElement } from '@/types/slides'\n\nconst presetStyles = [\n {\n label: '大标题',\n style: {\n fontSize: '26px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '48px' },\n { command: 'align', value: 'center' },\n { command: 'bold' },\n ],\n },\n {\n label: '小标题',\n style: {\n fontSize: '22px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '36px' },\n { command: 'align', value: 'center' },\n { command: 'bold' },\n ],\n },\n {\n label: '正文',\n style: {\n fontSize: '20px',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '20px' },\n ],\n },\n {\n label: '正文[小]',\n style: {\n fontSize: '18px',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '18px' },\n ],\n },\n {\n label: '注释 1',\n style: {\n fontSize: '16px',\n fontStyle: 'italic',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '16px' },\n { command: 'em' },\n ],\n },\n {\n label: '注释 2',\n style: {\n fontSize: '16px',\n textDecoration: 'underline',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '16px' },\n { command: 'underline' },\n ],\n },\n]\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'text-style-panel',\n components: {\n ElementOpacity,\n ElementOutline,\n ElementShadow,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\n const fill = ref()\n const lineHeight = ref()\n const wordSpace = ref()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'text') return\n\n fill.value = handleElement.value.fill || '#000'\n lineHeight.value = handleElement.value.lineHeight || 1.5\n wordSpace.value = handleElement.value.wordSpace || 0\n }, { deep: true, immediate: true })\n\n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\n '80px', '88px', '96px', '104px', '112px', '120px',\n ]\n const lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\n const wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\n\n // 发射富文本设置命令\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command, value })\n }\n\n // 发射富文本设置命令(批量)\n const emitBatchRichTextCommand = (payload: RichTextCommand[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, payload)\n }\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置行高\n const updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n }\n\n // 设置字间距\n const updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n }\n\n // 设置文本框填充\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n return {\n fill,\n lineHeight,\n wordSpace,\n richTextAttrs,\n availableFonts,\n webFonts,\n fontSizeOptions,\n lineHeightOptions,\n wordSpaceOptions,\n updateLineHeight,\n updateWordSpace,\n updateFill,\n emitRichTextCommand,\n emitBatchRichTextCommand,\n presetStyles,\n }\n },\n})\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=2d6233f4&scoped=true&ts=true\"\nimport script from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=2d6233f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d6233f4\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64e5a614\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 裁剪图片\")\nconst _hoisted_3 = { class: \"clip\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"按形状:\", -1))\nconst _hoisted_5 = { class: \"shape-clip\" }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"title\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 替换图片\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" 重置样式\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 设为背景\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementFlip = _resolveComponent(\"ElementFlip\")!\n const _component_IconTailoring = _resolveComponent(\"IconTailoring\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementFilter = _resolveComponent(\"ElementFilter\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_IconTransform = _resolveComponent(\"IconTransform\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_IconUndo = _resolveComponent(\"IconUndo\")!\n const _component_IconTheme = _resolveComponent(\"IconTheme\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"origin-image\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.handleElement.src})` })\n }, null, 4),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"5\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.clipImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTailoring, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.clipPanelVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.clipPanelVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.shapeClipPathOptions, (item, key) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-clip-item\",\n key: key,\n onClick: ($event: any) => (_ctx.presetImageClip(key))\n }, [\n _createElementVNode(\"div\", {\n class: \"shape\",\n style: _normalizeStyle({ clipPath: item.style })\n }, null, 4)\n ], 8, _hoisted_6))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.ratioClipOptions, (type) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: type.label\n }, [\n (type.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"按\" + _toDisplayString(type.label) + \":\", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createBlock(_component_Button, {\n style: {\"flex\":\"1\"},\n key: item.key,\n onClick: ($event: any) => (_ctx.presetImageClip('rect', item.ratio))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.key), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]))\n }), 128))\n ]),\n _: 2\n }, 1024)\n ], 64))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"no-padding\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementFilter),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_FileInput, {\n onChange: _cache[2] || (_cache[2] = files => _ctx.replaceImage(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, { class: \"full-width-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTransform, { class: \"btn-icon\" }),\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.resetImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUndo, { class: \"btn-icon\" }),\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setBackgroundImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTheme, { class: \"btn-icon\" }),\n _hoisted_10\n ]),\n _: 1\n })\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7bd50f1a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 垂直翻转\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 水平翻转\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFlipVertically = _resolveComponent(\"IconFlipVertically\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconFlipHorizontally = _resolveComponent(\"IconFlipHorizontally\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.flipV,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateFlip({ flipV: !_ctx.flipV })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipVertically),\n _hoisted_2\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.flipH,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateFlip({ flipH: !_ctx.flipH })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipHorizontally),\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n })\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageOrShapeFlip } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-flip',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const flipH = ref(false)\n const flipV = ref(false)\n\n watch(handleElement, () => {\n if (handleElement.value && (handleElement.value.type === 'image' || handleElement.value.type === 'shape')) {\n flipH.value = !!handleElement.value.flipH\n flipV.value = !!handleElement.value.flipV\n }\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateFlip = (flipProps: ImageOrShapeFlip) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props: flipProps })\n addHistorySnapshot()\n }\n\n return {\n flipH,\n flipV,\n updateFlip,\n }\n },\n})\n","import { render } from \"./ElementFlip.vue?vue&type=template&id=7bd50f1a&scoped=true&ts=true\"\nimport script from \"./ElementFlip.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=7bd50f1a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7bd50f1a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-181ae0aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-filter\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用滤镜:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = {\n key: 0,\n class: \"filter\"\n}\nconst _hoisted_6 = { class: \"name\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasFilters,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleFilters(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasFilters)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filterOptions, (filter) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"filter-item\",\n key: filter.key\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(filter.label), 1),\n _createVNode(_component_Slider, {\n class: \"filter-slider\",\n max: filter.max,\n min: filter.min,\n step: filter.step,\n value: filter.value,\n onChange: value => _ctx.updateFilter(filter, value)\n }, null, 8, [\"max\", \"min\", \"step\", \"value\", \"onChange\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTImageElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface FilterOption {\n label: string;\n key: string;\n default: number;\n value: number;\n unit: string;\n max: number;\n step: number;\n}\n\nconst defaultFilters: FilterOption[] = [\n { label: '模糊', key: 'blur', default: 0, value: 0, unit: 'px', max: 10, step: 1 },\n { label: '亮度', key: 'brightness', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '对比度', key: 'contrast', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '灰度', key: 'grayscale', default: 0, value: 0, unit: '%', max: 100, step: 5 },\n { label: '饱和度', key: 'saturate', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '色相', key: 'hue-rotate', default: 0, value: 0, unit: 'deg', max: 360, step: 10 },\n { label: '不透明度', key: 'opacity', default: 100, value: 100, unit: '%', max: 100, step: 5 },\n]\n\nexport default defineComponent({\n name: 'element-filter',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n\n const filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\n const hasFilters = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'image') return\n \n const filters = handleElement.value.filters\n if (filters) {\n filterOptions.value = defaultFilters.map(item => {\n if (filters[item.key] !== undefined) return { ...item, value: parseInt(filters[item.key]) }\n return item\n })\n hasFilters.value = true\n }\n else {\n filterOptions.value = JSON.parse(JSON.stringify(defaultFilters))\n hasFilters.value = false\n }\n }, { deep: true, immediate: true })\n\n // 设置滤镜\n const updateFilter = (filter: FilterOption, value: number) => {\n const _handleElement = handleElement.value as PPTImageElement\n \n const originFilters = _handleElement.filters || {}\n const filters = { ...originFilters, [filter.key]: `${value}${filter.unit}` }\n slidesStore.updateElement({ id: handleElementId.value, props: { filters } })\n addHistorySnapshot()\n }\n\n const toggleFilters = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n slidesStore.updateElement({ id: handleElement.value.id, props: { filters: {} } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'filters' })\n }\n addHistorySnapshot()\n }\n\n return {\n filterOptions,\n hasFilters,\n toggleFilters,\n updateFilter,\n }\n },\n})\n","import { render } from \"./ElementFilter.vue?vue&type=template&id=181ae0aa&scoped=true&ts=true\"\nimport script from \"./ElementFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFilter.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFilter.vue?vue&type=style&index=0&id=181ae0aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-181ae0aa\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTImageElement, SlideBackground } from '@/types/slides'\nimport { CLIPPATHS } from '@/configs/imageClip'\nimport { getImageDataURL } from '@/utils/image'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ElementFlip from '../common/ElementFlip.vue'\nimport ElementFilter from '../common/ElementFilter.vue'\n\nconst shapeClipPathOptions = CLIPPATHS\nconst ratioClipOptions = [\n {\n label: '纵横比(方形)',\n children: [\n { key: '1:1', ratio: 1 / 1 },\n ],\n },\n {\n label: '纵横比(纵向)',\n children: [\n { key: '2:3', ratio: 3 / 2 },\n { key: '3:4', ratio: 4 / 3 },\n { key: '3:5', ratio: 5 / 3 },\n { key: '4:5', ratio: 5 / 4 },\n ],\n },\n {\n label: '纵横比(横向)',\n children: [\n { key: '3:2', ratio: 2 / 3 },\n { key: '4:3', ratio: 3 / 4 },\n { key: '5:3', ratio: 3 / 5 },\n { key: '5:4', ratio: 4 / 5 },\n ],\n },\n {\n children: [\n { key: '16:9', ratio: 9 / 16 },\n { key: '16:10', ratio: 10 / 16 },\n ],\n },\n]\n\nexport default defineComponent({\n name: 'image-style-panel',\n components: {\n ElementOutline,\n ElementShadow,\n ElementFlip,\n ElementFilter,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const clipPanelVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 打开自由裁剪\n const clipImage = () => {\n mainStore.setClipingImageElementId(handleElementId.value)\n clipPanelVisible.value = false\n }\n\n // 获取原始图片的位置大小\n const getImageElementDataBeforeClip = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n // 图片当前的位置大小和裁剪范围\n const imgWidth = _handleElement.width\n const imgHeight = _handleElement.height\n const imgLeft = _handleElement.left\n const imgTop = _handleElement.top\n const originClipRange: [[number, number], [number, number]] = _handleElement.clip ? _handleElement.clip.range : [[0, 0], [100, 100]]\n\n const originWidth = imgWidth / ((originClipRange[1][0] - originClipRange[0][0]) / 100)\n const originHeight = imgHeight / ((originClipRange[1][1] - originClipRange[0][1]) / 100)\n const originLeft = imgLeft - originWidth * (originClipRange[0][0] / 100)\n const originTop = imgTop - originHeight * (originClipRange[0][1] / 100)\n\n return {\n originClipRange,\n originWidth,\n originHeight,\n originLeft,\n originTop,\n }\n }\n\n // 预设裁剪\n const presetImageClip = (shape: string, ratio = 0) => {\n const _handleElement = handleElement.value as PPTImageElement\n\n const {\n originClipRange,\n originWidth,\n originHeight,\n originLeft,\n originTop,\n } = getImageElementDataBeforeClip()\n \n // 纵横比裁剪(形状固定为矩形)\n if (ratio) {\n const imageRatio = originHeight / originWidth\n\n const min = 0\n const max = 100\n let range: [[number, number], [number, number]]\n\n if (imageRatio > ratio) {\n const distance = ((1 - ratio / imageRatio) / 2) * 100\n range = [[min, distance], [max, max - distance]]\n }\n else {\n const distance = ((1 - imageRatio / ratio) / 2) * 100\n range = [[distance, min], [max - distance, max]]\n }\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n clip: { ..._handleElement.clip, shape, range },\n left: originLeft + originWidth * (range[0][0] / 100),\n top: originTop + originHeight * (range[0][1] / 100),\n width: originWidth * (range[1][0] - range[0][0]) / 100,\n height: originHeight * (range[1][1] - range[0][1]) / 100,\n },\n })\n }\n // 形状裁剪(保持当前裁剪范围)\n else {\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n clip: { ..._handleElement.clip, shape, range: originClipRange }\n },\n })\n }\n clipImage()\n addHistorySnapshot()\n }\n\n // 替换图片(保持当前的样式)\n const replaceImage = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => {\n const props = { src: dataURL }\n slidesStore.updateElement({ id: handleElementId.value, props })\n })\n addHistorySnapshot()\n }\n\n // 重置图片:清除全部样式\n const resetImage = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n if (_handleElement.clip) {\n const {\n originWidth,\n originHeight,\n originLeft,\n originTop,\n } = getImageElementDataBeforeClip()\n\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n left: originLeft,\n top: originTop,\n width: originWidth,\n height: originHeight,\n },\n })\n }\n\n slidesStore.removeElementProps({\n id: handleElementId.value,\n propName: ['clip', 'outline', 'flip', 'shadow', 'filters'],\n })\n addHistorySnapshot()\n }\n\n // 将图片设置为背景\n const setBackgroundImage = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n const background: SlideBackground = {\n ...currentSlide.value.background,\n type: 'image',\n image: _handleElement.src,\n imageSize: 'cover',\n }\n slidesStore.updateSlide({ background })\n addHistorySnapshot()\n }\n\n return {\n clipPanelVisible,\n shapeClipPathOptions,\n ratioClipOptions,\n handleElement,\n clipImage,\n presetImageClip,\n replaceImage,\n resetImage,\n setBackgroundImage,\n }\n },\n})\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=64e5a614&scoped=true&ts=true\"\nimport script from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=64e5a614&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64e5a614\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, renderList as _renderList, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0e201fca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"纯色填充\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"渐变填充\")\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"线性渐变\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"径向渐变\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点颜色:\", -1))\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点颜色:\", -1))\nconst _hoisted_12 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ElementFlip = _resolveComponent(\"ElementFlip\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_IconAlignTextTopOne = _resolveComponent(\"IconAlignTextTopOne\")!\n const _component_IconAlignTextMiddleOne = _resolveComponent(\"IconAlignTextMiddleOne\")!\n const _component_IconAlignTextBottomOne = _resolveComponent(\"IconAlignTextBottomOne\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_ElementOpacity = _resolveComponent(\"ElementOpacity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: _ctx.fillType,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateFillType(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"fill\" }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"gradient\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_5,\n (_ctx.fillType === 'fill')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.fill,\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _ctx.gradient.type,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateGradient({ type: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"linear\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"radial\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_ctx.fillType === 'gradient')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gradient.color[0],\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.updateGradient({ color: [value, _ctx.gradient.color[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gradient.color[0],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gradient.color[1],\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateGradient({ color: [_ctx.gradient.color[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gradient.color[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_ctx.gradient.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 360,\n step: 15,\n value: _ctx.gradient.rotate,\n onChange: _cache[5] || (_cache[5] = value => _ctx.updateGradient({ rotate: value }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_Divider),\n (_ctx.showTextTools)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.richTextAttrs.fontname,\n onChange: _cache[6] || (_cache[6] = value => _ctx.emitRichTextCommand('fontname', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.richTextAttrs.fontsize,\n onChange: _cache[7] || (_cache[7] = value => _ctx.emitRichTextCommand('fontsize', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.color,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => _ctx.emitRichTextCommand('color', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[13] || (_cache[13] = e => _ctx.emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.textAlign,\n onChange: _cache[14] || (_cache[14] = e => _ctx.updateTextAlign(e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顶对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"top\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextTopOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"middle\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextMiddleOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"底对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"bottom\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextBottomOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Divider)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOpacity)\n ]))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTShapeElement, ShapeGradient, ShapeText } from '@/types/slides'\nimport { WEB_FONTS } from '@/configs/font'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ElementFlip from '../common/ElementFlip.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'shape-style-panel',\n components: {\n ElementOpacity,\n ElementOutline,\n ElementShadow,\n ElementFlip,\n ColorButton,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, editingShapeElementId, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\n const showTextTools = computed(() => editingShapeElementId.value === handleElementId.value)\n\n const fill = ref()\n const gradient = ref()\n const fillType = ref('fill')\n const textAlign = ref('middle')\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'shape') return\n\n fill.value = handleElement.value.fill || '#000'\n gradient.value = handleElement.value.gradient || { type: 'linear', rotate: 0, color: [fill.value, '#fff'] }\n fillType.value = handleElement.value.gradient ? 'gradient' : 'fill'\n textAlign.value = handleElement.value?.text?.align || 'middle'\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置填充类型:渐变、纯色\n const updateFillType = (type: 'gradient' | 'fill') => {\n if (type === 'fill') {\n slidesStore.removeElementProps({ id: handleElementId.value, propName: 'gradient' })\n addHistorySnapshot()\n }\n else updateElement({ gradient: gradient.value })\n }\n\n // 设置渐变填充\n const updateGradient = (gradientProps: Partial) => {\n if (!gradient.value) return\n const _gradient: ShapeGradient = { ...gradient.value, ...gradientProps }\n updateElement({ gradient: _gradient })\n }\n\n // 设置填充色\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n const updateTextAlign = (align: 'top' | 'middle' | 'bottom') => {\n const _handleElement = handleElement.value as PPTShapeElement\n \n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n const _text = _handleElement.text || defaultText\n updateElement({ text: { ..._text, align } })\n }\n\n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\n '80px', '88px', '96px', '104px', '112px', '120px',\n ]\n\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command, value })\n }\n\n return {\n fill,\n gradient,\n fillType,\n textAlign,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n webFonts,\n showTextTools,\n emitRichTextCommand,\n updateFillType,\n updateFill,\n updateGradient,\n updateTextAlign,\n }\n },\n})\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=0e201fca&scoped=true&ts=true\"\nimport script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=0e201fca&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0e201fca\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cbc4d7fa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条样式:\", -1))\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"实线\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"虚线\")\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条颜色:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条宽度:\", -1))\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点样式:\", -1))\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"无\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"箭头\")\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"圆点\")\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点样式:\", -1))\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"无\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"箭头\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"圆点\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.style,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateLine({ style: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateLine({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n value: _ctx.handleElement.width,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateLine({ width: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.points[0],\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateLine({ points: [value, _ctx.handleElement.points[1]] }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"arrow\" }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dot\" }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.points[1],\n onChange: _cache[4] || (_cache[4] = value => _ctx.updateLine({ points: [_ctx.handleElement.points[0], value] }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"arrow\" }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dot\" }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow)\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTLineElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nexport default defineComponent({\n name: 'line-style-panel',\n components: {\n ElementShadow,\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateLine = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n updateLine,\n }\n }\n})\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=cbc4d7fa&scoped=true&ts=true\"\nimport script from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=cbc4d7fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cbc4d7fa\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ee2d8b14\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 编辑图表数据 \")\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"面积图样式\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"散点图样式\")\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"使用平滑曲线\")\nconst _hoisted_8 = {\n key: 1,\n class: \"row\"\n}\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"条形图样式\")\nconst _hoisted_10 = {\n key: 2,\n class: \"row\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"环形图样式\")\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图例:\", -1))\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"不显示\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"显示在上方\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"显示在下方\")\nconst _hoisted_17 = { class: \"row\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景填充:\", -1))\nconst _hoisted_19 = { class: \"row\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"网格颜色:\", -1))\nconst _hoisted_21 = { style: {\"flex\":\"2\"} }\nconst _hoisted_22 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_23 = [\"onClick\"]\nconst _hoisted_24 = { class: \"preset-themes\" }\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\"推荐主题\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" 添加主题色 \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ChartDataEditor = _resolveComponent(\"ChartDataEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.chartDataEditorVisible = true))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEdit, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n (_ctx.handleElement.chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[1] || (_cache[1] = e => _ctx.updateOptions({ showArea: e.target.checked })),\n checked: _ctx.showArea,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[2] || (_cache[2] = e => _ctx.updateOptions({ showLine: !e.target.checked })),\n checked: !_ctx.showLine,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[3] || (_cache[3] = e => _ctx.updateOptions({ lineSmooth: e.target.checked })),\n checked: _ctx.lineSmooth\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[4] || (_cache[4] = e => _ctx.updateOptions({ horizontalBars: e.target.checked })),\n checked: _ctx.horizontalBars\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => _ctx.updateOptions({ donut: e.target.checked })),\n checked: _ctx.donut\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.legend,\n onChange: _cache[6] || (_cache[6] = value => _ctx.updateLegend(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"top\" }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"bottom\" }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.fill,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gridColor,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => _ctx.updateGridColor(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gridColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themeColor, (color, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"row\",\n key: index\n }, [\n _createElementVNode(\"div\", _hoisted_21, _toDisplayString(index === 0 ? '主题配色:' : ''), 1),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: color,\n \"onUpdate:modelValue\": value => _ctx.updateTheme(value, index)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_ColorButton, {\n color: color,\n style: {\"width\":\"100%\"}\n }, null, 8, [\"color\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除\"\n }, {\n default: _withCtx(() => [\n (index !== 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"delete-color-btn\",\n onClick: _withModifiers(($event: any) => (_ctx.deleteThemeColor(index)), [\"stop\"])\n }, [\n _createVNode(_component_IconCloseSmall)\n ], 8, _hoisted_23))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n _: 2\n }, 1024)\n ]))\n }), 128)),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.presetThemesVisible,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.presetThemesVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_24, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetChartThemes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme\",\n key: index,\n onClick: ($event: any) => (_ctx.applyPresetTheme(item))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme-color\",\n key: color,\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4))\n }), 128))\n ], 8, _hoisted_25))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"no-padding\",\n style: {\"flex\":\"2\"}\n }, {\n default: _withCtx(() => [\n _hoisted_26\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Button, {\n class: \"no-padding\",\n disabled: _ctx.themeColor.length >= 10,\n style: {\"flex\":\"3\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.addThemeColor()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"btn-icon\" }),\n _hoisted_27\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Modal, {\n visible: _ctx.chartDataEditorVisible,\n \"onUpdate:visible\": _cache[13] || (_cache[13] = ($event: any) => ((_ctx.chartDataEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n closable: false,\n width: 648,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_ChartDataEditor, {\n data: _ctx.handleElement.data,\n onClose: _cache[11] || (_cache[11] = ($event: any) => (_ctx.chartDataEditorVisible = false)),\n onSave: _cache[12] || (_cache[12] = value => _ctx.updateData(value))\n }, null, 8, [\"data\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a62f784\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-data-editor\" }\nconst _hoisted_2 = { class: \"editor-content\" }\nconst _hoisted_3 = { class: \"range-box\" }\nconst _hoisted_4 = [\"id\", \"onFocus\", \"onPaste\"]\nconst _hoisted_5 = { class: \"btns\" }\nconst _hoisted_6 = { class: \"left\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"清空\")\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"temp-range\",\n style: _normalizeStyle({\n width: _ctx.tempRangeSize.width + 'px',\n height: _ctx.tempRangeSize.height + 'px',\n })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rangeLines, (line) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['range-line', line.type]),\n key: line.type,\n style: _normalizeStyle(line.style)\n }, null, 6))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"resizable\",\n style: _normalizeStyle(_ctx.resizablePointStyle),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.changeSelectRange($event)), [\"stop\"]))\n }, null, 36)\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(31, (rowIndex) => {\n return _createElementVNode(\"tr\", { key: rowIndex }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(7, (colIndex) => {\n return _createElementVNode(\"td\", {\n key: colIndex,\n class: _normalizeClass({ 'head': (colIndex === 1 && rowIndex <= _ctx.selectedRange[1]) || (rowIndex === 1 && colIndex <= _ctx.selectedRange[0]) })\n }, [\n _createElementVNode(\"input\", {\n class: _normalizeClass(['item', { 'selected': rowIndex <= _ctx.selectedRange[1] && colIndex <= _ctx.selectedRange[0] }]),\n id: `cell-${rowIndex - 1}-${colIndex - 1}`,\n autocomplete: \"off\",\n onFocus: ($event: any) => (_ctx.focusCell = [rowIndex - 1, colIndex - 1]),\n onPaste: $event => _ctx.handlePaste($event, rowIndex - 1, colIndex - 1)\n }, null, 42, _hoisted_4)\n ], 2)\n }), 64))\n ])\n }), 64))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.clear()))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.closeEditor()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n class: \"btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.getTableData())),\n style: {\"margin-left\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { ChartData } from '@/types/slides'\nimport { KEYS } from '@/configs/hotkey'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\nconst CELL_WIDTH = 100\nconst CELL_HEIGHT = 32\n\nexport default defineComponent({\n name: 'chart-data-editor',\n emits: ['save', 'close'],\n props: {\n data: {\n type: Object as PropType,\n required: true,\n }\n },\n setup(props, { emit }) {\n const selectedRange = ref([0, 0])\n const tempRangeSize = ref({ width: 0, height: 0 })\n const focusCell = ref<[number, number] | null>(null)\n\n // 当前选区的边框线条位置\n const rangeLines = computed(() => {\n const width = selectedRange.value[0] * CELL_WIDTH\n const height = selectedRange.value[1] * CELL_HEIGHT\n return [\n { type: 't', style: {width: width + 'px'} },\n { type: 'b', style: {top: height + 'px', width: width + 'px'} },\n { type: 'l', style: {height: height + 'px'} },\n { type: 'r', style: {left: width + 'px', height: height + 'px'} },\n ]\n })\n\n // 当前选区的缩放点位置\n const resizablePointStyle = computed(() => {\n const width = selectedRange.value[0] * CELL_WIDTH\n const height = selectedRange.value[1] * CELL_HEIGHT\n return { left: width + 'px', top: height + 'px' }\n })\n\n // 初始化图表数据:将数据格式化并填充到DOM\n const initData = () => {\n const _data: string[][] = []\n\n const { labels, legends, series } = props.data\n const rowCount = labels.length\n const colCount = series.length\n\n _data.push(['', ...legends])\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row = [labels[rowIndex]]\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n row.push(series[colIndex][rowIndex] + '')\n }\n _data.push(row)\n }\n\n for (let rowIndex = 0; rowIndex < rowCount + 1; rowIndex++) {\n for (let colIndex = 0; colIndex < colCount + 1; colIndex++) {\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = _data[rowIndex][colIndex] + ''\n }\n }\n\n selectedRange.value = [colCount + 1, rowCount + 1]\n }\n\n onMounted(initData)\n\n // 快捷键监听:回车移动焦点到下一行\n const moveNextRow = () => {\n if (!focusCell.value) return\n\n const [rowIndex, colIndex] = focusCell.value\n const inputRef = document.querySelector(`#cell-${rowIndex + 1}-${colIndex}`) as HTMLInputElement\n inputRef && inputRef.focus()\n }\n\n const keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) moveNextRow()\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n })\n\n // 获取当前图表DOM中的数据,整理格式化后传递出去\n const getTableData = () => {\n const [col, row] = selectedRange.value\n\n const labels: string[] = []\n const legends: string[] = []\n const series: number[][] = []\n\n // 第一行为系列名,第一列为项目名,实际数据从第二行第二列开始\n for (let rowIndex = 1; rowIndex < row; rowIndex++) {\n let labelsItem = `类别${rowIndex}`\n const labelInputRef = document.querySelector(`#cell-${rowIndex}-0`) as HTMLInputElement\n if (labelInputRef && labelInputRef.value) labelsItem = labelInputRef.value\n labels.push(labelsItem)\n }\n for (let colIndex = 1; colIndex < col; colIndex++) {\n let legendsItem = `系列${colIndex}`\n const labelInputRef = document.querySelector(`#cell-0-${colIndex}`) as HTMLInputElement\n if (labelInputRef && labelInputRef.value) legendsItem = labelInputRef.value\n legends.push(legendsItem)\n }\n\n for (let colIndex = 1; colIndex < col; colIndex++) {\n const seriesItem = []\n for (let rowIndex = 1; rowIndex < row; rowIndex++) {\n const valueInputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n let value = 0\n if (valueInputRef && valueInputRef.value && !!(+valueInputRef.value)) {\n value = +valueInputRef.value\n }\n seriesItem.push(value)\n }\n series.push(seriesItem)\n }\n\n emit('save', { labels, legends, series })\n }\n\n // 清空表格数据\n const clear = () => {\n for (let rowIndex = 1; rowIndex < 31; rowIndex++) {\n for (let colIndex = 1; colIndex < 7; colIndex++) {\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = ''\n }\n }\n }\n\n // 自定义粘贴事件(尝试读取剪贴板中的表格数据)\n const handlePaste = (e: ClipboardEvent, rowIndex: number, colIndex: number) => {\n e.preventDefault()\n\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n const maxRow = rowIndex + excelData.length\n const maxCol = colIndex + excelData[0].length\n for (let i = rowIndex; i < maxRow; i++) {\n for (let j = colIndex; j < maxCol; j++) {\n const inputRef = document.querySelector(`#cell-${i}-${j}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = excelData[i - rowIndex][j - colIndex]\n }\n }\n }\n })\n }\n }\n\n // 关闭图表数据编辑器\n const closeEditor = () => emit('close')\n\n // 鼠标拖拽修改选中的数据范围\n const changeSelectRange = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originWidth = selectedRange.value[0] * CELL_WIDTH\n const originHeight = selectedRange.value[1] * CELL_HEIGHT\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n const width = originWidth + x\n const height = originHeight + y\n\n tempRangeSize.value = { width, height }\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n if (startPageX === endPageX && startPageY === endPageY) return\n\n // 拖拽结束时,范围超过格子一半自动扩大到下一格(如拖动到一格半多的位置,会自动扩展到两格,横竖都同理)\n let width = tempRangeSize.value.width\n let height = tempRangeSize.value.height\n if (width % CELL_WIDTH > CELL_WIDTH * 0.5) width = width + (CELL_WIDTH - width % CELL_WIDTH)\n if (height % CELL_HEIGHT > CELL_HEIGHT * 0.5) height = height + (CELL_HEIGHT - height % CELL_HEIGHT)\n\n let row = Math.round(height / CELL_HEIGHT)\n let col = Math.round(width / CELL_WIDTH)\n\n if (row < 3) row = 3\n if (col < 2) col = 2\n\n selectedRange.value = [col, row]\n tempRangeSize.value = { width: 0, height: 0 }\n }\n }\n\n return {\n tempRangeSize,\n rangeLines,\n resizablePointStyle,\n selectedRange,\n focusCell,\n changeSelectRange,\n getTableData,\n closeEditor,\n clear,\n handlePaste,\n }\n },\n})\n","import { render } from \"./ChartDataEditor.vue?vue&type=template&id=9a62f784&scoped=true&ts=true\"\nimport script from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=9a62f784&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a62f784\"]])\n\nexport default __exports__","\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\nimport { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ChartData, PPTChartElement } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../../common/ElementOutline.vue'\nimport ColorButton from '../../common/ColorButton.vue'\nimport ChartDataEditor from './ChartDataEditor.vue'\n\nconst presetChartThemes = [\n ['#d87c7c', '#919e8b', '#d7ab82', '#6e7074', '#61a0a8', '#efa18d'],\n ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78'],\n ['#516b91', '#59c4e6', '#edafda', '#93b7e3', '#a5e7f0', '#cbb0e3'],\n ['#893448', '#d95850', '#eb8146', '#ffb248', '#f2d643', '#ebdba4'],\n ['#4ea397', '#22c3aa', '#7bd9a5', '#d0648a', '#f58db2', '#f2b3c9'],\n ['#3fb1e3', '#6be6c1', '#626c91', '#a0a7e6', '#c4ebad', '#96dee8'],\n ['#fc97af', '#87f7cf', '#f7f494', '#72ccff', '#f7c5a0', '#d4a4eb'],\n ['#c1232b', '#27727b', '#fcce10', '#e87c25', '#b5c334', '#fe8463'],\n ['#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3'],\n ['#e01f54', '#001852', '#f5e8c8', '#b8d2c7', '#c6b38e', '#a4d8c2'],\n ['#c12e34', '#e6b600', '#0098d9', '#2b821d', '#005eaa', '#339ca8'],\n ['#8a7ca8', '#e098c7', '#8fd3e8', '#71669e', '#cc70af', '#7cb4cc'],\n]\n\nexport default defineComponent({\n name: 'chart-style-panel',\n components: {\n ElementOutline,\n ChartDataEditor,\n ColorButton,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(mainStore)\n const { theme } = storeToRefs(slidesStore)\n\n const chartDataEditorVisible = ref(false)\n const presetThemesVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const fill = ref()\n\n const themeColor = ref([])\n const gridColor = ref('')\n const legend = ref('')\n\n const lineSmooth = ref(true)\n const showLine = ref(true)\n const showArea = ref(false)\n const horizontalBars = ref(false)\n const donut = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'chart') return\n fill.value = handleElement.value.fill || '#000'\n\n if (handleElement.value.options) {\n const {\n lineSmooth: _lineSmooth,\n showLine: _showLine,\n showArea: _showArea,\n horizontalBars: _horizontalBars,\n donut: _donut,\n } = handleElement.value.options\n\n if (_lineSmooth !== undefined) lineSmooth.value = _lineSmooth as boolean\n if (_showLine !== undefined) showLine.value = _showLine\n if (_showArea !== undefined) showArea.value = _showArea\n if (_horizontalBars !== undefined) horizontalBars.value = _horizontalBars\n if (_donut !== undefined) donut.value = _donut\n }\n\n themeColor.value = handleElement.value.themeColor\n gridColor.value = handleElement.value.gridColor || 'rgba(0, 0, 0, 0.4)'\n legend.value = handleElement.value.legend || ''\n }, { deep: true, immediate: true })\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置图表数据\n const updateData = (data: ChartData) => {\n chartDataEditorVisible.value = false\n updateElement({ data })\n }\n\n // 设置填充色\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n // 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\n const updateOptions = (optionProps: ILineChartOptions & IBarChartOptions & IPieChartOptions) => {\n const _handleElement = handleElement.value as PPTChartElement\n\n const newOptions = { ..._handleElement.options, ...optionProps }\n updateElement({ options: newOptions })\n }\n\n // 设置主题色\n const updateTheme = (color: string, index: number) => {\n const props = {\n themeColor: themeColor.value.map((c, i) => i === index ? color : c),\n }\n updateElement(props)\n }\n\n // 添加主题色\n const addThemeColor = () => {\n const props = {\n themeColor: [...themeColor.value, theme.value.themeColor],\n }\n updateElement(props)\n }\n\n // 使用预置主题配色\n const applyPresetTheme = (colors: string[]) => {\n updateElement({ themeColor: colors })\n presetThemesVisible.value = false\n }\n\n // 删除主题色\n const deleteThemeColor = (index: number) => {\n const props = {\n themeColor: themeColor.value.filter((c, i) => i !== index),\n }\n updateElement(props)\n }\n\n // 设置网格颜色\n const updateGridColor = (gridColor: string) => {\n updateElement({ gridColor })\n }\n\n // 设置图例位置/不显示\n const updateLegend = (legend: '' | 'top' | 'bottom') => {\n updateElement({ legend })\n }\n\n const openDataEditor = () => chartDataEditorVisible.value = true\n\n emitter.on(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n onUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n })\n\n return {\n chartDataEditorVisible,\n presetThemesVisible,\n handleElement,\n updateData,\n fill,\n updateFill,\n lineSmooth,\n showLine,\n showArea,\n horizontalBars,\n donut,\n updateOptions,\n themeColor,\n gridColor,\n legend,\n updateTheme,\n addThemeColor,\n deleteThemeColor,\n updateGridColor,\n updateLegend,\n presetChartThemes,\n applyPresetTheme,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=ee2d8b14&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ee2d8b14&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ee2d8b14\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72e00692\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行数:\", -1))\nconst _hoisted_4 = {\n class: \"set-count\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"count-text\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"列数:\", -1))\nconst _hoisted_8 = {\n class: \"set-count\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_9 = { class: \"count-text\" }\nconst _hoisted_10 = { class: \"row theme-switch\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用主题表格:\", -1))\nconst _hoisted_12 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"标题行\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"汇总行\")\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"第一列\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"最后一列\")\nconst _hoisted_19 = { class: \"row\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题颜色:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.textAttrs.fontname,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateTextAttrs({ fontname: value }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.textAttrs.fontsize,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateTextAttrs({ fontsize: value }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.textAttrs.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.updateTextAttrs({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.textAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.textAttrs.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.updateTextAttrs({ backcolor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"单元格填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.textAttrs.backcolor })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.bold,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateTextAttrs({ bold: !_ctx.textAttrs.bold })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.em,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateTextAttrs({ em: !_ctx.textAttrs.em })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.underline,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.updateTextAttrs({ underline: !_ctx.textAttrs.underline })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.strikethrough,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.updateTextAttrs({ strikethrough: !_ctx.textAttrs.strikethrough })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.textAttrs.align,\n onChange: _cache[8] || (_cache[8] = e => _ctx.updateTextAttrs({ align: e.target.value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline, { fixed: true }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.rowCount <= 1,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.setTableRow(_ctx.rowCount - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.rowCount), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.rowCount >= 30,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.setTableRow(_ctx.rowCount + 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus)\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.colCount <= 1,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.setTableCol(_ctx.colCount - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.colCount), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.colCount >= 30,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.setTableCol(_ctx.colCount + 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus)\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasTheme,\n onChange: _cache[13] || (_cache[13] = checked => _ctx.toggleTheme(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasTheme)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[14] || (_cache[14] = e => _ctx.updateTheme({ rowHeader: e.target.checked })),\n checked: _ctx.theme.rowHeader,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[15] || (_cache[15] = e => _ctx.updateTheme({ rowFooter: e.target.checked })),\n checked: _ctx.theme.rowFooter,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[16] || (_cache[16] = e => _ctx.updateTheme({ colHeader: e.target.checked })),\n checked: _ctx.theme.colHeader,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[17] || (_cache[17] = e => _ctx.updateTheme({ colFooter: e.target.checked })),\n checked: _ctx.theme.colFooter,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.color,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = value => _ctx.updateTheme({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'table-style-panel',\n components: {\n ElementOutline,\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, selectedTableCells: selectedCells, availableFonts } = storeToRefs(useMainStore())\n const themeColor = computed(() => slidesStore.theme.themeColor)\n \n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n ]\n\n const textAttrs = ref({\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '12px',\n fontname: '微软雅黑',\n align: 'left',\n })\n\n const theme = ref()\n const hasTheme = ref(false)\n const rowCount = ref(0)\n const colCount = ref(0)\n const minRowCount = ref(0)\n const minColCount = ref(0)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'table') return\n \n theme.value = handleElement.value.theme\n hasTheme.value = !!theme.value\n\n rowCount.value = handleElement.value.data.length\n colCount.value = handleElement.value.data[0].length\n\n minRowCount.value = handleElement.value.data.length\n minColCount.value = handleElement.value.data[0].length\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 更新当前选中单元格的文本样式状态\n const updateTextAttrState = () => {\n if (!handleElement.value || handleElement.value.type !== 'table') return\n\n let rowIndex = 0\n let colIndex = 0\n if (selectedCells.value.length) {\n const selectedCell = selectedCells.value[0]\n rowIndex = +selectedCell.split('_')[0]\n colIndex = +selectedCell.split('_')[1]\n }\n const style = handleElement.value.data[rowIndex][colIndex].style\n\n if (!style) {\n textAttrs.value = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '12px',\n fontname: '微软雅黑',\n align: 'left',\n }\n }\n else {\n textAttrs.value = {\n bold: !!style.bold,\n em: !!style.em,\n underline: !!style.underline,\n strikethrough: !!style.strikethrough,\n color: style.color || '#000',\n backcolor: style.backcolor || '#000',\n fontsize: style.fontsize || '12px',\n fontname: style.fontname || '微软雅黑',\n align: style.align || 'left',\n }\n }\n }\n\n onMounted(() => {\n if (selectedCells.value.length) updateTextAttrState()\n })\n\n watch(selectedCells, updateTextAttrState)\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置单元格内容文本样式\n const updateTextAttrs = (textAttrProp: Partial) => {\n const _handleElement = handleElement.value as PPTTableElement\n\n const data: TableCell[][] = JSON.parse(JSON.stringify(_handleElement.data))\n\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (!selectedCells.value.length || selectedCells.value.includes(`${i}_${j}`)) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, ...textAttrProp }\n }\n }\n }\n updateElement({ data })\n updateTextAttrState()\n }\n\n // 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\n const updateTheme = (themeProp: Partial) => {\n if (!theme.value) return\n const _theme = { ...theme.value, ...themeProp }\n updateElement({ theme: _theme })\n }\n\n // 开启/关闭表格主题\n const toggleTheme = (checked: boolean) => {\n if (checked) {\n const props = {\n theme: {\n color: themeColor.value,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n }\n }\n updateElement(props)\n }\n else {\n slidesStore.removeElementProps({ id: handleElementId.value, propName: 'theme' })\n addHistorySnapshot()\n }\n }\n\n // 设置表格行数\n const setTableRow = (value: number) => {\n const _handleElement = handleElement.value as PPTTableElement\n const rowCount = _handleElement.data.length\n\n if (value > rowCount) {\n const rowCells: TableCell[] = new Array(colCount.value).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\n const newTableCells: TableCell[][] = new Array(value - rowCount).fill(rowCells)\n \n const tableCells: TableCell[][] = JSON.parse(JSON.stringify(_handleElement.data))\n tableCells.push(...newTableCells)\n \n updateElement({ data: tableCells })\n }\n else {\n const tableCells: TableCell[][] = _handleElement.data.slice(0, value)\n updateElement({ data: tableCells })\n }\n }\n\n // 设置表格列数\n const setTableCol = (value: number) => {\n const _handleElement = handleElement.value as PPTTableElement\n const colCount = _handleElement.data[0].length\n\n let tableCells = _handleElement.data\n let colSizeList = _handleElement.colWidths.map(item => item * _handleElement.width)\n\n if (value > colCount) {\n tableCells = tableCells.map(item => {\n const cells: TableCell[] = new Array(value - colCount).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\n item.push(...cells)\n return item\n })\n \n const newColSizeList: number[] = new Array(value - colCount).fill(100)\n colSizeList.push(...newColSizeList)\n }\n else {\n tableCells = tableCells.map(item => item.slice(0, value))\n colSizeList = colSizeList.slice(0, value)\n }\n\n const width = colSizeList.reduce((a, b) => a + b)\n const colWidths = colSizeList.map(item => item / width)\n\n const props = {\n width,\n data: tableCells,\n colWidths,\n }\n updateElement(props)\n }\n\n return {\n handleElement,\n availableFonts,\n fontSizeOptions,\n textAttrs,\n updateTextAttrs,\n theme,\n rowCount,\n colCount,\n minRowCount,\n minColCount,\n hasTheme,\n toggleTheme,\n updateTheme,\n setTableRow,\n setTableCol,\n webFonts,\n }\n },\n})\n","import { render } from \"./TableStylePanel.vue?vue&type=template&id=72e00692&scoped=true&ts=true\"\nimport script from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=72e00692&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-72e00692\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69f903b1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"编辑 LaTeX\")\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"颜色:\", -1))\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"粗细:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_LaTeXEditor = _resolveComponent(\"LaTeXEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.latexEditorVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateLatex({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 3,\n value: _ctx.handleElement.strokeWidth,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateLatex({ strokeWidth: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.latexEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LaTeXEditor, {\n value: _ctx.handleElement.latex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[4] || (_cache[4] = data => { _ctx.updateLatexData(data); _ctx.latexEditorVisible = false })\n }, null, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","\nimport { defineComponent, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTLatexElement } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\nimport LaTeXEditor from '@/components/LaTeXEditor/index.vue'\n\nexport default defineComponent({\n name: 'latex-style-panel',\n components: {\n ColorButton,\n LaTeXEditor,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const latexEditorVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateLatex = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n const updateLatexData = (data: { path: string; latex: string; w: number; h: number; }) => {\n updateLatex({\n path: data.path,\n latex: data.latex,\n width: data.w,\n height: data.h,\n viewBox: [data.w, data.h],\n })\n }\n\n const openLatexEditor = () => latexEditorVisible.value = true\n\n emitter.on(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n onUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n })\n\n return {\n handleElement,\n latexEditorVisible,\n updateLatex,\n updateLatexData,\n }\n }\n})\n","import { render } from \"./LatexStylePanel.vue?vue&type=template&id=69f903b1&scoped=true&ts=true\"\nimport script from \"./LatexStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LatexStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LatexStylePanel.vue?vue&type=style&index=0&id=69f903b1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-69f903b1\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-61bcaa2a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"video-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"视频预览封面\", -1))\nconst _hoisted_3 = { class: \"background-image-wrapper\" }\nconst _hoisted_4 = { class: \"background-image\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"重置封面\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_FileInput, {\n onChange: _cache[0] || (_cache[0] = files => _ctx.setVideoPoster(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.handleElement.poster})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { getImageDataURL } from '@/utils/image'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'video-style-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateVideo = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n // 设置视频预览封面\n const setVideoPoster = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateVideo({ poster: dataURL }))\n }\n\n return {\n handleElement,\n updateVideo,\n setVideoPoster,\n }\n }\n})\n","import { render } from \"./VideoStylePanel.vue?vue&type=template&id=61bcaa2a&scoped=true&ts=true\"\nimport script from \"./VideoStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./VideoStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./VideoStylePanel.vue?vue&type=style&index=0&id=61bcaa2a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61bcaa2a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-80767a46\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"audio-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图标颜色:\", -1))\nconst _hoisted_4 = { class: \"row switch-row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"自动播放:\", -1))\nconst _hoisted_6 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_7 = { class: \"row switch-row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"循环播放:\", -1))\nconst _hoisted_9 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => _ctx.updateAudio({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Switch, {\n checked: _ctx.handleElement.autoplay,\n onChange: _cache[1] || (_cache[1] = checked => _ctx.updateAudio({ autoplay: checked }))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_Switch, {\n checked: _ctx.handleElement.loop,\n onChange: _cache[2] || (_cache[2] = checked => _ctx.updateAudio({ loop: checked }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\n\nexport default defineComponent({\n name: 'audio-style-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateAudio = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n updateAudio,\n }\n }\n})\n","import { render } from \"./AudioStylePanel.vue?vue&type=template&id=80767a46&scoped=true&ts=true\"\nimport script from \"./AudioStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./AudioStylePanel.vue?vue&type=style&index=0&id=80767a46&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-80767a46\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { ElementTypes } from '@/types/slides'\n\nimport TextStylePanel from './TextStylePanel.vue'\nimport ImageStylePanel from './ImageStylePanel.vue'\nimport ShapeStylePanel from './ShapeStylePanel.vue'\nimport LineStylePanel from './LineStylePanel.vue'\nimport ChartStylePanel from './ChartStylePanel/index.vue'\nimport TableStylePanel from './TableStylePanel.vue'\nimport LatexStylePanel from './LatexStylePanel.vue'\nimport VideoStylePanel from './VideoStylePanel.vue'\nimport AudioStylePanel from './AudioStylePanel.vue'\n\nexport default defineComponent({\n name: 'element-style-panel',\n setup() {\n const { handleElement } = storeToRefs(useMainStore())\n\n const currentPanelComponent = computed(() => {\n if (!handleElement.value) return null\n \n const panelMap = {\n [ElementTypes.TEXT]: TextStylePanel,\n [ElementTypes.IMAGE]: ImageStylePanel,\n [ElementTypes.SHAPE]: ShapeStylePanel,\n [ElementTypes.LINE]: LineStylePanel,\n [ElementTypes.CHART]: ChartStylePanel,\n [ElementTypes.TABLE]: TableStylePanel,\n [ElementTypes.LATEX]: LatexStylePanel,\n [ElementTypes.VIDEO]: VideoStylePanel,\n [ElementTypes.AUDIO]: AudioStylePanel,\n }\n return panelMap[handleElement.value.type] || null\n })\n\n return {\n handleElement,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=705f1755&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createStaticVNode as _createStaticVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3476ee65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-positopn-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"层级:\", -1))\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 置于顶层\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" 置于底层\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" 上移一层\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" 下移一层\")\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"对齐:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"位置:\", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_11 = /*#__PURE__*/_createStaticVNode(\"
X
Y
\", 1)\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"大小:\", -1))\nconst _hoisted_14 = {\n key: 1,\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_15 = /*#__PURE__*/_createStaticVNode(\"
\", 1)\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"旋转:\", -1))\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_IconLock = _resolveComponent(\"IconLock\")!\n const _component_IconUnlock = _resolveComponent(\"IconUnlock\")!\n const _component_IconRotate = _resolveComponent(\"IconRotate\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"btn-icon\" }),\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"btn-icon\" }),\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'up')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"btn-icon\" }),\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'down')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"btn-icon\" }),\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _hoisted_7,\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.alignElementToCanvas('left')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.alignElementToCanvas('horizontal')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.alignElementToCanvas('right')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.alignElementToCanvas('top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.alignElementToCanvas('vertical')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.alignElementToCanvas('bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: _ctx.left,\n onChange: _cache[10] || (_cache[10] = value => _ctx.updateLeft(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"]),\n _hoisted_10,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: _ctx.top,\n onChange: _cache[11] || (_cache[11] = value => _ctx.updateTop(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ]),\n _hoisted_11,\n (_ctx.handleElement.type !== 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_InputNumber, {\n min: _ctx.minSize,\n max: 1500,\n step: 5,\n value: _ctx.width,\n onChange: _cache[12] || (_cache[12] = value => _ctx.updateWidth(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.fixedRatio)\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 0,\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"解除宽高比锁定\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconLock, {\n style: {\"flex\":\"1\"},\n class: \"icon-btn\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.updateFixedRatio(false)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n : (_openBlock(), _createBlock(_component_Tooltip, {\n key: 1,\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"宽高比锁定\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUnlock, {\n style: {\"flex\":\"1\"},\n class: \"icon-btn\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.updateFixedRatio(true)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_14)),\n _createVNode(_component_InputNumber, {\n min: _ctx.minSize,\n max: 800,\n step: 5,\n disabled: _ctx.handleElement.type === 'text',\n value: _ctx.height,\n onChange: _cache[15] || (_cache[15] = value => _ctx.updateHeight(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"disabled\", \"value\"])\n ]),\n _hoisted_15\n ], 64))\n : _createCommentVNode(\"\", true),\n (!['line', 'video', 'audio'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"逆时针旋转\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRotate, {\n class: \"icon-btn\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.updateRotate45('-'))),\n style: {\"flex\":\"2\"}\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顺时针旋转\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRotate, {\n class: \"icon-btn\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.updateRotate45('+'))),\n style: _normalizeStyle({\n flex: 2,\n transform: 'rotateY(180deg)',\n })\n }, null, 8, [\"style\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _hoisted_18,\n _createVNode(_component_InputNumber, {\n min: -180,\n max: 180,\n step: 5,\n value: _ctx.rotate,\n onChange: _cache[18] || (_cache[18] = value => _ctx.updateRotate(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { MIN_SIZE } from '@/configs/element'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-positopn-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n\n const left = ref(0)\n const top = ref(0)\n const width = ref(0)\n const height = ref(0)\n const rotate = ref(0)\n const fixedRatio = ref(false)\n\n const minSize = computed(() => {\n if (!handleElement.value) return 20\n return MIN_SIZE[handleElement.value.type] || 20\n })\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n\n left.value = round(handleElement.value.left, 1)\n top.value = round(handleElement.value.top, 1)\n\n fixedRatio.value = 'fixedRatio' in handleElement.value && !!handleElement.value.fixedRatio\n\n if (handleElement.value.type !== 'line') {\n width.value = round(handleElement.value.width, 1)\n height.value = round(handleElement.value.height, 1)\n rotate.value = 'rotate' in handleElement.value && handleElement.value.rotate !== undefined ? round(handleElement.value.rotate, 1) : 0\n }\n }, { deep: true, immediate: true })\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 设置元素位置\n const updateLeft = (value: number) => {\n const props = { left: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateTop = (value: number) => {\n const props = { top: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置元素宽度、高度、旋转角度\n const updateWidth = (value: number) => {\n const props = { width: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateHeight = (value: number) => {\n const props = { height: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateRotate = (value: number) => {\n const props = { rotate: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 固定元素的宽高比\n const updateFixedRatio = (value: boolean) => {\n const props = { fixedRatio: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 将元素旋转45度(顺时针或逆时针)\n const updateRotate45 = (command: '+' | '-') => {\n let _rotate = Math.floor(rotate.value / 45) * 45\n if (command === '+') _rotate = _rotate + 45\n else if (command === '-') _rotate = _rotate - 45\n\n if (_rotate < -180) _rotate = -180\n if (_rotate > 180) _rotate = 180\n\n const props = { rotate: _rotate }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n orderElement,\n alignElementToCanvas,\n left,\n top,\n width,\n height,\n rotate,\n fixedRatio,\n minSize,\n updateLeft,\n updateTop,\n updateWidth,\n updateHeight,\n updateRotate,\n updateFixedRatio,\n updateRotate45,\n }\n },\n})\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=3476ee65&scoped=true&ts=true\"\nimport script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=3476ee65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3476ee65\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-696c81e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-animation-panel\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"element-animation\"\n}\nconst _hoisted_3 = { class: \"animation-pool\" }\nconst _hoisted_4 = { class: \"type-title\" }\nconst _hoisted_5 = { class: \"pool-item-wrapper\" }\nconst _hoisted_6 = [\"onMouseenter\", \"onClick\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"mask\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 该元素暂不支持动画 \")\nconst _hoisted_9 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 选中画布中的元素添加动画\")\nconst _hoisted_11 = { class: \"index\" }\nconst _hoisted_12 = { class: \"text\" }\nconst _hoisted_13 = { class: \"handler\" }\nconst _hoisted_14 = {\n key: 2,\n class: \"configs\"\n}\nconst _hoisted_15 = { class: \"duration\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"4\"} }, \"持续时间(毫秒):\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconEffects = _resolveComponent(\"IconEffects\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconClick = _resolveComponent(\"IconClick\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handleElement)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (!['chart', 'video'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\",\n visible: _ctx.animationPoolVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.animationPoolVisible) = $event)),\n onVisibleChange: _cache[2] || (_cache[2] = visible => _ctx.handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations, (type) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-type\",\n key: type.name\n }, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(type.name) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-item\",\n key: item.name,\n onMouseenter: ($event: any) => (_ctx.hoverPreviewAnimation = item.value),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (_ctx.hoverPreviewAnimation = '')),\n onClick: ($event: any) => (_ctx.addAnimation(item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n 'animate__animated',\n 'animate__faster',\n _ctx.hoverPreviewAnimation === item.value && `animate__${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_6))\n }), 128))\n ])\n ]))\n }), 128)),\n (!_ctx.popoverMaskHide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, { class: \"element-animation-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _createTextVNode(\" \" + _toDisplayString(_ctx.handleElementAnimationName || '点击选择动画'), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]))\n : (_openBlock(), _createBlock(_component_Button, {\n key: 1,\n class: \"element-animation-btn\",\n disabled: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_8\n ]),\n _: 1\n }))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_10\n ])),\n _createVNode(_component_Divider),\n _createVNode(_component_Draggable, {\n class: \"animation-sequence\",\n modelValue: _ctx.animationSequence,\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", { 'active': _ctx.handleElement?.id === element.elId }])\n }, [\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(index + 1), 1),\n _createElementVNode(\"div\", _hoisted_12, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationType), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"预览\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlayOne, {\n class: \"handler-btn\",\n onClick: ($event: any) => (_ctx.runAnimation(element.elId, element.type, element.duration))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCloseSmall, {\n class: \"handler-btn\",\n onClick: ($event: any) => (_ctx.deleteAnimation(element.elId))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"]),\n (_ctx.handleElementAnimation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_InputNumber, {\n min: 100,\n max: 5000,\n step: 100,\n value: _ctx.handleElementAnimation.duration,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateElementAnimationDuration(value)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","export const ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹入', value: 'bounceIn' },\r\n { name: '向右弹入', value: 'bounceInLeft' },\r\n { name: '向左弹入', value: 'bounceInRight' },\r\n { name: '向上弹入', value: 'bounceInUp' },\r\n { name: '向下弹入', value: 'bounceInDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮入', value: 'fadeIn' },\r\n { name: '向下浮入', value: 'fadeInDown' },\r\n { name: '向下长距浮入', value: 'fadeInDownBig' },\r\n { name: '向右浮入', value: 'fadeInLeft' },\r\n { name: '向右长距浮入', value: 'fadeInLeftBig' },\r\n { name: '向左浮入', value: 'fadeInRight' },\r\n { name: '向左长距浮入', value: 'fadeInRightBig' },\r\n { name: '向上浮入', value: 'fadeInUp' },\r\n { name: '向上长距浮入', value: 'fadeInUpBig' },\r\n { name: '从左上浮入', value: 'fadeInTopLeft' },\r\n { name: '从右上浮入', value: 'fadeInTopRight' },\r\n { name: '从左下浮入', value: 'fadeInBottomLeft' },\r\n { name: '从右下浮入', value: 'fadeInBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转进入', value: 'rotateIn' },\r\n { name: '绕左下旋转进入', value: 'rotateInDownLeft' },\r\n { name: '绕右下旋转进入', value: 'rotateInDownRight' },\r\n { name: '绕左上旋转进入', value: 'rotateInUpLeft' },\r\n { name: '绕右上旋转进入', value: 'rotateInUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '放大进入', value: 'zoomIn' },\r\n { name: '向下放大进入', value: 'zoomInDown' },\r\n { name: '从左放大进入', value: 'zoomInLeft' },\r\n { name: '从右放大进入', value: 'zoomInRight' },\r\n { name: '向上放大进入', value: 'zoomInUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑入',\r\n children: [\r\n { name: '向下滑入', value: 'slideInDown' },\r\n { name: '从右滑入', value: 'slideInLeft' },\r\n { name: '从左滑入', value: 'slideInRight' },\r\n { name: '向上滑入', value: 'slideInUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转进入', value: 'flipInX' },\r\n { name: 'Y轴翻转进入', value: 'flipInY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '放大滑入',\r\n children: [\r\n { name: '向下放大滑入', value: 'backInDown' },\r\n { name: '从左放大滑入', value: 'backInLeft' },\r\n { name: '从右放大滑入', value: 'backInRight' },\r\n { name: '向上放大滑入', value: 'backInUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞入',\r\n children: [\r\n { name: '从右飞入', value: 'lightSpeedInRight' },\r\n { name: '从左飞入', value: 'lightSpeedInLeft' },\r\n ],\r\n },\r\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAnimation } from '@/types/slides'\nimport { ANIMATIONS } from '@/configs/animation'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport Draggable from 'vuedraggable'\n\nconst defaultDuration = 1000\n\nconst animationTypes: { [key: string]: string } = {}\nfor (const type of ANIMATIONS) {\n for (const animation of type.children) {\n animationTypes[animation.value] = animation.name\n }\n}\n\nexport default defineComponent({\n name: 'element-animation-panel',\n components: {\n Draggable,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n const { currentSlide, currentSlideAnimations } = storeToRefs(slidesStore)\n\n const hoverPreviewAnimation = ref('')\n const animationPoolVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const animations = ANIMATIONS\n\n // 当前页面的动画列表\n const animationSequence = computed(() => {\n if (!currentSlideAnimations.value) return []\n const animationSequence = []\n for (const animation of currentSlideAnimations.value) {\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\n if (!el) continue\n const elType = ELEMENT_TYPE_ZH[el.type]\n const animationType = animationTypes[animation.type]\n\n animationSequence.push({\n ...animation,\n elType,\n animationType,\n })\n }\n return animationSequence\n })\n\n // 当前选中元素的入场动画信息\n const handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value || []\n const animation = animations.find(item => item.elId === handleElementId.value)\n return animation || null\n })\n\n // 当前选中元素的入场动画名称\n const handleElementAnimationName = computed(() => {\n if (!handleElementAnimation.value) return null\n return animationTypes[handleElementAnimation.value.type]\n })\n\n // 删除元素入场动画\n const deleteAnimation = (elId: string) => {\n const animations = (currentSlideAnimations.value as PPTAnimation[]).filter(item => item.elId !== elId)\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 拖拽修改入场动画顺序后同步数据\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n if (oldIndex === newIndex) return\n\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\n const animation = animations[oldIndex]\n animations.splice(oldIndex, 1)\n animations.splice(newIndex, 0, animation)\n \n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 执行入场动画预览\n const runAnimation = (elId: string, animationType: string, duration: number) => {\n const prefix = 'animate__'\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\n if (elRef) {\n const animationName = `${prefix}${animationType}`\n document.documentElement.style.setProperty('--animate-duration', `${duration}ms`)\n elRef.classList.add(`${prefix}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${prefix}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 修改元素入场动画,并执行一次预览\n const updateElementAnimation = (type: string) => {\n if (!currentSlideAnimations.value) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.elId === handleElementId.value) return { ...item, type }\n return item\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n const animationItem = currentSlideAnimations.value.find(item => item.elId === handleElementId.value)\n const duration = animationItem?.duration || defaultDuration\n\n runAnimation(handleElementId.value, type, duration)\n }\n\n // 修改元素入场动画持续时间\n const updateElementAnimationDuration = (duration: number) => {\n if (!currentSlideAnimations.value) return\n if (duration < 100 || duration > 5000) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.elId === handleElementId.value) return { ...item, duration }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 添加元素入场动画,并执行一次预览\n const addAnimation = (type: string) => {\n if (handleElementAnimationName.value) {\n updateElementAnimation(type)\n return\n }\n const animations: PPTAnimation[] = currentSlideAnimations.value ? JSON.parse(JSON.stringify(currentSlideAnimations.value)) : []\n animations.push({\n elId: handleElementId.value,\n type,\n duration: defaultDuration,\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n runAnimation(handleElementId.value, type, defaultDuration)\n }\n\n // 动画选择面板打开500ms后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\n const popoverMaskHide = ref(false)\n const handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 500)\n }\n else popoverMaskHide.value = false\n }\n\n return {\n handleElement,\n animationPoolVisible,\n animations,\n animationSequence,\n hoverPreviewAnimation,\n handleElementAnimation,\n handleElementAnimationName,\n popoverMaskHide,\n addAnimation,\n deleteAnimation,\n handleDragEnd,\n runAnimation,\n updateElementAnimationDuration,\n handlePopoverVisibleChange,\n }\n },\n})\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=696c81e2&scoped=true&ts=true\"\nimport script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=696c81e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-696c81e2\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0e2f846d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-design-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"背景填充\", -1))\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"纯色填充\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"图片填充\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"渐变填充\")\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"缩放\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"拼贴\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"缩放铺满\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"线性渐变\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"径向渐变\")\nconst _hoisted_13 = {\n key: 0,\n class: \"background-image-wrapper\"\n}\nconst _hoisted_14 = { class: \"background-image\" }\nconst _hoisted_15 = {\n key: 1,\n class: \"background-gradient-wrapper\"\n}\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点颜色:\", -1))\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点颜色:\", -1))\nconst _hoisted_20 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\nconst _hoisted_22 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"应用背景到全部\")\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"画布尺寸:\", -1))\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\"宽屏 16 : 9\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\"宽屏 16 :10\")\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\"标准 4 :3\")\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"全局主题\", -1))\nconst _hoisted_30 = { class: \"row\" }\nconst _hoisted_31 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字体:\", -1))\nconst _hoisted_32 = { class: \"row\" }\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字体颜色:\", -1))\nconst _hoisted_34 = { class: \"row\" }\nconst _hoisted_35 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景颜色:\", -1))\nconst _hoisted_36 = { class: \"row\" }\nconst _hoisted_37 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题色:\", -1))\nconst _hoisted_38 = /*#__PURE__*/_createTextVNode(\" 预置主题 \")\nconst _hoisted_39 = {\n key: 2,\n class: \"theme-list\"\n}\nconst _hoisted_40 = [\"onClick\"]\nconst _hoisted_41 = { class: \"theme-item-content\" }\nconst _hoisted_42 = { class: \"row\" }\nconst _hoisted_43 = /*#__PURE__*/_createTextVNode(\"应用主题到全部\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: _ctx.background.type,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateBackgroundType(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"image\" }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"gradient\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_7,\n (_ctx.background.type === 'solid')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = color => _ctx.updateBackground({ color }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.color || '#fff',\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_ctx.background.type === 'image')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _ctx.background.imageSize || 'cover',\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateBackground({ imageSize: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"contain\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"repeat\" }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"cover\" }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n : (_openBlock(), _createBlock(_component_Select, {\n key: 2,\n style: {\"flex\":\"10\"},\n value: _ctx.background.gradientType,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateBackground({ gradientType: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"linear\" }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"radial\" }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_ctx.background.type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_FileInput, {\n onChange: _cache[4] || (_cache[4] = files => _ctx.uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.background.image})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.background.type === 'gradient')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.gradientColor[0],\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = value => _ctx.updateBackground({ gradientColor: [value, _ctx.background.gradientColor[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.gradientColor[0],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.gradientColor[1],\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => _ctx.updateBackground({ gradientColor: [_ctx.background.gradientColor[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.gradientColor[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_ctx.background.gradientType === 'linear')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _hoisted_21,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 360,\n step: 15,\n value: _ctx.background.gradientRotate,\n onChange: _cache[7] || (_cache[7] = value => _ctx.updateBackground({ gradientRotate: value }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.applyBackgroundAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_24, [\n _hoisted_25,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.viewportRatio,\n onChange: _cache[9] || (_cache[9] = value => _ctx.updateViewportRatio(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 0.5625 }, {\n default: _withCtx(() => [\n _hoisted_26\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_SelectOption, { value: 0.625 }, {\n default: _withCtx(() => [\n _hoisted_27\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_SelectOption, { value: 0.75 }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _hoisted_29,\n _createElementVNode(\"div\", _hoisted_30, [\n _hoisted_31,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.theme.fontName,\n onChange: _cache[10] || (_cache[10] = value => _ctx.updateTheme({ fontName: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _hoisted_33,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.fontColor,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = value => _ctx.updateTheme({ fontColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.fontColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _hoisted_35,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.backgroundColor,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = value => _ctx.updateTheme({ backgroundColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.backgroundColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_36, [\n _hoisted_37,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.themeColor,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = value => _ctx.updateTheme({ themeColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.themeColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"title dropdown\", { 'active': _ctx.showPresetThemes }]),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.togglePresetThemesVisible())),\n style: {\"margin-top\":\"20px\"}\n }, [\n _hoisted_38,\n _createVNode(_component_IconDown, { class: \"icon\" })\n ], 2),\n (_ctx.showPresetThemes)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"theme-item\",\n key: index,\n style: _normalizeStyle({ backgroundColor: item.background }),\n onClick: ($event: any) => (_ctx.updateTheme({\n fontColor: item.text,\n backgroundColor: item.background,\n themeColor: item.color,\n }))\n }, [\n _createElementVNode(\"div\", _hoisted_41, [\n _createElementVNode(\"div\", {\n class: \"text\",\n style: _normalizeStyle({ color: item.text })\n }, \"Aa\", 4),\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: item.color })\n }, null, 4)\n ])\n ], 12, _hoisted_40))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_42, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.applyThemeAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_43\n ]),\n _: 1\n })\n ])\n ]))\n}","export const PRESET_THEMES = [\r\n { color: '#d14424', background: '#ffffff', text: '#333' },\r\n { color: '#42464b', background: '#ffffff', text: '#333' },\r\n { color: '#5d82ba', background: '#ffffff', text: '#333' },\r\n { color: '#005a6f', background: '#ffffff', text: '#333' },\r\n { color: '#d0614c', background: '#dfb044', text: '#333' },\r\n { color: '#86a1ad', background: '#dfdbd4', text: '#333' },\r\n { color: '#697586', background: '#d5c4a4', text: '#333' },\r\n { color: '#333333', background: '#7acfa6', text: '#333' },\r\n { color: '#42464b', background: '#415065', text: '#fff' },\r\n { color: '#0c5999', background: '#35a2cd', text: '#fff' },\r\n { color: '#c49a41', background: '#8c4357', text: '#fff' },\r\n { color: '#dfaa00', background: '#2e4e7d', text: '#fff' },\r\n { color: '#d1ad88', background: '#f99070', text: '#fff' },\r\n { color: '#464d52', background: '#657984', text: '#fff' },\r\n { color: '#ffcfb6', background: '#1e4c6f', text: '#fff' },\r\n { color: '#c3a043', background: '#43292a', text: '#fff' },\r\n { color: '#464d52', background: '#60546f', text: '#fff' },\r\n { color: '#df9636', background: '#5b89a0', text: '#fff' },\r\n { color: '#b898a4', background: '#93716b', text: '#fff' },\r\n { color: '#c47a11', background: '#187db1', text: '#fff' },\r\n { color: '#333333', background: '#759564', text: '#fff' },\r\n { color: '#355b5e', background: '#424b50', text: '#fff' },\r\n { color: '#d29090', background: '#942a32', text: '#fff' },\r\n { color: '#00cfdf', background: '#3b434d', text: '#fff' },\r\n { color: '#424246', background: '#c70042', text: '#fff' },\r\n { color: '#2e4155', background: '#b35d44', text: '#fff' },\r\n { color: '#11bfce', background: '#8f98aa', text: '#fff' },\r\n { color: '#333333', background: '#549688', text: '#fff' },\r\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide, SlideBackground, SlideTheme } from '@/types/slides'\nimport { PRESET_THEMES } from '@/configs/theme'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './common/ColorButton.vue'\nimport { getImageDataURL } from '@/utils/image'\n\nconst themes = PRESET_THEMES\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'slide-design-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { availableFonts } = storeToRefs(useMainStore())\n const { slides, currentSlide, viewportRatio, theme } = storeToRefs(slidesStore)\n\n const background = computed(() => {\n if (!currentSlide.value.background) {\n return {\n type: 'solid',\n value: '#fff',\n } as SlideBackground\n }\n return currentSlide.value.background\n })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 设置背景模式:纯色、图片、渐变色\n const updateBackgroundType = (type: 'solid' | 'image' | 'gradient') => {\n if (type === 'solid') {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'solid',\n color: background.value.color || '#fff',\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n else if (type === 'image') {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'image',\n image: background.value.image || '',\n imageSize: background.value.imageSize || 'cover',\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n else {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'gradient',\n gradientType: background.value.gradientType || 'linear',\n gradientColor: background.value.gradientColor || ['#fff', '#fff'],\n gradientRotate: background.value.gradientRotate || 0,\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n addHistorySnapshot()\n }\n\n // 设置背景图片\n const updateBackground = (props: Partial) => {\n slidesStore.updateSlide({ background: { ...background.value, ...props } })\n addHistorySnapshot()\n }\n\n // 上传背景图片\n const uploadBackgroundImage = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\n }\n\n // 应用当前页背景到全部页面\n const applyBackgroundAllSlide = () => {\n const newSlides = slides.value.map(slide => {\n return {\n ...slide,\n background: currentSlide.value.background,\n }\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n // 设置主题\n const updateTheme = (themeProps: Partial) => {\n slidesStore.setTheme(themeProps)\n }\n\n // 将当前主题应用到全部页面\n const applyThemeAllSlide = () => {\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\n const { themeColor, backgroundColor, fontColor, fontName } = theme.value\n\n for (const slide of newSlides) {\n if (!slide.background || slide.background.type !== 'image') {\n slide.background = {\n ...slide.background,\n type: 'solid',\n color: backgroundColor\n }\n }\n\n const elements = slide.elements\n for (const el of elements) {\n if (el.type === 'shape') el.fill = themeColor\n else if (el.type === 'line') el.color = themeColor\n else if (el.type === 'text') {\n el.defaultColor = fontColor\n el.defaultFontName = fontName\n if (el.fill) el.fill = themeColor\n }\n else if (el.type === 'table') {\n if (el.theme) el.theme.color = themeColor\n for (const rowCells of el.data) {\n for (const cell of rowCells) {\n if (cell.style) {\n cell.style.color = fontColor\n cell.style.fontname = fontName\n }\n }\n }\n }\n else if (el.type === 'chart') {\n el.themeColor = [themeColor]\n el.gridColor = fontColor\n }\n else if (el.type === 'latex') el.color = fontColor\n else if (el.type === 'audio') el.color = themeColor\n }\n }\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n // 是否显示预设主题\n const showPresetThemes = ref(true)\n const togglePresetThemesVisible = () => {\n showPresetThemes.value = !showPresetThemes.value\n }\n\n // 设置画布尺寸(宽高比例)\n const updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n }\n\n return {\n availableFonts,\n background,\n updateBackgroundType,\n updateBackground,\n uploadBackgroundImage,\n applyBackgroundAllSlide,\n themes,\n theme,\n webFonts,\n updateTheme,\n applyThemeAllSlide,\n viewportRatio,\n updateViewportRatio,\n showPresetThemes,\n togglePresetThemesVisible,\n }\n },\n})\n","import { render } from \"./SlideDesignPanel.vue?vue&type=template&id=0e2f846d&scoped=true&ts=true\"\nimport script from \"./SlideDesignPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideDesignPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideDesignPanel.vue?vue&type=style&index=0&id=0e2f846d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0e2f846d\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-251ceb05\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-animation-panel\" }\nconst _hoisted_2 = { class: \"animation-pool\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"animation-text\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"应用到全部\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"animation-item\", { 'active': _ctx.currentTurningMode === item.value }]),\n key: item.label,\n onClick: ($event: any) => (_ctx.updateTurningMode(item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['animation-block', item.value])\n }, null, 2),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(item.label), 1)\n ], 10, _hoisted_3))\n }), 128))\n ]),\n _createVNode(_component_Button, {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { TurningMode } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface Animations {\n label: string;\n value: TurningMode;\n}\n\nexport default defineComponent({\n name: 'slide-animation-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, currentSlide } = storeToRefs(slidesStore)\n\n const currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\n\n const animations: Animations[] = [\n { label: '无', value: 'no' },\n { label: '淡入淡出', value: 'fade' },\n { label: '左右推移', value: 'slideX' },\n { label: '上下推移', value: 'slideY' },\n ]\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 修改播放时的切换页面方式\n const updateTurningMode = (mode: TurningMode) => {\n if (mode === currentTurningMode.value) return\n slidesStore.updateSlide({ turningMode: mode })\n addHistorySnapshot()\n }\n\n // 将当前页的切换页面方式应用到全部页面\n const applyAllSlide = () => {\n const newSlides = slides.value.map(slide => {\n return {\n ...slide,\n turningMode: currentSlide.value.turningMode,\n }\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n return {\n currentTurningMode,\n animations,\n updateTurningMode,\n applyAllSlide,\n }\n },\n})\n","import { render } from \"./SlideAnimationPanel.vue?vue&type=template&id=251ceb05&scoped=true&ts=true\"\nimport script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=251ceb05&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-251ceb05\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-88d13362\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-position-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"水平均匀分布\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"垂直均匀分布\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"组合\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"取消组合\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconGroup = _resolveComponent(\"IconGroup\")!\n const _component_IconUngroup = _resolveComponent(\"IconUngroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.alignElement('left')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.alignElement('horizontal')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.alignElement('right')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.alignElement('top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.alignElement('vertical')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.alignElement('bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n (_ctx.displayItemCount > 2)\n ? (_openBlock(), _createBlock(_component_ButtonGroup, {\n key: 0,\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.uniformHorizontalDisplay()))\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.uniformVerticalDisplay()))\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n disabled: !_ctx.canCombine,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.combineElements())),\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconGroup, { style: {\"margin-right\":\"3px\"} }),\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_component_Button, {\n disabled: _ctx.canCombine,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.uncombineElements())),\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUngroup, { style: {\"margin-right\":\"3px\"} }),\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]))\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 对齐选中的元素\r\n * @param command 对齐方向\r\n */\r\n const alignActiveElement = (command: ElementAlignCommand) => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n const elementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 如果所选择的元素为组合元素的成员,需要计算该组合的整体范围\r\n const groupElementRangeMap = {}\r\n for (const activeElement of activeElementList.value) {\r\n if (activeElement.groupId && !groupElementRangeMap[activeElement.groupId]) {\r\n const groupElements = activeElementList.value.filter(item => item.groupId === activeElement.groupId)\r\n groupElementRangeMap[activeElement.groupId] = getElementListRange(groupElements)\r\n }\r\n }\r\n\r\n // 根据不同的命令,计算对齐的位置\r\n if (command === ElementAlignCommands.LEFT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = minX - offsetX\r\n }\r\n else element.left = minX\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minX - minX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = maxX - elWidth + offsetX\r\n }\r\n else element.left = maxX - elWidth\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxX - maxX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.TOP) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = minY - offsetY\r\n }\r\n else element.top = minY\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minY - minY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = maxY - elHeight + offsetY\r\n }\r\n else element.top = maxY - elHeight\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxY - maxY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const horizontalCenter = (minX + maxX) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n element.left = horizontalCenter - elWidth / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxX + range.minX) / 2\r\n const offset = center - horizontalCenter\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const verticalCenter = (minY + maxY) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n element.top = verticalCenter - elHeight / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxY + range.minY) / 2\r\n const offset = center - verticalCenter\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: elementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n alignActiveElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementRange, getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\ninterface ElementItem {\r\n min: number;\r\n max: number;\r\n el: PPTElement;\r\n}\r\n\r\ninterface GroupItem {\r\n groupId: string;\r\n els: PPTElement[];\r\n}\r\n\r\ninterface GroupElementsItem {\r\n min: number;\r\n max: number;\r\n els: PPTElement[];\r\n}\r\n\r\ntype Item = ElementItem | GroupElementsItem\r\n\r\ninterface ElementWithPos {\r\n pos: number;\r\n el: PPTElement;\r\n}\r\n\r\ninterface LastPos {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const displayItemCount = computed(() => {\r\n let count = 0\r\n const groupIdList: string[] = []\r\n for (const el of activeElementList.value) {\r\n if (!el.groupId) count += 1\r\n else if (!groupIdList.includes(el.groupId)) {\r\n groupIdList.push(el.groupId)\r\n count += 1\r\n }\r\n }\r\n return count\r\n })\r\n // 水平均匀排列\r\n const uniformHorizontalDisplay = () => {\r\n const { minX, maxX } = getElementListRange(activeElementList.value)\r\n const copyOfActiveElementList: PPTElement[] = JSON.parse(JSON.stringify(activeElementList.value))\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 分别获取普通元素和组合元素集合,并记录下每一项的范围\r\n const singleElemetList: ElementItem[] = []\r\n let groupList: GroupItem[] = []\r\n for (const el of copyOfActiveElementList) {\r\n if (!el.groupId) {\r\n const { minX, maxX } = getElementRange(el)\r\n singleElemetList.push({ min: minX, max: maxX, el })\r\n }\r\n else {\r\n const groupEl = groupList.find(item => item.groupId === el.groupId)\r\n if (!groupEl) groupList.push({ groupId: el.groupId, els: [el] })\r\n else {\r\n groupList = groupList.map(item => item.groupId === el.groupId ? { ...item, els: [...item.els, el] } : item)\r\n }\r\n }\r\n }\r\n const formatedGroupList: GroupElementsItem[] = []\r\n for (const groupItem of groupList) {\r\n const { minX, maxX } = getElementListRange(groupItem.els)\r\n formatedGroupList.push({ min: minX, max: maxX, els: groupItem.els })\r\n }\r\n\r\n // 将普通元素和组合元素集合组合在一起,然后将每一项按位置(从左到右)排序\r\n const list: Item[] = [...singleElemetList, ...formatedGroupList]\r\n list.sort((itemA, itemB) => itemA.min - itemB.min)\r\n\r\n // 计算元素均匀分布所需要的间隔:\r\n // (所选元素整体范围 - 所有所选元素宽度和) / (所选元素数 - 1)\r\n let totalWidth = 0\r\n for (const item of list) {\r\n const width = item.max - item.min\r\n totalWidth += width\r\n }\r\n const span = ((maxX - minX) - totalWidth) / (list.length - 1)\r\n\r\n // 按位置顺序依次计算每一个元素的目标位置\r\n // 第一项中的元素即为起点,无需计算\r\n // 从第二项开始,每一项的位置应该为:上一项位置 + 上一项宽度 + 间隔\r\n // 注意此处计算的位置(pos)并非元素最终的left值,而是目标位置范围最小值(元素旋转后的left值 ≠ 范围最小值)\r\n const sortedElementData: ElementWithPos[] = []\r\n\r\n const firstItem = list[0]\r\n let lastPos: LastPos = { min: firstItem.min, max: firstItem.max }\r\n\r\n if ('el' in firstItem) {\r\n sortedElementData.push({ pos: firstItem.min, el: firstItem.el })\r\n }\r\n else {\r\n for (const el of firstItem.els) {\r\n const { minX: pos } = getElementRange(el)\r\n sortedElementData.push({ pos, el })\r\n }\r\n }\r\n\r\n for (let i = 1; i < list.length; i++) {\r\n const item = list[i]\r\n const lastWidth = lastPos.max - lastPos.min\r\n const currentPos = lastPos.min + lastWidth + span\r\n const currentWidth = item.max - item.min\r\n lastPos = { min: currentPos, max: currentPos + currentWidth }\r\n\r\n if ('el' in item) {\r\n sortedElementData.push({ pos: currentPos, el: item.el })\r\n }\r\n else {\r\n for (const el of item.els) {\r\n const { minX } = getElementRange(el)\r\n const offset = minX - item.min\r\n sortedElementData.push({ pos: currentPos + offset, el })\r\n }\r\n }\r\n }\r\n\r\n // 根据目标位置计算元素最终目标left值\r\n // 对于旋转后的元素,需要计算旋转前后left的偏移来做校正\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n\r\n for (const sortedItem of sortedElementData) {\r\n if (sortedItem.el.id === element.id) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = sortedItem.pos - offsetX\r\n }\r\n else element.left = sortedItem.pos\r\n }\r\n }\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 垂直均匀排列(逻辑类似水平均匀排列方法)\r\n const uniformVerticalDisplay = () => {\r\n const { minY, maxY } = getElementListRange(activeElementList.value)\r\n const copyOfActiveElementList: PPTElement[] = JSON.parse(JSON.stringify(activeElementList.value))\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n const singleElemetList: ElementItem[] = []\r\n let groupList: GroupItem[] = []\r\n for (const el of copyOfActiveElementList) {\r\n if (!el.groupId) {\r\n const { minY, maxY } = getElementRange(el)\r\n singleElemetList.push({ min: minY, max: maxY, el })\r\n }\r\n else {\r\n const groupEl = groupList.find(item => item.groupId === el.groupId)\r\n if (!groupEl) groupList.push({ groupId: el.groupId, els: [el] })\r\n else {\r\n groupList = groupList.map(item => item.groupId === el.groupId ? { ...item, els: [...item.els, el] } : item)\r\n }\r\n }\r\n }\r\n const formatedGroupList: GroupElementsItem[] = []\r\n for (const groupItem of groupList) {\r\n const { minY, maxY } = getElementListRange(groupItem.els)\r\n formatedGroupList.push({ min: minY, max: maxY, els: groupItem.els })\r\n }\r\n\r\n const list: Item[] = [...singleElemetList, ...formatedGroupList]\r\n list.sort((itemA, itemB) => itemA.min - itemB.min)\r\n\r\n let totalHeight = 0\r\n for (const item of list) {\r\n const height = item.max - item.min\r\n totalHeight += height\r\n }\r\n const span = ((maxY - minY) - totalHeight) / (list.length - 1)\r\n\r\n const sortedElementData: ElementWithPos[] = []\r\n\r\n const firstItem = list[0]\r\n let lastPos: LastPos = { min: firstItem.min, max: firstItem.max }\r\n\r\n if ('el' in firstItem) {\r\n sortedElementData.push({ pos: firstItem.min, el: firstItem.el })\r\n }\r\n else {\r\n for (const el of firstItem.els) {\r\n const { minY: pos } = getElementRange(el)\r\n sortedElementData.push({ pos, el })\r\n }\r\n }\r\n\r\n for (let i = 1; i < list.length; i++) {\r\n const item = list[i]\r\n const lastHeight = lastPos.max - lastPos.min\r\n const currentPos = lastPos.min + lastHeight + span\r\n const currentHeight = item.max - item.min\r\n lastPos = { min: currentPos, max: currentPos + currentHeight }\r\n\r\n if ('el' in item) {\r\n sortedElementData.push({ pos: currentPos, el: item.el })\r\n }\r\n else {\r\n for (const el of item.els) {\r\n const { minY } = getElementRange(el)\r\n const offset = minY - item.min\r\n sortedElementData.push({ pos: currentPos + offset, el })\r\n }\r\n }\r\n }\r\n\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n\r\n for (const sortedItem of sortedElementData) {\r\n if (sortedItem.el.id === element.id) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = sortedItem.pos - offsetY\r\n }\r\n else element.top = sortedItem.pos\r\n }\r\n }\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n displayItemCount,\r\n uniformHorizontalDisplay,\r\n uniformVerticalDisplay,\r\n }\r\n}","\nimport { defineComponent } from 'vue'\nimport { ElementAlignCommand } from '@/types/edit'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useAlignActiveElement from '@/hooks/useAlignActiveElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useUniformDisplayElement from '@/hooks/useUniformDisplayElement'\n\nexport default defineComponent({\n name: 'multi-position-panel',\n setup() {\n const { canCombine, combineElements, uncombineElements } = useCombineElement()\n const { alignActiveElement } = useAlignActiveElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { displayItemCount, uniformHorizontalDisplay, uniformVerticalDisplay } = useUniformDisplayElement()\n\n // 多选元素对齐,需要先判断当前所选中的元素状态:\n // 如果所选元素为一组组合元素,则将它对齐到画布;\n // 如果所选元素不是组合元素或不止一组元素(即当前为可组合状态),则将这多个(多组)元素相互对齐。\n const alignElement = (command: ElementAlignCommand) => {\n if (canCombine.value) alignActiveElement(command)\n else alignElementToCanvas(command)\n }\n\n return {\n canCombine,\n displayItemCount,\n combineElements,\n uncombineElements,\n uniformHorizontalDisplay,\n uniformVerticalDisplay,\n alignElement,\n }\n },\n})\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=88d13362&scoped=true&ts=true\"\nimport script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=88d13362&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-88d13362\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8c5938\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"symbol-panel\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"pool\" }\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = { class: \"symbol\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPoolList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.selectedSymbolKey === item.key }]),\n key: item.key,\n onClick: ($event: any) => (_ctx.selectedSymbolKey = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPool, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: index,\n onClick: ($event: any) => (_ctx.selectSymbol(item))\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item), 1)\n ], 8, _hoisted_5))\n }), 128))\n ])\n ]))\n}","export const SYMBOL_LIST = [\n {\n key: 'letter',\n label: '字母',\n children: [\n 'α', 'β', 'γ', 'δ', 'ϵ', 'ε', 'ζ', 'η', 'θ', 'ϑ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'π', 'ϖ', 'ρ', 'ϱ', 'σ', 'ς', 'τ', 'υ', 'ϕ', 'φ', 'χ', 'ψ', 'ω', \n 'Γ', 'Δ', 'Θ', 'Λ', 'Ξ', 'Π', 'Σ', 'Υ', 'Φ', 'Ψ', 'Ω',\n '𝐀', '𝐁', '𝐂', '𝐃', '𝐄', '𝐅', '𝐆', '𝐇', '𝐈', '𝐉', '𝐊', '𝐋', '𝐌', '𝐍', '𝐎', '𝐏', '𝐐', '𝐑', '𝐒', '𝐓', '𝐔', '𝐕', '𝐖', '𝐗', '𝐘', '𝐙',\n '𝐚', '𝐛', '𝐜', '𝐝', '𝐞', '𝐟', '𝐠', '𝐡', '𝐢', '𝐣', '𝐤', '𝐥', '𝐦', '𝐧', '𝐨', '𝐩', '𝐪', '𝐫', '𝐬', '𝐭', '𝐮', '𝐯', '𝐰', '𝐱', '𝐲', '𝐳',\n '𝓐', '𝓑', '𝓒', '𝓓', '𝓔', '𝓕', '𝓖', '𝓗', '𝓘', '𝓙', '𝓚', '𝓛', '𝓜', '𝓝', '𝓞', '𝓟', '𝓠', '𝓡', '𝓢', '𝓣', '𝓤', '𝓥', '𝓦', '𝓧', '𝓨', '𝓩',\n '𝓪', '𝓫', '𝓬', '𝓭', '𝓮', '𝓯', '𝓰', '𝓱', '𝓲', '𝓳', '𝓴', '𝓵', '𝓶', '𝓷', '𝓸', '𝓹', '𝓺', '𝓻', '𝓼', '𝓽', '𝓾', '𝓿', '𝔀', '𝔁', '𝔂', '𝔃',\n ],\n },\n {\n key: 'number',\n label: '序号',\n children: [\n '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳',\n '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀', '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇',\n 'º', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', '₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉',\n 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ', 'Ⅺ', 'Ⅻ', 'Ⅼ', 'Ⅽ', 'Ⅾ', 'Ⅿ',\n 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ', 'ⅺ', 'ⅻ', 'ⅼ', 'ⅽ', 'ⅾ', 'ⅿ', 'ↀ', 'ↁ', 'ↂ',\n '㊀', '㊁', '㊂', '㊃', '㊄', '㊅', '㊆', '㊇', '㊈', '㊉', '㈠', '㈡', '㈢', '㈣', '㈤', '㈥', '㈦', '㈧', '㈨', '㈩',\n '𝟘', '𝟙', '𝟚', '𝟛', '𝟜', '𝟝', '𝟞', '𝟟', '𝟠', '𝟡',\n ],\n },\n {\n key: 'math',\n label: '数学',\n children: [\n '+', '-', '×', '÷', '=', '~', '¬', '±', '%', '°', 'ǃ', '‰', '‱', '½', '⅓', '⅔', '¼', '¾',\n '<', '>', 'l', 'o', 'g', 'l', 'g', 'l', 'n', '⨂', '⨁', '⨄', '⨃', '⨅', '⨆', '√', '∛', '∜', '∝', '∞',\n '∟', '∠', '∡', '∢', '∧', '∨', '∩', '∪', '∫', '∬', '∭', '∮', '∯', '∰', '∱', '∲', '∳',\n '∴', '∵', '∼', '∽', '∾', '∿', '≃', '≄', '≅', '≆', '≇', '≈', '≊', '≋', '≌', '≍', '≎', '≏', '≐', '≑', '≒', '≓', '≔', '≕',\n '≤', '≥', '≦', '≧', '≨', '≩', '≪', '≫', '≺', '≻', '≼', '≽', '≾', '≿', '⊀', '⊁', '⊂', '⊃', '⊄', '⊅', '⊆', '⊇', '⊈', '⊉', '⊊', '⊋', '⊏', '⊐', '⊑', '⊒',\n '⊓', '⊔', '⊢', '⊣', '⊤', '⊥', '⊦', '⊧', '⊨', '⊩', '⊪', '⊫', '⊬', '⊭', '⊮', '⊯', '⊲', '⊳', '⊴', '⊵', '⋀', '⋁', '⋂', '⋃', '⋉', '⋊',\n '⋋', '⋌', '⟨', '⟩', '⟪', '⟫', '⟮', '⟯', '⧼', '⧽', '⦰',\n ],\n },\n {\n key: 'arrow',\n label: '箭头',\n children: [\n '←', '↑', '→', '↓', '↔', '↕', '↖', '↗', '↘', '↙', '↚', '↛', '↜', '↝', '↞', '↟', '↠', '↡', '↢', '↣', '↤', '↥', '↦', '↧', '↨',\n '↫', '↬', '↭', '↮', '↯', '↰', '↱', '↲', '↳', '↴', '↵', '↶', '↷', '↸', '↹', '↺', '↻', '↼', '↽', '↾', '↿', '⇀', '⇁', '⇂', '⇃',\n '⇄', '⇅', '⇆', '⇇', '⇈', '⇉', '⇊', '⇋', '⇌', '⇍', '⇎', '⇏', '⇐', '⇑', '⇒', '⇓', '⇔', '⇕', '⇖', '⇗', '⇘', '⇙', '⇚', '⇛',\n '⇜', '⇝', '⇞', '⇟', '⇠', '⇡', '⇢', '⇣', '⇤', '⇥', '⇦', '⇧', '⇨', '⇩', '⇪', '⇫', '⇬', '⇭', '⇮', '⇯', '⇰', '⇱', '⇲', '⇳', '⇴', '⇵',\n '⇶', '⇷', '⇸', '⇹', '⇺', '⇻', '⇼', '⇽', '⇾', '⇿',\n ],\n },\n {\n key: 'graph',\n label: '图形',\n children: [\n '▢', '▣', '▤', '▥', '▦', '▧', '▨', '▩', '▭', '▮', '▯', '▰', '▱', '▲', '▷', '▼', '◁',\n '◈', '◉', '◍', '◐', '◑', '◒', '◓', '◔', '◕', '◧', '◨', '◩', '◪', '◫', '◬', '◭', '◮',\n ],\n },\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { SYMBOL_LIST } from '@/configs/symbol'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\nconst symbolPoolList = SYMBOL_LIST\n\nexport default defineComponent({\n name: 'symbol-panel',\n setup() {\n const selectedSymbolKey = ref(symbolPoolList[0].key)\n const symbolPool = computed(() => {\n const selectedSymbol = symbolPoolList.find(item => item.key === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n })\n\n const selectSymbol = (item: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command: 'insert', value: item })\n }\n\n return {\n symbolPoolList,\n symbolPool,\n selectedSymbolKey,\n selectSymbol,\n }\n },\n})\n","import { render } from \"./SymbolPanel.vue?vue&type=template&id=6b8c5938&scoped=true&ts=true\"\nimport script from \"./SymbolPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SymbolPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SymbolPanel.vue?vue&type=style&index=0&id=6b8c5938&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b8c5938\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { ToolbarState, ToolbarStates } from '@/types/toolbar'\n\nimport ElementStylePanel from './ElementStylePanel/index.vue'\nimport ElementPositionPanel from './ElementPositionPanel.vue'\nimport ElementAnimationPanel from './ElementAnimationPanel.vue'\nimport SlideDesignPanel from './SlideDesignPanel.vue'\nimport SlideAnimationPanel from './SlideAnimationPanel.vue'\nimport MultiPositionPanel from './MultiPositionPanel.vue'\nimport SymbolPanel from './SymbolPanel.vue'\n\ninterface ElementTabs {\n label: string;\n value: ToolbarState;\n}\n\nexport default defineComponent({\n name: 'toolbar',\n setup() {\n const mainStore = useMainStore()\n const { activeElementIdList, handleElement, toolbarState } = storeToRefs(mainStore)\n\n const elementTabs = computed(() => {\n if (handleElement.value?.type === 'text') {\n return [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '符号', value: ToolbarStates.SYMBOL },\n { label: '位置', value: ToolbarStates.EL_POSITION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n }\n return [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '位置', value: ToolbarStates.EL_POSITION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n })\n const slideTabs = [\n { label: '设计', value: ToolbarStates.SLIDE_DESIGN },\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n const multiSelectTabs = [\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n { label: '样式', value: ToolbarStates.EL_STYLE },\n ]\n\n const setToolbarState = (value: ToolbarState) => {\n mainStore.setToolbarState(value)\n }\n\n const currentTabs = computed(() => {\n if (!activeElementIdList.value.length) return slideTabs\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\n return elementTabs.value\n })\n\n watch(currentTabs, () => {\n const currentTabsValue: ToolbarState[] = currentTabs.value.map(tab => tab.value)\n if (!currentTabsValue.includes(toolbarState.value)) {\n mainStore.setToolbarState(currentTabsValue[0])\n }\n })\n\n const currentPanelComponent = computed(() => {\n const panelMap = {\n [ToolbarStates.EL_STYLE]: ElementStylePanel,\n [ToolbarStates.EL_POSITION]: ElementPositionPanel,\n [ToolbarStates.EL_ANIMATION]: ElementAnimationPanel,\n [ToolbarStates.SLIDE_DESIGN]: SlideDesignPanel,\n [ToolbarStates.SLIDE_ANIMATION]: SlideAnimationPanel,\n [ToolbarStates.MULTI_POSITION]: MultiPositionPanel,\n [ToolbarStates.SYMBOL]: SymbolPanel,\n }\n return panelMap[toolbarState.value] || null\n })\n\n return {\n toolbarState,\n currentTabs,\n setToolbarState,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=0df9576a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0df9576a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0df9576a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a6e24c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"remark\" }\nconst _hoisted_2 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"resize-handler\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.resize($event))\n }, null, 32),\n _createElementVNode(\"textarea\", {\n value: _ctx.remark,\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[1] || (_cache[1] = $event => _ctx.handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default defineComponent({\n name: 'remark',\n emits: ['update:height'],\n props: {\n height: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n \n const remark = computed(() => currentSlide.value?.remark || '')\n\n const handleInput = (e: InputEvent) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n }\n\n const resize = (e: MouseEvent) => {\n let isMouseDown = true\n const startPageY = e.pageY\n const originHeight = props.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageY = e.pageY\n\n const moveY = currentPageY - startPageY\n let newHeight = -moveY + originHeight\n\n if (newHeight < 40) newHeight = 40\n if (newHeight > 120) newHeight = 120\n\n emit('update:height', newHeight)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n }\n }\n\n return {\n remark,\n handleInput,\n resize,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=5a6e24c6&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5a6e24c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a6e24c6\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\n\nimport useGlobalHotkey from '@/hooks/useGlobalHotkey'\nimport usePasteEvent from '@/hooks/usePasteEvent'\n\nimport EditorHeader from './EditorHeader/index.vue'\nimport Canvas from './Canvas/index.vue'\nimport CanvasTool from './CanvasTool/index.vue'\nimport Thumbnails from './Thumbnails/index.vue'\nimport Toolbar from './Toolbar/index.vue'\nimport Remark from './Remark/index.vue'\n\nexport default defineComponent({\n name: 'editor',\n components: {\n EditorHeader,\n Canvas,\n CanvasTool,\n Thumbnails,\n Toolbar,\n Remark,\n },\n setup() {\n const remarkHeight = ref(40)\n\n useGlobalHotkey()\n usePasteEvent()\n\n return {\n remarkHeight,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=55178b6a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-55178b6a\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createBlock as _createBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1d67bb30\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\nconst _hoisted_2 = { class: \"tools\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlide = _resolveComponent(\"ScreenSlide\")!\n const _component_SlideThumbnails = _resolveComponent(\"SlideThumbnails\")!\n const _component_WritingBoardTool = _resolveComponent(\"WritingBoardTool\")!\n const _component_IconLeftTwo = _resolveComponent(\"IconLeftTwo\")!\n const _component_IconRightTwo = _resolveComponent(\"IconRightTwo\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"slide-list\",\n onMousewheel: _cache[0] || (_cache[0] = $event => _ctx.mousewheelListener($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => _ctx.touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _ctx.slideIndex,\n 'before': index < _ctx.slideIndex,\n 'after': index > _ctx.slideIndex,\n 'hide': (index === _ctx.slideIndex - 1 || index === _ctx.slideIndex + 1) && slide.turningMode !== _ctx.currentSlide.turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_ctx.slideIndex - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: _ctx.slideWidth + 'px',\n height: _ctx.slideHeight + 'px',\n })\n }, [\n _createVNode(_component_ScreenSlide, {\n slide: slide,\n scale: _ctx.scale,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ]),\n (_ctx.slideThumbnailModelVisible)\n ? (_openBlock(), _createBlock(_component_SlideThumbnails, {\n key: 0,\n turnSlideToIndex: _ctx.turnSlideToIndex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (_ctx.slideThumbnailModelVisible = false))\n }, null, 8, [\"turnSlideToIndex\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.writingBoardToolVisible)\n ? (_openBlock(), _createBlock(_component_WritingBoardTool, {\n key: 1,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_IconLeftTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.execPrev()))\n }),\n _createVNode(_component_IconRightTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.execNext()))\n }),\n _createVNode(_component_IconWrite, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.writingBoardToolVisible = true))\n })\n ]),\n (_ctx.showPageNumber)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"page-number\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.slideThumbnailModelVisible = true))\n }, _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenElement = _resolveComponent(\"ScreenElement\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-slide\",\n style: _normalizeStyle({\n width: _ctx.VIEWPORT_SIZE + 'px',\n height: _ctx.VIEWPORT_SIZE * _ctx.viewportRatio + 'px',\n transform: `scale(${_ctx.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle({ ..._ctx.backgroundStyle })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(_component_ScreenElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\"]))\n }), 128))\n ], 4))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b227002\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\", \"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"screen-element\", { 'link': _ctx.elementInfo.link }]),\n id: `screen-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n color: _ctx.theme.fontColor,\n fontFamily: _ctx.theme.fontName,\n visibility: _ctx.needWaitAnimation ? 'hidden' : 'visible',\n }),\n title: _ctx.elementInfo.link?.target || '',\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.openLink()))\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]))\n ], 14, _hoisted_1))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BaseChartElement = _resolveComponent(\"BaseChartElement\")!\n\n return (_openBlock(), _createBlock(_component_BaseChartElement, {\n class: \"screen-element-chart\",\n elementInfo: _ctx.elementInfo,\n needScaleSize: false\n }, null, 8, [\"elementInfo\"]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTChartElement } from '@/types/slides'\n\nimport BaseChartElement from './BaseChartElement.vue'\n\nexport default defineComponent({\n name: 'screen-element-chart',\n components: {\n BaseChartElement,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./ScreenChartElement.vue?vue&type=template&id=645e6419&ts=true\"\nimport script from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a45a17a4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPlayer = _resolveComponent(\"VideoPlayer\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_ctx.inCurrentSlide)\n ? (_openBlock(), _createBlock(_component_VideoPlayer, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _ctx.scale\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, inject, PropType, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\nexport default defineComponent({\n name: 'screen-element-video',\n components: {\n VideoPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup() {\n const { currentSlide } = storeToRefs(useSlidesStore())\n\n const scale: Ref = inject('slideScale') || ref(1)\n const slideId: Ref = inject('slideId') || ref('')\n\n const inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\n return {\n scale,\n inCurrentSlide,\n }\n },\n})\n","import { render } from \"./ScreenVideoElement.vue?vue&type=template&id=a45a17a4&scoped=true&ts=true\"\nimport script from \"./ScreenVideoElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenVideoElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenVideoElement.vue?vue&type=style&index=0&id=a45a17a4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a45a17a4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b08df80e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_AudioPlayer = _resolveComponent(\"AudioPlayer\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n }),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle()))\n }, null, 8, [\"style\"]),\n (_ctx.inCurrentSlide)\n ? (_openBlock(), _createBlock(_component_AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n ref: \"audioPlayerRef\",\n style: _normalizeStyle({ ..._ctx.audioPlayerPosition }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n autoplay: _ctx.elementInfo.autoplay,\n scale: _ctx.scale\n }, null, 8, [\"style\", \"src\", \"loop\", \"autoplay\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, inject, PropType, ref, Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\nexport default defineComponent({\n name: 'screen-element-audio',\n components: {\n AudioPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const { viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\n const scale: Ref = inject('slideScale') || ref(1)\n const slideId: Ref = inject('slideId') || ref('')\n\n const inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n const audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / scale.value\n const audioHeight = 50 / scale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n })\n\n const audioPlayerRef = ref()\n const toggle = () => {\n if (!audioPlayerRef.value) return\n audioPlayerRef.value.toggle()\n }\n\n return {\n scale,\n inCurrentSlide,\n audioIconSize,\n audioPlayerPosition,\n audioPlayerRef,\n toggle,\n }\n },\n})\n","import { render } from \"./ScreenAudioElement.vue?vue&type=template&id=b08df80e&scoped=true&ts=true\"\nimport script from \"./ScreenAudioElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenAudioElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenAudioElement.vue?vue&type=style&index=0&id=b08df80e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b08df80e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ElementTypes, PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport ScreenChartElement from '@/views/components/element/ChartElement/ScreenChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport ScreenVideoElement from '@/views/components/element/VideoElement/ScreenVideoElement.vue'\nimport ScreenAudioElement from '@/views/components/element/AudioElement/ScreenAudioElement.vue'\n\nexport default defineComponent({\n name: 'screen-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n default: -1,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: ScreenChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: ScreenVideoElement,\n [ElementTypes.AUDIO]: ScreenAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n const { currentSlide, theme } = storeToRefs(useSlidesStore())\n\n // 判断元素是否需要等待执行入场动画:等待执行的元素需要先隐藏\n const needWaitAnimation = computed(() => {\n const animations = currentSlide.value.animations || []\n const elementIndexInAnimation = animations.findIndex(animation => animation.elId === props.elementInfo.id)\n if (elementIndexInAnimation !== -1 && elementIndexInAnimation >= props.animationIndex) return true\n return false \n })\n\n // 打开元素绑定的超链接\n const openLink = () => {\n const link = props.elementInfo.link\n if (link) {\n if (link.type === 'web') window.open(link.target)\n else if (link.type === 'slide') props.turnSlideToId(link.target)\n }\n }\n\n return {\n currentElementComponent,\n needWaitAnimation,\n theme,\n openLink,\n }\n },\n})\n","import { render } from \"./ScreenElement.vue?vue&type=template&id=3b227002&scoped=true&ts=true\"\nimport script from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenElement.vue?vue&type=style&index=0&id=3b227002&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b227002\"]])\n\nexport default __exports__","\nimport { computed, PropType, defineComponent, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ScreenElement from './ScreenElement.vue'\n\nexport default defineComponent({\n name: 'screen-slide',\n components: {\n ScreenElement,\n },\n props: {\n slide: {\n type: Object as PropType,\n required: true,\n },\n scale: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n default: -1,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n },\n setup(props) {\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => props.slide.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const slideId = computed(() => props.slide.id)\n provide('slideId', slideId)\n\n return {\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=7827b40a&scoped=true&ts=true\"\nimport script from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=7827b40a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7827b40a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2236d5e3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-thumbnails\" }\nconst _hoisted_2 = { class: \"return-button\" }\nconst _hoisted_3 = { class: \"slide-thumbnails-content\" }\nconst _hoisted_4 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconArrowCircleLeft = _resolveComponent(\"IconArrowCircleLeft\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_IconArrowCircleLeft, {\n class: \"icon\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.close()))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _ctx.slideIndex }]),\n key: slide.id,\n onClick: ($event: any) => (_ctx.turnSlideToIndex(index))\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: 150,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_4))\n }), 128))\n ])\n ]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'slide-thumbnails',\n emits: ['close'],\n components: {\n ThumbnailSlide,\n },\n props: {\n turnSlideToIndex: {\n type: Function as PropType<(index: number) => void>,\n },\n },\n setup(props, { emit }) {\n const { slides, slideIndex } = storeToRefs(useSlidesStore())\n\n const { slidesLoadLimit } = useLoadSlides()\n\n const close = () => emit('close')\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n close,\n }\n },\n})\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=2236d5e3&scoped=true&ts=true\"\nimport script from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=2236d5e3&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2236d5e3\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, Teleport as _Teleport, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7a2e5324\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"tools\" }\nconst _hoisted_3 = { class: \"colors\" }\nconst _hoisted_4 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WritingBoard = _resolveComponent(\"WritingBoard\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconErase = _resolveComponent(\"IconErase\")!\n const _component_IconClear = _resolveComponent(\"IconClear\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_component_WritingBoard, {\n ref: \"writingBoardRef\",\n color: _ctx.writingBoardColor,\n blackboard: _ctx.blackboard,\n model: _ctx.writingBoardModel\n }, null, 8, [\"color\", \"blackboard\", \"model\"])\n ])),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.writingBoardModel === 'pen' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changePen()))\n }, [\n _createVNode(_component_IconWrite, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"橡皮擦\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.writingBoardModel === 'eraser' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeEraser()))\n }, [\n _createVNode(_component_IconErase, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"清除墨迹\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.clearCanvas()))\n }, [\n _createVNode(_component_IconClear, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"黑板\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.blackboard }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.blackboard = !_ctx.blackboard))\n }, [\n _createVNode(_component_IconFill, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.writingBoardColors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"color\", { 'active': color === _ctx.writingBoardColor }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (_ctx.changeColor(color))\n }, null, 14, _hoisted_4))\n }), 128))\n ]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"关闭画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7ff9fa00\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"writing-board\",\n ref: \"writingBoardRef\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"blackboard\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.blackboard)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"canvas\", {\n class: \"canvas\",\n ref: \"canvasRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMousedown($event)),\n onMousemove: _cache[1] || (_cache[1] = $event => _ctx.handleMousemove($event)),\n onMouseup: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleMouseup())),\n onTouchstart: _cache[3] || (_cache[3] = $event => _ctx.handleMousedown($event)),\n onTouchmove: _cache[4] || (_cache[4] = $event => _ctx.handleMousemove($event)),\n onTouchend: _cache[5] || (_cache[5] = ($event: any) => {_ctx.handleMouseup(); _ctx.mouseInCanvas = false}),\n onMouseleave: _cache[6] || (_cache[6] = ($event: any) => {_ctx.handleMouseup(); _ctx.mouseInCanvas = false}),\n onMouseenter: _cache[7] || (_cache[7] = ($event: any) => (_ctx.mouseInCanvas = true))\n }, null, 544),\n (_ctx.mouseInCanvas && _ctx.model === 'pen')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"pen\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.penSize / 2 + 'px',\n top: _ctx.mouse.y - 36 + _ctx.penSize / 2 + 'px',\n color: _ctx.color,\n })\n }, [\n _createVNode(_component_IconWrite, {\n class: \"icon\",\n size: \"36\"\n })\n ], 4))\n : _createCommentVNode(\"\", true),\n (_ctx.mouseInCanvas && _ctx.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"eraser\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.rubberSize / 2 + 'px',\n top: _ctx.mouse.y - _ctx.rubberSize / 2 + 'px',\n width: _ctx.rubberSize + 'px',\n height: _ctx.rubberSize + 'px',\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 512))\n}","\nimport { defineComponent, onMounted, PropType, reactive, ref } from 'vue'\n\nconst penSize = 6\nconst rubberSize = 80\n\nexport default defineComponent({\n name: 'writing-board',\n props: {\n color: {\n type: String,\n default: '#ffcc00',\n },\n model: {\n type: String as PropType<'pen' | 'eraser'>,\n default: 'pen',\n },\n blackboard: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n let ctx: CanvasRenderingContext2D | null = null\n const writingBoardRef = ref()\n const canvasRef = ref()\n\n let lastPos = {\n x: 0,\n y: 0,\n }\n let isMouseDown = false\n let lastTime = 0\n let lastLineWidth = -1\n\n // 鼠标位置坐标:用于画笔或橡皮位置跟随\n const mouse = reactive({\n x: 0,\n y: 0,\n })\n\n // 更新鼠标位置坐标\n const updateMousePosition = (x: number, y: number) => {\n mouse.x = x\n mouse.y = y\n }\n \n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\n const mouseInCanvas = ref(false)\n\n\n // 初始化画布\n const initCanvas = () => {\n if (!canvasRef.value || !writingBoardRef.value) return\n\n ctx = canvasRef.value.getContext('2d')\n if (!ctx) return\n\n canvasRef.value.width = writingBoardRef.value.clientWidth\n canvasRef.value.height = writingBoardRef.value.clientHeight\n\n canvasRef.value.style.width = writingBoardRef.value.clientWidth + 'px'\n canvasRef.value.style.height = writingBoardRef.value.clientHeight + 'px'\n\n ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n }\n onMounted(initCanvas)\n\n // 绘制画笔墨迹方法\n const draw = (posX: number, posY: number, lineWidth: number) => {\n if (!ctx) return\n\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n\n ctx.lineWidth = lineWidth\n ctx.strokeStyle = props.color\n ctx.beginPath()\n ctx.moveTo(lastPosX, lastPosY)\n ctx.lineTo(posX, posY)\n ctx.stroke()\n ctx.closePath()\n }\n\n // 擦除墨迹方法\n const erase = (posX: number, posY: number) => {\n if (!ctx || !canvasRef.value) return\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n\n const radius = rubberSize / 2\n\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\n\n ctx.save()\n ctx.beginPath()\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n\n ctx.save()\n ctx.beginPath()\n ctx.moveTo(...rectPoint1)\n ctx.lineTo(...rectPoint3)\n ctx.lineTo(...rectPoint4)\n ctx.lineTo(...rectPoint2)\n ctx.closePath()\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n }\n\n // 计算鼠标两次移动之间的距离\n const getDistance = (posX: number, posY: number) => {\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n return Math.sqrt((posX - lastPosX) * (posX - lastPosX) + (posY - lastPosY) * (posY - lastPosY))\n }\n\n // 根据鼠标两次移动之间的距离s和时间t计算绘制速度,速度越快,墨迹越细\n const getLineWidth = (s: number, t: number) => {\n const maxV = 10\n const minV = 0.1\n const maxWidth = penSize\n const minWidth = 3\n const v = s / t\n let lineWidth\n\n if (v <= minV) lineWidth = maxWidth\n else if (v >= maxV) lineWidth = minWidth\n else lineWidth = maxWidth - v / maxV * maxWidth\n\n if (lastLineWidth === -1) return lineWidth\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\n }\n\n // 路径操作\n const handleMove = (x: number, y: number) => {\n const time = new Date().getTime()\n\n if (props.model === 'pen') {\n const s = getDistance(x, y)\n const t = time - lastTime\n const lineWidth = getLineWidth(s, t)\n\n draw(x, y, lineWidth)\n lastLineWidth = lineWidth\n }\n else erase(x, y)\n\n lastPos = {x, y}\n lastTime = new Date().getTime()\n }\n\n // 处理鼠标(触摸)事件\n // 准备开始绘制/擦除墨迹(落笔)\n const handleMousedown = (e: MouseEvent | TouchEvent) => {\n const x = e instanceof MouseEvent ? e.offsetX : e.changedTouches[0].pageX\n const y = e instanceof MouseEvent ? e.offsetY : e.changedTouches[0].pageY\n\n isMouseDown = true\n lastPos = { x, y }\n lastTime = new Date().getTime()\n\n if (e instanceof TouchEvent) {\n updateMousePosition(x, y)\n mouseInCanvas.value = true\n }\n }\n\n // 开始绘制/擦除墨迹(移动)\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const x = e instanceof MouseEvent ? e.offsetX : e.changedTouches[0].pageX\n const y = e instanceof MouseEvent ? e.offsetY : e.changedTouches[0].pageY\n\n updateMousePosition(x, y)\n\n if (isMouseDown) handleMove(x, y)\n }\n\n // 结束绘制/擦除墨迹(停笔)\n const handleMouseup = () => {\n if (!isMouseDown) return\n isMouseDown = false\n }\n\n // 清空画布\n const clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n }\n\n return {\n mouse,\n mouseInCanvas,\n penSize,\n rubberSize,\n writingBoardRef,\n canvasRef,\n handleMousedown,\n handleMousemove,\n handleMouseup,\n clearCanvas,\n }\n },\n})\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=7ff9fa00&scoped=true&ts=true\"\nimport script from \"./WritingBoard.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=7ff9fa00&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7ff9fa00\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\n\nexport default defineComponent({\n name: 'writing-board-tool',\n emits: ['close'],\n components: {\n WritingBoard,\n },\n setup(props, { emit }) {\n const writingBoardRef = ref()\n const writingBoardColor = ref('#e2534d')\n const writingBoardModel = ref('pen')\n const blackboard = ref(false)\n\n // 切换到画笔状态\n const changePen = () => {\n writingBoardModel.value = 'pen'\n }\n\n // 切换到橡皮状态\n const changeEraser = () => {\n writingBoardModel.value = 'eraser'\n }\n\n // 清除画布上的墨迹\n const clearCanvas = () => {\n writingBoardRef.value.clearCanvas()\n }\n\n // 修改画笔颜色,如果当前不处于画笔状态则先切换到画笔状态\n const changeColor = (color: string) => {\n if (writingBoardModel.value !== 'pen') writingBoardModel.value = 'pen'\n writingBoardColor.value = color\n }\n \n // 关闭写字板\n const closeWritingBoard = () => {\n emit('close')\n }\n\n return {\n writingBoardRef,\n writingBoardColors,\n writingBoardColor,\n writingBoardModel,\n blackboard,\n changePen,\n changeEraser,\n clearCanvas,\n changeColor,\n closeWritingBoard,\n }\n },\n})\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=7a2e5324&scoped=true&ts=true\"\nimport script from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=7a2e5324&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7a2e5324\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, onUnmounted, provide, ref } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { KEYS } from '@/configs/hotkey'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { isFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\n\nimport { message } from 'ant-design-vue'\n\nimport ScreenSlide from './ScreenSlide.vue'\nimport SlideThumbnails from './SlideThumbnails.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'screen',\n components: {\n ScreenSlide,\n SlideThumbnails,\n WritingBoardTool,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const slideWidth = ref(0)\n const slideHeight = ref(0)\n\n const scale = computed(() => slideWidth.value / VIEWPORT_SIZE)\n\n const showPageNumber = ref(false)\n\n const slideThumbnailModelVisible = ref(false)\n\n const writingBoardToolVisible = ref(false)\n\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\n const setSlideContentSize = () => {\n const winWidth = document.body.clientWidth\n const winHeight = document.body.clientHeight\n let width, height\n\n if (winHeight / winWidth === viewportRatio.value) {\n width = winWidth\n height = winHeight\n }\n else if (winHeight / winWidth > viewportRatio.value) {\n width = winWidth\n height = winWidth * viewportRatio.value\n }\n else {\n width = winHeight / viewportRatio.value\n height = winHeight\n }\n slideWidth.value = width\n slideHeight.value = height\n }\n\n // 窗口尺寸变化监听:窗口发生变化时更新幻灯片的大小\n // 如果退出了全屏,需要返回到编辑模式\n const { exitScreening } = useScreening()\n\n const windowResizeListener = () => {\n setSlideContentSize()\n if (!isFullscreen()) exitScreening()\n }\n\n onMounted(() => {\n setSlideContentSize()\n window.addEventListener('resize', windowResizeListener)\n })\n onUnmounted(() => {\n window.removeEventListener('resize', windowResizeListener)\n })\n\n // 当前页的元素动画列表和当前执行到的位置\n const animations = computed(() => currentSlide.value.animations || [])\n const animationIndex = ref(0)\n\n // 执行元素的入场动画\n const runAnimation = () => {\n const prefix = 'animate__'\n const animation = animations.value[animationIndex.value]\n animationIndex.value += 1\n\n const elRef = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (elRef) {\n const animationName = `${prefix}${animation.type}`\n document.documentElement.style.setProperty('--animate-duration', `${animation.duration}ms`)\n elRef.classList.add(`${prefix}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${prefix}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 关闭自动播放\n const autoPlayTimer = ref(0)\n const closeAutoPlay = () => {\n if (autoPlayTimer.value) {\n clearInterval(autoPlayTimer.value)\n autoPlayTimer.value = 0\n }\n }\n onUnmounted(closeAutoPlay)\n\n const throttleMassage = throttle(function(msg) {\n message.success(msg)\n }, 1000, { leading: true, trailing: false })\n\n // 向上/向下播放\n // 遇到元素动画时,优先执行动画播放,无动画则执行翻页\n // 向上播放遇到动画时,仅撤销到动画执行前的状态,不需要反向播放动画\n const execPrev = () => {\n if (animations.value.length && animationIndex.value > 0) {\n animationIndex.value -= 1\n }\n else if (slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n const lastIndex = animations.value ? animations.value.length : 0\n animationIndex.value = lastIndex\n }\n else {\n throttleMassage('已经是第一页了')\n }\n }\n const execNext = () => {\n if (animations.value.length && animationIndex.value < animations.value.length) {\n runAnimation()\n }\n else if (slideIndex.value < slides.value.length - 1) {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n animationIndex.value = 0\n }\n else {\n throttleMassage('已经是最后一页了')\n closeAutoPlay()\n }\n }\n\n // 自动播放\n const autoPlay = () => {\n closeAutoPlay()\n message.success('开始自动放映')\n autoPlayTimer.value = setInterval(execNext, 2500)\n }\n\n // 鼠标滚动翻页\n const mousewheelListener = throttle(function(e: WheelEvent) {\n if (e.deltaY < 0) execPrev()\n else if (e.deltaY > 0) execNext()\n }, 500, { leading: true, trailing: false })\n\n // 触摸屏上下滑动翻页\n const touchInfo = ref<{ x: number; y: number; } | null>(null)\n\n const touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n }\n const touchEndListener = (e: TouchEvent) => {\n if (!touchInfo.value) return\n\n const offsetX = Math.abs(touchInfo.value.x - e.changedTouches[0].pageX)\n const offsetY = e.changedTouches[0].pageY - touchInfo.value.y\n\n if ( Math.abs(offsetY) > offsetX && Math.abs(offsetY) > 50 ) {\n touchInfo.value = null\n \n if (offsetY > 0) execPrev()\n else execNext()\n }\n }\n\n // 快捷键翻页\n const keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.UP || key === KEYS.LEFT) execPrev()\n else if (\n key === KEYS.DOWN || \n key === KEYS.RIGHT ||\n key === KEYS.SPACE || \n key === KEYS.ENTER\n ) execNext()\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n })\n\n // 切换到上一张/上一张幻灯片(无视元素的入场动画)\n const turnPrevSlide = () => {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n animationIndex.value = 0\n }\n const turnNextSlide = () => {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n animationIndex.value = 0\n }\n\n // 切换幻灯片到指定的页面\n const turnSlideToIndex = (index: number) => {\n slideThumbnailModelVisible.value = false\n slidesStore.updateSlideIndex(index)\n animationIndex.value = 0\n }\n const turnSlideToId = (id: string) => {\n const index = slides.value.findIndex(slide => slide.id === id)\n if (index !== -1) {\n slidesStore.updateSlideIndex(index)\n animationIndex.value = 0\n }\n }\n\n const contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '上一页',\n subText: '↑ ←',\n disable: slideIndex.value <= 0,\n handler: () => turnPrevSlide(),\n },\n {\n text: '下一页',\n subText: '↓ →',\n disable: slideIndex.value >= slides.value.length - 1,\n handler: () => turnNextSlide(),\n },\n {\n text: '第一页',\n disable: slideIndex.value === 0,\n handler: () => turnSlideToIndex(0),\n },\n {\n text: '最后一页',\n disable: slideIndex.value === slides.value.length - 1,\n handler: () => turnSlideToIndex(slides.value.length - 1),\n },\n { divider: true },\n {\n text: '显示页码',\n subText: showPageNumber.value ? '√' : '',\n handler: () => showPageNumber.value = !showPageNumber.value,\n },\n {\n text: '查看所有幻灯片',\n handler: () => slideThumbnailModelVisible.value = true,\n },\n {\n text: '画笔',\n handler: () => writingBoardToolVisible.value = true,\n },\n { divider: true },\n {\n text: autoPlayTimer.value ? '取消自动放映' : '自动放映',\n handler: autoPlayTimer.value ? closeAutoPlay : autoPlay,\n },\n {\n text: '结束放映',\n subText: 'ESC',\n handler: exitScreening,\n },\n ]\n }\n \n provide('slideScale', scale)\n\n return {\n slides,\n slideIndex,\n currentSlide,\n slideWidth,\n slideHeight,\n scale,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n animationIndex,\n contextmenus,\n execPrev,\n execNext,\n slideThumbnailModelVisible,\n turnSlideToIndex,\n turnSlideToId,\n writingBoardToolVisible,\n showPageNumber,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=1d67bb30&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1d67bb30&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1d67bb30\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72b587f9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"mobile\",\n ref: \"mobileRef\"\n}\nconst _hoisted_2 = { class: \"thumbnail-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Alert = _resolveComponent(\"Alert\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Alert, {\n class: \"tip\",\n message: \"注意\",\n description: \"移动设备下仅支持预览,请在PC上进行编辑\",\n type: \"warning\",\n closable: \"\",\n \"show-icon\": \"\"\n }),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: _ctx.slideWidth,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ])\n ], 512))\n}","\nimport { defineComponent, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'thumbnails',\n components: {\n ThumbnailSlide,\n },\n setup() {\n const { slides } = storeToRefs(useSlidesStore())\n\n const { slidesLoadLimit } = useLoadSlides()\n const { enterScreening } = useScreening()\n\n const mobileRef = ref()\n const slideWidth = ref(0)\n\n onMounted(() => {\n if (!mobileRef.value) return\n slideWidth.value = mobileRef.value.clientWidth - 10\n })\n\n return {\n slides,\n slidesLoadLimit,\n mobileRef,\n slideWidth,\n enterScreening,\n }\n },\n})\n","import { render } from \"./Mobile.vue?vue&type=template&id=72b587f9&scoped=true&ts=true\"\nimport script from \"./Mobile.vue?vue&type=script&lang=ts\"\nexport * from \"./Mobile.vue?vue&type=script&lang=ts\"\n\nimport \"./Mobile.vue?vue&type=style&index=0&id=72b587f9&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-72b587f9\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { isPC } from './utils/common'\n\nimport Editor from './views/Editor/index.vue'\nimport Screen from './views/Screen/index.vue'\nimport Mobile from './views/Mobile.vue'\n\nexport default defineComponent({\n name: 'app',\n components: {\n Editor,\n Screen,\n Mobile,\n },\n setup() {\n const mainStore = useMainStore()\n const snapshotStore = useSnapshotStore()\n const { screening } = storeToRefs(useScreenStore())\n\n if (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n }\n\n onMounted(() => {\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n })\n\n return {\n screening,\n isPC: isPC(),\n }\n },\n})\n","import { render } from \"./App.vue?vue&type=template&id=039e9a08&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=039e9a08&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// https://iconpark.bytedance.com/official\n\nimport { App } from 'vue'\nimport {\n PlayOne,\n Lock,\n Unlock,\n Ppt,\n Format,\n Picture,\n FullScreen,\n List,\n OrderedList,\n Helpcenter,\n FlipVertically,\n FlipHorizontally,\n FontSize,\n Code,\n TextBold,\n TextItalic,\n TextUnderline,\n Strikethrough,\n Edit,\n Quote,\n BackgroundColor,\n Group,\n Ungroup,\n Back,\n Next,\n Fullwidth,\n AlignTop,\n AlignLeft,\n AlignRight,\n AlignBottom,\n AlignVertically,\n AlignHorizontally,\n BringToFront,\n SendToBack,\n AlignTextLeft,\n AlignTextRight,\n AlignTextCenter,\n RowHeight,\n Write,\n InsertTable,\n AddText,\n Fill,\n Tailoring,\n Effects,\n ColorFilter,\n Down,\n Plus,\n Minus,\n Connection,\n BringToFrontOne,\n SentToBack,\n Github,\n ChartProportion,\n ChartHistogram,\n ChartLine,\n ChartPie,\n Text,\n Rotate,\n LeftTwo,\n RightTwo,\n Platte,\n UpOne,\n DownOne,\n Close,\n CloseSmall,\n Undo,\n Transform,\n Click,\n Theme,\n ArrowCircleLeft,\n GraphicDesign,\n Logout,\n Erase,\n Clear,\n FolderClose,\n AlignTextTopOne,\n AlignTextBottomOne,\n AlignTextMiddleOne,\n Pause,\n VolumeMute,\n VolumeNotice,\n VolumeSmall,\n VideoTwo,\n Formula,\n} from '@icon-park/vue-next'\n\nexport default {\n install(app: App) {\n // 插入元素\n app.component('IconFontSize', FontSize)\n app.component('IconPicture', Picture)\n app.component('IconGraphicDesign', GraphicDesign)\n app.component('IconConnection', Connection)\n app.component('IconChartProportion', ChartProportion)\n app.component('IconInsertTable', InsertTable)\n app.component('IconVideoTwo', VideoTwo)\n app.component('IconFormula', Formula)\n\n // 锁定与解锁\n app.component('IconLock', Lock)\n app.component('IconUnlock', Unlock)\n\n // 全屏\n app.component('IconFullScreen', FullScreen)\n\n // 撤销重做\n app.component('IconBack', Back)\n app.component('IconNext', Next) \n \n // 对齐\n app.component('IconAlignTop', AlignTop)\n app.component('IconAlignLeft', AlignLeft)\n app.component('IconAlignRight', AlignRight)\n app.component('IconAlignBottom', AlignBottom)\n app.component('IconAlignVertically', AlignVertically)\n app.component('IconAlignHorizontally', AlignHorizontally)\n\n // 层级\n app.component('IconBringToFront', BringToFront)\n app.component('IconSentToBack', SentToBack)\n app.component('IconBringToFrontOne', BringToFrontOne)\n app.component('IconSendToBack', SendToBack)\n\n // 组合\n app.component('IconGroup', Group)\n app.component('IconUngroup', Ungroup)\n\n // 通用元素编辑\n app.component('IconFill', Fill)\n app.component('IconBackgroundColor', BackgroundColor)\n app.component('IconPlatte', Platte)\n \n // 图片编辑\n app.component('IconTailoring', Tailoring)\n app.component('IconColorFilter', ColorFilter)\n app.component('IconFlipVertically', FlipVertically)\n app.component('IconFlipHorizontally', FlipHorizontally)\n\n // 文字编辑\n app.component('IconText', Text)\n app.component('IconAddText', AddText)\n app.component('IconAlignTextLeft', AlignTextLeft)\n app.component('IconAlignTextRight', AlignTextRight)\n app.component('IconAlignTextCenter', AlignTextCenter)\n app.component('IconRowHeight', RowHeight)\n app.component('IconFullwidth', Fullwidth)\n app.component('IconCode', Code)\n app.component('IconTextBold', TextBold)\n app.component('IconTextItalic', TextItalic)\n app.component('IconTextUnderline', TextUnderline)\n app.component('IconStrikethrough', Strikethrough)\n app.component('IconQuote', Quote)\n app.component('IconList', List)\n app.component('IconOrderedList', OrderedList)\n app.component('IconUpOne', UpOne)\n app.component('IconDownOne', DownOne)\n app.component('IconFormat', Format)\n app.component('IconAlignTextTopOne', AlignTextTopOne)\n app.component('IconAlignTextBottomOne', AlignTextBottomOne)\n app.component('IconAlignTextMiddleOne', AlignTextMiddleOne)\n\n // 箭头与符号\n app.component('IconDown', Down)\n app.component('IconLeftTwo', LeftTwo)\n app.component('IconRightTwo', RightTwo)\n app.component('IconPlus', Plus)\n app.component('IconMinus', Minus)\n app.component('IconClose', Close)\n app.component('IconCloseSmall', CloseSmall)\n \n // 图表\n app.component('IconChartHistogram', ChartHistogram)\n app.component('IconChartLine', ChartLine)\n app.component('IconChartPie', ChartPie)\n\n // 其他\n app.component('IconPlayOne', PlayOne)\n app.component('IconPpt', Ppt)\n app.component('IconHelpcenter', Helpcenter)\n app.component('IconGithub', Github)\n app.component('IconWrite', Write)\n app.component('IconErase', Erase)\n app.component('IconEffects', Effects)\n app.component('IconRotate', Rotate)\n app.component('IconEdit', Edit)\n app.component('IconUndo', Undo)\n app.component('IconTransform', Transform)\n app.component('IconClick', Click)\n app.component('IconTheme', Theme)\n app.component('IconArrowCircleLeft', ArrowCircleLeft)\n app.component('IconLogout', Logout)\n app.component('IconClear', Clear)\n app.component('IconFolderClose', FolderClose)\n\n // 视频播放器\n app.component('IconPause', Pause)\n app.component('IconVolumeMute', VolumeMute)\n app.component('IconVolumeNotice', VolumeNotice)\n app.component('IconVolumeSmall', VolumeSmall)\n }\n}","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d6089858\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref: \"inputRef\",\n accept: _ctx.accept,\n onChange: _cache[0] || (_cache[0] = $event => _ctx.handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\n\nexport default defineComponent({\n name: 'file-input',\n emits: ['change'],\n props: {\n accept: {\n type: String,\n default: 'image/*',\n },\n },\n setup(props, { emit }) {\n const inputRef = ref()\n\n const handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n }\n const handleChange = (e: InputEvent) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n }\n\n return {\n handleClick,\n handleChange,\n inputRef,\n }\n },\n})\n","import { render } from \"./FileInput.vue?vue&type=template&id=d6089858&scoped=true&ts=true\"\nimport script from \"./FileInput.vue?vue&type=script&lang=ts\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=d6089858&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d6089858\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"checkbox-button\", { 'checked': $props.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ], 2))\n}","\r\nexport default {\r\n name: 'checkbox-button',\r\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./CheckboxButton.vue?vue&type=template&id=7cae2b90&scoped=true&ts=true\"\nimport script from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7cae2b90\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7dafd0a9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"checkbox-button-group\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\r\nexport default {\r\n name: 'checkbox-button-group',\r\n}\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=7dafd0a9&scoped=true&ts=true\"\nimport script from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7dafd0a9\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-210672ee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-picker\" }\nconst _hoisted_2 = { class: \"picker-saturation-wrap\" }\nconst _hoisted_3 = { class: \"picker-controls\" }\nconst _hoisted_4 = { class: \"picker-color-wrap\" }\nconst _hoisted_5 = { class: \"picker-sliders\" }\nconst _hoisted_6 = { class: \"picker-hue-wrap\" }\nconst _hoisted_7 = { class: \"picker-alpha-wrap\" }\nconst _hoisted_8 = { class: \"picker-field\" }\nconst _hoisted_9 = { class: \"picker-presets\" }\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = { class: \"picker-gradient-presets\" }\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = { class: \"picker-presets\" }\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = {\n key: 0,\n class: \"recent-colors-title\"\n}\nconst _hoisted_16 = { class: \"recent-colors\" }\nconst _hoisted_17 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Saturation = _resolveComponent(\"Saturation\")!\n const _component_Checkboard = _resolveComponent(\"Checkboard\")!\n const _component_Hue = _resolveComponent(\"Hue\")!\n const _component_Alpha = _resolveComponent(\"Alpha\")!\n const _component_EditableInput = _resolveComponent(\"EditableInput\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Saturation, {\n value: _ctx.color,\n hue: _ctx.hue,\n onColorChange: _cache[0] || (_cache[0] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"picker-current-color\",\n style: _normalizeStyle({ background: _ctx.currentColor })\n }, null, 4),\n _createVNode(_component_Checkboard)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Hue, {\n value: _ctx.color,\n hue: _ctx.hue,\n onColorChange: _cache[1] || (_cache[1] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Alpha, {\n value: _ctx.color,\n onColorChange: _cache[2] || (_cache[2] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_EditableInput, {\n value: _ctx.color,\n onColorChange: _cache[3] || (_cache[3] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themeColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-presets-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_10))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetColors, (col, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-gradient-col\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(col, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-gradient-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_12))\n }), 128))\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.standardColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_14))\n }), 128))\n ]),\n (_ctx.recentColors.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, \"最近使用:\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.recentColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_17))\n }), 128))\n ])\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6f2cb744\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alpha\" }\nconst _hoisted_2 = { class: \"alpha-checkboard-wrap\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"alpha-picker\" }, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Checkboard = _resolveComponent(\"Checkboard\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Checkboard)\n ]),\n _createElementVNode(\"div\", {\n class: \"alpha-gradient\",\n style: _normalizeStyle({ background: _ctx.gradientColor })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"alpha-container\",\n ref: \"alphaRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"alpha-pointer\",\n style: _normalizeStyle({ left: _ctx.color.a * 100 + '%' })\n }, _hoisted_4, 4)\n ], 544)\n ]))\n}","import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"checkerboard\",\n style: _normalizeStyle(_ctx.bgStyle)\n }, null, 4))\n}","\nimport { computed, defineComponent } from 'vue'\n\nconst checkboardCache = {}\n\nconst renderCheckboard = (white: string, grey: string, size: number) => {\n const canvas = document.createElement('canvas')\n canvas.width = canvas.height = size * 2\n const ctx = canvas.getContext('2d')\n \n if (!ctx) return null\n\n ctx.fillStyle = white\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n ctx.fillStyle = grey\n ctx.fillRect(0, 0, size, size)\n ctx.translate(size, size)\n ctx.fillRect(0, 0, size, size)\n return canvas.toDataURL()\n}\n\nconst getCheckboard = (white: string, grey: string, size: number) => {\n const key = white + ',' + grey + ',' + size\n if (checkboardCache[key]) return checkboardCache[key]\n \n const checkboard = renderCheckboard(white, grey, size)\n checkboardCache[key] = checkboard\n return checkboard\n}\n\nexport default defineComponent({\n name: 'checkboard',\n emits: ['colorChange'],\n props: {\n size: {\n type: Number,\n default: 8,\n },\n white: {\n type: String,\n default: '#fff',\n },\n grey: {\n type: String,\n default: '#e6e6e6',\n },\n },\n setup(props) {\n const bgStyle = computed(() => {\n const checkboard = getCheckboard(props.white, props.grey, props.size)\n return { backgroundImage: `url(${checkboard})` }\n })\n\n return {\n bgStyle,\n }\n },\n})\n","import { render } from \"./Checkboard.vue?vue&type=template&id=0a544b87&scoped=true&ts=true\"\nimport script from \"./Checkboard.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=0a544b87&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0a544b87\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\n\nimport Checkboard from './Checkboard.vue'\nimport { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'alpha',\n components: {\n Checkboard,\n },\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props, { emit }) {\n const color = computed(() => props.value)\n \n const gradientColor = computed(() => {\n const rgbaStr = [color.value.r, color.value.g, color.value.b].join(',')\n return `linear-gradient(to right, rgba(${rgbaStr}, 0) 0%, rgba(${rgbaStr}, 1) 100%)`\n })\n\n const alphaRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!alphaRef.value) return\n const containerWidth = alphaRef.value.clientWidth\n const xOffset = alphaRef.value.getBoundingClientRect().left + window.pageXOffset\n const left = e.pageX - xOffset\n let a\n\n if (left < 0) a = 0\n else if (left > containerWidth) a = 1\n else a = Math.round(left * 100 / containerWidth) / 100\n\n if (color.value.a !== a) {\n emit('colorChange', {\n r: color.value.r,\n g: color.value.g,\n b: color.value.b,\n a: a,\n })\n }\n }\n\n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n alphaRef,\n gradientColor,\n handleMouseDown,\n color,\n }\n },\n})\n","import { render } from \"./Alpha.vue?vue&type=template&id=6f2cb744&scoped=true&ts=true\"\nimport script from \"./Alpha.vue?vue&type=script&lang=ts\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=6f2cb744&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6f2cb744\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1766620e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hue\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"hue-picker\" }, null, -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"hue-container\",\n ref: \"hueRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"hue-pointer\",\n style: _normalizeStyle({ left: _ctx.pointerLeft })\n }, _hoisted_3, 4)\n ], 544)\n ]))\n}","\nimport { computed, defineComponent, onUnmounted, PropType, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'hue',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const oldHue = ref(0)\n const pullDirection = ref('')\n \n const color = computed(() => {\n const hsla = tinycolor(props.value).toHsl()\n if (props.hue !== -1) hsla.h = props.hue\n return hsla\n })\n\n const pointerLeft = computed(() => {\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\n return color.value.h * 100 / 360 + '%'\n })\n\n watch(() => props.value, () => {\n const hsla = tinycolor(props.value).toHsl()\n const h = hsla.s === 0 ? props.hue : hsla.h\n if (h !== 0 && h - oldHue.value > 0) pullDirection.value = 'right'\n if (h !== 0 && h - oldHue.value < 0) pullDirection.value = 'left'\n oldHue.value = h\n })\n\n const hueRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!hueRef.value) return\n\n const containerWidth = hueRef.value.clientWidth\n const xOffset = hueRef.value.getBoundingClientRect().left + window.pageXOffset\n const left = e.pageX - xOffset\n let h, percent\n \n if (left < 0) h = 0\n else if (left > containerWidth) h = 360\n else {\n percent = left * 100 / containerWidth\n h = 360 * percent / 100\n }\n if (props.hue === -1 || color.value.h !== h) {\n emit('colorChange', {\n h,\n l: color.value.l,\n s: color.value.s,\n a: color.value.a,\n })\n }\n }\n\n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n hueRef,\n handleMouseDown,\n pointerLeft,\n }\n },\n})\n","import { render } from \"./Hue.vue?vue&type=template&id=1766620e&scoped=true&ts=true\"\nimport script from \"./Hue.vue?vue&type=script&lang=ts\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=1766620e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1766620e\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8982eb4a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-white\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-black\" }, null, -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-circle\" }, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"saturation\",\n ref: \"saturationRef\",\n style: _normalizeStyle({ background: _ctx.bgColor }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", {\n class: \"saturation-pointer\",\n style: _normalizeStyle({\n top: _ctx.pointerTop,\n left: _ctx.pointerLeft,\n })\n }, _hoisted_4, 4)\n ], 36))\n}","\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { throttle, clamp } from 'lodash'\n\nexport default defineComponent({\n name: 'saturation',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const color = computed(() => {\n const hsva = tinycolor(props.value).toHsv()\n if (props.hue !== -1) hsva.h = props.hue\n return hsva\n })\n\n const bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\n const pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\n const pointerLeft = computed(() => color.value.s * 100 + '%')\n\n const emitChangeEvent = throttle(function(param) {\n emit('colorChange', param)\n }, 20, { leading: true, trailing: false })\n\n const saturationRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!saturationRef.value) return\n \n const containerWidth = saturationRef.value.clientWidth\n const containerHeight = saturationRef.value.clientHeight\n const xOffset = saturationRef.value.getBoundingClientRect().left + window.pageXOffset\n const yOffset = saturationRef.value.getBoundingClientRect().top + window.pageYOffset\n const left = clamp(e.pageX - xOffset, 0, containerWidth)\n const top = clamp(e.pageY - yOffset, 0, containerHeight)\n const saturation = left / containerWidth\n const bright = clamp(-(top / containerHeight) + 1, 0, 1)\n\n emitChangeEvent({\n h: color.value.h,\n s: saturation,\n v: bright,\n a: color.value.a,\n })\n }\n\n \n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n saturationRef,\n bgColor,\n handleMouseDown,\n pointerTop,\n pointerLeft,\n }\n },\n})\n","import { render } from \"./Saturation.vue?vue&type=template&id=8982eb4a&scoped=true&ts=true\"\nimport script from \"./Saturation.vue?vue&type=script&lang=ts\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=8982eb4a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8982eb4a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-00ea8dfc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editable-input\" }\nconst _hoisted_2 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"input-content\",\n value: _ctx.val,\n onInput: _cache[0] || (_cache[0] = $event => _ctx.handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'editable-input',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props, { emit }) {\n const val = computed(() => {\n let _hex = ''\n if (props.value.a < 1) _hex = tinycolor(props.value).toHex8String().toUpperCase()\n else _hex = tinycolor(props.value).toHexString().toUpperCase()\n return _hex.replace('#', '')\n })\n\n const handleInput = (e: InputEvent) => {\n const value = (e.target as HTMLInputElement).value\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\n }\n\n return {\n val,\n handleInput,\n }\n },\n})\n","import { render } from \"./EditableInput.vue?vue&type=template&id=00ea8dfc&scoped=true&ts=true\"\nimport script from \"./EditableInput.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=00ea8dfc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00ea8dfc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { debounce } from 'lodash'\n\nimport Alpha from './Alpha.vue'\nimport Checkboard from './Checkboard.vue'\nimport Hue from './Hue.vue'\nimport Saturation from './Saturation.vue'\nimport EditableInput from './EditableInput.vue'\n\nconst RECENT_COLORS = 'RECENT_COLORS'\n\nconst presetColorConfig = [\n ['#7f7f7f', '#f2f2f2'],\n ['#0d0d0d', '#808080'],\n ['#1c1a10', '#ddd8c3'],\n ['#0e243d', '#c6d9f0'],\n ['#233f5e', '#dae5f0'],\n ['#632623', '#f2dbdb'],\n ['#4d602c', '#eaf1de'],\n ['#3f3150', '#e6e0ec'],\n ['#1e5867', '#d9eef3'],\n ['#99490f', '#fee9da'],\n]\n\nconst gradient = (startColor: string, endColor: string, step: number) => {\n const _startColor = tinycolor(startColor).toRgb()\n const _endColor = tinycolor(endColor).toRgb()\n\n const rStep = (_endColor.r - _startColor.r) / step\n const gStep = (_endColor.g - _startColor.g) / step\n const bStep = (_endColor.b - _startColor.b) / step\n const gradientColorArr = []\n\n for (let i = 0; i < step; i++) {\n const gradientColor = tinycolor({\n r: _startColor.r + rStep * i,\n g: _startColor.g + gStep * i,\n b: _startColor.b + bStep * i,\n }).toRgbString()\n gradientColorArr.push(gradientColor)\n }\n return gradientColorArr\n}\n\nconst getPresetColors = () => {\n const presetColors = []\n for (const color of presetColorConfig) {\n presetColors.push(gradient(color[1], color[0], 5))\n }\n return presetColors\n}\n\nexport default defineComponent({\n name: 'color-picker',\n components: {\n Alpha,\n Checkboard,\n Hue,\n Saturation,\n EditableInput,\n },\n emits: ['update:modelValue'],\n props: {\n modelValue: {\n type: String,\n default: '#e86b99',\n },\n },\n setup(props, { emit }) {\n const hue = ref(-1)\n const recentColors = ref([])\n\n const color = computed({\n get() {\n return tinycolor(props.modelValue).toRgb()\n },\n set(rgba: ColorFormats.RGBA) {\n const rgbaString = `rgba(${[rgba.r, rgba.g, rgba.b, rgba.a].join(',')})`\n emit('update:modelValue', rgbaString)\n },\n })\n\n const themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\n const standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\n const presetColors = getPresetColors()\n\n const currentColor = computed(() => {\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\n })\n\n const selectPresetColor = (colorString: string) => {\n hue.value = tinycolor(colorString).toHsl().h\n emit('update:modelValue', colorString)\n }\n\n // 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\n const updateRecentColorsCache = debounce(function() {\n const _color = tinycolor(color.value).toRgbString()\n if (!recentColors.value.includes(_color)) {\n recentColors.value = [_color, ...recentColors.value]\n\n const maxLength = 10\n if (recentColors.value.length > maxLength) {\n recentColors.value = recentColors.value.slice(0, maxLength)\n }\n }\n }, 300, { trailing: true })\n\n onMounted(() => {\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\n })\n\n watch(recentColors, () => {\n const recentColorsCache = JSON.stringify(recentColors.value)\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\n })\n\n const changeColor = (value: ColorFormats.RGBA | ColorFormats.HSLA | ColorFormats.HSVA) => {\n if ('h' in value) {\n hue.value = value.h\n color.value = tinycolor(value).toRgb()\n }\n else {\n hue.value = tinycolor(value).toHsl().h\n color.value = value\n }\n\n updateRecentColorsCache()\n }\n\n return {\n themeColors,\n standardColors,\n presetColors,\n color,\n hue,\n currentColor,\n changeColor,\n selectPresetColor,\n recentColors,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=210672ee&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=210672ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-210672ee\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6275c730\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Spin = _resolveComponent(\"Spin\")!\n\n return ($props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: $props.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\nexport default {\n name: 'fullscreen-spin',\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n tip: {\n type: String,\n default: '',\n },\n },\n}\n","import { render } from \"./FullscreenSpin.vue?vue&type=template&id=6275c730&scoped=true&ts=true\"\nimport script from \"./FullscreenSpin.vue?vue&type=script&lang=ts\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=6275c730&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6275c730\"]])\n\nexport default __exports__","import { App } from 'vue'\n\nimport FileInput from '@/components/FileInput.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\n\nexport default {\n install(app: App) {\n app.component('FileInput', FileInput)\n app.component('CheckboxButton', CheckboxButton)\n app.component('CheckboxButtonGroup', CheckboxButtonGroup)\n app.component('ColorPicker', ColorPicker)\n app.component('FullscreenSpin', FullscreenSpin)\n }\n}\n","import { withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_MenuContent = _resolveComponent(\"MenuContent\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: _ctx.style.left + 'px',\n top: _ctx.style.top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(_component_MenuContent, {\n menus: _ctx.menus,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"])\n ], 36)\n ], 64))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb1555e8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"menu-content\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"text\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"sub-text\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_menu_content = _resolveComponent(\"menu-content\", true)!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menus, (menu, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: menu.text || index\n }, [\n (!menu.hide)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n class: _normalizeClass([\"menu-item\", {'divider': menu.divider, 'disable': menu.disable}]),\n onClick: _withModifiers(($event: any) => (_ctx.handleClickMenuItem(menu)), [\"stop\"])\n }, [\n (!menu.divider)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"menu-item-content\", {\n 'has-children': menu.children,\n 'has-handler': menu.handler,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(menu.text), 1),\n (menu.subText && !menu.children)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(menu.subText), 1))\n : _createCommentVNode(\"\", true),\n (menu.children && menu.children.length)\n ? (_openBlock(), _createBlock(_component_menu_content, {\n key: 1,\n class: \"sub-menu\",\n menus: menu.children,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]))\n}","\nimport { PropType, defineComponent } from 'vue'\nimport { ContextmenuItem } from './types'\n\nexport default defineComponent({\n name: 'menu-content',\n props: {\n menus: {\n type: Array as PropType,\n required: true,\n },\n handleClickMenuItem: {\n type: Function,\n required: true,\n },\n },\n})\n","import { render } from \"./MenuContent.vue?vue&type=template&id=eb1555e8&scoped=true&ts=true\"\nimport script from \"./MenuContent.vue?vue&type=script&lang=ts\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=eb1555e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eb1555e8\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\nexport default defineComponent({\n name: 'contextmenu',\n components: {\n MenuContent,\n },\n props: {\n axis: {\n type: Object as PropType,\n required: true,\n },\n el: {\n type: Object as PropType,\n required: true,\n },\n menus: {\n type: Array as PropType,\n required: true,\n },\n removeContextmenu: {\n type: Function,\n required: true,\n },\n },\n setup(props) {\n const style = computed(() => {\n const MENU_WIDTH = 170\n const MENU_HEIGHT = 30\n const DIVIDER_HEIGHT = 11\n const PADDING = 5\n\n const { x, y } = props.axis\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\n const dividerCount = props.menus.filter(menu => menu.divider).length\n\n const menuWidth = MENU_WIDTH\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n return {\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\n }\n })\n\n const handleClickMenuItem = (item: ContextmenuItem) => {\n if (item.disable) return\n if (item.children && !item.handler) return\n if (item.handler) item.handler(props.el)\n props.removeContextmenu()\n }\n\n return {\n style,\n handleClickMenuItem,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=83da70aa&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { Directive, createVNode, render, DirectiveBinding } from 'vue'\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\n\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\n\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n event.stopPropagation()\n event.preventDefault()\n\n const menus = binding.value(el)\n if (!menus) return\n\n let container: HTMLDivElement | null = null\n\n // 移除右键菜单并取消相关的事件监听\n const removeContextmenu = () => {\n if (container) {\n document.body.removeChild(container)\n container = null\n }\n el.classList.remove('contextmenu-active')\n document.body.removeEventListener('scroll', removeContextmenu) \n window.removeEventListener('resize', removeContextmenu)\n }\n\n // 创建自定义菜单\n const options = {\n axis: { x: event.x, y: event.y },\n el,\n menus,\n removeContextmenu,\n }\n container = document.createElement('div')\n const vm = createVNode(ContextmenuComponent, options, null)\n render(vm, container)\n document.body.appendChild(container)\n\n // 为目标节点添加菜单激活状态的className\n el.classList.add('contextmenu-active')\n\n // 页面变化时移除菜单\n document.body.addEventListener('scroll', removeContextmenu)\n window.addEventListener('resize', removeContextmenu)\n}\n\nconst ContextmenuDirective: Directive = {\n mounted(el: HTMLElement, binding) {\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n },\n\n unmounted(el: HTMLElement) {\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n delete el[CTX_CONTEXTMENU_HANDLER]\n }\n },\n}\n\nexport default ContextmenuDirective","import { Directive, DirectiveBinding } from 'vue'\n\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\n\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n const handler = binding.value\n\n const path = event.composedPath()\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\n\n if (!isClickOutside) return\n handler(event)\n}\n\nconst ClickOutsideDirective: Directive = {\n mounted(el: HTMLElement, binding) {\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\n setTimeout(() => {\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n }, 0)\n },\n \n unmounted(el: HTMLElement) {\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\n }\n },\n}\n\nexport default ClickOutsideDirective","import { App } from 'vue'\n\nimport Contextmenu from './contextmenu'\nimport ClickOutside from './clickOutside'\n\nexport default {\n install(app: App) {\n app.directive('contextmenu', Contextmenu)\n app.directive('click-outside', ClickOutside)\n }\n}\n","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\n\nimport '@icon-park/vue-next/styles/index.css'\nimport 'prosemirror-view/style/prosemirror.css'\nimport 'animate.css'\n\nimport '@/assets/styles/prosemirror.scss'\nimport '@/assets/styles/global.scss'\nimport '@/assets/styles/antd.scss'\nimport '@/assets/styles/font.scss'\n\nimport Icon from '@/plugins/icon'\nimport Component from '@/plugins/component'\nimport Directive from '@/plugins/directive'\n\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Slider,\n Select,\n Switch,\n Radio,\n Input,\n Modal,\n Dropdown,\n Menu,\n Checkbox,\n Drawer,\n Spin,\n Alert,\n} from 'ant-design-vue'\n\nconst app = createApp(App)\n\napp.component('InputNumber', InputNumber)\napp.component('Divider', Divider)\napp.component('Button', Button)\napp.component('ButtonGroup', Button.Group)\napp.component('Tooltip', Tooltip)\napp.component('Popover', Popover)\napp.component('Slider', Slider)\napp.component('Select', Select)\napp.component('SelectOption', Select.Option)\napp.component('SelectOptGroup', Select.OptGroup)\napp.component('Switch', Switch)\napp.component('Radio', Radio)\napp.component('RadioGroup', Radio.Group)\napp.component('RadioButton', Radio.Button)\napp.component('Input', Input)\napp.component('InputGroup', Input.Group)\napp.component('TextArea', Input.TextArea)\napp.component('Modal', Modal)\napp.component('Dropdown', Dropdown)\napp.component('Menu', Menu)\napp.component('MenuItem', Menu.Item)\napp.component('Checkbox', Checkbox)\napp.component('Drawer', Drawer)\napp.component('Spin', Spin)\napp.component('Alert', Alert)\n\napp.use(Icon)\napp.use(Component)\napp.use(Directive)\n\napp.use(createPinia())\napp.mount('#app')\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AudioStylePanel.vue?vue&type=style&index=0&id=80767a46&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenSlide.vue?vue&type=style&index=0&id=7827b40a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapePool.vue?vue&type=style&index=0&id=0f50713a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ProsemirrorEditor.vue?vue&type=style&index=0&id=f0d6ea86&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseAudioElement.vue?vue&type=style&index=0&id=513e91c4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=7f80f8ee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOutline.vue?vue&type=style&index=0&id=35c4c4a3&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinePool.vue?vue&type=style&index=0&id=78517932&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LatexStylePanel.vue?vue&type=style&index=0&id=69f903b1&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LayoutPool.vue?vue&type=style&index=0&id=741b366e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TableStylePanel.vue?vue&type=style&index=0&id=72e00692&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideDesignPanel.vue?vue&type=style&index=0&id=0e2f846d&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Mobile.vue?vue&type=style&index=0&id=72b587f9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenAudioElement.vue?vue&type=style&index=0&id=b08df80e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=4faf3734&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ChartPool.vue?vue&type=style&index=0&id=ab6a141a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementPositionPanel.vue?vue&type=style&index=0&id=3476ee65&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CustomTextarea.vue?vue&type=style&index=0&id=59f468e0&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FileInput.vue?vue&type=style&index=0&id=d6089858&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Alpha.vue?vue&type=style&index=0&id=6f2cb744&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementShadow.vue?vue&type=style&index=0&id=c77a6414&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=288ee59d&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./GridLines.vue?vue&type=style&index=0&id=9b94cc34&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.8d780616.js b/js/app.8d780616.js deleted file mode 100644 index d395eff3..00000000 --- a/js/app.8d780616.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var o,a,r=t[0],i=t[1],u=t[2],s=0,f=[];s-1||t.type===e}),M=function(e,t){for(var n=e.depth;n>0;n--){var o=e.node(n);if(t(o))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:o}}},_=function(e){return function(t){return M(t.$from,e)}},D=function(e){return function(t){return _((function(t){return T(e,t)}))(t)}},z=function(e,t){var n=t.schema.nodes[e];return!!D(n)(t.selection)},A=function(e){var t,n,o=e.state,l=o.selection,c=o.doc,a=l.from,r=c.nodeAt(a)||c.nodeAt(a-1);return null!==(t=r)&&void 0!==t&&t.lastChild&&(r=r.lastChild),(null===(n=r)||void 0===n?void 0:n.marks)||[]},F=function(e,t,n){var o,l=Object(L["a"])(e);try{for(l.s();!(o=l.n()).done;){var c=o.value;if(c.type.name===t&&c.attrs[n])return c.attrs[n]}}catch(a){l.e(a)}finally{l.f()}return null},R=function(e,t){var n,o=Object(L["a"])(e);try{for(o.s();!(n=o.n()).done;){var l=n.value;if(l.type.name===t)return!0}}catch(c){o.e(c)}finally{o.f()}return!1},P=function(e,t){var n=e.state,o=n.selection,l=n.doc,c=o.from,a=o.to,r=!0,i="";return l.nodesBetween(c,a,(function(e){return r&&e.attrs[t]&&(r=!1,i=e.attrs[t]),r})),i},H={color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left"},q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=Object(B["a"])(Object(B["a"])({},H),t);var n=A(e),o=R(n,"strong"),l=R(n,"em"),c=R(n,"underline"),a=R(n,"strikethrough"),r=R(n,"superscript"),i=R(n,"subscript"),u=R(n,"code"),d=F(n,"forecolor","color")||t.color,s=F(n,"backcolor","backcolor")||t.backcolor,f=F(n,"fontsize","fontsize")||t.fontsize,p=F(n,"fontname","fontname")||t.fontname,m=P(e,"align")||t.align,b=z("bullet_list",e.state),v=z("ordered_list",e.state),O=z("blockquote",e.state);return{bold:o,em:l,underline:c,strikethrough:a,superscript:r,subscript:i,code:u,color:d,backcolor:s,fontsize:f,fontname:p,align:m,bulletList:b,orderedList:v,blockquote:O}},X={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},W=(n("99af"),n("fb6a"),n("a15b"),function(e){if("string"!==typeof e)return!1;var t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;var n=100,o=100,l=100,c="a",a=document.createElement("canvas"),r=a.getContext("2d");if(!r)return!1;a.width=o,a.height=l,r.textAlign="center",r.fillStyle="black",r.textBaseline="middle";var i=function(e){r.clearRect(0,0,o,l),r.font="".concat(n,"px ").concat(e,", ").concat(t),r.fillText(c,o/2,l/2);var a=r.getImageData(0,0,o,l).data;return[].slice.call(a).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),G=n("2909"),U=(n("d81d"),n("ac1f"),n("5319"),n("5b81"),n("e9c4"),n("a434"),n("c740"),n("66cb")),Y=n.n(U),Z=n("2ef0"),J=[{id:"test123456",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"idn7Mx",left:355,top:65.25,width:585,height:188,lineHeight:1.2,content:"

PPTIST

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"text",id:"7stmVP",left:355,top:253.25,width:585,height:56,content:"

基于 Vue 3.x + TypeScript 的在线演示文稿应用

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"#5b9bd5",style:"solid",width:2}],background:{type:"solid",color:"#ffffff"}}],K={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff"},Q=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"AkIh3E",left:355,top:95.11111111111111,width:585,height:116,lineHeight:1.2,content:"

输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:6},{type:"text",id:"7stmVP",left:355,top:253.25,width:585,height:56,content:"

请在此处输入副标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"{{themeColor}}",style:"solid",width:2}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"mRHvQN",left:207.50000000000003,top:249.84259259259264,width:585,height:56,content:"

在此处添加副标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"line",id:"7CQDwc",left:323.09259259259267,top:238.33333333333334,start:[0,0],end:[354.8148148148148,0],points:["",""],color:"{{themeColor}}",style:"solid",width:4},{type:"shape",id:"09wqWw",left:-27.648148148148138,top:432.73148148148147,width:1056.2962962962963,height:162.96296296296296,viewBox:200,path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"vSheCJ",left:183.5185185185185,top:175.5092592592593,width:605.1851851851851,height:185.18518518518516,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0},{type:"shape",id:"Mpwv7x",left:211.29629629629628,top:201.80555555555557,width:605.1851851851851,height:185.18518518518516,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,opacity:.7},{type:"text",id:"WQOTAp",left:304.9074074074074,top:198.10185185185182,width:417.9629629629629,height:140,content:"

感谢观看

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:5}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"MZVO1kkj",elements:[{type:"shape",id:"cql0h8",left:0,top:0,width:352.59259259259255,height:562.5,viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0},{type:"shape",id:"_RTaF4",left:171.4814814814814,top:100.13888888888887,width:362.22222222222223,height:362.22222222222223,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"rgba(255,255,255,0)",fixedRatio:!1,rotate:0,outline:{width:10,color:"{{backgroundColor}}",style:"solid"}},{type:"shape",id:"UZfo8N",left:216.66666666666663,top:145.32407407407408,width:271.85185185185185,height:271.85185185185185,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0,text:{content:"

01

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"ysqtBg",left:561.4814814814814,top:100.1388888888889,width:359.25925925925924,height:80,content:"

在此处输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"lXsoHa",left:572.5925925925925,top:202.3611111111111,width:257.77777777777777,height:260,content:"
  1. 在此处输入内容

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",lineHeight:2,fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"EBBnTr",left:360.5996472663139,top:141.8496472663139,width:278.80070546737215,height:278.80070546737215,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:0,color:"{{backgroundColor}}",style:"solid"}},{type:"shape",id:"gDIWDH",left:456.4373897707231,top:98.287037037037,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

1

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"DUWT7E",left:317.037037037037,top:237.68738977072314,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

4

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"pbhn38",left:456.43738977072303,top:377.08774250440916,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

3

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"CvMKrO",left:595.8377425044091,top:237.6873897707231,width:87.12522045855381,height:87.12522045855381,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!0,rotate:0,outline:{width:4,color:"{{backgroundColor}}",style:"solid"},text:{content:"

2

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"adudHB",left:402.962962962963,top:39.39814814814815,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"9UpDwg",left:402.962962962963,top:473.1018518518518,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"GERdpB",left:111.48148148148151,top:256.25,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"text",id:"G5qoho",left:691.1111111111111,top:256.25,width:194.07407407407408,height:50,content:"

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"},{type:"shape",id:"vdZcI6",left:415.18518518518516,top:196.4351851851852,width:169.62962962962962,height:169.62962962962962,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"tYUmrx",left:156.66666666666683,top:149.02777777777771,width:264.4444444444445,height:264.4444444444445,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

01

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"shape",id:"0GVHf8",left:342.2222222222223,top:217.17592592592587,width:128.14814814814812,height:128.14814814814812,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{backgroundColor}}",fixedRatio:!1,rotate:0},{type:"text",id:"BO33Sv",left:378.8888888888889,top:235.24999999999994,width:464.4444444444444,height:92,content:"

在此处添加标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"Hj7ttp",left:69.35185185185185,top:49.21759259259262,width:420,height:63,lineHeight:1.2,content:"

1.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"FmKMNB",left:69.35185185185185,top:129.28240740740745,width:420,height:384,content:"

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"rI7ZeO",left:510.64814814814815,top:49.21759259259262,width:420,height:63,lineHeight:1.2,content:"

2.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"KspwGc",left:510.64814814814815,top:129.28240740740745,width:420,height:384,content:"

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"Rx63Jo",left:69.35185185185179,top:51.71759259259262,width:420,height:58,lineHeight:1.2,content:"

1.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"ulyuzE",left:69.35185185185179,top:131.78240740740745,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"kr35Ca",left:510.6481481481481,top:51.71759259259262,width:420,height:58,lineHeight:1.2,content:"

2.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"BNQSpC",left:510.6481481481481,top:131.78240740740745,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"Vr38Nu",left:69.35185185185185,top:301.71759259259255,width:420,height:58,lineHeight:1.2,content:"

3.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"IwKRSu",left:69.35185185185185,top:381.7824074074074,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"0Opr1v",left:510.64814814814815,top:301.71759259259255,width:420,height:58,lineHeight:1.2,content:"

4.请输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{themeColor}}"},{type:"text",id:"4L9Uzz",left:510.64814814814815,top:381.7824074074074,width:420,height:129,content:"

在此处输入内容

在此处输入内容

在此处输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"text",id:"GdEGxg",left:134.53703703703704,top:127.25,width:152.77777777777777,height:308,lineHeight:1.8,content:"

请在此处输入标题

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",wordSpace:8,fill:"{{themeColor}}"},{type:"text",id:"y5sAfw",left:332.8703703703704,top:127.25,width:532.5925925925926,height:50,content:"

请在此处输入内容1

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"VeuocM",left:332.8703703703704,top:212.0648148148148,width:532.5925925925926,height:50,content:"

请在此处输入内容2

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"RyFWQe",left:332.8703703703704,top:296.8796296296296,width:532.5925925925926,height:50,content:"

请在此处输入内容3

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"text",id:"Q56viI",left:332.8703703703704,top:381.69444444444446,width:532.5925925925926,height:50,content:"

请在此处输入内容4

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}},{id:"template",elements:[{type:"shape",id:"SUWirT",left:73.8888888888889,top:64.21296296296302,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

1

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"YjzN1M",left:148.70370370370372,top:64.21296296296302,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"fS09I7",left:527.5925925925926,top:64.21296296296302,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

2

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"qCnfB1",left:602.4074074074074,top:64.21296296296302,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"difAAT",left:73.8888888888889,top:221.25000000000003,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

3

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"EUlvMo",left:148.70370370370372,top:221.25000000000003,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"US_9jB",left:527.5925925925926,top:221.25000000000003,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

4

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"243MnQ",left:602.4074074074074,top:221.25000000000003,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"Y_KUj0",left:73.8888888888889,top:378.287037037037,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

5

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"9GglMe",left:148.70370370370372,top:378.287037037037,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"},{type:"shape",id:"eSInje",left:527.5925925925926,top:378.287037037037,width:49.629629629629626,height:49.629629629629626,viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",fill:"{{themeColor}}",fixedRatio:!1,rotate:0,text:{content:"

6

",defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",align:"middle"}},{type:"text",id:"0S3yUg",left:602.4074074074074,top:378.287037037037,width:323.7037037037037,height:120,content:"

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}}],$=Object(g["b"])("slides",{state:function(){return{theme:K,slides:J,slideIndex:0,viewportRatio:.5625}},getters:{currentSlide:function(e){return e.slides[e.slideIndex]},currentSlideAnimations:function(e){var t=e.slides[e.slideIndex];if(!t)return null;var n=t.animations;if(!n)return null;var o=t.elements,l=o.map((function(e){return e.id}));return n.filter((function(e){return l.includes(e.elId)}))},layouts:function(e){var t=e.theme,n=t.themeColor,o=t.fontColor,l=t.fontName,c=t.backgroundColor,a=Y()(o).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",r=JSON.stringify(Q).replaceAll("{{themeColor}}",n).replaceAll("{{fontColor}}",o).replaceAll("{{fontName}}",l).replaceAll("{{backgroundColor}}",c).replaceAll("{{subColor}}",a);return JSON.parse(r)}},actions:{setTheme:function(e){this.theme=Object(B["a"])(Object(B["a"])({},this.theme),e)},setViewportRatio:function(e){this.viewportRatio=e},setSlides:function(e){this.slides=e},addSlide:function(e){var t,n=Array.isArray(e)?e:[e],o=this.slideIndex+1;(t=this.slides).splice.apply(t,[o,0].concat(Object(G["a"])(n))),this.slideIndex=o},updateSlide:function(e){var t=this.slideIndex;this.slides[t]=Object(B["a"])(Object(B["a"])({},this.slides[t]),e)},deleteSlide:function(e){for(var t=this,n=Array.isArray(e)?e:[e],o=[],l=function(e){var l=t.slides.findIndex((function(t){return t.id===n[e]}));o.push(l)},c=0;cr&&(a=r),this.slideIndex=a,this.slides=this.slides.filter((function(e){return!n.includes(e.id)}))},updateSlideIndex:function(e){this.slideIndex=e},addElement:function(e){var t=Array.isArray(e)?e:[e],n=this.slides[this.slideIndex].elements,o=[].concat(Object(G["a"])(n),Object(G["a"])(t));this.slides[this.slideIndex].elements=o},updateElement:function(e){var t=e.id,n=e.props,o="string"===typeof t?[t]:t,l=this.slideIndex,c=this.slides[l],a=c.elements.map((function(e){return o.includes(e.id)?Object(B["a"])(Object(B["a"])({},e),n):e}));this.slides[l].elements=a},removeElementProps:function(e){var t=e.id,n=e.propName,o="string"===typeof n?[n]:n,l=this.slideIndex,c=this.slides[l],a=c.elements.map((function(e){return e.id===t?Object(Z["omit"])(e,o):e}));this.slides[l].elements=a}}}),ee=Object(g["b"])("main",{state:function(){return{activeElementIdList:[],handleElementId:"",activeGroupElementId:"",canvasPercentage:90,canvasScale:1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,showGridLines:!1,creatingElement:null,availableFonts:[],toolbarState:"slideDesign",clipingImageElementId:"",richTextAttrs:X,selectedTableCells:[],isScaling:!1,editingShapeElementId:"",selectedSlidesIndex:[]}},getters:{activeElementList:function(e){var t=$(),n=t.currentSlide;return n&&n.elements?n.elements.filter((function(t){return e.activeElementIdList.includes(t.id)})):[]},handleElement:function(e){var t=$(),n=t.currentSlide;return n&&n.elements&&n.elements.find((function(t){return e.handleElementId===t.id}))||null}},actions:{setActiveElementIdList:function(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId:function(e){this.handleElementId=e},setActiveGroupElementId:function(e){this.activeGroupElementId=e},setCanvasPercentage:function(e){this.canvasPercentage=e},setCanvasScale:function(e){this.canvasScale=e},setThumbnailsFocus:function(e){this.thumbnailsFocus=e},setEditorareaFocus:function(e){this.editorAreaFocus=e},setDisableHotkeysState:function(e){this.disableHotkeys=e},setGridLinesState:function(e){this.showGridLines=e},setCreatingElement:function(e){this.creatingElement=e},setAvailableFonts:function(){this.availableFonts=V.filter((function(e){return W(e.value)}))},setToolbarState:function(e){this.toolbarState=e},setClipingImageElementId:function(e){this.clipingImageElementId=e},setRichtextAttrs:function(e){this.richTextAttrs=e},setSelectedTableCells:function(e){this.selectedTableCells=e},setScalingState:function(e){this.isScaling=e},setEditingShapeElementId:function(e){this.editingShapeElementId=e},updateSelectedSlidesIndex:function(e){this.selectedSlidesIndex=e}}}),te=n("1da1"),ne=(n("96cf"),n("ddb0"),n("d4ec")),oe=n("257e"),le=n("262e"),ce=n("2caf"),ae=n("ade3"),re=n("4dec"),ie=function(e){Object(le["a"])(n,e);var t=Object(ce["a"])(n);function n(){var e;return Object(ne["a"])(this,n),e=t.call(this,"SnapshotDatabase"),Object(ae["a"])(Object(oe["a"])(e),"snapshots",void 0),e.version(1).stores({snapshots:"++id"}),e.snapshots=e.table("snapshots"),e}return n}(re["a"]),ue=new ie,de=Object(g["b"])("snapshot",{state:function(){return{snapshotCursor:-1,snapshotLength:0}},getters:{canUndo:function(e){return e.snapshotCursor>0},canRedo:function(e){return e.snapshotCursor=0&&e.snapshotCursorr&&(l.push(o[0]),a--),a>=2&&ue.snapshots.update(o[a-2],{index:n.slideIndex}),t.next=15,ue.snapshots.bulkDelete(l);case 15:e.setSnapshotCursor(a-1),e.setSnapshotLength(a);case 17:case"end":return t.stop()}}),t)})))()},unDo:function(){var e=this;return Object(te["a"])(regeneratorRuntime.mark((function t(){var n,o,l,c,a,r,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!(e.snapshotCursor<=0)){t.next=2;break}return t.abrupt("return");case 2:return n=$(),o=ee(),l=e.snapshotCursor-1,t.next=7,ue.snapshots.orderBy("id").toArray();case 7:c=t.sent,a=c[l],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(l),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()},reDo:function(){var e=this;return Object(te["a"])(regeneratorRuntime.mark((function t(){var n,o,l,c,a,r,i,u;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!(e.snapshotCursor>=e.snapshotLength-1)){t.next=2;break}return t.abrupt("return");case 2:return n=$(),o=ee(),l=e.snapshotCursor+1,t.next=7,ue.snapshots.orderBy("id").toArray();case 7:c=t.sent,a=c[l],r=a.index,i=a.slides,u=r>i.length-1?i.length-1:r,n.setSlides(i),n.updateSlideIndex(u),e.setSnapshotCursor(l),o.setActiveElementIdList([]);case 15:case"end":return t.stop()}}),t)})))()}}}),se=Object(g["b"])("keyboard",{state:function(){return{ctrlKeyState:!1,shiftKeyState:!1}},getters:{ctrlOrShiftKeyActive:function(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState:function(e){this.ctrlKeyState=e},setShiftKeyState:function(e){this.shiftKeyState=e}}}),fe=Object(g["b"])("screen",{state:function(){return{screening:!1}},actions:{setScreening:function(e){this.screening=e}}}),pe=(n("466d"),function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t="_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",n=t.length,o="",l=0;l"),o=n.split("
"),l="",c=Object(L["a"])(o);try{for(c.s();!(t=c.n()).done;){var a=t.value;a&&(l+="
".concat(a,"
"))}}catch(r){c.e(r)}finally{c.f()}return l}),qe=function(){var e=de(),t=Object(Z["debounce"])((function(){e.addSnapshot()}),300,{trailing:!0}),n=Object(Z["throttle"])((function(){e.reDo()}),100,{leading:!0,trailing:!1}),o=Object(Z["throttle"])((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:n,undo:o}},Xe=(n("cb29"),function(e){return new Promise((function(t){var n=document.createElement("img");n.src=e,n.style.opacity="0",document.body.appendChild(n),n.onload=function(){var e=n.clientWidth,o=n.clientHeight;n.onload=null,n.onerror=null,document.body.removeChild(n),t({width:e,height:o})},n.onerror=function(){n.onload=null,n.onerror=null}}))}),We=function(e){return new Promise((function(t){var n=new FileReader;n.addEventListener("load",(function(){t(n.result)})),n.readAsDataURL(e)}))},Ge=1e3,Ue=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.creatingElement,l=Object(g["c"])(t),c=l.theme,a=l.viewportRatio,r=qe(),i=r.addHistorySnapshot,u=function(n){t.addElement(n),e.setActiveElementIdList([n.id]),o.value&&e.setCreatingElement(null),setTimeout((function(){e.setEditorareaFocus(!0)}),0),i()},d=function(e){Xe(e).then((function(t){var n=t.width,o=t.height,l=o/n;lGe?(n=Ge,o=n*l):o>Ge*a.value&&(o=Ge*a.value,n=o/l),u({type:"image",id:pe(),src:e,width:n,height:o,left:(Ge-n)/2,top:(Ge*a.value-o)/2,fixedRatio:!0,rotate:0})}))},s=function(e){u({type:"chart",id:pe(),chartType:e,left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[c.value.themeColor],gridColor:c.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}})},f=function(e,t){for(var n={fontname:c.value.fontName,color:c.value.fontColor},o=[],l=0;l1&&void 0!==arguments[1]?arguments[1]:"请输入内容",n=e.left,o=e.top,l=e.width,a=e.height;u({type:"text",id:pe(),left:n,top:o,width:l,height:a,content:t,rotate:0,defaultFontName:c.value.fontName,defaultColor:c.value.fontColor})},m=function(e,t){var n=e.left,o=e.top,l=e.width,a=e.height,r={type:"shape",id:pe(),left:n,top:o,width:l,height:a,viewBox:t.viewBox,path:t.path,fill:c.value.themeColor,fixedRatio:!1,rotate:0};t.special&&(r.special=!0),u(r)},b=function(e,t){var n=e.left,o=e.top,l=e.start,a=e.end,r={type:"line",id:pe(),left:n,top:o,start:l,end:a,points:t.points,color:c.value.themeColor,style:t.style,width:2};t.isBroken&&(r.broken=[(l[0]+a[0])/2,(l[1]+a[1])/2]),t.isCurve&&(r.curve=[(l[0]+a[0])/2,(l[1]+a[1])/2]),u(r)},v=function(e){u({type:"latex",id:pe(),width:e.w,height:e.h,rotate:0,left:(Ge-e.w)/2,top:(Ge*a.value-e.h)/2,path:e.path,latex:e.latex,color:c.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},O=function(e){u({type:"video",id:pe(),width:500,height:300,rotate:0,left:(Ge-500)/2,top:(Ge*a.value-300)/2,src:e})},h=function(e){u({type:"audio",id:pe(),width:50,height:50,rotate:0,left:(Ge-50)/2,top:(Ge*a.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:c.value.themeColor,src:e})};return{createImageElement:d,createChartElement:s,createTableElement:f,createTextElement:p,createShapeElement:m,createLineElement:b,createLatexElement:v,createVideoElement:O,createAudioElement:h}},Ye=function(){var e=ee(),t=$(),n=Object(g["c"])(t),o=n.currentSlide,l=qe(),c=l.addHistorySnapshot,a=Ue(),r=a.createTextElement,i=function(n){var l,a=Ae(n),r=a.groupIdMap,i=a.elIdMap,u=o.value.elements.map((function(e){return e.id})),d=Object(L["a"])(n);try{for(d.s();!(l=d.n()).done;){var s=l.value,f=u.includes(s.id);s.id=i[s.id],f&&(s.left=s.left+10,s.top=s.top+10),s.groupId&&(s.groupId=r[s.groupId])}}catch(p){d.e(p)}finally{d.f()}t.addElement(n),e.setActiveElementIdList(Object.values(i)),c()},u=function(e){var n=e.map((function(e){var t,n=Ae(e.elements),o=n.groupIdMap,l=n.elIdMap,c=Object(L["a"])(e.elements);try{for(c.s();!(t=c.n()).done;){var a=t.value;a.id=l[a.id],a.groupId&&(a.groupId=o[a.groupId])}}catch(d){c.e(d)}finally{c.f()}if(e.animations){var r,i=Object(L["a"])(e.animations);try{for(i.s();!(r=i.n()).done;){var u=r.value;u.elId=l[u.elId]}}catch(d){i.e(d)}finally{i.f()}}return Object(B["a"])(Object(B["a"])({},e),{},{id:pe(8)})}));t.addSlide(n),c()},d=function(e){r({left:0,top:0,width:600,height:50},e)},s=function(e,t){var n=(null===t||void 0===t?void 0:t.onlySlide)||!1,o=(null===t||void 0===t?void 0:t.onlyElements)||!1,l=Be(e);if("object"===Object(Pe["a"])(l)){var c=l.type,a=l.data;"elements"!==c||n?"slides"!==c||o||u(a):i(a)}else if(!o&&!n){var r=He(l);d(r)}};return{addSlidesFromClipboard:u,pasteTextClipboardData:s}},Ze=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.selectedSlidesIndex,l=Object(g["c"])(t),c=l.currentSlide,a=l.slides,r=l.theme,i=l.slideIndex,u=Object(y["computed"])((function(){return[].concat(Object(G["a"])(o.value),[i.value])})),d=Object(y["computed"])((function(){return a.value.filter((function(e,t){return u.value.includes(t)}))})),s=Object(y["computed"])((function(){return d.value.map((function(e){return e.id}))})),f=Ye(),p=f.pasteTextClipboardData,m=f.addSlidesFromClipboard,b=qe(),v=b.addHistorySnapshot,O=function(){var n={id:pe(8),elements:[],background:{type:"solid",color:r.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([n])},h=function(e){e===I.UP&&i.value>0?t.updateSlideIndex(i.value-1):e===I.DOWN&&i.value0&&void 0!==arguments[0]?arguments[0]:s.value;a.value.length===n.length?O():t.deleteSlide(n),e.updateSelectedSlidesIndex([]),v()},N=function(){var e=Object(G["a"])(s.value);j(),E(e)},V=function(){var t=Array.from(Array(a.value.length),(function(e,t){return t}));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)};return{resetSlides:O,updateSlideIndex:h,copySlide:j,pasteSlide:x,createSlide:C,createSlideByTemplate:k,copyAndPasteSlide:w,deleteSlide:E,cutSlide:N,selectAllSlide:V}},Je=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=Object(g["c"])(t),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(){var n,l=JSON.parse(JSON.stringify(c.value.elements)),a=Object(L["a"])(l);try{for(a.s();!(n=a.n()).done;){var i=n.value;o.value.includes(i.id)&&(i.lock=!0)}}catch(u){a.e(u)}finally{a.f()}t.updateSlide({elements:l}),e.setActiveElementIdList([]),r()},u=function(n){var o=JSON.parse(JSON.stringify(c.value.elements));if(n.groupId){var l,a=[],i=Object(L["a"])(o);try{for(i.s();!(l=i.n()).done;){var u=l.value;u.groupId===n.groupId&&(u.lock=!1,a.push(u.id))}}catch(p){i.e(p)}finally{i.f()}t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{var d,s=Object(L["a"])(o);try{for(s.s();!(d=s.n()).done;){var f=d.value;if(f.id===n.id){f.lock=!1;break}}}catch(p){s.e(p)}finally{s.f()}t.updateSlide({elements:o}),e.setActiveElementIdList([n.id])}r()};return{lockElement:i,unlockElement:u}},Ke=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.activeGroupElementId,c=Object(g["c"])(t),a=c.currentSlide,r=qe(),i=r.addHistorySnapshot,u=function(){if(o.value.length){var n=[];n=l.value?a.value.elements.filter((function(e){return e.id!==l.value})):a.value.elements.filter((function(e){return!o.value.includes(e.id)})),e.setActiveElementIdList([]),t.updateSlide({elements:n}),i()}},d=function(){a.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),i())};return{deleteElement:u,deleteAllElements:d}},Qe=function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.activeElementList,c=n.handleElementId,a=Object(g["c"])(t),r=a.currentSlide,i=qe(),u=i.addHistorySnapshot,d=Object(y["computed"])((function(){if(l.value.length<2)return!1;var e=l.value[0].groupId;if(!e)return!0;var t=l.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),s=function(){var e;if(l.value.length){var n,c=JSON.parse(JSON.stringify(r.value.elements)),a=pe(),i=[],d=Object(L["a"])(c);try{for(d.s();!(n=d.n()).done;){var s=n.value;o.value.includes(s.id)&&(s.groupId=a,i.push(s))}}catch(b){d.e(b)}finally{d.f()}var f=c.findIndex((function(e){return e.id===i[i.length-1].id})),p=i.map((function(e){return e.id}));c=c.filter((function(e){return!p.includes(e.id)}));var m=f-i.length+1;(e=c).splice.apply(e,[m,0].concat(i)),t.updateSlide({elements:c}),u()}},f=function(){if(l.value.length){var n=l.value.some((function(e){return e.groupId}));if(n){var a,i=JSON.parse(JSON.stringify(r.value.elements)),d=Object(L["a"])(i);try{for(d.s();!(a=d.n()).done;){var s=a.value;o.value.includes(s.id)&&s.groupId&&delete s.groupId}}catch(p){d.e(p)}finally{d.f()}t.updateSlide({elements:i});var f=c.value?[c.value]:[];e.setActiveElementIdList(f),u()}}};return{canCombine:d,combineElements:s,uncombineElements:f}},$e=function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.activeElementList,l=Ye(),c=l.pasteTextClipboardData,a=Ke(),r=a.deleteElement,i=function(){if(n.value.length){var t=Ne(JSON.stringify({type:"elements",data:o.value}));Ve(t).then((function(){e.setEditorareaFocus(!0)}))}},u=function(){i(),r()},d=function(){Se().then((function(e){c(e)})).catch((function(e){return ge["a"].warning(e)}))},s=function(){i(),d()};return{copyElement:i,cutElement:u,pasteElement:d,quickCopyElement:s}},et=function(){var e=ee(),t=Object(g["c"])($()),n=t.currentSlide,o=function(){var t=n.value.elements.filter((function(e){return!e.lock})),o=t.map((function(e){return e.id}));e.setActiveElementIdList(o)};return{selectAllElement:o}},tt=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeGroupElementId,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=[],i=function(e){var n=e.left,o=e.top;switch(t){case I.LEFT:n-=l;break;case I.RIGHT:n+=l;break;case I.UP:o-=l;break;case I.DOWN:o+=l;break;default:break}return Object(B["a"])(Object(B["a"])({},e),{},{left:n,top:o})};a=o.value?c.value.elements.map((function(e){return o.value===e.id?i(e):e})):c.value.elements.map((function(e){return n.value.includes(e.id)?i(e):e})),e.updateSlide({elements:a}),r()};return{moveElement:i}},nt=function(){var e=$(),t=Object(g["c"])(e),n=t.currentSlide,o=qe(),l=o.addHistorySnapshot,c=function(e,t){return{minLevel:e.findIndex((function(e){return e.id===t[0].id})),maxLevel:e.findIndex((function(e){return e.id===t[t.length-1].id}))}},a=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel,r=l.maxLevel;if(r===e.length-1)return;var i=n[r+1],u=n.splice(a,o.length);if(i.groupId){var d=n.filter((function(e){return e.groupId===i.groupId}));n.splice.apply(n,[a+d.length,0].concat(Object(G["a"])(u)))}else n.splice.apply(n,[a+1,0].concat(Object(G["a"])(u)))}else{var s=e.findIndex((function(e){return e.id===t.id}));if(s===e.length-1)return;var f=n[s+1],p=n.splice(s,1)[0];if(f.groupId){var m=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+m.length,0,p)}else n.splice(s+1,0,p)}return n},r=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel;if(0===a)return;var r=n[a-1],i=n.splice(a,o.length);if(r.groupId){var u=n.filter((function(e){return e.groupId===r.groupId}));n.splice.apply(n,[a-u.length,0].concat(Object(G["a"])(i)))}else n.splice.apply(n,[a-1,0].concat(Object(G["a"])(i)))}else{var d=e.findIndex((function(e){return e.id===t.id}));if(0===d)return;var s=n[d-1],f=n.splice(d,1)[0];if(s.groupId){var p=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-p.length,0,f)}else n.splice(d-1,0,f)}return n},i=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel,r=l.maxLevel;if(r===e.length-1)return null;var i=n.splice(a,o.length);n.push.apply(n,Object(G["a"])(i))}else{var u=e.findIndex((function(e){return e.id===t.id}));if(u===e.length-1)return null;n.splice(u,1),n.push(t)}return n},u=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),l=c(e,o),a=l.minLevel;if(0===a)return;var r=n.splice(a,o.length);n.unshift.apply(n,Object(G["a"])(r))}else{var i=e.findIndex((function(e){return e.id===t.id}));if(0===i)return;n.splice(i,1),n.unshift(t)}return n},d=function(t,o){var c;o===C.UP?c=a(n.value.elements,t):o===C.DOWN?c=r(n.value.elements,t):o===C.TOP?c=i(n.value.elements,t):o===C.BOTTOM&&(c=u(n.value.elements,t)),c&&(e.updateSlide({elements:c}),l())};return{orderElement:d}},ot=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()},lt=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()},ct=function(){return document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen},at=function(){var e=fe(),t=$(),n=function(){ot(),e.setScreening(!0)},o=function(){t.updateSlideIndex(0),n()},l=function(){e.setScreening(!1),ct()&<()};return{enterScreening:n,enterScreeningFromStart:o,exitScreening:l}},rt=function(){var e=ee(),t=Object(g["c"])(e),n=t.canvasPercentage,o=function(t){var o=n.value,l=5,c=120,a=60;"+"===t&&o<=c&&(o+=l),"-"===t&&o>=a&&(o-=l),e.setCanvasPercentage(o)},l=function(t){e.setCanvasPercentage(t)};return{scaleCanvas:o,setCanvasPercentage:l}},it=function(){var e=ee(),t=se(),n=Object(g["c"])(e),o=n.activeElementIdList,l=n.disableHotkeys,c=n.handleElement,a=n.handleElementId,r=n.editorAreaFocus,i=n.thumbnailsFocus,u=Object(g["c"])($()),d=u.currentSlide,s=Object(g["c"])(t),f=s.ctrlKeyState,p=s.shiftKeyState,m=Ze(),b=m.updateSlideIndex,v=m.copySlide,O=m.createSlide,h=m.deleteSlide,j=m.cutSlide,x=m.copyAndPasteSlide,k=m.selectAllSlide,w=Qe(),E=w.combineElements,N=w.uncombineElements,V=Ke(),S=V.deleteElement,B=Je(),L=B.lockElement,T=$e(),M=T.copyElement,_=T.cutElement,D=T.quickCopyElement,z=et(),A=z.selectAllElement,F=tt(),R=F.moveElement,P=nt(),H=P.orderElement,q=qe(),X=q.redo,W=q.undo,G=at(),U=G.enterScreening,Y=rt(),Z=Y.scaleCanvas,J=Y.setCanvasPercentage,K=function(){o.value.length?M():i.value&&v()},Q=function(){o.value.length?_():i.value&&j()},te=function(){o.value.length?D():i.value&&x()},ne=function(){r.value&&A(),i.value&&k()},oe=function(){r.value&&L()},le=function(){r.value&&E()},ce=function(){r.value&&N()},ae=function(){o.value.length?S():i.value&&h()},re=function(e){o.value.length?R(e):e!==I.UP&&e!==I.DOWN||b(e)},ie=function(e){c.value&&H(c.value,e)},ue=function(){i.value&&O()},de=function(){if(d.value.elements.length)if(a.value){var t=d.value.elements.findIndex((function(e){return e.id===a.value})),n=t>=d.value.elements.length-1?0:t+1,o=d.value.elements[n].id;e.setActiveElementIdList([o])}else{var l=d.value.elements[0];e.setActiveElementIdList([l.id])}},fe=function(e){var n=e.ctrlKey,o=e.shiftKey,c=e.altKey,a=e.metaKey,u=n||a,d=e.key.toUpperCase();if(u&&!f.value&&t.setCtrlKeyState(!0),o&&!p.value&&t.setShiftKeyState(!0),u&&d===I.F&&(e.preventDefault(),U(),t.setCtrlKeyState(!1)),r.value||i.value){if(u&&d===I.C){if(l.value)return;e.preventDefault(),K()}if(u&&d===I.X){if(l.value)return;e.preventDefault(),Q()}if(u&&d===I.D){if(l.value)return;e.preventDefault(),te()}if(u&&d===I.Z){if(l.value)return;e.preventDefault(),W()}if(u&&d===I.Y){if(l.value)return;e.preventDefault(),X()}if(u&&d===I.A){if(l.value)return;e.preventDefault(),ne()}if(u&&d===I.L){if(l.value)return;e.preventDefault(),oe()}if(!o&&u&&d===I.G){if(l.value)return;e.preventDefault(),le()}if(o&&u&&d===I.G){if(l.value)return;e.preventDefault(),ce()}if(c&&d===I.F){if(l.value)return;e.preventDefault(),ie(C.TOP)}if(c&&d===I.B){if(l.value)return;e.preventDefault(),ie(C.BOTTOM)}if(d===I.DELETE||d===I.BACKSPACE){if(l.value)return;e.preventDefault(),ae()}if(d===I.UP){if(l.value)return;e.preventDefault(),re(I.UP)}if(d===I.DOWN){if(l.value)return;e.preventDefault(),re(I.DOWN)}if(d===I.LEFT){if(l.value)return;e.preventDefault(),re(I.LEFT)}if(d===I.RIGHT){if(l.value)return;e.preventDefault(),re(I.RIGHT)}if(d===I.ENTER){if(l.value)return;e.preventDefault(),ue()}if(d===I.MINUS){if(l.value)return;e.preventDefault(),Z("-")}if(d===I.EQUAL){if(l.value)return;e.preventDefault(),Z("+")}if(d===I.DIGIT_0){if(l.value)return;e.preventDefault(),J(90)}if(d===I.TAB){if(l.value)return;e.preventDefault(),de()}}},pe=function(){f.value&&t.setCtrlKeyState(!1),p.value&&t.setShiftKeyState(!1)};Object(y["onMounted"])((function(){document.addEventListener("keydown",fe),document.addEventListener("keyup",pe),window.addEventListener("blur",pe)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",fe),document.removeEventListener("keyup",pe),window.removeEventListener("blur",pe)}))},ut=function(){var e=Object(g["c"])(ee()),t=e.editorAreaFocus,n=e.thumbnailsFocus,o=e.disableHotkeys,l=Ye(),c=l.pasteTextClipboardData,a=Ue(),r=a.createImageElement,i=function(e){We(e).then((function(e){return r(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var l=e.clipboardData.items,a=l[0];if(a){var r,u=Object(L["a"])(l);try{for(u.s();!(r=u.n()).done;){var d=r.value;if("file"===d.kind&&-1!==d.type.indexOf("image")){var s=d.getAsFile();return void(s&&i(s))}}}catch(f){u.e(f)}finally{u.f()}"string"===a.kind&&"text/plain"===a.type&&a.getAsString((function(e){return c(e)}))}}};Object(y["onMounted"])((function(){document.addEventListener("paste",u)})),Object(y["onUnmounted"])((function(){document.removeEventListener("paste",u)}))},dt=function(e){return Object(y["pushScopeId"])("data-v-32a5341e"),e=e(),Object(y["popScopeId"])(),e},st={class:"editor-header"},ft={class:"left"},pt={class:"menu-item"},mt=Object(y["createTextVNode"])(),bt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"文件",-1)})),vt=Object(y["createTextVNode"])("导出 JSON"),Ot=Object(y["createTextVNode"])("导出 PPTX"),ht={class:"menu-item"},jt=Object(y["createTextVNode"])(),yt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"编辑",-1)})),gt=Object(y["createTextVNode"])("撤销"),xt=Object(y["createTextVNode"])("重做"),Ct=Object(y["createTextVNode"])("添加页面"),kt=Object(y["createTextVNode"])("删除页面"),wt=Object(y["createTextVNode"])("重置幻灯片"),Et={class:"menu-item"},Nt=Object(y["createTextVNode"])(),It=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"演示",-1)})),Vt=Object(y["createTextVNode"])("从头开始"),St=Object(y["createTextVNode"])("从当前页开始"),Bt={class:"menu-item"},Lt=Object(y["createTextVNode"])(),Tt=dt((function(){return Object(y["createElementVNode"])("span",{class:"text"},"帮助",-1)})),Mt=Object(y["createTextVNode"])("意见反馈"),_t=Object(y["createTextVNode"])("快捷键"),Dt={class:"right"},zt={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},At={class:"menu-item"};function Ft(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconFolderClose"),r=Object(y["resolveComponent"])("MenuItem"),i=Object(y["resolveComponent"])("Menu"),u=Object(y["resolveComponent"])("Dropdown"),d=Object(y["resolveComponent"])("IconEdit"),s=Object(y["resolveComponent"])("IconPpt"),f=Object(y["resolveComponent"])("IconHelpcenter"),p=Object(y["resolveComponent"])("Tooltip"),m=Object(y["resolveComponent"])("IconGithub"),b=Object(y["resolveComponent"])("HotkeyDoc"),v=Object(y["resolveComponent"])("Drawer"),O=Object(y["resolveComponent"])("FullscreenSpin");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",st,[Object(y["createElementVNode"])("div",ft,[Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[0]||(t[0]=function(t){return e.exportJSON()})},{default:Object(y["withCtx"])((function(){return[vt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.exportPPTX()})},{default:Object(y["withCtx"])((function(){return[Ot]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",pt,[Object(y["createVNode"])(a),mt,bt])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[2]||(t[2]=function(t){return e.undo()})},{default:Object(y["withCtx"])((function(){return[gt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[3]||(t[3]=function(t){return e.redo()})},{default:Object(y["withCtx"])((function(){return[xt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.createSlide()})},{default:Object(y["withCtx"])((function(){return[Ct]})),_:1}),Object(y["createVNode"])(r,{onClick:t[5]||(t[5]=function(t){return e.deleteSlide()})},{default:Object(y["withCtx"])((function(){return[kt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[6]||(t[6]=function(t){return e.toggleGridLines()})},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(y["createVNode"])(r,{onClick:t[7]||(t[7]=function(t){return e.resetSlides()})},{default:Object(y["withCtx"])((function(){return[wt]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",ht,[Object(y["createVNode"])(d),jt,yt])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[8]||(t[8]=function(t){return e.enterScreeningFromStart()})},{default:Object(y["withCtx"])((function(){return[Vt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[9]||(t[9]=function(t){return e.enterScreening()})},{default:Object(y["withCtx"])((function(){return[St]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Et,[Object(y["createVNode"])(s),Nt,It])]})),_:1}),Object(y["createVNode"])(u,{trigger:["click"]},{overlay:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,null,{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onClick:t[10]||(t[10]=function(t){return e.goIssues()})},{default:Object(y["withCtx"])((function(){return[Mt]})),_:1}),Object(y["createVNode"])(r,{onClick:t[11]||(t[11]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Object(y["withCtx"])((function(){return[_t]})),_:1})]})),_:1})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Bt,[Object(y["createVNode"])(f),Lt,Tt])]})),_:1})]),Object(y["createElementVNode"])("div",Dt,[Object(y["createVNode"])(p,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",{class:"menu-item",onClick:t[12]||(t[12]=function(t){return e.enterScreening()})},[Object(y["createVNode"])(s,{size:"18",fill:"#666",style:{"margin-top":"2px"}})])]})),_:1}),Object(y["createElementVNode"])("a",zt,[Object(y["createElementVNode"])("div",At,[Object(y["createVNode"])(m,{size:"18",fill:"#666"})])])]),Object(y["createVNode"])(v,{width:"320",placement:"right",visible:e.hotkeyDrawerVisible,onClose:t[13]||(t[13]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b)]})),_:1},8,["visible"]),Object(y["createVNode"])(O,{loading:e.exporting,tip:"正在导出..."},null,8,["loading"])])}var Rt=n("3835"),Pt=(n("9911"),n("cc71"),n("21a6")),Ht=n("8f74"),qt=(n("00b4"),["style","script","template"]),Xt=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],Wt={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},Gt=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Ut=function(e,t){var n=t-e.position;Yt(e,n)},Yt=function(e,t){e.position=e.position+t},Zt=function(e,t){var n=!1;while(!n){var o=e.indexOf("<",t);if(-1===o)return o;var l=e.charAt(o+1);if("/"===l||"!"===l||/[A-Za-z0-9]/.test(l))return o;t=o+1}return-1},Jt=function(e){var t=e.str,n=Zt(t,e.position);if(n!==e.position){-1===n&&(n=t.length);var o=t.slice(e.position,n);Ut(e,n),e.tokens.push({type:"text",content:o})}},Kt=function(e){var t=e.str;Yt(e,4);var n=t.indexOf("--\x3e",e.position),o=n+3;-1===n&&(n=o=t.length);var l=t.slice(e.position,n);Ut(e,o),e.tokens.push({type:"comment",content:l})},Qt=function(e){var t=e.str,n=t.length,o=e.position;while(o"===l);if(c)break;o++}var a=o+1;while(a"===r);if(!i)break;a++}Ut(e,a);var u=t.slice(o,a);return e.tokens.push({type:"tag",content:u}),u},$t=function(e){var t=e.str,n=e.tokens,o=e.position,l=null,c=o,a=[],r=t.length;while(o"===i;if(d){o!==c&&a.push(t.slice(c,o));break}var s=/\s/.test(i);if(s)o!==c&&a.push(t.slice(c,o)),c=o+1,o++;else{var f="'"===i||'"'===i;f?(l=i,o++):o++}}}Ut(e,o);for(var p="attribute",m=0;m1){var h=b+O;n.push({type:p,content:h}),m+=1;continue}var j=a[m+2];if(m+=1,j){var y=b+"="+j;n.push({type:p,content:y}),m+=1;continue}}}if(Object(Z["endsWith"])(b,"=")){var g=a[m+1];if(g&&-1===g.indexOf("=")){var x=b+g;n.push({type:p,content:x}),m+=1;continue}var C=b.slice(0,-1);n.push({type:p,content:C})}else n.push({type:p,content:b})}},en=function(e,t){var n=t.str,o=t.tokens,l=e.toLowerCase(),c=n.length,a=t.position;while(a=0){var l=t[o].tagName;if(l===e)break;if(n.includes(l))return!0;o--}}return!1},an=function(e,t){e.splice(t)},rn=function e(t){var n=t.stack,o=t.tokens,l=t.cursor,c=n[n.length-1].children,a=o.length;while(l-1)if(n[d].tagName===u){s=!0;break}while(l0){if(u===n[m].tagName){an(n,m);var b=m-1;c=n[b].children;break}m-=1}}var v=[],O=void 0;while(l127&&o<2048?(t+=String.fromCharCode(o>>6|192),t+=String.fromCharCode(63&o|128)):(t+=String.fromCharCode(o>>12|224),t+=String.fromCharCode(o>>6&63|128),t+=String.fromCharCode(63&o|128))}return t},gn=function(e){var t,n,o,l,c,a,r,i="",u=0;e=yn(e);while(u>2,c=(3&t)<<4|n>>4,a=(15&n)<<2|o>>6,r=63&o,isNaN(n)?a=r=64:isNaN(o)&&(r=64),i=i+hn.charAt(l)+hn.charAt(c)+hn.charAt(a)+hn.charAt(r);return i},xn=function(e){var t=new XMLSerializer,n=t.serializeToString(e);return jn+gn(n)},Cn=function(){var e=Object(g["c"])($()),t=e.slides,n=Object(y["ref"])(!1),o=function(){var e=new Blob([JSON.stringify(t.value)],{type:""});Object(Pt["saveAs"])(e,"pptist_slides.json")},l=function(e){var t=Y()(e),n=t.getAlpha(),o=0===n?"#ffffff":t.setAlpha(1).toHexString();return{alpha:n,color:o}},c=function(e){var t=pn(e),n=[],o=function e(t){var o,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=Object(L["a"])(t);try{for(a.s();!(o=a.n()).done;){var r=o.value;if("tagName"in r&&["div","ul","li","p"].includes(r.tagName)&&n.length){var i=n[n.length-1];i.options||(i.options={}),i.options.breakLine=!0}var u=Object(B["a"])({},c),d="attributes"in r?r.attributes.find((function(e){return"style"===e.key})):null;if(d&&d.value){var s,f=d.value.split(";"),p=Object(L["a"])(f);try{for(p.s();!(s=p.n()).done;){var m=s.value,b=m.split(": "),v=Object(Rt["a"])(b,2),O=v[0],h=v[1],j=[Object(Z["trim"])(O),Object(Z["trim"])(h)],y=j[0],g=j[1];y&&g&&(u[y]=g)}}catch(k){p.e(k)}finally{p.f()}}if("tagName"in r&&("em"===r.tagName&&(u["font-style"]="italic"),"strong"===r.tagName&&(u["font-weight"]="bold"),"sup"===r.tagName&&(u["vertical-align"]="super"),"sub"===r.tagName&&(u["vertical-align"]="sub")),"tagName"in r&&"br"===r.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in r){var x=r.content.replace(/\n/g,"").replace(/ /g," "),C={};u["font-size"]&&(C.fontSize=.75*parseInt(u["font-size"])),u["color"]&&(C.color=l(u["color"]).color),u["background-color"]&&(C.highlight=l(u["background-color"]).color),u["text-decoration-line"]&&(-1!==u["text-decoration-line"].indexOf("underline")&&(C.underline={color:C.color||"#000000",style:"sng"}),-1!==u["text-decoration-line"].indexOf("line-through")&&(C.strike="sngStrike")),u["text-decoration"]&&(-1!==u["text-decoration"].indexOf("underline")&&(C.underline={color:C.color||"#000000",style:"sng"}),-1!==u["text-decoration"].indexOf("line-through")&&(C.strike="sngStrike")),u["vertical-align"]&&("super"===u["vertical-align"]&&(C.superscript=!0),"sub"===u["vertical-align"]&&(C.subscript=!0)),u["text-align"]&&(C.align=u["text-align"]),u["font-weight"]&&(C.bold="bold"===u["font-weight"]),u["font-style"]&&(C.italic="italic"===u["font-style"]),u["font-family"]&&(C.fontFace=u["font-family"]),n.push({text:x,options:C})}else"children"in r&&e(r.children,u)}}catch(k){a.e(k)}finally{a.f()}};return o(t),n},a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:1,y:1};return e.map((function(e){if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/100*t.x,y:e.y/100*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/100*t.x,y:e.y/100*t.y,curve:{type:"cubic",x1:e.curve.x1/100*t.x,y1:e.curve.y1/100*t.y,x2:e.curve.x2/100*t.x,y2:e.curve.y2/100*t.y}};if("quadratic"===e.curve.type)return{x:e.x/100*t.x,y:e.y/100*t.y,curve:{type:"quadratic",x1:e.curve.x1/100*t.x,y1:e.curve.y1/100*t.y}}}return{x:e.x/100*t.x,y:e.y/100*t.y}}))},r=function(){n.value=!0;var e,o=new Ht["a"],r=Object(L["a"])(t.value);try{for(r.s();!(e=r.n()).done;){var i=e.value,u=o.addSlide();if(i.background){var d=i.background;if("image"===d.type&&d.image)u.background={data:d.image};else if("solid"===d.type&&d.color){var s=l(d.color);u.background={color:s.color,transparency:100*(1-s.alpha)}}else if("gradient"===d.type&&d.gradientColor){var f=Object(Rt["a"])(d.gradientColor,2),p=f[0],m=f[1],b=Y.a.mix(p,m).toHexString(),v=l(b);u.background={color:v.color,transparency:100*(1-v.alpha)}}}if(i.elements){var O,h=Object(L["a"])(i.elements);try{var j=function(){var e=O.value;if("text"===e.type){var n=c(e.content),r={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:"middle"};if(e.rotate&&(r.rotate=e.rotate),e.wordSpace&&(r.charSpacing=.75*e.wordSpace),e.lineHeight&&(r.lineSpacingMultiple=.75*e.lineHeight),e.fill){var i=l(e.fill),d=void 0===e.opacity?1:e.opacity;r.fill={color:i.color,transparency:100*(1-i.alpha*d)}}if(e.defaultColor&&(r.color=l(e.defaultColor).color),e.defaultFontName&&(r.fontFace=e.defaultFontName),e.shadow){var s=l(e.shadow.color);r.shadow={type:"outer",color:s.color.replace("#",""),opacity:s.alpha,blur:.75*e.shadow.blur,offset:(e.shadow.h+e.shadow.v)/2*.75,angle:45}}u.addText(n,r)}else if("image"===e.type){var f={path:e.src,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.flipH&&(f.flipH=e.flipH),e.flipV&&(f.flipV=e.flipV),e.rotate&&(f.rotate=e.rotate),e.clip&&"ellipse"===e.clip.shape&&(f.rounding=!0),e.link){var p=e.link,m=p.type,b=p.target;if("web"===m)f.hyperlink={url:b};else if("slide"===m){var v=t.value.findIndex((function(e){return e.id===b}));-1!==v&&(f.hyperlink={slide:v+1})}}u.addImage(f)}else if("shape"===e.type){if(e.special){var h=document.querySelector(".thumbnail-list .base-element-".concat(e.id," svg")),j=xn(h),y={data:j,x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100};if(e.rotate&&(y.rotate=e.rotate),e.link){var g=e.link,x=g.type,C=g.target;if("web"===x)y.hyperlink={url:C};else if("slide"===x){var k=t.value.findIndex((function(e){return e.id===C}));-1!==k&&(y.hyperlink={slide:k+1})}}u.addImage(y)}else{var w,E,N={x:e.width/e.viewBox,y:e.height/e.viewBox},I=a(On(e.path),N),V=l(e.fill),S=void 0===e.opacity?1:e.opacity,B={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fill:{color:V.color,transparency:100*(1-V.alpha*S)},points:I};if(e.flipH&&(B.flipH=e.flipH),e.flipV&&(B.flipV=e.flipV),null!==(w=e.outline)&&void 0!==w&&w.width)B.line={color:l((null===(E=e.outline)||void 0===E?void 0:E.color)||"#000000").color,width:.75*e.outline.width,dashType:"solid"===e.outline.style?"solid":"dash"};if(e.shadow){var L=l(e.shadow.color);B.shadow={type:"outer",color:L.color.replace("#",""),opacity:L.alpha,blur:.75*e.shadow.blur,offset:(e.shadow.h+e.shadow.v)/2*.75,angle:45}}if(e.link){var T=e.link,M=T.type,_=T.target;if("web"===M)B.hyperlink={url:_};else if("slide"===M){var D=t.value.findIndex((function(e){return e.id===_}));-1!==D&&(B.hyperlink={slide:D+1})}}u.addShape("custGeom",B)}if(e.text){var z=c(e.text.content),A={x:e.left/100,y:e.top/100,w:e.width/100,h:e.height/100,fontSize:15,fontFace:"微软雅黑",color:"#000000",valign:e.text.align};e.rotate&&(A.rotate=e.rotate),e.text.defaultColor&&(A.color=l(e.text.defaultColor).color),e.text.defaultFontName&&(A.fontFace=e.text.defaultFontName),u.addText(z,A)}}else if("line"===e.type){var F=Re(e),R=a(On(F)),P=_e(e),H=P.minX,q=P.maxX,X=P.minY,W=P.maxY,U={x:e.left/100,y:e.top/100,w:(q-H)/100,h:(W-X)/100,line:{color:l(e.color).color,width:.75*e.width,dashType:"solid"===e.style?"solid":"dash",beginArrowType:e.points[0]?"arrow":"none",endArrowType:e.points[1]?"arrow":"none"},points:R};u.addShape("custGeom",U)}else if("chart"===e.type){for(var Z=[],J=0;J1||fe.rowspan>1)for(var pe=ue;pe1?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.elementList,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:t.id,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),isActive:e.handleElementId===t.id,isActiveGroupElement:e.activeGroupElementId===t.id,isMultiSelect:e.activeElementIdList.length>1,rotateElement:e.rotateElement,scaleElement:e.scaleElement,openLinkDialog:e.openLinkDialog,dragLineElement:e.dragLineElement},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement"])})),128)),Object(y["createVNode"])(d)]),Object(y["createElementVNode"])("div",{class:"viewport",ref:"viewportRef",style:Object(y["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")})},[e.mouseSelectionState.isShow?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,top:e.mouseSelectionState.top,left:e.mouseSelectionState.left,width:e.mouseSelectionState.width,height:e.mouseSelectionState.height,quadrant:e.mouseSelectionState.quadrant},null,8,["top","left","width","height","quadrant"])):Object(y["createCommentVNode"])("",!0),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.elementList,(function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(f,{key:t.id,elementInfo:t,elementIndex:n+1,isMultiSelect:e.activeElementIdList.length>1,selectElement:e.selectElement,openLinkDialog:e.openLinkDialog},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement","openLinkDialog"])})),128))],4)],4),Object(y["createVNode"])(m,{visible:e.linkDialogVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.linkDialogVisible=t}),footer:null,centered:"",width:540,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{onClose:t[1]||(t[1]=function(t){return e.linkDialogVisible=!1})})]})),_:1},8,["visible"])],544)),[[b,e.contextmenus],[v,e.removeEditorAreaFocus]])}var Rn=function(){var e=window.getSelection();e&&e.removeAllRanges()},Pn=function(e){var t=Object(y["ref"])(0),n=Object(y["ref"])(0),o=ee(),l=Object(g["c"])(o),c=l.canvasPercentage,a=Object(g["c"])($()),r=a.viewportRatio,i=function(){if(e.value){var l=e.value.clientWidth,a=e.value.clientHeight;if(a/l>r.value){var i=l*(c.value/100);o.setCanvasScale(i/Ge),t.value=(l-i)/2,n.value=(a-i*r.value)/2}else{var u=a*(c.value/100);o.setCanvasScale(u/(Ge*r.value)),t.value=(l-u/r.value)/2,n.value=(a-u)/2}}};Object(y["watch"])([c,r],i);var u=Object(y["computed"])((function(){return{width:Ge,height:Ge*r.value,left:t.value,top:n.value}})),d=new ResizeObserver(i);return Object(y["onMounted"])((function(){e.value&&d.observe(e.value)})),Object(y["onUnmounted"])((function(){e.value&&d.unobserve(e.value)})),{viewportStyles:u}},Hn=function(e,t){var n=ee(),o=Object(g["c"])(n),l=o.canvasScale,c=Object(y["reactive"])({isShow:!1,top:0,left:0,width:0,height:0,quadrant:1}),a=function(o){if(t.value){var a=!0,r=t.value.getBoundingClientRect(),i=5,u=o.pageX,d=o.pageY,s=(u-r.x)/l.value,f=(d-r.y)/l.value;c.isShow=!1,c.quadrant=4,c.top=f,c.left=s,c.width=0,c.height=0,document.onmousemove=function(e){if(a){var t=e.pageX,n=e.pageY,o=(t-u)/l.value,r=(n-d)/l.value,s=Math.abs(o),f=Math.abs(r);if(!(s0&&r>0?p=4:o<0&&r<0?p=1:o>0&&r<0?p=2:o<0&&r>0&&(p=3),c.isShow=!0,c.quadrant=p,c.width=s,c.height=f}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,a=!1;for(var t=[],o=0;or&&mi&&vr-u&&mi-d&&vr&&mi-d&&vr-u&&mi&&v0&&Math.abs(r-45)<=d?r-=r-45:r<0&&Math.abs(r+45)<=d?r-=r+45:r>0&&Math.abs(r-90)<=d?r-=r-90:r<0&&Math.abs(r+90)<=d?r-=r+90:r>0&&Math.abs(r-135)<=d?r-=r-135:r<0&&Math.abs(r+135)<=d?r-=r+135:r>0&&Math.abs(r-180)<=d?r-=r-180:r<0&&Math.abs(r+180)<=d&&(r-=r+180),e.value=e.value.map((function(e){return o.id===e.id?Object(B["a"])(Object(B["a"])({},e),{},{rotate:r}):e}))}},document.onmouseup=function(){c=!1,document.onmousemove=null,document.onmouseup=null,i!==r&&(n.updateSlide({elements:e.value}),a())}}};return{rotateElement:r}},Gn={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频"},Un={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20},Yn=function(e,t){var n=e.left,o=e.top,l=e.width,c=e.height,a=Math.sqrt(Math.pow(l,2)+Math.pow(c,2))/2,r=180*Math.atan(c/l)/Math.PI,i=(180-t-r)*Math.PI/180,u=(r-t)*Math.PI/180,d=(90-t)*Math.PI/180,s=t*Math.PI/180,f=l/2,p=c/2,m=n+f,b=o+p,v={left:m+a*Math.cos(i),top:b-a*Math.sin(i)},O={left:m+p*Math.cos(d),top:b-p*Math.sin(d)},h={left:m+a*Math.cos(u),top:b-a*Math.sin(u)},j={left:m+f*Math.cos(s),top:b+f*Math.sin(s)},y={left:m-a*Math.cos(i),top:b+a*Math.sin(i)},g={left:m-p*Math.sin(s),top:b+p*Math.cos(s)},x={left:m-a*Math.cos(u),top:b+a*Math.sin(u)},C={left:m-f*Math.cos(s),top:b-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:h,rightPoint:j,rightBottomPoint:y,bottomPoint:g,leftBottomPoint:x,leftPoint:C}},Zn=function(e,t){var n,o=(n={},Object(ae["a"])(n,E.RIGHT_BOTTOM,t.leftTopPoint),Object(ae["a"])(n,E.LEFT_BOTTOM,t.rightTopPoint),Object(ae["a"])(n,E.LEFT_TOP,t.rightBottomPoint),Object(ae["a"])(n,E.RIGHT_TOP,t.leftBottomPoint),Object(ae["a"])(n,E.TOP,t.bottomPoint),Object(ae["a"])(n,E.BOTTOM,t.topPoint),Object(ae["a"])(n,E.LEFT,t.rightPoint),Object(ae["a"])(n,E.RIGHT,t.leftPoint),n);return o[e]},Jn=function(e,t){var n=ee(),o=$(),l=Object(g["c"])(n),c=l.activeElementIdList,a=l.activeGroupElementId,r=l.canvasScale,i=Object(g["c"])(o),u=i.viewportRatio,d=Object(g["c"])(se()),s=d.ctrlOrShiftKeyActive,f=qe(),p=f.addHistorySnapshot,m=function(l,i,d){var f=!0;n.setScalingState(!0);var m,b=i.left,v=i.top,O=i.width,h=i.height,j="rotate"in i&&i.rotate?i.rotate:0,y=Math.PI*j/180,g=s.value||"fixedRatio"in i&&i.fixedRatio,x=O/h,C=l.pageX,k=l.pageY,w=Un[i.type]||20,N=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||n.setEditorareaFocus(!0),l.value.includes(i.id)){if(u.value){var s=[];if(i.groupId){var f=[];e.value.forEach((function(e){e.groupId===i.groupId&&f.push(e.id)})),s=l.value.filter((function(e){return!f.includes(e)}))}else s=l.value.filter((function(e){return e!==i.id}));s.length>0&&n.setActiveElementIdList(s)}else if(a.value!==i.id)n.setHandleElementId(i.id);else if(c.value!==i.id){var p=o.pageX,m=o.pageY;o.target.onmouseup=function(e){var t=e.pageX,o=e.pageY;p===t&&m===o&&(n.setActiveGroupElementId(i.id),e.target.onmouseup=null)}}}else{var b=[];if(b=u.value?[].concat(Object(G["a"])(l.value),[i.id]):[i.id],i.groupId){var v=[];e.value.forEach((function(e){e.groupId===i.groupId&&v.push(e.id)})),b=[].concat(Object(G["a"])(b),v)}n.setActiveElementIdList(Object(Z["uniq"])(b)),n.setHandleElementId(i.id)}d&&t(o,i)},s=function(){var t=e.value.filter((function(e){return!e.lock})),o=t.map((function(e){return e.id}));n.setActiveElementIdList(o)};return{selectElement:d,selectAllElement:s}},Qn=function(e,t){var n=$(),o=Object(g["c"])(ee()),l=o.activeElementIdList,c=o.activeGroupElementId,a=o.canvasScale,r=Object(g["c"])(n),i=r.viewportRatio,u=qe(),d=u.addHistorySnapshot,s=function(o,r){if(l.value.includes(r.id)){var u,s=!0,f=Ge,p=Ge*i.value,m=5,b=JSON.parse(JSON.stringify(e.value)),v=b.filter((function(e){return l.value.includes(e.id)})),O=r.left,h=r.top,j=r.width,y="height"in r&&r.height?r.height:0,g="rotate"in r&&r.rotate?r.rotate:0,x=o.pageX,C=o.pageY,k=null,w=r.id===c.value,E=[],N=[],I=Object(L["a"])(e.value);try{for(I.s();!(u=I.n()).done;){var V=u.value;if("line"!==V.type&&((!w||V.id!==r.id)&&(w||!l.value.includes(V.id)))){var S=void 0,T=void 0,M=void 0,_=void 0;if("rotate"in V&&V.rotate){var D=Te({left:V.left,top:V.top,width:V.width,height:V.height,rotate:V.rotate}),z=D.xRange,A=D.yRange;S=z[0],T=A[0],M=z[1]-z[0],_=A[1]-A[0]}else S=V.left,T=V.top,M=V.width,_=V.height;var F=S+M,R=T+_,P=T+_/2,H=S+M/2,q={value:T,range:[S,F]},X={value:R,range:[S,F]},W={value:P,range:[S,F]},U={value:S,range:[T,R]},Y={value:F,range:[T,R]},Z={value:H,range:[T,R]};E.push(q,X,W),N.push(U,Y,Z)}}}catch(ne){I.e(ne)}finally{I.f()}var J={value:0,range:[0,f]},K={value:p,range:[0,f]},Q={value:p/2,range:[0,f]},$={value:0,range:[0,p]},ee={value:f,range:[0,p]},te={value:f/2,range:[0,p]};E.push(J,K,Q),N.push($,ee,te),E=ze(E),N=ze(N),document.onmousemove=function(n){var o=n.pageX,c=n.pageY;if(!1!==k&&(k=Math.abs(x-o)v&&(A[0]=D-M,F[0]=0),b>O&&(A[1]=z-_,F[1]=0),e.value=e.value.map((function(e){if(e.id===l.id){var t=Object(B["a"])(Object(B["a"])({},e),{},{left:M,top:_,start:A,end:F});return a!==N.MID?(l.broken&&(t.broken=[(A[0]+F[0])/2,(A[1]+F[1])/2]),l.curve&&(t.curve=[(A[0]+F[0])/2,(A[1]+F[1])/2])):(l.broken&&(t.broken=[j-M,y-_]),l.curve&&(t.curve=[j-M,y-_])),t}return e}))}},document.onmouseup=function(n){r=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,l=n.pageY;u===o&&d===l||(t.updateSlide({elements:e.value}),c())}};return{dragLineElement:a}},eo=function(e){var t=ee(),n=Object(g["c"])(t),o=n.canvasScale,l=n.creatingElement,c=function(t){var n=t.start,l=t.end;if(e.value){var c=e.value.getBoundingClientRect(),a=Object(Rt["a"])(n,2),r=a[0],i=a[1],u=Object(Rt["a"])(l,2),d=u[0],s=u[1],f=Math.min(r,d),p=Math.max(r,d),m=Math.min(i,s),b=Math.max(i,s),v=(f-c.x)/o.value,O=(m-c.y)/o.value,h=(p-f)/o.value,j=(b-m)/o.value;return{left:v,top:O,width:h,height:j}}},a=function(t){var n=t.start,l=t.end;if(e.value){var c=e.value.getBoundingClientRect(),a=Object(Rt["a"])(n,2),r=a[0],i=a[1],u=Object(Rt["a"])(l,2),d=u[0],s=u[1],f=Math.min(r,d),p=Math.max(r,d),m=Math.min(i,s),b=Math.max(i,s),v=(f-c.x)/o.value,O=(m-c.y)/o.value,h=(p-f)/o.value,j=(b-m)/o.value,y=[r===f?0:h,i===m?0:j],g=[d===f?0:h,s===m?0:j];return{left:v,top:O,start:y,end:g}}},r=Ue(),i=r.createTextElement,u=r.createShapeElement,d=r.createLineElement,s=function(e){if(l.value){var n=l.value.type;if("text"===n){var o=c(e);o&&i(o)}else if("shape"===n){var r=c(e);r&&u(r,l.value.data)}else if("line"===n){var s=a(e);s&&d(s,l.value.data)}t.setCreatingElement(null)}};return{insertElementFromCreateSelection:s}},to=["id"];function no(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,to)}var oo;n("a9e3");(function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table",e["LATEX"]="latex",e["VIDEO"]="video",e["AUDIO"]="audio"})(oo||(oo={}));var lo=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=l.viewportRatio,r=qe(),i=r.addHistorySnapshot,u=function(t){var l,r=Ge,u=Ge*a.value,d=De(o.value),s=d.minX,f=d.maxX,p=d.minY,m=d.maxY,b=JSON.parse(JSON.stringify(c.value.elements)),v=Object(L["a"])(b);try{for(v.s();!(l=v.n()).done;){var O=l.value;if(n.value.includes(O.id)){if(t===k.CENTER){var h=p+(m-p)/2-u/2,j=s+(f-s)/2-r/2;O.top=O.top-h,O.left=O.left-j}if(t===k.TOP){var y=p-0;O.top=O.top-y}else if(t===k.VERTICAL){var g=p+(m-p)/2-u/2;O.top=O.top-g}else if(t===k.BOTTOM){var x=m-u;O.top=O.top-x}else if(t===k.LEFT){var C=s-0;O.left=O.left-C}else if(t===k.HORIZONTAL){var w=s+(f-s)/2-r/2;O.left=O.left-w}else if(t===k.RIGHT){var E=f-r;O.left=O.left-E}}}}catch(N){v.e(N)}finally{v.f()}e.updateSlide({elements:b}),i()};return{alignElementToCanvas:u}},co=["src"];function ao(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ImageClipHandler"),r=Object(y["resolveComponent"])("ImageOutline"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-image",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[e.isCliping?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,clipPath:e.clipShape.style,onClip:t[0]||(t[0]=function(t){return e.handleClip(t)})},null,8,["src","clipData","width","height","top","left","clipPath"])):Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[Object(y["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter}),onDragstart:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["prevent"])),alt:""},null,44,co)],4)],36)),[[i,e.contextmenus]])],4)],6)}var ro,io,uo=function(e){var t=Object(y["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,l=t.blur,c=t.color;return"".concat(n,"px ").concat(o,"px ").concat(l,"px ").concat(c)}return""}));return{shadowStyle:t}},so=function(e,t){var n=Object(y["computed"])((function(){var n="";return e.value&&t.value?n="rotateX(180deg) rotateY(180deg)":t.value?n="rotateX(180deg)":e.value&&(n="rotateY(180deg)"),n}));return{flipStyle:n}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(ro||(ro={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(io||(io={}));var fo={rect:{name:"矩形",type:ro.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:ro.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},rect3:{name:"矩形3",type:ro.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.8*t," Z")}},roundRect:{name:"圆角矩形",type:ro.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:ro.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:ro.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L 0 ").concat(t," L ").concat(e," ").concat(t," Z")}},triangle2:{name:"三角形2",type:ro.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:function(e,t){return"M ".concat(.5*e," ").concat(t," L 0 0 L ").concat(e," 0 Z")}},triangle3:{name:"三角形3",type:ro.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," Z")}},rhombus:{name:"菱形",type:ro.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.5*e," ").concat(t," L 0 ").concat(.5*t," Z")}},hexagon:{name:"六边形",type:ro.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.2*e," 0 L ").concat(.8*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.8*e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.5*t," Z")}},pentagon:{name:"五边形",type:ro.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.38*t," L ").concat(.82*e," ").concat(t," L ").concat(.18*e," ").concat(t," L 0 ").concat(.38*t," Z")}},parallelogram:{name:"平行四边形",type:ro.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.3*e," 0 L ").concat(e," 0 L ").concat(.7*e," ").concat(t," L 0 ").concat(t," Z")}},parallelogram2:{name:"平行四边形2",type:ro.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:function(e,t){return"M ".concat(.3*e," ").concat(t," L ").concat(e," ").concat(t," L ").concat(.7*e," 0 L 0 0 Z")}},trapezoid:{name:"梯形",type:ro.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.25*e," 0 L ").concat(.75*e," 0 L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},trapezoid2:{name:"梯形2",type:ro.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:function(e,t){return"M 0 0 L ".concat(e," 0 L ").concat(.75*e," ").concat(t," L ").concat(.25*e," ").concat(t," Z")}}},po=function(e){var t=Object(y["computed"])((function(){if(!e.value)return fo.rect;var t=e.value.shape||ro.RECT;return fo[t]})),n=Object(y["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(Rt["a"])(e.value.range,2),n=t[0],o=t[1],l=(o[0]-n[0])/100,c=(o[1]-n[1])/100,a=n[0]/l,r=n[1]/c;return{left:-a+"%",top:-r+"%",width:100/l+"%",height:100/c+"%"}}));return{clipShape:t,imgPosition:n}},mo=(n("b64b"),function(e){var t=Object(y["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);na.width&&(f=a.width-r.width),m<0?m=0:m+r.height>a.height&&(m=a.height-r.height),p.left=f,p.top=m}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,j(),setTimeout((function(){i.value=!1}),0)}},C=function(t,n){i.value=!0;var o=!0,c=50/e.width*100,r=50/e.height*100,u=t.pageX,d=t.pageY,f=s.value,m={left:p.left,top:p.top,width:p.width,height:p.height},b=p.width/p.height;document.onmousemove=function(t){if(o){var i,s,v,O,h=t.pageX,j=t.pageY,y=(h-u)/l.value/e.width*100,g=(j-d)/l.value/e.height*100;a.value&&("b-r"!==n&&"t-l"!==n||(g=y/b),"b-l"!==n&&"t-r"!==n||(g=-y/b)),"t-l"===n?(m.left+y<0&&(y=-m.left),m.top+g<0&&(g=-m.top),m.width-yf.width&&(y=f.width-(m.left+m.width)),m.top+g<0&&(g=-m.top),m.width+yf.height&&(g=f.height-(m.top+m.height)),m.width-yf.width&&(y=f.width-(m.left+m.width)),m.top+m.height+g>f.height&&(g=f.height-(m.top+m.height)),m.width+yf.height&&(g=f.height-(m.top+m.height)),m.height+gf.width&&(y=f.width-(m.left+m.width)),m.width+y\s$/,e)},El=function(e){return Object(Cl["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},Nl=function(e){return Object(Cl["g"])(/^\s*([-+*])\s$/,e)},Il=function(e){return Object(Cl["e"])(/^```$/,e)},Vl=function(e){var t=[].concat(Object(G["a"])(Cl["d"]),[Cl["a"],Cl["b"]]);return t.push(wl(e.nodes.blockquote)),t.push(El(e.nodes.ordered_list)),t.push(Nl(e.nodes.bullet_list)),t.push(Il(e.nodes.code_block)),Object(Cl["c"])({rules:t})},Sl=function(e){return[Vl(e),Object(hl["b"])(kl(e)),Object(hl["b"])(ml["a"]),Object(yl["a"])(),Object(gl["a"])(),Object(jl["a"])()]},Bl=n("2210"),Ll=Object(B["a"])(Object(B["a"])({},xl["d"]),{},{content:"list_item+",group:"block"}),Tl=Object(B["a"])(Object(B["a"])({},xl["a"]),{},{content:"list_item+",group:"block"}),Ml=Object(B["a"])(Object(B["a"])({},xl["c"]),{},{content:"paragraph block*",group:"block"}),_l={attrs:{align:{default:""}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";return n=/(left|right|center|justify)/.test(n)?n:"",{align:n}}}],toDOM:function(e){var t=e.attrs.align,n="";return t&&"left"!==t&&(n+="text-align: ".concat(t,";")),["p",{style:n},0]}},Dl=Object(B["a"])(Object(B["a"])({},Bl["b"]),{},{ordered_list:Ll,bullet_list:Tl,list_item:Ml,paragraph:_l}),zl={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}},Al={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},Fl={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:function(e){return"line-through"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"line-through"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration-line: line-through"},0]}},Rl={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:function(e){return"underline"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"underline"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration: underline"},0]}},Pl={attrs:{color:{}},parseDOM:[{style:"color",getAttrs:function(e){return e?{color:e}:{}}}],toDOM:function(e){var t=e.attrs.color,n="";return t&&(n+="color: ".concat(t,";")),["span",{style:n},0]}},Hl={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{tag:"span[style*=background-color]",getAttrs:function(e){return e?{backcolor:e}:{}}}],toDOM:function(e){var t=e.attrs.backcolor,n="";return t&&(n+="background-color: ".concat(t,";")),["span",{style:n},0]}},ql={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:function(e){return e?{fontsize:e}:{}}}],toDOM:function(e){var t=e.attrs.fontsize,n="";return t&&(n+="font-size: ".concat(t)),["span",{style:n},0]}},Xl={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:function(e){return{fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""}}}],toDOM:function(e){var t=e.attrs.fontname,n="";return t&&(n+="font-family: ".concat(t)),["span",{style:n},0]}},Wl=Object(B["a"])(Object(B["a"])({},Bl["a"]),{},{subscript:zl,superscript:Al,strikethrough:Fl,underline:Rl,forecolor:Pl,backcolor:Hl,fontsize:ql,fontname:Xl}),Gl=Dl,Ul=Wl,Yl=new Ol["i"]({nodes:Gl,marks:Ul}),Zl=function(e){var t="
".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return Ol["a"].fromSchema(Yl).parse(o)},Jl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new vl["c"](e,Object(B["a"])({state:bl["b"].create({doc:Zl(t),plugins:Sl(Yl)})},n))},Kl=n("1344");(function(e){e["RICH_TEXT_COMMAND"]="RICH_TEXT_COMMAND",e["OPEN_CHART_DATA_EDITOR"]="OPEN_CHART_DATA_EDITOR",e["OPEN_LATEX_EDITOR"]="OPEN_LATEX_EDITOR"})(pl||(pl={}));var Ql=Object(Kl["a"])(),$l=Ql,ec=(n("6062"),function(e,t,n){var o=e,l=o.selection,c=o.doc;if(!l||!c)return e;var a=l.from,r=l.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var p=new Set([u,d,s]);return c.nodesBetween(a,r,(function(e,t){var o=e.type,l=e.attrs.align||"";return l!==n&&p.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,l=t.pos,c=t.nodeType,a=o.attrs;a=n?Object(B["a"])(Object(B["a"])({},a),{},{align:n}):Object(B["a"])(Object(B["a"])({},a),{},{align:null}),e=e.setNodeMarkup(l,c,a,o.marks)})),e):e}),tc=function(e,t){var n=e.state,o=n.schema,l=n.selection,c=ec(n.tr.setSelection(l),o,t);e.dispatch(c)},nc=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},oc=function(e,t){return function(n,o){var l=n.schema,c=n.selection,a=c.$from,r=c.$to,i=a.blockRange(r);if(!i)return!1;var u=_((function(e){return nc(e,l)}))(c);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(xl["b"])(t)(n,o);if(nc(u.node,l)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(xl["g"])(e)(n,o)}},lc=Object(y["defineComponent"])({name:"prosemirror-editor",emits:["update","focus","blur"],props:{elementId:{type:String,required:!0},defaultColor:{type:String,required:!0},defaultFontName:{type:String,required:!0},editable:{type:Boolean,default:!1},value:{type:String,required:!0},autoFocus:{type:Boolean,default:!1}},setup:function(e,t){var n,o=t.emit,l=ee(),c=Object(g["c"])(l),a=c.handleElementId,r=Object(y["ref"])(),i=Object(Z["debounce"])((function(){o("update",n.dom.innerHTML)}),300,{trailing:!0}),u=function(){"请输入内容"===e.value&&setTimeout((function(){Object(ml["d"])(n.state,n.dispatch)}),0),l.setDisableHotkeysState(!0),o("focus")},d=function(){l.setDisableHotkeysState(!1),o("blur")},s=Object(Z["debounce"])((function(){var t=q(n,{color:e.defaultColor,fontname:e.defaultFontName});l.setRichtextAttrs(t)}),30,{trailing:!0}),f=function(){i(),s()},p=Object(y["computed"])((function(){return e.value}));Object(y["watch"])(p,(function(){if(n&&!n.hasFocus()){var e=n.state,t=e.doc,o=e.tr;n.dispatch(o.replaceRangeWith(0,t.content.size,Zl(p.value)))}})),Object(y["watch"])((function(){return e.editable}),(function(){n.setProps({editable:function(){return e.editable}})})),Object(y["onMounted"])((function(){n=Jl(r.value,p.value,{handleDOMEvents:{focus:u,blur:d,keydown:f,click:s},editable:function(){return e.editable}}),e.autoFocus&&n.focus()})),Object(y["onUnmounted"])((function(){n&&n.destroy()}));var m=function(t){if(a.value===e.elementId){var o,l="command"in t?[t]:t,c=Object(L["a"])(l);try{for(c.s();!(o=c.n()).done;){var r=o.value;if("fontname"===r.command&&r.value){var u=n.state.schema.marks.fontname.create({fontname:r.value}),d=n.state.selection.empty;d&&Object(ml["d"])(n.state,n.dispatch);var f=n.state.selection,p=f.$from,m=f.$to;n.dispatch(n.state.tr.addMark(p.pos,m.pos,u))}else if("fontsize"===r.command&&r.value){var b=n.state.schema.marks.fontsize.create({fontsize:r.value}),v=n.state.selection.empty;v&&Object(ml["d"])(n.state,n.dispatch);var O=n.state.selection,h=O.$from,j=O.$to;n.dispatch(n.state.tr.addMark(h.pos,j.pos,b))}else if("color"===r.command&&r.value){var y=n.state.schema.marks.forecolor.create({color:r.value}),g=n.state.selection.empty;g&&Object(ml["d"])(n.state,n.dispatch);var x=n.state.selection,C=x.$from,k=x.$to;n.dispatch(n.state.tr.addMark(C.pos,k.pos,y))}else if("backcolor"===r.command&&r.value){var w=n.state.schema.marks.backcolor.create({backcolor:r.value}),E=n.state.selection.empty;E&&Object(ml["d"])(n.state,n.dispatch);var N=n.state.selection,I=N.$from,V=N.$to;n.dispatch(n.state.tr.addMark(I.pos,V.pos,w))}else if("bold"===r.command){var S=n.state.selection.empty;S&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.strong)(n.state,n.dispatch)}else if("em"===r.command){var B=n.state.selection.empty;B&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.em)(n.state,n.dispatch)}else if("underline"===r.command){var T=n.state.selection.empty;T&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.underline)(n.state,n.dispatch)}else if("strikethrough"===r.command){var M=n.state.selection.empty;M&&Object(ml["d"])(n.state,n.dispatch),Object(ml["f"])(n.state.schema.marks.strikethrough)(n.state,n.dispatch)}else if("subscript"===r.command)Object(ml["f"])(n.state.schema.marks.subscript)(n.state,n.dispatch);else if("superscript"===r.command)Object(ml["f"])(n.state.schema.marks.superscript)(n.state,n.dispatch);else if("blockquote"===r.command)Object(ml["g"])(n.state.schema.nodes.blockquote)(n.state,n.dispatch);else if("code"===r.command)Object(ml["f"])(n.state.schema.marks.code)(n.state,n.dispatch);else if("align"===r.command&&r.value)tc(n,r.value);else if("bulletList"===r.command){var _=n.state.schema.nodes,D=_.bullet_list,z=_.list_item;oc(D,z)(n.state,n.dispatch)}else if("orderedList"===r.command){var A=n.state.schema.nodes,F=A.ordered_list,R=A.list_item;oc(F,R)(n.state,n.dispatch)}else if("clear"===r.command){var P=n.state.selection.empty;P&&Object(ml["d"])(n.state,n.dispatch);var H=n.state.selection,q=H.$from,X=H.$to;n.dispatch(n.state.tr.removeMark(q.pos,X.pos))}else"insert"===r.command&&r.value&&n.dispatch(n.state.tr.insertText(r.value))}}catch(W){c.e(W)}finally{c.f()}n.focus(),i(),s()}};return $l.on(pl.RICH_TEXT_COMMAND,m),Object(y["onUnmounted"])((function(){$l.off(pl.RICH_TEXT_COMMAND,m)})),{editorViewRef:r}}});n("da17");const cc=Ln()(lc,[["render",fl],["__scopeId","data-v-f0d6ea86"]]);var ac=cc,rc=Object(y["defineComponent"])({name:"editable-element-text",components:{ElementOutline:dl,ProsemirrorEditor:ac},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.handleElementId,c=o.isScaling,a=qe(),r=a.addHistorySnapshot,i=Object(y["ref"])(),u=Object(y["computed"])((function(){return e.elementInfo.shadow})),d=uo(u),s=d.shadowStyle,f=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},p=Object(y["ref"])(-1);Object(y["watch"])(c,(function(){l.value===e.elementInfo.id&&(c.value||-1===p.value||(n.updateElement({id:e.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var m=function(t){var o=t[0].contentRect;if(i.value){var l=o.height;e.elementInfo.height!==l&&(c.value?p.value=l:n.updateElement({id:e.elementInfo.id,props:{height:l}}))}},b=new ResizeObserver(m);Object(y["onMounted"])((function(){i.value&&b.observe(i.value)})),Object(y["onUnmounted"])((function(){i.value&&b.unobserve(i.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{content:t}}),r()};return{elementRef:i,shadowStyle:s,updateContent:v,handleSelectElement:f}}});n("5083");const ic=Ln()(rc,[["render",ll],["__scopeId","data-v-58d3557f"]]);var uc=ic,dc=["width","height"],sc={key:0},fc=["transform"],pc=["d","fill","stroke","stroke-width","stroke-dasharray"],mc=["innerHTML"];function bc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GradientDefs"),r=Object(y["resolveComponent"])("ProsemirrorEditor"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle,color:e.text.defaultColor,fontFamily:e.text.defaultFontName}),onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)}),onDblclick:t[3]||(t[3]=function(t){return e.enterEditing()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",sc,[Object(y["createVNode"])(a,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,pc)],8,fc)],8,dc)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",[e.text.align,{editable:e.editable}]])},[e.editable?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,elementId:e.elementInfo.id,defaultColor:e.text.defaultColor,defaultFontName:e.text.defaultFontName,editable:!e.elementInfo.lock,autoFocus:!0,value:e.text.content,onUpdate:t[0]||(t[0]=function(t){return e.updateText(t)}),onMousedown:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"show-text ProseMirror-static",innerHTML:e.text.content},null,8,mc))],2)],36),[[i,e.contextmenus]])],4)],6)}var vc=["id","gradientTransform"],Oc=["stop-color"],hc=["stop-color"],jc=["id"],yc=["stop-color"],gc=["stop-color"];function xc(e,t,n,o,l,c){return"linear"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,Oc),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,hc)],8,vc)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("radialGradient",{key:1,id:e.id},[Object(y["createElementVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,yc),Object(y["createElementVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,gc)],8,jc))}var Cc=Object(y["defineComponent"])({name:"gradient-defs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}}});const kc=Ln()(Cc,[["render",xc]]);var wc=kc,Ec=Object(y["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:wc,ProsemirrorEditor:ac},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.handleElementId,c=qe(),a=c.addHistorySnapshot,r=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},i=Object(y["computed"])((function(){return e.elementInfo.outline})),u=yo(i),d=u.outlineWidth,s=u.outlineStyle,f=u.outlineColor,p=Object(y["computed"])((function(){return e.elementInfo.shadow})),m=uo(p),b=m.shadowStyle,v=Object(y["computed"])((function(){return e.elementInfo.flipH})),O=Object(y["computed"])((function(){return e.elementInfo.flipV})),h=so(v,O),j=h.flipStyle,x=Object(y["ref"])(!1),C=function(){x.value=!0,t.setEditingShapeElementId(e.elementInfo.id)},k=function(){x.value=!1,t.setEditingShapeElementId("")};Object(y["watch"])(l,(function(){l.value!==e.elementInfo.id&&x.value&&k()}));var w=Object(y["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t})),E=function(t){var o=Object(B["a"])(Object(B["a"])({},w.value),{},{content:t});n.updateElement({id:e.elementInfo.id,props:{text:o}}),a()};return{shadowStyle:b,outlineWidth:d,outlineStyle:s,outlineColor:f,flipStyle:j,editable:x,text:w,handleSelectElement:r,updateText:E,enterEditing:C}}});n("efbe");const Nc=Ln()(Ec,[["render",bc],["__scopeId","data-v-4faf3734"]]);var Ic=Nc,Vc=["width","height"],Sc=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Bc=["d"];function Lc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-shape",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-point",d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,Sc),Object(y["withDirectives"])(Object(y["createElementVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Bc),[[r,e.contextmenus]])],8,Vc))],36)],6)}var Tc=["id","markerWidth","markerHeight","refX","refY"],Mc=["d","fill","transform"];function _c(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*e.size,markerHeight:3*e.size,refX:1.5*e.size,refY:1.5*e.size},[Object(y["createElementVNode"])("path",{d:e.path,fill:e.color,transform:"scale(".concat(.3*e.size,", ").concat(.3*e.size,") rotate(").concat(e.rotate,", 5, 5)")},null,8,Mc)],8,Tc)}var Dc={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},zc={"arrow-start":180,"arrow-end":0},Ac=Object(y["defineComponent"])({name:"line-point-marker",props:{id:{type:String,required:!0},position:{type:String,required:!0},type:{type:String,required:!0},color:{type:String},baseSize:{type:Number,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return Dc[e.type]})),n=Object(y["computed"])((function(){return zc["".concat(e.type,"-").concat(e.position)]||0})),o=Object(y["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});const Fc=Ln()(Ac,[["render",_c]]);var Rc=Fc,Pc=Object(y["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:Rc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(y["computed"])((function(){return e.elementInfo.shadow})),o=uo(n),l=o.shadowStyle,c=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(y["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(y["computed"])((function(){return Re(e.elementInfo)}));return{handleSelectElement:t,shadowStyle:l,svgWidth:c,svgHeight:a,lineDashArray:r,path:i}}});n("3dc0");const Hc=Ln()(Pc,[["render",Lc],["__scopeId","data-v-603a705d"]]);var qc=Hc;function Xc(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline"),r=Object(y["resolveComponent"])("Chart"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-chart",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onDblclick:t[1]||(t[1]=function(t){return e.openDataEditor()})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend"])],36),[[i,e.contextmenus]])],4)],6)}function Wc(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"chart",style:Object(y["normalizeStyle"])({flexDirection:"top"===e.legend?"column-reverse":"column"})},[Object(y["createElementVNode"])("div",{class:"chart-content",ref:"chartRef",style:Object(y["normalizeStyle"])({width:e.width+"px",height:e.chartHeight+"px",transform:"scale(".concat(1/e.slideScale,")")})},null,4),e.legend?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"legends",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.slideScale,")")})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.legends,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"legend",key:n,style:Object(y["normalizeStyle"])({color:e.gridColor})},[Object(y["createElementVNode"])("div",{class:"block",style:Object(y["normalizeStyle"])({backgroundColor:e.themeColors[n]})},null,4),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(t),1)],4)})),128))],4)):Object(y["createCommentVNode"])("",!0)],4)}var Gc=n("ba48"),Uc=n.n(Gc),Yc=(n("aa97"),Object(y["defineComponent"])({name:"chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:Array,required:!0},legends:{type:Array,required:!0},gridColor:{type:String},legend:{type:String}},setup:function(e){var t,n=Object(y["ref"])(),o=Object(y["inject"])("slideScale")||Object(y["ref"])(1),l=Object(y["computed"])((function(){return e.legend?e.height-20:e.height})),c=function(){var t=e.options||{},n=Object(B["a"])(Object(B["a"])({},t),{},{width:e.width*o.value,height:l.value*o.value}),c="pie"===e.type?Object(B["a"])(Object(B["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:c,options:n}},a=function(){if(n.value){var o=Object(Z["upperFirst"])(e.type),l=c(),a=l.data,r=l.options;t=new Uc.a[o](n.value,a,r)}},r=function(){if(t){var e=c(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(y["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},o],r),Object(y["onMounted"])(a);var i=Object(y["computed"])((function(){var t=[];if(e.themeColor.length>=10)t=e.themeColor;else if(1===e.themeColor.length)t=Y()(e.themeColor[0]).analogous(10).map((function(e){return e.toHexString()}));else{var n=e.themeColor.length,o=Y()(e.themeColor[n-1]).analogous(11-n).map((function(e){return e.toHexString()}));t=[].concat(Object(G["a"])(e.themeColor.slice(0,n-1)),Object(G["a"])(o))}return t})),u=function(){if(n.value)for(var e=0;e<10;e++)n.value.style.setProperty("--theme-color-".concat(e+1),i.value[e])};Object(y["watch"])(i,u),Object(y["onMounted"])(u);var d=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(y["watch"])((function(){return e.gridColor}),d),Object(y["onMounted"])(d),{chartHeight:l,themeColors:i,slideScale:o,chartRef:n}}}));n("9a8f"),n("383f");const Zc=Ln()(Yc,[["render",Wc],["__scopeId","data-v-3ac5559a"]]);var Jc=Zc,Kc=Object(y["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:dl,Chart:Jc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=function(){$l.emit(pl.OPEN_CHART_DATA_EDITOR)};return{handleSelectElement:t,openDataEditor:n}}});n("b05d");const Qc=Ln()(Kc,[["render",Xc],["__scopeId","data-v-c09631b6"]]);var $c=Qc,ea={class:"element-content"};function ta(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("EditableTable"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-table",{lock:e.elementInfo.lock}]),ref:"elementRef",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",ea,[Object(y["createVNode"])(a,{onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:e.editable,onChange:t[1]||(t[1]=function(t){return e.updateTableCells(t)}),onChangeColWidths:t[2]||(t[2]=function(t){return e.updateColWidths(t)}),onChangeSelectedCells:t[3]||(t[3]=function(t){return e.updateSelectedCells(t)})},null,8,["data","width","colWidths","outline","theme","editable"]),!e.editable||e.elementInfo.lock?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:t[4]||(t[4]=function(t){return e.startEdit()}),onMousedown:t[5]||(t[5]=function(t){return e.handleSelectElement(t)})},[Object(y["createElementVNode"])("div",{class:"mask-tip",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.canvasScale,")")})},"双击编辑",4)],34)):Object(y["createCommentVNode"])("",!0)],512),[[r,e.contextmenus]])],4)],6)}var na={key:0,class:"handler"},oa=["onMousedown"],la=["width"],ca=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],aa=["innerHTML"];function ra(e,t,n,o,l,c){var a,r,i,u,d,s=Object(y["resolveComponent"])("CustomTextarea"),f=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-table",style:Object(y["normalizeStyle"])({width:e.totalWidth+"px"})},[e.editable?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",na,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.dragLinePosition,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"drag-line",key:n,style:Object(y["normalizeStyle"])({left:t+"px"}),onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,oa)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:e.theme,"row-header":null===(a=e.theme)||void 0===a?void 0:a.rowHeader,"row-footer":null===(r=e.theme)||void 0===r?void 0:r.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.colSizeList,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,la)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tableCells,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,o){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:Object(y["normalizeClass"])(["cell",{selected:e.selectedCells.includes("".concat(n,"_").concat(o))&&e.selectedCells.length>1,active:e.activedCell==="".concat(n,"_").concat(o)}]),style:Object(y["normalizeStyle"])(Object(B["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":"".concat(n,"_").concat(o),onMousedown:function(t){return e.handleCellMousedown(t,n,o)},onMouseenter:function(t){return e.handleCellMouseenter(n,o)}},[e.activedCell==="".concat(n,"_").concat(o)?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,class:Object(y["normalizeClass"])(["cell-text",{active:e.activedCell==="".concat(n,"_").concat(o)}]),contenteditable:"plaintext-only",value:t.text,onUpdateValue:function(t){return e.handleInput(t,n,o)},onInsertExcelData:function(t){return e.insertExcelData(t,n,o)}},null,8,["class","value","onUpdateValue","onInsertExcelData"])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:1,class:"cell-text",innerHTML:e.formatText(t.text)},null,8,aa))],46,ca)),[[y["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)}var ia=function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,l=e.strikethrough,c=e.color,a=e.backcolor,r=e.fontsize,i=e.fontname,u=e.align,d="".concat(o?"underline":""," ").concat(l?"line-through":"");return" "===d&&(d="none"),{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:d,color:c||"#000",backgroundColor:a||"",fontSize:r||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}},ua=function(e){return e.replace(/\n/g,"
").replace(/ /g," ")},da=function(e){var t=Object(y["computed"])((function(){for(var t=[],n=0;n1||c.rowspan>1)for(var a=n;a=d&&m<=f&&v>=s&&v<=p&&u.push("".concat(m,"_").concat(v));return u}));Object(y["watch"])(j,(function(e,t){Object(Z["isEqual"])(e,t)||n("changeSelectedCells",j.value)}));var x=Object(y["computed"])((function(){return j.value.length>1?null:j.value[0]})),C=Object(y["computed"])((function(){if(!a.value.length)return null;var e=Object(Rt["a"])(a.value,2),t=e[0],n=e[1];if(!r.value.length)return{row:[t,t],col:[n,n]};var o=Object(Rt["a"])(r.value,2),l=o[0],c=o[1];if(t===l&&n===c)return{row:[t,t],col:[n,n]};var i=Math.min(t,l),u=Math.min(n,c),d=Math.max(t,l),s=Math.max(n,c);return{row:[i,d],col:[u,s]}})),k=function(){return c.value=!1},w=function(e,t,n){0===e.button&&(r.value=[],c.value=!0,a.value=[t,n])},E=function(e,t){c.value&&(r.value=[e,t])};Object(y["onMounted"])((function(){document.addEventListener("mouseup",k)})),Object(y["onUnmounted"])((function(){document.removeEventListener("mouseup",k)}));var N=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},V=function(e){var t=i.value.length-1;a.value=[0,e],r.value=[t,e]},S=function(e){var t=i.value[e].length-1;a.value=[e,0],r.value=[e,t]},L=function(){var e=i.value.length-1,t=i.value[e].length-1;a.value=[0,0],r.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],l=0;l=0;u--)if(!N(u,r)){t[u][r].rowspan=t[u][r].rowspan-1;break}t.splice(e,1),i.value=t},M=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),o=[],l=0;l=0;u--)if(!N(r,u)){t[r][u].colspan=t[r][u].colspan-1;break}i.value=t.map((function(t){return t.splice(e,1),t})),f.value.splice(e,1),n("changeColWidths",f.value)},_=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;oi.value.length&&(a=t+l-i.value.length),o+c>i.value[0].length&&(r=o+c-i.value[0].length),(a||r)&&z(a,r),Object(y["nextTick"])((function(){for(var a=0;a1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},J=function(e,t){var n=j.value.length>1,o=i.value[e][t],l=n,c=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:l,canSplit:c}},K=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];j.value.includes("".concat(n,"_").concat(o))||(a.value=[n,o],r.value=[]);var l=J(n,o),c=l.canMerge,i=l.canSplit,u=Y(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return D(o)}},{text:"到右侧",handler:function(){return D(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return _(n)}},{text:"到下方",handler:function(){return _(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return M(o)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!c,handler:A},{text:"取消合并单元格",disable:!i,handler:function(){return F(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return V(o)}},{text:"选中当前行",handler:function(){return S(n)}},{text:"选中全部单元格",handler:L}]};return{getTextStyle:ia,dragLinePosition:b,tableCells:i,colSizeList:f,totalWidth:p,hideCells:h,selectedCells:j,activedCell:x,selectedRange:C,handleCellMousedown:w,handleCellMouseenter:E,selectCol:V,selectRow:S,handleMousedownColHandler:R,contextmenus:K,handleInput:X,insertExcelData:W,subThemeColor:s,formatText:ua}}});n("a215");const ha=Ln()(Oa,[["render",ra],["__scopeId","data-v-c0c56b6e"]]);var ja=ha,ya=Object(y["defineComponent"])({name:"editable-element-table",components:{EditableTable:ja},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=ee(),n=$(),o=Object(g["c"])(t),l=o.canvasScale,c=o.handleElementId,a=o.isScaling,r=Object(y["ref"])(),i=qe(),u=i.addHistorySnapshot,d=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},s=Object(y["ref"])(!1);Object(y["watch"])(c,(function(){c.value!==e.elementInfo.id&&(s.value=!1)})),Object(y["watch"])(s,(function(){t.setDisableHotkeysState(s.value)}));var f=function(){e.elementInfo.lock||(s.value=!0)},p=Object(y["ref"])(-1);Object(y["watch"])(a,(function(){c.value===e.elementInfo.id&&(a.value&&(s.value=!1),a.value||-1===p.value||(n.updateElement({id:e.elementInfo.id,props:{height:p.value}}),p.value=-1))}));var m=function(t){var o=t[0].contentRect;if(r.value){var l=o.height;e.elementInfo.height!==l&&(a.value?p.value=l:n.updateElement({id:e.elementInfo.id,props:{height:l}}))}},b=new ResizeObserver(m);Object(y["onMounted"])((function(){r.value&&b.observe(r.value)})),Object(y["onUnmounted"])((function(){r.value&&b.unobserve(r.value)}));var v=function(t){n.updateElement({id:e.elementInfo.id,props:{data:t}}),u()},O=function(t){var o=t.reduce((function(e,t){return e+t})),l=t.map((function(e){return e/o}));n.updateElement({id:e.elementInfo.id,props:{width:o,colWidths:l}}),u()},h=function(e){Object(y["nextTick"])((function(){return t.setSelectedTableCells(e)}))};return{elementRef:r,canvasScale:l,handleSelectElement:d,updateTableCells:v,updateColWidths:O,editable:s,startEdit:f,updateSelectedCells:h}}});n("11f0");const ga=Ln()(ya,[["render",ta],["__scopeId","data-v-426704b7"]]);var xa=ga,Ca=["width","height","stroke","stroke-width"],ka=["transform"],wa=["d"];function Ea(e,t,n,o,l,c){var a=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-latex",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)}),onDblclick:t[1]||(t[1]=function(t){return e.openLatexEditor()})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,wa)],8,ka)],8,Ca))],544),[[a,e.contextmenus]])],4)],6)}var Na=Object(y["defineComponent"])({name:"editable-element-latex",props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=function(){$l.emit(pl.OPEN_LATEX_EDITOR)};return{handleSelectElement:t,openLatexEditor:n}}});n("1190");const Ia=Ln()(Na,[["render",Ea],["__scopeId","data-v-3168526a"]]);var Va=Ia;function Sa(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("VideoPlayer"),r=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-video",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t,!1)})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:e.canvasScale},null,8,["width","height","src","poster","scale"]),(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(["t","b","l","r"],(function(n){return Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["handler-border",n]),key:n,onMousedown:t[0]||(t[0]=function(t){return e.handleSelectElement(t)})},null,34)})),64))],544),[[r,e.contextmenus]])],4)],6)}var Ba=function(e){return Object(y["pushScopeId"])("data-v-e716fb74"),e=e(),Object(y["popScopeId"])(),e},La=["src","poster"],Ta={class:"bezel"},Ma=Ba((function(){return Object(y["createElementVNode"])("div",{class:"controller-mask"},null,-1)})),_a={class:"controller"},Da={class:"icons icons-left"},za={class:"icon-content"},Aa={class:"volume"},Fa={class:"icon-content"},Ra={class:"volume-bar",ref:"volumeBarRef"},Pa=Ba((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Ha=[Pa],qa={class:"time"},Xa={class:"ptime"},Wa=Object(y["createTextVNode"])(" / "),Ga={class:"dtime"},Ua={class:"icons icons-right"},Ya={class:"speed"},Za={class:"icon speed-icon"},Ja=["onClick"],Ka=Ba((function(){return Object(y["createElementVNode"])("span",{class:"icon-content"},"循环",-1)})),Qa=[Ka],$a={class:"bar"},er=Ba((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),tr=[er];function nr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPause"),r=Object(y["resolveComponent"])("IconPlayOne"),i=Object(y["resolveComponent"])("IconVolumeMute"),u=Object(y["resolveComponent"])("IconVolumeNotice"),d=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["video-player",{"hide-controller":e.hideController}]),style:Object(y["normalizeStyle"])({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:"scale(".concat(1/e.scale,")")}),onMousemove:t[22]||(t[22]=function(t){return e.autoHideController()}),onClick:t[23]||(t[23]=function(t){return e.autoHideController()})},[Object(y["createElementVNode"])("div",{class:"video-wrap",onClick:t[8]||(t[8]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("video",{class:"video",ref:"videoRef",src:e.src,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:t[0]||(t[0]=function(t){return e.handleDurationchange()}),onTimeupdate:t[1]||(t[1]=function(t){return e.handleTimeupdate()}),onEnded:t[2]||(t[2]=function(t){return e.handleEnded()}),onProgress:t[3]||(t[3]=function(t){return e.handleProgress()}),onPlay:t[4]||(t[4]=function(t){return e.autoHideController()}),onPause:t[5]||(t[5]=function(t){return e.autoHideController()}),onError:t[6]||(t[6]=function(t){return e.handleError()})},null,40,La),Object(y["createElementVNode"])("div",Ta,[Object(y["createElementVNode"])("span",{class:Object(y["normalizeClass"])(["bezel-icon",{"bezel-transition":e.bezelTransition}]),onAnimationend:t[7]||(t[7]=function(t){return e.bezelTransition=!1})},[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1}))],34)])]),Ma,Object(y["createElementVNode"])("div",_a,[Object(y["createElementVNode"])("div",Da,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:t[9]||(t[9]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("span",za,[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1}))])]),Object(y["createElementVNode"])("div",Aa,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=function(t){return e.toggleVolume()})},[Object(y["createElementVNode"])("span",Fa,[0===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0})):1===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownVolumeBar(t)}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownVolumeBar(t)}),onClick:t[13]||(t[13]=function(t){return e.handleClickVolumeBar(t)})},[Object(y["createElementVNode"])("div",Ra,[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:e.volumeBarWidth})},Ha,4)],512)],32)]),Object(y["createElementVNode"])("span",qa,[Object(y["createElementVNode"])("span",Xa,Object(y["toDisplayString"])(e.ptime),1),Wa,Object(y["createElementVNode"])("span",Ga,Object(y["toDisplayString"])(e.dtime),1)])]),Object(y["createElementVNode"])("div",Ua,[Object(y["createElementVNode"])("div",Ya,[Object(y["createElementVNode"])("div",Za,[Object(y["createElementVNode"])("span",{class:"icon-content",onClick:t[14]||(t[14]=function(t){return e.speedMenuVisible=!e.speedMenuVisible})},"倍速"),e.speedMenuVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=function(t){return e.speedMenuVisible=!1})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.speedOptions,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["speed-menu-item",{active:t.value===e.playbackRate}]),key:t.label,onClick:function(n){return e.speed(t.value)}},Object(y["toDisplayString"])(t.label),11,Ja)})),128))],32)):Object(y["createCommentVNode"])("",!0)])]),Object(y["createElementVNode"])("div",{class:"loop",onClick:t[16]||(t[16]=function(t){return e.toggleLoop()})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["icon loop-icon",{active:e.loop}])},Qa,2)])]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[17]||(t[17]=function(t){return e.handleMousedownPlayBar(t)}),onTouchstart:t[18]||(t[18]=function(t){return e.handleMousedownPlayBar(t)}),onMousemove:t[19]||(t[19]=function(t){return e.handleMousemovePlayBar(t)}),onMouseenter:t[20]||(t[20]=function(t){return e.playBarTimeVisible=!0}),onMouseleave:t[21]||(t[21]=function(t){return e.playBarTimeVisible=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(y["normalizeStyle"])({left:e.playBarTimeLeft})},Object(y["toDisplayString"])(e.playBarTime),7),Object(y["createElementVNode"])("div",$a,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:e.playedBarWidth})},tr,4)])],544)])],38)}var or=function(e,t){Object(y["onMounted"])((function(){if(t.value){var n="normal";if(/m3u8(#|\?|$)/i.exec(e)?n="hls":/.flv(#|\?|$)/i.exec(e)&&(n="flv"),t.value&&"hls"===n&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(n="normal"),"hls"===n){var o=window.Hls;if(o&&o.isSupported()){var l=new o;l.loadSource(e),l.attachMedia(t.value)}}else if("flv"===n){var c=window.flvjs;if(c&&c.isSupported()){var a=c.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}}))},lr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e||isNaN(e))return"00:00";var t=function(e){return e<10?"0"+e:""+e},n=Math.floor(e/3600),o=Math.floor((e-3600*n)/60),l=Math.floor(e-3600*n-60*o);return(n>0?[n,o,l]:[o,l]).map(t).join(":")},cr=function(e){return e.getBoundingClientRect().left},ar=Object(y["defineComponent"])({name:"video-player",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},src:{type:String,required:!0},poster:{type:String,default:""},scale:{type:Number,default:1}},setup:function(e){var t=Object(y["ref"])(),n=Object(y["ref"])(),o=Object(y["ref"])(),l=Object(y["ref"])(.5),c=Object(y["ref"])(!0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=Object(y["ref"])(1),f=Object(y["ref"])(!1),p=Object(y["ref"])("00:00"),m=Object(y["ref"])("0"),b=Object(y["computed"])((function(){return lr(a.value)})),v=Object(y["computed"])((function(){return lr(r.value)})),O=Object(y["computed"])((function(){return a.value/r.value*100+"%"})),h=Object(y["computed"])((function(){return i.value/r.value*100+"%"})),j=Object(y["computed"])((function(){return 100*l.value+"%"})),g=Object(y["ref"])(!1),x=[{label:"2x",value:2},{label:"1.5x",value:1.5},{label:"1.25x",value:1.25},{label:"1x",value:1},{label:"0.75x",value:.75},{label:"0.5x",value:.5}],C=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,r.value),t.value.currentTime=e,a.value=e)},k=function(){t.value&&(c.value=!1,t.value.play(),d.value=!0)},w=function(){t.value&&(c.value=!0,t.value.pause(),d.value=!0)},E=function(){c.value?k():w()},N=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,l.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},I=function(e){t.value&&(t.value.playbackRate=e),s.value=e},V=function(){var e;r.value=(null===(e=t.value)||void 0===e?void 0:e.duration)||0},S=function(){var e;a.value=(null===(e=t.value)||void 0===e?void 0:e.currentTime)||0},B=function(){u.value?(C(0),k()):w()},L=function(){var e;i.value=null!==(e=t.value)&&void 0!==e&&e.buffered.length?t.value.buffered.end(t.value.buffered.length-1):0},T=function(){return ge["a"].error("视频加载失败")},M=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(o-cr(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var c=l*r.value;t.value.currentTime=c,a.value=c}},_=function e(o){if(t.value&&n.value){var l="clientX"in o?o.clientX:o.changedTouches[0].clientX,c=(l-cr(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var i=c*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",M),document.removeEventListener("touchmove",M),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},D=function(){document.addEventListener("mousemove",M),document.addEventListener("touchmove",M),document.addEventListener("mouseup",_),document.addEventListener("touchend",_)},z=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-cr(o.value)-5.5)/35;N(n)}},A=function e(){document.removeEventListener("mousemove",z),document.removeEventListener("touchmove",z),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},F=function(){document.addEventListener("mousemove",z),document.addEventListener("touchmove",z),document.addEventListener("mouseup",A),document.addEventListener("touchend",A)},R=function(e){if(o.value){var t=(e.clientX-cr(o.value)-5.5)/35;N(t)}},P=function(e){if(r.value&&n.value){var t=n.value.getBoundingClientRect().left,o=e.clientX-t;if(o<0||o>n.value.offsetWidth)return;var l=r.value*(o/n.value.offsetWidth);m.value="".concat(o-(l>=3600?25:20),"px"),p.value=lr(l),f.value=!0}},H=function(){t.value&&(t.value.muted?(t.value.muted=!1,N(.5)):(t.value.muted=!0,N(0)))},q=function(){u.value=!u.value},X=Object(y["ref"])(-1),W=Object(y["ref"])(!1),G=function(){W.value=!1,clearTimeout(X.value),X.value=setTimeout((function(){var e;null!==(e=t.value)&&void 0!==e&&e.played.length&&(W.value=!0)}),3e3)};return or(e.src,t),{videoRef:t,playBarWrap:n,volumeBarRef:o,volume:l,loop:u,paused:c,ptime:b,dtime:v,playBarTime:p,playBarTimeVisible:f,playBarTimeLeft:m,playedBarWidth:O,loadedBarWidth:h,volumeBarWidth:j,hideController:W,bezelTransition:d,playbackRate:s,speedMenuVisible:g,speedOptions:x,seek:C,play:k,pause:w,toggle:E,setVolume:N,speed:I,handleDurationchange:V,handleTimeupdate:S,handleEnded:B,handleProgress:L,handleMousedownPlayBar:D,handleMousedownVolumeBar:F,handleClickVolumeBar:R,handleMousemovePlayBar:P,toggleVolume:H,toggleLoop:q,autoHideController:G,handleError:T}}});n("a7fe");const rr=Ln()(ar,[["render",nr],["__scopeId","data-v-e716fb74"]]);var ir=rr,ur=Object(y["defineComponent"])({name:"editable-element-video",components:{VideoPlayer:ir},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))};return{canvasScale:n,handleSelectElement:o}}});n("de30");const dr=Ln()(ur,[["render",Sa],["__scopeId","data-v-7f80f8ee"]]);var sr=dr;function fr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice"),r=Object(y["resolveComponent"])("AudioPlayer"),i=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["editable-element-audio",{lock:e.elementInfo.lock}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"element-content",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"]),e.handleElementId===e.elementInfo.id?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,class:"audio-player",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:e.canvasScale,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["style","src","loop","scale"])):Object(y["createCommentVNode"])("",!0)],544),[[i,e.contextmenus]])],4)],6)}var pr=function(e){return Object(y["pushScopeId"])("data-v-5cabbb47"),e=e(),Object(y["popScopeId"])(),e},mr=["src","autoplay"],br={class:"controller"},vr={class:"icons"},Or={class:"icon-content"},hr={class:"volume"},jr={class:"icon-content"},yr={class:"volume-bar",ref:"volumeBarRef"},gr=pr((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),xr=[gr],Cr={class:"time"},kr={class:"ptime"},wr=Object(y["createTextVNode"])(" / "),Er={class:"dtime"},Nr={class:"bar"},Ir=pr((function(){return Object(y["createElementVNode"])("span",{class:"thumb"},null,-1)})),Vr=[Ir];function Sr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlayOne"),r=Object(y["resolveComponent"])("IconPause"),i=Object(y["resolveComponent"])("IconVolumeMute"),u=Object(y["resolveComponent"])("IconVolumeNotice"),d=Object(y["resolveComponent"])("IconVolumeSmall");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"audio-player",style:Object(y["normalizeStyle"])({transform:"scale(".concat(1/e.scale,")")})},[Object(y["createElementVNode"])("audio",{class:"audio",ref:"audioRef",src:e.src,autoplay:e.autoplay,onDurationchange:t[0]||(t[0]=function(t){return e.handleDurationchange()}),onTimeupdate:t[1]||(t[1]=function(t){return e.handleTimeupdate()}),onPlay:t[2]||(t[2]=function(t){return e.handlePlayed()}),onEnded:t[3]||(t[3]=function(t){return e.handleEnded()}),onProgress:t[4]||(t[4]=function(t){return e.handleProgress()}),onError:t[5]||(t[5]=function(t){return e.handleError()})},null,40,mr),Object(y["createElementVNode"])("div",br,[Object(y["createElementVNode"])("div",vr,[Object(y["createElementVNode"])("div",{class:"icon play-icon",onClick:t[6]||(t[6]=function(t){return e.toggle()})},[Object(y["createElementVNode"])("span",Or,[e.paused?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1}))])]),Object(y["createElementVNode"])("div",hr,[Object(y["createElementVNode"])("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=function(t){return e.toggleVolume()})},[Object(y["createElementVNode"])("span",jr,[0===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0})):1===e.volume?(Object(y["openBlock"])(),Object(y["createBlock"])(u,{key:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:2}))])]),Object(y["createElementVNode"])("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=function(t){return e.handleMousedownVolumeBar(t)}),onTouchstart:t[9]||(t[9]=function(t){return e.handleMousedownVolumeBar(t)}),onClick:t[10]||(t[10]=function(t){return e.handleClickVolumeBar(t)})},[Object(y["createElementVNode"])("div",yr,[Object(y["createElementVNode"])("div",{class:"volume-bar-inner",style:Object(y["normalizeStyle"])({width:e.volumeBarWidth})},xr,4)],512)],32)])]),Object(y["createElementVNode"])("span",Cr,[Object(y["createElementVNode"])("span",kr,Object(y["toDisplayString"])(e.ptime),1),wr,Object(y["createElementVNode"])("span",Er,Object(y["toDisplayString"])(e.dtime),1)]),Object(y["createElementVNode"])("div",{class:"bar-wrap",ref:"playBarWrap",onMousedown:t[11]||(t[11]=function(t){return e.handleMousedownPlayBar(t)}),onTouchstart:t[12]||(t[12]=function(t){return e.handleMousedownPlayBar(t)}),onMousemove:t[13]||(t[13]=function(t){return e.handleMousemovePlayBar(t)}),onMouseenter:t[14]||(t[14]=function(t){return e.playBarTimeVisible=!0}),onMouseleave:t[15]||(t[15]=function(t){return e.playBarTimeVisible=!1})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["bar-time",{hidden:!e.playBarTimeVisible}]),style:Object(y["normalizeStyle"])({left:e.playBarTimeLeft})},Object(y["toDisplayString"])(e.playBarTime),7),Object(y["createElementVNode"])("div",Nr,[Object(y["createElementVNode"])("div",{class:"loaded",style:Object(y["normalizeStyle"])({width:e.loadedBarWidth})},null,4),Object(y["createElementVNode"])("div",{class:"played",style:Object(y["normalizeStyle"])({width:e.playedBarWidth})},Vr,4)])],544)])],4)}var Br=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e||isNaN(e))return"00:00";var t=function(e){return e<10?"0"+e:""+e},n=Math.floor(e/3600),o=Math.floor((e-3600*n)/60),l=Math.floor(e-3600*n-60*o);return(n>0?[n,o,l]:[o,l]).map(t).join(":")},Lr=function(e){return e.getBoundingClientRect().left},Tr=Object(y["defineComponent"])({name:"audio-player",props:{src:{type:String,required:!0},loop:{type:Boolean,required:!0},autoplay:{type:Boolean,default:!1},scale:{type:Number,default:1}},setup:function(e){var t=Object(y["ref"])(),n=Object(y["ref"])(),o=Object(y["ref"])(),l=Object(y["ref"])(.5),c=Object(y["ref"])(!0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["ref"])("00:00"),s=Object(y["ref"])("0"),f=Object(y["computed"])((function(){return Br(a.value)})),p=Object(y["computed"])((function(){return Br(r.value)})),m=Object(y["computed"])((function(){return a.value/r.value*100+"%"})),b=Object(y["computed"])((function(){return i.value/r.value*100+"%"})),v=Object(y["computed"])((function(){return 100*l.value+"%"})),O=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,r.value),t.value.currentTime=e,a.value=e)},h=function(){t.value&&(c.value=!1,t.value.play())},j=function(){t.value&&(c.value=!0,t.value.pause())},g=function(){c.value?h():j()},x=function(e){t.value&&(e=Math.max(e,0),e=Math.min(e,1),t.value.volume=e,l.value=e,t.value.muted&&0!==e&&(t.value.muted=!1))},C=function(){var e;r.value=(null===(e=t.value)||void 0===e?void 0:e.duration)||0},k=function(){var e;a.value=(null===(e=t.value)||void 0===e?void 0:e.currentTime)||0},w=function(){c.value=!1},E=function(){e.loop?(O(0),h()):j()},N=function(){var e;i.value=null!==(e=t.value)&&void 0!==e&&e.buffered.length?t.value.buffered.end(t.value.buffered.length-1):0},I=function(){return ge["a"].error("视频加载失败")},V=function(e){if(t.value&&n.value){var o="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(o-Lr(n.value))/n.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);var c=l*r.value;t.value.currentTime=c,a.value=c}},S=function e(o){if(t.value&&n.value){var l="clientX"in o?o.clientX:o.changedTouches[0].clientX,c=(l-Lr(n.value))/n.value.clientWidth;c=Math.max(c,0),c=Math.min(c,1);var i=c*r.value;t.value.currentTime=i,a.value=i,document.removeEventListener("mousemove",V),document.removeEventListener("touchmove",V),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)}},B=function(){document.addEventListener("mousemove",V),document.addEventListener("touchmove",V),document.addEventListener("mouseup",S),document.addEventListener("touchend",S)},L=function(e){if(o.value){var t="clientX"in e?e.clientX:e.changedTouches[0].clientX,n=(t-Lr(o.value)-5.5)/35;x(n)}},T=function e(){document.removeEventListener("mousemove",L),document.removeEventListener("touchmove",L),document.removeEventListener("mouseup",e),document.removeEventListener("touchend",e)},M=function(){document.addEventListener("mousemove",L),document.addEventListener("touchmove",L),document.addEventListener("mouseup",T),document.addEventListener("touchend",T)},_=function(e){if(o.value){var t=(e.clientX-Lr(o.value)-5.5)/35;x(t)}},D=function(e){if(r.value&&n.value){var t=n.value.getBoundingClientRect().left,o=e.clientX-t;if(o<0||o>n.value.offsetWidth)return;var l=r.value*(o/n.value.offsetWidth);s.value="".concat(o-(l>=3600?25:20),"px"),d.value=Br(l),u.value=!0}},z=function(){t.value&&(t.value.muted?(t.value.muted=!1,x(.5)):(t.value.muted=!0,x(0)))};return{audioRef:t,playBarWrap:n,volumeBarRef:o,volume:l,paused:c,ptime:f,dtime:p,playBarTime:d,playBarTimeVisible:u,playBarTimeLeft:s,playedBarWidth:m,loadedBarWidth:b,volumeBarWidth:v,play:h,pause:j,toggle:g,setVolume:x,handleDurationchange:C,handleTimeupdate:k,handlePlayed:w,handleEnded:E,handleProgress:N,handleError:I,handleMousedownPlayBar:B,handleMousedownVolumeBar:M,handleClickVolumeBar:_,handleMousemovePlayBar:D,toggleVolume:z}}});n("195c");const Mr=Ln()(Tr,[["render",Sr],["__scopeId","data-v-5cabbb47"]]);var _r=Mr,Dr=Object(y["defineComponent"])({name:"editable-element-audio",components:{AudioPlayer:_r},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.handleElementId,l=Object(g["c"])($()),c=l.viewportRatio,a=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),r=Object(y["computed"])((function(){var t=Ge,o=Ge*c.value,l=280/n.value,a=50/n.value,r=e.elementInfo.width,i=e.elementInfo.height,u=e.elementInfo.left,d=e.elementInfo.top,s=0,f=i;return u+l>=t&&(s=r-l),d+i+a>=o&&(f=-a),{left:s+"px",top:f+"px"}})),i=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))};return{canvasScale:n,handleElementId:o,audioIconSize:a,audioPlayerPosition:r,handleSelectElement:i}}});n("2fee");const zr=Ln()(Dr,[["render",fr],["__scopeId","data-v-66dd4448"]]);var Ar=zr,Fr=Object(y["defineComponent"])({name:"editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},isMultiSelect:{type:Boolean,required:!0},selectElement:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,el),Object(ae["a"])(t,oo.TEXT,uc),Object(ae["a"])(t,oo.SHAPE,Ic),Object(ae["a"])(t,oo.LINE,qc),Object(ae["a"])(t,oo.CHART,$c),Object(ae["a"])(t,oo.TABLE,xa),Object(ae["a"])(t,oo.LATEX,Va),Object(ae["a"])(t,oo.VIDEO,sr),Object(ae["a"])(t,oo.AUDIO,Ar),t);return n[e.elementInfo.type]||null})),n=nt(),o=n.orderElement,l=lo(),c=l.alignElementToCanvas,a=Qe(),r=a.combineElements,i=a.uncombineElements,u=Ke(),d=u.deleteElement,s=Je(),f=s.lockElement,p=s.unlockElement,m=$e(),b=m.copyElement,v=m.pasteElement,O=m.cutElement,h=et(),j=h.selectAllElement,g=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return p(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:O},{text:"复制",subText:"Ctrl + C",handler:b},{text:"粘贴",subText:"Ctrl + V",handler:v},{divider:!0},{text:"水平居中",handler:function(){return c(k.HORIZONTAL)},children:[{text:"水平垂直居中",handler:function(){return c(k.CENTER)}},{text:"水平居中",handler:function(){return c(k.HORIZONTAL)}},{text:"左对齐",handler:function(){return c(k.LEFT)}},{text:"右对齐",handler:function(){return c(k.RIGHT)}}]},{text:"垂直居中",handler:function(){return c(k.VERTICAL)},children:[{text:"水平垂直居中",handler:function(){return c(k.CENTER)}},{text:"垂直居中",handler:function(){return c(k.VERTICAL)}},{text:"顶部对齐",handler:function(){return c(k.TOP)}},{text:"底部对齐",handler:function(){return c(k.BOTTOM)}}]},{divider:!0},{text:"置于顶层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,C.TOP)},children:[{text:"置于顶层",handler:function(){return o(e.elementInfo,C.TOP)}},{text:"上移一层",handler:function(){return o(e.elementInfo,C.UP)}}]},{text:"置于底层",disable:e.isMultiSelect&&!e.elementInfo.groupId,handler:function(){return o(e.elementInfo,C.BOTTOM)},children:[{text:"置于底层",handler:function(){return o(e.elementInfo,C.BOTTOM)}},{text:"下移一层",handler:function(){return o(e.elementInfo,C.DOWN)}}]},{divider:!0},{text:"设置链接",handler:e.openLinkDialog},{text:e.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:e.elementInfo.groupId?i:r,hide:!e.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:j},{text:"锁定",subText:"Ctrl + L",handler:f},{text:"删除",subText:"Delete",handler:d}]};return{currentElementComponent:t,contextmenus:g}}});const Rr=Ln()(Fr,[["render",no]]);var Pr=Rr;function Hr(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])("mouse-selection quadrant-".concat(n.quadrant)),style:Object(y["normalizeStyle"])({top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"})},null,6)}var qr={name:"mouse-selection",props:{top:{type:Number,required:!0},left:{type:Number,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},quadrant:{type:Number,required:!0,validator:function(e){return[1,2,3,4].includes(e)}}}};n("2007a");const Xr=Ln()(qr,[["render",Hr],["__scopeId","data-v-1619c258"]]);var Wr=Xr;function Gr(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GridLines");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"viewport-background",style:Object(y["normalizeStyle"])(e.backgroundStyle)},[e.showGridLines?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0})):Object(y["createCommentVNode"])("",!0)],4)}var Ur={class:"grid-lines"},Yr=["d","stroke"];function Zr(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",Ur,[Object(y["createElementVNode"])("path",{style:Object(y["normalizeStyle"])({transform:"scale(".concat(e.canvasScale,")")}),d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,Yr)])}var Jr=Object(y["defineComponent"])({name:"grid-lines",setup:function(){var e=Object(g["c"])(ee()),t=e.canvasScale,n=Object(g["c"])($()),o=n.currentSlide,l=n.viewportRatio,c=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),a=Object(y["computed"])((function(){var e,t=(null===(e=c.value)||void 0===e?void 0:e.color)||"#fff",n=["#000","#fff"];return Y.a.mostReadable(t,n,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),r=50,i=function(){for(var e=Ge,t=Ge*l.value,n="",o=0;o<=Math.floor(t/r);o++)n+="M0 ".concat(o*r," L").concat(e," ").concat(o*r," ");for(var c=0;c<=Math.floor(e/r);c++)n+="M".concat(c*r," 0 L").concat(c*r," ").concat(t," ");return n};return{canvasScale:t,gridColor:a,width:Ge,height:Ge*l.value,path:i()}}});n("ffb8");const Kr=Ln()(Jr,[["render",Zr],["__scopeId","data-v-9b94cc34"]]);var Qr=Kr,$r=function(e){var t=Object(y["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,l=t.image,c=t.imageSize,a=t.gradientColor,r=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return l?"repeat"===c?{backgroundImage:"url(".concat(l),backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:"url(".concat(l),backgroundRepeat:"no-repeat",backgroundSize:c||"cover"}:{backgroundColor:"#fff"};if("gradient"===n){var u=r||0,d=a?a[0]:"#fff",s=a?a[1]:"#fff";return"radial"===i?{backgroundImage:"radial-gradient(".concat(d,", ").concat(s)}:{backgroundImage:"linear-gradient(".concat(u,"deg, ").concat(d,", ").concat(s)}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},ei=Object(y["defineComponent"])({name:"viewport-background",components:{GridLines:Qr},setup:function(){var e=Object(g["c"])(ee()),t=e.showGridLines,n=Object(g["c"])($()),o=n.currentSlide,l=Object(y["computed"])((function(){var e;return null===(e=o.value)||void 0===e?void 0:e.background})),c=$r(l),a=c.backgroundStyle;return{showGridLines:t,backgroundStyle:a}}});n("06b6");const ti=Ln()(ei,[["render",Gr],["__scopeId","data-v-4d0018d8"]]);var ni=ti;function oi(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"alignment-line",style:Object(y["normalizeStyle"])({left:e.left,top:e.top})},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["line",e.type]),style:Object(y["normalizeStyle"])(e.sizeStyle)},null,6)],4)}var li=Object(y["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.axis.x*n.value+"px"})),l=Object(y["computed"])((function(){return e.axis.y*n.value+"px"})),c=Object(y["computed"])((function(){return"vertical"===e.type?{height:e.length*n.value+"px"}:{width:e.length*n.value+"px"}}));return{left:o,top:l,sizeStyle:c}}});n("c790");const ci=Ln()(li,[["render",oi],["__scopeId","data-v-62c9018e"]]);var ai=ci,ri=["width","height"],ii=["d"];function ui(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.createSelection(t)}),["stop"])),onContextmenu:t[1]||(t[1]=Object(y["withModifiers"])((function(){}),["stop","prevent"]))},[e.start&&e.end?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["selection",e.creatingElement.type]),style:Object(y["normalizeStyle"])(e.position)},["line"===e.creatingElement.type&&e.lineData?(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},[Object(y["createElementVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":""},null,8,ii)],8,ri)):Object(y["createCommentVNode"])("",!0)],6)):Object(y["createCommentVNode"])("",!0)],544)}var di=Object(y["defineComponent"])({name:"element-create-selection",emits:["created"],setup:function(e,t){var n=t.emit,o=ee(),l=Object(g["c"])(o),c=l.creatingElement,a=Object(g["c"])(se()),r=a.ctrlOrShiftKeyActive,i=Object(y["ref"])(),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["reactive"])({x:0,y:0});Object(y["onMounted"])((function(){if(d.value){var e=d.value.getBoundingClientRect(),t=e.x,n=e.y;s.x=t,s.y=n}}));var f=function(e){var t=!0,l=e.pageX,a=e.pageY;i.value=[l,a],document.onmousemove=function(e){if(c.value&&t){var n=e.pageX,o=e.pageY;if(r.value){var i=n-l,d=o-a,s=Math.abs(i),f=Math.abs(d);if("shape"===c.value.type){var p=d>0&&i<0||d<0&&i>0;s>f?o=p?a-i:a+i:n=p?l-d:l+d}else"line"===c.value.type&&(s>f?o=a:n=l)}u.value=[n,o]}},document.onmouseup=function(e){var r,d;if(document.onmousemove=null,document.onmouseup=null,2!==e.button){t=!1;var s=e.pageX,f=e.pageY,p=30;if("line"===(null===(r=c.value)||void 0===r?void 0:r.type)&&(Math.abs(s-l)>=p||Math.abs(f-a)>=p))n("created",{start:i.value,end:u.value});else if("line"!==(null===(d=c.value)||void 0===d?void 0:d.type)&&Math.abs(s-l)>=p&&Math.abs(f-a)>=p)n("created",{start:i.value,end:u.value});else{var m=200,b=Math.min(s,l),v=Math.min(f,a),O=Math.max(s,l),h=Math.max(f,a),j=O-b>=p?O-b:m,y=h-v>=p?h-v:m;n("created",{start:[b,v],end:[b+j,v+y]})}}else setTimeout((function(){return o.setCreatingElement(null)}),0)}},p=Object(y["computed"])((function(){if(!i.value||!u.value)return null;if(!c.value||"line"!==c.value.type)return null;var e=Object(Rt["a"])(i.value,2),t=e[0],n=e[1],o=Object(Rt["a"])(u.value,2),l=o[0],a=o[1],r=Math.min(t,l),d=Math.max(t,l),s=Math.min(n,a),f=Math.max(n,a),p=d-r>=24?d-r:24,m=f-s>=24?f-s:24,b=t===r?0:d-r,v=n===s?0:f-s,O=l===r?0:d-r,h=a===s?0:f-s,j="M".concat(b,", ").concat(v," L").concat(O,", ").concat(h);return{svgWidth:p,svgHeight:m,startX:b,startY:v,endX:O,endY:h,path:j}})),m=Object(y["computed"])((function(){if(!i.value||!u.value)return{};var e=Object(Rt["a"])(i.value,2),t=e[0],n=e[1],o=Object(Rt["a"])(u.value,2),l=o[0],c=o[1],a=Math.min(t,l),r=Math.max(t,l),d=Math.min(n,c),f=Math.max(n,c),p=r-a,m=f-d;return{left:a-s.x+"px",top:d-s.y+"px",width:p+"px",height:m+"px"}}));return{selectionRef:d,start:i,end:u,creatingElement:c,createSelection:f,lineData:p,position:m}}});n("86f4");const si=Ln()(di,[["render",ui],["__scopeId","data-v-a8c28cdc"]]);var fi=si;function pi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"multi-select-operate",style:Object(y["normalizeStyle"])({left:e.minX*e.canvasScale+"px",top:e.minY*e.canvasScale+"px"})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.disableResize?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleMultiElement(n,{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY},t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)}var mi=function(e,t){var n=Object(y["computed"])((function(){return[{direction:E.LEFT_TOP,style:{}},{direction:E.TOP,style:{left:e.value/2+"px"}},{direction:E.RIGHT_TOP,style:{left:e.value+"px"}},{direction:E.LEFT,style:{top:t.value/2+"px"}},{direction:E.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:E.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:E.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:E.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(y["computed"])((function(){return[{direction:E.LEFT,style:{top:t.value/2+"px"}},{direction:E.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),l=Object(y["computed"])((function(){return[{type:w.T,style:{width:e.value+"px"}},{type:w.B,style:{top:t.value+"px",width:e.value+"px"}},{type:w.L,style:{height:t.value+"px"}},{type:w.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:o,borderLines:l}};function bi(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["resize-handler",e.rotateClassName,e.type])},null,2)}var vi=Object(y["defineComponent"])({name:"resize-handler",props:{type:{type:String,default:""},rotate:{type:Number,default:0}},setup:function(e){var t=Object(y["computed"])((function(){var t="rotate-",n=e.rotate;return n>-22.5&&n<=22.5?t+0:n>22.5&&n<=67.5?t+45:n>67.5&&n<=112.5?t+90:n>112.5&&n<=157.5?t+135:n>157.5||n<=-157.5?t+0:n>-157.5&&n<=-112.5?t+45:n>-112.5&&n<=-67.5?t+90:n>-67.5&&n<=-22.5?t+135:t+0}));return{rotateClassName:t}}});n("0606");const Oi=Ln()(vi,[["render",bi],["__scopeId","data-v-680e5917"]]);var hi=Oi;function ji(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["border-line",n.type,{wide:n.isWide}])},null,2)}var yi={name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}};n("fb1d");const gi=Ln()(yi,[["render",ji],["__scopeId","data-v-630e246b"]]);var xi=gi,Ci=Object(y["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:hi,BorderLine:xi},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.canvasScale,l=Object(y["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),c=Object(y["reactive"])({minX:0,maxX:0,minY:0,maxY:0}),a=Object(y["computed"])((function(){return(c.maxX-c.minX)*o.value})),r=Object(y["computed"])((function(){return(c.maxY-c.minY)*o.value})),i=mi(a,r),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=De(l.value),t=e.minX,n=e.maxX,o=e.minY,a=e.maxY;c.minX=t,c.maxX=n,c.minY=o,c.maxY=a};Object(y["watchEffect"])(s);var f=Object(y["computed"])((function(){return l.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return Object(B["a"])(Object(B["a"])({},Object(y["toRefs"])(c)),{},{canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u})}});n("a60f");const ki=Ln()(Ci,[["render",pi],["__scopeId","data-v-2d010d5c"]]);var wi=ki,Ei={key:1,class:"animation-index"};function Ni(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinkHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:Object(y["normalizeStyle"])({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")})},[e.isSelected?(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentOperateComponent),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement"])):Object(y["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&-1!==e.elementIndexInAnimation?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ei,Object(y["toDisplayString"])(e.elementIndexInAnimation+1),1)):Object(y["createCommentVNode"])("",!0),e.isActive&&e.elementInfo.link?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:2,elementInfo:e.elementInfo,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(){}),["stop"]))},null,8,["elementInfo","openLinkDialog"])):Object(y["createCommentVNode"])("",!0)],6)}function Ii(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["image-element-operate",{cliping:e.isCliping}])},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)],2)}var Vi={class:"rotate-handler"};function Si(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vi)}var Bi={name:"rotate-handler"};n("8754");const Li=Ln()(Bi,[["render",Si],["__scopeId","data-v-9a549510"]]);var Ti=Li,Mi=Object(y["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:hi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.clipingImageElementId,l=Object(y["computed"])((function(){return o.value===e.elementInfo.id})),c=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),a=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),r=mi(c,a),i=r.resizeHandlers,u=r.borderLines;return{isCliping:l,scaleWidth:c,resizeHandlers:i,borderLines:u}}});n("7ec9");const _i=Ln()(Mi,[["render",Ii],["__scopeId","data-v-24706869"]]);var Di=_i,zi={class:"text-element-operate"};function Ai(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.textElementResizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var Fi=Object(y["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:hi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.textElementResizeHandlers,r=c.borderLines;return{scaleWidth:o,textElementResizeHandlers:a,borderLines:r}}});const Ri=Ln()(Fi,[["render",Ai]]);var Pi=Ri,Hi={class:"shape-element-operate"};function qi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Hi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var Xi=Object(y["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:hi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.resizeHandlers,r=c.borderLines;return{scaleWidth:o,resizeHandlers:a,borderLines:r}}});const Wi=Ln()(Xi,[["render",qi]]);var Gi=Wi,Ui={class:"text-element-operate"};function Yi(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ResizeHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ui,[e.handlerVisible?(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],{key:0},Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["type","style","onMousedown"])})),128)):Object(y["createCommentVNode"])("",!0)])}var Zi=Object(y["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{ResizeHandler:hi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){var t=[{handler:N.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:N.END,style:{left:e.elementInfo.end[0]*n.value+"px",top:e.elementInfo.end[1]*n.value+"px"}}];if(e.elementInfo.curve||e.elementInfo.broken){var o=e.elementInfo.curve||e.elementInfo.broken;t.push({handler:N.MID,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}return t}));return{resizeHandlers:o}}});const Ji=Ln()(Zi,[["render",Yi]]);var Ki=Ji,Qi={class:"table-element-operate"};function $i(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Qi,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.textElementResizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),Object(y["createVNode"])(i,{class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64)):Object(y["createCommentVNode"])("",!0)])}var eu=Object(y["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:hi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.outline.width||1})),l=Object(y["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),c=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),a=mi(l,c),r=a.textElementResizeHandlers,i=a.borderLines;return{scaleWidth:l,textElementResizeHandlers:r,borderLines:i}}});const tu=Ln()(eu,[["render",$i]]);var nu=tu,ou={class:"common-element-operate"};function lu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BorderLine"),r=Object(y["resolveComponent"])("ResizeHandler"),i=Object(y["resolveComponent"])("RotateHandler");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ou,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.borderLines,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"operate-border-line",key:e.type,type:e.type,style:Object(y["normalizeStyle"])(e.style)},null,8,["type","style"])})),128)),e.handlerVisible?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.resizeHandlers,(function(t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:Object(y["normalizeStyle"])(t.style),onMousedown:Object(y["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","rotate","style","onMousedown"])})),128)),e.cannotRotate?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,class:"operate-rotate-handler",style:Object(y["normalizeStyle"])({left:e.scaleWidth/2+"px"}),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"]))],64)):Object(y["createCommentVNode"])("",!0)])}var cu=Object(y["defineComponent"])({name:"common-element-operate",inheritAttrs:!1,components:{RotateHandler:Ti,ResizeHandler:hi,BorderLine:xi},props:{elementInfo:{type:Object,required:!0},handlerVisible:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=Object(y["computed"])((function(){return e.elementInfo.width*n.value})),l=Object(y["computed"])((function(){return e.elementInfo.height*n.value})),c=mi(o,l),a=c.resizeHandlers,r=c.borderLines,i=Object(y["computed"])((function(){return["video","audio"].includes(e.elementInfo.type)}));return{scaleWidth:o,resizeHandlers:a,borderLines:r,cannotRotate:i}}});const au=Ln()(cu,[["render",lu]]);var ru=au,iu=["href"],uu={key:1,class:"link"},du={class:"btns"};function su(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Divider");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"link-handler",style:Object(y["normalizeStyle"])({top:e.elementInfo.height*e.canvasScale+10+"px"})},["web"===e.elementInfo.link.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",{key:0,class:"link",href:e.elementInfo.link.target,target:"_blank"},Object(y["toDisplayString"])(e.elementInfo.link.target),9,iu)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("a",uu,"幻灯片页面 "+Object(y["toDisplayString"])(e.elementInfo.link.target),1)),Object(y["createElementVNode"])("div",du,[Object(y["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.openLinkDialog()})},"更换"),Object(y["createVNode"])(a,{type:"vertical"}),Object(y["createElementVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.removeLink(e.elementInfo)})},"移除")])],4)}var fu=function(){var e=$(),t=qe(),n=t.addHistorySnapshot,o=function(t,o){var l=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===o.type&&!l.test(o.target))return ge["a"].error("不是正确的网页链接地址"),!1;var c={link:o};return e.updateElement({id:t.id,props:c}),n(),!0},l=function(t){e.removeElementProps({id:t.id,propName:"link"}),n()};return{setLink:o,removeLink:l}},pu=Object(y["defineComponent"])({name:"link-handler",props:{elementInfo:{type:Object,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(){var e=Object(g["c"])(ee()),t=e.canvasScale,n=fu(),o=n.removeLink;return{canvasScale:t,removeLink:o}}});n("564c");const mu=Ln()(pu,[["render",su],["__scopeId","data-v-3250b72d"]]);var bu=mu,vu=Object(y["defineComponent"])({name:"operate",components:{LinkHandler:bu},props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},isActive:{type:Boolean,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},dragLineElement:{type:Function,required:!0},openLinkDialog:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])(ee()),n=t.canvasScale,o=t.toolbarState,l=Object(g["c"])($()),c=l.currentSlide,a=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Di),Object(ae["a"])(t,oo.TEXT,Pi),Object(ae["a"])(t,oo.SHAPE,Gi),Object(ae["a"])(t,oo.LINE,Ki),Object(ae["a"])(t,oo.TABLE,nu),Object(ae["a"])(t,oo.CHART,ru),Object(ae["a"])(t,oo.LATEX,ru),Object(ae["a"])(t,oo.VIDEO,ru),Object(ae["a"])(t,oo.AUDIO,ru),t);return n[e.elementInfo.type]||null})),r=Object(y["computed"])((function(){var t=c.value.animations||[];return t.findIndex((function(t){return t.elId===e.elementInfo.id}))}));return{currentOperateComponent:a,canvasScale:n,toolbarState:o,elementIndexInAnimation:r}}});n("69a7");const Ou=Ln()(vu,[["render",Ni],["__scopeId","data-v-71428444"]]);var hu=Ou,ju=function(e){return Object(y["pushScopeId"])("data-v-5a0d0b33"),e=e(),Object(y["popScopeId"])(),e},yu={class:"link-dialog"},gu={class:"tabs"},xu=["onClick"],Cu={key:2,class:"preview"},ku=ju((function(){return Object(y["createElementVNode"])("div",null,"预览:",-1)})),wu={class:"btns"},Eu=Object(y["createTextVNode"])("取消"),Nu=Object(y["createTextVNode"])("确认");function Iu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Input"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("Select"),u=Object(y["resolveComponent"])("ThumbnailSlide"),d=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",yu,[Object(y["createElementVNode"])("div",gu,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(y["toDisplayString"])(t.label),11,xu)})),128))]),"web"===e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,class:"input",value:e.address,"onUpdate:value":t[0]||(t[0]=function(t){return e.address=t}),placeholder:"请输入网页链接地址"},null,8,["value"])):Object(y["createCommentVNode"])("",!0),"slide"===e.type?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:1,class:"input",value:e.slideId,"onUpdate:value":t[1]||(t[1]=function(t){return e.slideId=t})},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.id,value:e.id},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])("幻灯片 "+Object(y["toDisplayString"])(t+1),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])):Object(y["createCommentVNode"])("",!0),"slide"===e.type&&e.selectedSlide?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Cu,[ku,Object(y["createVNode"])(u,{class:"thumbnail",slide:e.selectedSlide,size:490},null,8,["slide"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",wu,[Object(y["createVNode"])(d,{onClick:t[2]||(t[2]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[Eu]})),_:1}),Object(y["createVNode"])(d,{type:"primary",onClick:t[3]||(t[3]=function(t){return e.save()})},{default:Object(y["withCtx"])((function(){return[Nu]})),_:1})])])}var Vu={key:1,class:"placeholder"};function Su(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ThumbnailElement");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-slide",style:Object(y["normalizeStyle"])({width:e.size+"px",height:e.size*e.viewportRatio+"px"})},[e.visible?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"elements",style:Object(y["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(e.backgroundStyle)},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slide.elements,(function(e,t){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])})),128))],4)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vu,"加载中 ..."))],4)}function Bu(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["base-element","base-element-".concat(e.elementInfo.id)]),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6)}var Lu=["src"];function Tu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ImageOutline");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-image",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle})},[Object(y["createVNode"])(a,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(y["createElementVNode"])("div",{class:"image-content",style:Object(y["normalizeStyle"])({clipPath:e.clipShape.style})},[Object(y["createElementVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:Object(y["normalizeStyle"])({top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter}),alt:""},null,12,Lu)],4)],4)],4)],4)}var Mu=Object(y["defineComponent"])({name:"base-element-image",components:{ImageOutline:Ao},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle,l=Object(y["computed"])((function(){return e.elementInfo.flipH})),c=Object(y["computed"])((function(){return e.elementInfo.flipV})),a=so(l,c),r=a.flipStyle,i=Object(y["computed"])((function(){return e.elementInfo.clip})),u=po(i),d=u.clipShape,s=u.imgPosition,f=Object(y["computed"])((function(){return e.elementInfo.filters})),p=mo(f),m=p.filter;return{imgPosition:s,filter:m,flipStyle:r,shadowStyle:o,clipShape:d}}});n("a576");const _u=Ln()(Mu,[["render",Tu],["__scopeId","data-v-b0d4d1b2"]]);var Du=_u,zu=["innerHTML"];function Au(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-text",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:e.shadowStyle,lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createElementVNode"])("div",{class:"text ProseMirror-static",innerHTML:e.elementInfo.content},null,8,zu)],4)],4)],4)}var Fu=Object(y["defineComponent"])({name:"base-element-text",components:{ElementOutline:dl},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle;return{shadowStyle:o}}});n("5264");const Ru=Ln()(Fu,[["render",Au],["__scopeId","data-v-2ec235c4"]]);var Pu=Ru,Hu=["width","height"],qu={key:0},Xu=["transform"],Wu=["d","fill","stroke","stroke-width","stroke-dasharray"],Gu=["innerHTML"];function Uu(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("GradientDefs");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-shape",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle,color:e.text.defaultColor,fontFamily:e.text.defaultFontName})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?(Object(y["openBlock"])(),Object(y["createElementBlock"])("defs",qu,[Object(y["createVNode"])(a,{id:"base-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#base-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 5":"0 0"},null,8,Wu)],8,Xu)],8,Hu)),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["shape-text",e.text.align])},[Object(y["createElementVNode"])("div",{class:"ProseMirror-static",innerHTML:e.text.content},null,8,Gu)],2)],4)],4)],4)}var Yu=Object(y["defineComponent"])({name:"base-element-shape",components:{GradientDefs:wc},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.outline})),n=yo(t),o=n.outlineWidth,l=n.outlineStyle,c=n.outlineColor,a=Object(y["computed"])((function(){return e.elementInfo.shadow})),r=uo(a),i=r.shadowStyle,u=Object(y["computed"])((function(){return e.elementInfo.flipH})),d=Object(y["computed"])((function(){return e.elementInfo.flipV})),s=so(u,d),f=s.flipStyle,p=Object(y["computed"])((function(){var t={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return e.elementInfo.text?e.elementInfo.text:t}));return{shadowStyle:i,outlineWidth:o,outlineStyle:l,outlineColor:c,flipStyle:f,text:p}}});n("66f9");const Zu=Ln()(Yu,[["render",Uu],["__scopeId","data-v-68d8af98"]]);var Ju=Zu,Ku=["width","height"],Qu=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];function $u(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"editable-element-shape",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""})},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.svgWidth,height:e.svgHeight},[Object(y["createElementVNode"])("defs",null,[e.elementInfo.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,Qu)],8,Ku))],4)],4)}var ed=Object(y["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:Rc},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return e.elementInfo.shadow})),n=uo(t),o=n.shadowStyle,l=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),c=Object(y["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),a=Object(y["computed"])((function(){return"dashed"===e.elementInfo.style?"10, 5":"0, 0"})),r=Object(y["computed"])((function(){return Re(e.elementInfo)}));return{shadowStyle:o,svgWidth:l,svgHeight:c,lineDashArray:a,path:r}}});n("78eb");const td=Ln()(ed,[["render",$u],["__scopeId","data-v-4032440c"]]);var nd=td;function od(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ElementOutline"),r=Object(y["resolveComponent"])("Chart");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-chart",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundColor:e.elementInfo.fill})},[Object(y["createVNode"])(a,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(y["createVNode"])(r,{class:Object(y["normalizeClass"])({"need-scale":e.needScaleSize}),width:e.chartWidth,height:e.chartHeight,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["class","width","height","type","data","options","themeColor","gridColor","legends","legend"])],4)],4)],4)}var ld=Object(y["defineComponent"])({name:"base-element-chart",components:{ElementOutline:dl,Chart:Jc},props:{elementInfo:{type:Object,required:!0},needScaleSize:{type:Boolean,default:!0}},setup:function(e){return{chartWidth:Object(y["computed"])((function(){return e.needScaleSize?10*e.elementInfo.width:e.elementInfo.width})),chartHeight:Object(y["computed"])((function(){return e.needScaleSize?10*e.elementInfo.height:e.elementInfo.height}))}}});n("c645");const cd=Ln()(ld,[["render",od],["__scopeId","data-v-60d9ae43"]]);var ad=cd,rd={class:"element-content"};function id(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("StaticTable");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-table",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",rd,[Object(y["createVNode"])(a,{data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","colWidths","outline","theme"])])],4)],4)}var ud=["width"],dd=["rowspan","colspan"],sd=["innerHTML"];function fd(e,t,n,o,l,c){var a,r,i,u,d;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"static-table",style:Object(y["normalizeStyle"])({width:e.totalWidth+"px"})},[Object(y["createElementVNode"])("table",{class:Object(y["normalizeClass"])({theme:e.theme,"row-header":null===(a=e.theme)||void 0===a?void 0:a.rowHeader,"row-footer":null===(r=e.theme)||void 0===r?void 0:r.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter}),style:Object(y["normalizeStyle"])("--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1]))},[Object(y["createElementVNode"])("colgroup",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.colSizeList,(function(e,t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("col",{span:"1",key:t,width:e},null,8,ud)})),128))]),Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.data,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("tr",{key:n},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(t,o){return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("td",{class:"cell",style:Object(y["normalizeStyle"])(Object(B["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style))),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(y["createElementVNode"])("div",{class:"cell-text",innerHTML:e.formatText(t.text)},null,8,sd)],12,dd)),[[y["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))]])})),128))])})),128))])],6)],4)}var pd=Object(y["defineComponent"])({name:"static-table",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup:function(e){var t=Object(y["ref"])([]),n=Object(y["computed"])((function(){return t.value.reduce((function(e,t){return e+t}))}));Object(y["watch"])([function(){return e.colWidths},function(){return e.width}],(function(){t.value=e.colWidths.map((function(t){return t*e.width}))}),{immediate:!0});var o=Object(y["computed"])((function(){return e.data})),l=da(o),c=l.hideCells,a=Object(y["computed"])((function(){return e.theme})),r=sa(a),i=r.subThemeColor;return{colSizeList:t,totalWidth:n,hideCells:c,getTextStyle:ia,formatText:ua,subThemeColor:i}}});n("9316");const md=Ln()(pd,[["render",fd],["__scopeId","data-v-74b60291"]]);var bd=md,vd=Object(y["defineComponent"])({name:"base-element-table",components:{StaticTable:bd},props:{elementInfo:{type:Object,required:!0}}});n("4607");const Od=Ln()(vd,[["render",id],["__scopeId","data-v-3bbcc75c"]]);var hd=Od,jd={class:"element-content"},yd=["width","height","stroke","stroke-width"],gd=["transform"],xd=["d"];function Cd(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-latex",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",jd,[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox[0],", ").concat(e.elementInfo.height/e.elementInfo.viewBox[1],") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{d:e.elementInfo.path},null,8,xd)],8,gd)],8,yd))])],4)],4)}var kd=Object(y["defineComponent"])({name:"base-element-latex",props:{elementInfo:{type:Object,required:!0}}});n("0006");const wd=Ln()(kd,[["render",Cd],["__scopeId","data-v-4118f3dd"]]);var Ed=wd;function Nd(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlayOne");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",{class:"element-content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.elementInfo.poster,")")})},[Object(y["createVNode"])(a,{class:"icon"})],4)],4)],4)}var Id=Object(y["defineComponent"])({name:"base-element-video",props:{elementInfo:{type:Object,required:!0}}});n("4b15");const Vd=Ln()(Id,[["render",Nd],["__scopeId","data-v-1c831c75"]]);var Sd=Vd,Bd={class:"element-content"};function Ld(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"base-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",Bd,[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color})},null,8,["style"])])],4)],4)}var Td=Object(y["defineComponent"])({name:"base-element-audio",props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"}));return{audioIconSize:t}}});n("dab5");const Md=Ln()(Td,[["render",Ld],["__scopeId","data-v-513e91c4"]]);var _d=Md,Dd=Object(y["defineComponent"])({name:"base-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Du),Object(ae["a"])(t,oo.TEXT,Pu),Object(ae["a"])(t,oo.SHAPE,Ju),Object(ae["a"])(t,oo.LINE,nd),Object(ae["a"])(t,oo.CHART,ad),Object(ae["a"])(t,oo.TABLE,hd),Object(ae["a"])(t,oo.LATEX,Ed),Object(ae["a"])(t,oo.VIDEO,Sd),Object(ae["a"])(t,oo.AUDIO,_d),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:t}}});const zd=Ln()(Dd,[["render",Bu]]);var Ad=zd,Fd=Object(y["defineComponent"])({name:"thumbnail-slide",components:{ThumbnailElement:Ad},props:{slide:{type:Object,required:!0},size:{type:Number,required:!0},visible:{type:Boolean,default:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=Object(y["computed"])((function(){return e.slide.background})),l=$r(o),c=l.backgroundStyle,a=Object(y["computed"])((function(){return e.size/Ge}));return Object(y["provide"])("slideScale",a),{scale:a,backgroundStyle:c,VIEWPORT_SIZE:Ge,viewportRatio:n}}});n("4405");const Rd=Ln()(Fd,[["render",Su],["__scopeId","data-v-06a163ec"]]);var Pd=Rd,Hd=Object(y["defineComponent"])({name:"link-dialog",emits:["close"],components:{ThumbnailSlide:Pd},setup:function(e,t){var n=t.emit,o=Object(g["c"])(ee()),l=o.handleElement,c=Object(g["c"])($()),a=c.slides,r=Object(y["ref"])("web"),i=Object(y["ref"])(""),u=Object(y["ref"])(""),d=Object(y["computed"])((function(){return u.value&&a.value.find((function(e){return e.id===u.value}))||null})),s=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],f=fu(),p=f.setLink;Object(y["onMounted"])((function(){var e;null!==(e=l.value)&&void 0!==e&&e.link&&("web"===l.value.link.type?i.value=l.value.link.target:"slide"===l.value.link.type&&(u.value=l.value.link.target),r.value=l.value.link.type)}));var m=function(){return n("close")},b=function(){var e={type:r.value,target:"web"===r.value?i.value:u.value};if(l.value){var t=p(l.value,e);t?m():i.value=""}};return{slides:a,tabs:s,type:r,address:i,slideId:u,selectedSlide:d,close:m,save:b}}});n("73f6");const qd=Ln()(Hd,[["render",Iu],["__scopeId","data-v-5a0d0b33"]]);var Xd=qd,Wd=Object(y["defineComponent"])({name:"editor-canvas",components:{EditableElement:Pr,MouseSelection:Wr,ViewportBackground:ni,AlignmentLine:ai,ElementCreateSelection:fi,MultiSelectOperate:wi,Operate:hu,LinkDialog:Xd},setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.activeGroupElementId,l=t.handleElementId,c=t.editorAreaFocus,a=t.showGridLines,r=t.creatingElement,i=t.canvasScale,u=Object(g["c"])($()),d=u.currentSlide,s=Object(g["c"])(se()),f=s.ctrlKeyState,p=s.ctrlOrShiftKeyActive,m=Object(y["ref"])(),b=Object(y["ref"])([]),v=Object(y["ref"])(!1),O=function(){return v.value=!0};Object(y["watch"])(l,(function(){e.setActiveGroupElementId("")}));var h=Object(y["ref"])([]),j=function(){h.value=d.value?JSON.parse(JSON.stringify(d.value.elements)):[]};Object(y["watchEffect"])(j);var x=Object(y["ref"])(),C=Pn(x),k=C.viewportStyles;qn(x);var w=Hn(h,m),E=w.mouseSelectionState,N=w.updateMouseSelection,V=Qn(h,b),S=V.dragElement,B=$n(h),L=B.dragLineElement,T=Kn(h,S),M=T.selectElement,_=Jn(h,b),D=_.scaleElement,z=_.scaleMultiElement,A=Wn(h,m),F=A.rotateElement,R=et(),P=R.selectAllElement,H=Ke(),q=H.deleteAllElements,X=$e(),W=X.pasteElement,G=at(),U=G.enterScreening,Y=Ze(),J=Y.updateSlideIndex,K=function(t){e.setActiveElementIdList([]),p.value||N(t),c.value||e.setEditorareaFocus(!0),Rn()},Q=function(){c.value&&e.setEditorareaFocus(!1)},te=rt(),ne=te.scaleCanvas,oe=Object(Z["throttle"])(ne,100,{leading:!0,trailing:!1}),le=Object(Z["throttle"])(J,300,{leading:!0,trailing:!1}),ce=function(e){e.preventDefault(),f.value?e.deltaY>0?oe("-"):e.deltaY<0&&oe("+"):e.deltaY>0?le(I.DOWN):e.deltaY<0&&le(I.UP)},ae=function(){e.setGridLinesState(!a.value)},re=eo(m),ie=re.insertElementFromCreateSelection,ue=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:W},{text:"全选",subText:"Ctrl + A",handler:P},{text:"网格线",subText:a.value?"√":"",handler:ae},{text:"重置当前页",handler:q},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:U}]};return Object(y["provide"])("slideScale",i),{elementList:h,activeElementIdList:n,handleElementId:l,activeGroupElementId:o,canvasRef:x,viewportRef:m,viewportStyles:k,canvasScale:i,mouseSelectionState:E,currentSlide:d,creatingElement:r,alignmentLines:b,linkDialogVisible:v,openLinkDialog:O,handleClickBlankArea:K,removeEditorAreaFocus:Q,insertElementFromCreateSelection:ie,selectElement:M,rotateElement:F,scaleElement:D,dragLineElement:L,scaleMultiElement:z,handleMousewheelCanvas:ce,contextmenus:ue}}});n("2f42");const Gd=Ln()(Wd,[["render",Fn],["__scopeId","data-v-1386e8fc"]]);var Ud=Gd,Yd={class:"canvas-tool"},Zd={class:"left-handler"},Jd={class:"add-element-handler"},Kd={class:"right-handler"},Qd={class:"text"};function $d(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconBack"),r=Object(y["resolveComponent"])("Tooltip"),i=Object(y["resolveComponent"])("IconNext"),u=Object(y["resolveComponent"])("IconFontSize"),d=Object(y["resolveComponent"])("IconPicture"),s=Object(y["resolveComponent"])("FileInput"),f=Object(y["resolveComponent"])("ShapePool"),p=Object(y["resolveComponent"])("IconGraphicDesign"),m=Object(y["resolveComponent"])("Popover"),b=Object(y["resolveComponent"])("LinePool"),v=Object(y["resolveComponent"])("IconConnection"),O=Object(y["resolveComponent"])("ChartPool"),h=Object(y["resolveComponent"])("IconChartProportion"),j=Object(y["resolveComponent"])("TableGenerator"),g=Object(y["resolveComponent"])("IconInsertTable"),x=Object(y["resolveComponent"])("IconFormula"),C=Object(y["resolveComponent"])("MediaInput"),k=Object(y["resolveComponent"])("IconVideoTwo"),w=Object(y["resolveComponent"])("IconMinus"),E=Object(y["resolveComponent"])("IconPlus"),N=Object(y["resolveComponent"])("IconFullScreen"),I=Object(y["resolveComponent"])("LaTeXEditor"),V=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Yd,[Object(y["createElementVNode"])("div",Zd,[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:Object(y["normalizeClass"])(["handler-item",{disable:!e.canUndo}]),onClick:t[0]||(t[0]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{class:Object(y["normalizeClass"])(["handler-item",{disable:!e.canRedo}]),onClick:t[1]||(t[1]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(y["createElementVNode"])("div",Jd,[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{class:"handler-item",onClick:t[2]||(t[2]=function(t){return e.drawText()})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(s,{onChange:t[3]||(t[3]=function(t){return e.insertImageElement(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(m,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.shapePoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{onSelect:t[4]||(t[4]=function(t){return e.drawShape(t)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.linePoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{onSelect:t[6]||(t[6]=function(t){return e.drawLine(t)})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.chartPoolVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{onSelect:t[8]||(t[8]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.tableGeneratorVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{onClose:t[10]||(t[10]=function(t){return e.tableGeneratorVisible=!1}),onInsert:t[11]||(t[11]=function(t){var n=t.row,o=t.col;e.createTableElement(n,o),e.tableGeneratorVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入公式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x,{class:"handler-item",onClick:t[13]||(t[13]=function(t){return e.latexEditorVisible=!0})})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{trigger:"click",visible:e.mediaInputVisible,"onUpdate:visible":t[17]||(t[17]=function(t){return e.mediaInputVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{onClose:t[14]||(t[14]=function(t){return e.mediaInputVisible=!1}),onInsertVideo:t[15]||(t[15]=function(t){e.createVideoElement(t),e.mediaInputVisible=!1}),onInsertAudio:t[16]||(t[16]=function(t){e.createAudioElement(t),e.mediaInputVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入音视频"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(y["createElementVNode"])("div",Kd,[Object(y["createVNode"])(w,{class:"handler-item viewport-size",onClick:t[18]||(t[18]=function(t){return e.scaleCanvas("-")})}),Object(y["createElementVNode"])("span",Qd,Object(y["toDisplayString"])(e.canvasScalePercentage),1),Object(y["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[19]||(t[19]=function(t){return e.scaleCanvas("+")})}),Object(y["createVNode"])(r,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适配屏幕"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{class:"handler-item viewport-size-adaptation",onClick:t[20]||(t[20]=function(t){return e.setCanvasPercentage(90)})})]})),_:1},8,["mouseEnterDelay"])]),Object(y["createVNode"])(V,{visible:e.latexEditorVisible,"onUpdate:visible":t[23]||(t[23]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I,{onClose:t[21]||(t[21]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[22]||(t[22]=function(t){e.createLatexElement(t),e.latexEditorVisible=!1})})]})),_:1},8,["visible"])])}var es={class:"shape-pool"},ts={class:"category-name"},ns={class:"shape-list"},os=["onClick"],ls={overflow:"visible",width:"18",height:"18"},cs=["transform"],as=["d"];function rs(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",es,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.shapeList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:t.type},[Object(y["createElementVNode"])("div",ts,Object(y["toDisplayString"])(t.type),1),Object(y["createElementVNode"])("div",ns,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t.children,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"shape-item",key:n},[Object(y["createElementVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",ls,[Object(y["createElementVNode"])("g",{transform:"scale(".concat(18/t.viewBox,", ").concat(18/t.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(y["createElementVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",stroke:"#999","stroke-width":"2",d:t.path},null,8,as)],8,cs)]))],8,os)])})),128))])])})),128))])}var is=[{type:"矩形",children:[{viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:200,path:"M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z"},{viewBox:200,path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z"},{viewBox:200,path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200"},{viewBox:200,path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z"}]},{type:"常用形状",children:[{viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:200,path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:200,path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:200,path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z"},{viewBox:200,path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:200,path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:200,path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z"},{viewBox:200,path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z"},{viewBox:200,path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z"},{viewBox:200,path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:200,path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z"},{viewBox:200,path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z"},{viewBox:200,path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z"},{viewBox:200,path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:200,path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z"},{viewBox:200,path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z"}]},{type:"箭头",children:[{viewBox:200,path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z"},{viewBox:200,path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:200,path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z"},{viewBox:200,path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z"},{viewBox:200,path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:200,path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:200,path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:200,path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:1024,path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z",special:!0},{viewBox:1024,path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z",special:!0}]},{type:"其他形状",children:[{viewBox:1024,path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z",special:!0},{viewBox:1024,path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z",special:!0},{viewBox:1024,path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z",special:!0},{viewBox:1024,path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z",special:!0},{viewBox:1024,path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z",special:!0},{viewBox:1024,path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z",special:!0},{viewBox:1024,path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z",special:!0},{viewBox:1024,path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z",special:!0},{viewBox:1024,path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z",special:!0},{viewBox:1024,path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z",special:!0},{viewBox:1024,path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z",special:!0},{viewBox:1024,path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z",special:!0},{viewBox:1024,path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z",special:!0},{viewBox:1024,path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z",special:!0},{viewBox:1024,path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z",special:!0},{viewBox:1024,path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z",special:!0}]}],us=Object(y["defineComponent"])({name:"shape-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=is,l=function(e){n("select",e)};return{shapeList:o,selectShape:l}}});n("d908");const ds=Ln()(us,[["render",rs],["__scopeId","data-v-0f50713a"]]);var ss=ds,fs={class:"line-pool"},ps={class:"category-name"},ms={class:"line-list"},bs=["onClick"],vs={overflow:"visible",width:"20",height:"20"},Os=["d","stroke-dasharray","marker-start","marker-end"];function hs(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("LinePointMarker");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.lineList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"category",key:t.type},[Object(y["createElementVNode"])("div",ps,Object(y["toDisplayString"])(t.type),1),Object(y["createElementVNode"])("div",ms,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t.children,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"line-item",key:n},[Object(y["createElementVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[(Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",vs,[Object(y["createElementVNode"])("defs",null,[t.points[0]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,class:"line-marker",id:"preset-line-".concat(n),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0),t.points[1]?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,class:"line-marker",id:"preset-line-".concat(n),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(y["createCommentVNode"])("",!0)]),Object(y["createElementVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n),"-",t.points[1],"-end)"):""},null,8,Os)]))],8,bs)])})),128))])])})),128))])}var js=[{type:"直线",children:[{path:"M 0 0 L 20 20",style:"solid",points:["",""]},{path:"M 0 0 L 20 20",style:"dashed",points:["",""]},{path:"M 0 0 L 20 20",style:"solid",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"dashed",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"solid",points:["","dot"]}]},{type:"折线、曲线",children:[{path:"M 0 0 L 0 20 L 20 20",style:"solid",points:["","arrow"],isBroken:!0},{path:"M 0 0 Q 0 20 20 20",style:"solid",points:["","arrow"],isCurve:!0}]}],ys=Object(y["defineComponent"])({name:"line-pool",emits:["select"],components:{LinePointMarker:Rc},setup:function(e,t){var n=t.emit,o=js,l=function(e){n("select",e)};return{lineList:o,selectLine:l}}});n("e4ed");const gs=Ln()(ys,[["render",hs],["__scopeId","data-v-78517932"]]);var xs=gs,Cs={class:"chart-pool"},ks=["onClick"];function ws(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconChartLine"),r=Object(y["resolveComponent"])("IconChartHistogram"),i=Object(y["resolveComponent"])("IconChartPie");return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",Cs,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.chartList,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{class:"chart-item",key:n},[Object(y["createElementVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,size:"24"})):"bar"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,size:"24"})):"pie"===t?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:2,size:"24"})):Object(y["createCommentVNode"])("",!0)],8,ks)])})),128))])}var Es=Object(y["defineComponent"])({name:"chart-pool",emits:["select"],setup:function(e,t){var n=t.emit,o=["bar","line","pie"],l=function(e){n("select",e)};return{chartList:o,selectChart:l}}});n("f076");const Ns=Ln()(Es,[["render",ws],["__scopeId","data-v-ab6a141a"]]);var Is=Ns,Vs=function(e){return Object(y["pushScopeId"])("data-v-e325ce98"),e=e(),Object(y["popScopeId"])(),e},Ss={class:"table-generator"},Bs={class:"title"},Ls={class:"lef"},Ts=["onMouseenter"],Ms={key:1,class:"custom"},_s={class:"row"},Ds=Vs((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1)})),zs={class:"row"},As=Vs((function(){return Object(y["createElementVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1)})),Fs={class:"btns"},Rs=Object(y["createTextVNode"])("取消"),Ps=Object(y["createTextVNode"])("确认");function Hs(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("InputNumber"),r=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ss,[Object(y["createElementVNode"])("div",Bs,[Object(y["createElementVNode"])("div",Ls,"表格 "+Object(y["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(y["createElementVNode"])("div",{class:"right",onClick:t[0]||(t[0]=function(t){return e.isCustom=!e.isCustom})},Object(y["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ms,[Object(y["createElementVNode"])("div",_s,[Ds,Object(y["createVNode"])(a,{min:1,max:20,value:e.customRow,"onUpdate:value":t[3]||(t[3]=function(t){return e.customRow=t}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",zs,[As,Object(y["createVNode"])(a,{min:1,max:20,value:e.customCol,"onUpdate:value":t[4]||(t[4]=function(t){return e.customCol=t}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Fs,[Object(y["createVNode"])(r,{class:"btn",onClick:t[5]||(t[5]=function(t){return e.close()})},{default:Object(y["withCtx"])((function(){return[Rs]})),_:1}),Object(y["createVNode"])(r,{class:"btn",type:"primary",onClick:t[6]||(t[6]=function(t){return e.insertCustomTable()})},{default:Object(y["withCtx"])((function(){return[Ps]})),_:1})])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("table",{key:0,onMouseleave:t[1]||(t[1]=function(t){return e.endCell=[]}),onClick:t[2]||(t[2]=function(t){return e.handleClickTable()})},[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(t){return Object(y["createElementVNode"])("tr",{key:t},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(10,(function(n){return Object(y["createElementVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}])},null,2)],40,Ts)})),64))])})),64))])],32))])}var qs=Object(y["defineComponent"])({name:"table-generator",emits:["insert","close"],setup:function(e,t){var n=t.emit,o=Object(y["ref"])([]),l=Object(y["ref"])(3),c=Object(y["ref"])(3),a=Object(y["ref"])(!1),r=function(){if(o.value.length){var e=Object(Rt["a"])(o.value,2),t=e[0],l=e[1];n("insert",{row:t,col:l})}},i=function(){return l.value<1||l.value>20||c.value<1||c.value>20?ge["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:l.value,col:c.value}),void(a.value=!1))},u=function(){n("close"),a.value=!1};return{endCell:o,customRow:l,customCol:c,handleClickTable:r,insertCustomTable:i,isCustom:a,close:u}}});n("5a68");const Xs=Ln()(qs,[["render",Hs],["__scopeId","data-v-e325ce98"]]);var Ws=Xs,Gs={class:"media-input"},Us={class:"tabs"},Ys=["onClick"],Zs={class:"btns"},Js=Object(y["createTextVNode"])("取消"),Ks=Object(y["createTextVNode"])("确认"),Qs={class:"btns"},$s=Object(y["createTextVNode"])("取消"),ef=Object(y["createTextVNode"])("确认");function tf(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Input"),r=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Gs,[Object(y["createElementVNode"])("div",Us,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:e.type===t.key}]),key:t.key,onClick:function(n){return e.type=t.key}},Object(y["toDisplayString"])(t.label),11,Ys)})),128))]),"video"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createVNode"])(a,{value:e.videoSrc,"onUpdate:value":t[0]||(t[0]=function(t){return e.videoSrc=t}),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),Object(y["createElementVNode"])("div",Zs,[Object(y["createVNode"])(r,{onClick:t[1]||(t[1]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[Js]})),_:1}),Object(y["createVNode"])(r,{type:"primary",onClick:t[2]||(t[2]=function(t){return e.insertVideo()})},{default:Object(y["withCtx"])((function(){return[Ks]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0),"audio"===e.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(a,{value:e.audioSrc,"onUpdate:value":t[3]||(t[3]=function(t){return e.audioSrc=t}),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),Object(y["createElementVNode"])("div",Qs,[Object(y["createVNode"])(r,{onClick:t[4]||(t[4]=function(t){return e.close()}),style:{"margin-right":"10px"}},{default:Object(y["withCtx"])((function(){return[$s]})),_:1}),Object(y["createVNode"])(r,{type:"primary",onClick:t[5]||(t[5]=function(t){return e.insertAudio()})},{default:Object(y["withCtx"])((function(){return[ef]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}var nf=Object(y["defineComponent"])({name:"media-input",emits:["insertVideo","insertAudio","close"],setup:function(e,t){var n=t.emit,o=Object(y["ref"])("video"),l=Object(y["ref"])("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),c=Object(y["ref"])("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),a=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],r=function(){if(!l.value)return ge["a"].error("请先输入正确的视频地址");n("insertVideo",l.value)},i=function(){if(!c.value)return ge["a"].error("请先输入正确的音频地址");n("insertAudio",c.value)},u=function(){return n("close")};return{type:o,videoSrc:l,audioSrc:c,tabs:a,insertVideo:r,insertAudio:i,close:u}}});n("3d3c");const of=Ln()(nf,[["render",tf],["__scopeId","data-v-4916d8ab"]]);var lf=of,cf={class:"latex-editor"},af={class:"container"},rf={class:"left"},uf={class:"input-area"},df={class:"preview"},sf={key:0,class:"placeholder"},ff={key:1,class:"preview-content"},pf={class:"right"},mf={class:"tabs"},bf=["onClick"],vf={class:"content"},Of={key:0,class:"symbol"},hf={class:"symbol-tabs"},jf=["onClick"],yf={class:"symbol-pool"},gf=["onClick"],xf={key:1,class:"formula"},Cf={class:"formula-title"},kf=["onClick"],wf={class:"footer"},Ef=Object(y["createTextVNode"])("取消"),Nf=Object(y["createTextVNode"])("确定");function If(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("TextArea"),r=Object(y["resolveComponent"])("FormulaContent"),i=Object(y["resolveComponent"])("SymbolContent"),u=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cf,[Object(y["createElementVNode"])("div",af,[Object(y["createElementVNode"])("div",rf,[Object(y["createElementVNode"])("div",uf,[Object(y["createVNode"])(a,{value:e.latex,"onUpdate:value":t[0]||(t[0]=function(t){return e.latex=t}),placeholder:"输入 LaTeX 公式",ref:"textAreaRef"},null,8,["value"])]),Object(y["createElementVNode"])("div",df,[e.latex?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ff,[Object(y["createVNode"])(r,{width:518,height:138,latex:e.latex},null,8,["latex"])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",sf,"公式预览"))])]),Object(y["createElementVNode"])("div",pf,[Object(y["createElementVNode"])("div",mf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.tabs,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["tab",{active:t.value===e.toolbarState}]),key:t.value,onClick:function(n){return e.toolbarState=t.value}},Object(y["toDisplayString"])(t.label),11,bf)})),128))]),Object(y["createElementVNode"])("div",vf,["symbol"===e.toolbarState?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Of,[Object(y["createElementVNode"])("div",hf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.symbolList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["symbol-tab",{active:e.selectedSymbolKey===t.type}]),key:t.type,onClick:function(n){return e.selectedSymbolKey=t.type}},Object(y["toDisplayString"])(t.label),11,jf)})),128))]),Object(y["createElementVNode"])("div",yf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.symbolPool,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-item",key:t.latex,onClick:function(n){return e.insertSymbol(t.latex)}},[Object(y["createVNode"])(i,{latex:t.latex},null,8,["latex"])],8,gf)})),128))])])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xf,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.formulaList,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"formula-item",key:t.label},[Object(y["createElementVNode"])("div",Cf,Object(y["toDisplayString"])(t.label),1),Object(y["createElementVNode"])("div",{class:"formula-item-content",onClick:function(n){return e.latex=t.latex}},[Object(y["createVNode"])(r,{width:236,height:60,latex:t.latex},null,8,["latex"])],8,kf)])})),128))]))])])]),Object(y["createElementVNode"])("div",wf,[Object(y["createVNode"])(u,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.close()})},{default:Object(y["withCtx"])((function(){return[Ef]})),_:1}),Object(y["createVNode"])(u,{class:"btn",type:"primary",onClick:t[2]||(t[2]=function(t){return e.update()})},{default:Object(y["withCtx"])((function(){return[Nf]})),_:1})])])}var Vf=n("e5ca");Vf["a"].SUB_SUP_SCALE=.5;var Sf=[{label:"高斯公式",latex:"\\int\\int\\int _ { \\Omega } \\left( \\frac { \\partial {P} } { \\partial {x} } + \\frac { \\partial {Q} } { \\partial {y} } + \\frac { \\partial {R} }{ \\partial {z} } \\right) \\mathrm { d } V = \\oint _ { \\partial \\Omega } ( P \\cos \\alpha + Q \\cos \\beta + R \\cos \\gamma ) \\mathrm{ d} S"},{label:"傅里叶级数",latex:"f(x) = \\frac {a_0} 2 + \\sum_{n = 1}^\\infty {({a_n}\\cos {nx} + {b_n}\\sin {nx})}"},{label:"泰勒展开式",latex:"e ^ { x } = 1 + \\frac { x } { 1 ! } + \\frac { x ^ { 2 } } { 2 ! } + \\frac { x ^ { 3 } } { 3 ! } + ... , \\quad - \\infty < x < \\infty"},{label:"定积分",latex:"\\lim_ { n \\rightarrow + \\infty } \\sum _ { i = 1 } ^ { n } f \\left[ a + \\frac { i } { n } ( b - a ) \\right] \\frac { b - a } { n } = \\int _ { a } ^ { b } f ( x ) dx"},{label:"三角恒等式1",latex:"\\sin \\alpha \\pm \\sin \\beta = 2 \\sin \\frac { 1 } { 2 } ( \\alpha \\pm \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha \\mp \\beta )"},{label:"三角恒等式2",latex:"\\cos \\alpha + \\cos \\beta = 2 \\cos \\frac { 1 } { 2 } ( \\alpha + \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha - \\beta )"},{label:"和的展开式",latex:"( 1 + x ) ^ { n } = 1 + \\frac { n x } { 1 ! } + \\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ..."},{label:"欧拉公式",latex:" e^{ix} = \\cos {x} + i\\sin {x}"},{label:"贝努利方程",latex:"\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\not= {0,1})"},{label:"全微分方程",latex:"du(x,y) = P(x,y)dx + Q(x,y)dy = 0"},{label:"非齐次方程",latex:"y = (\\int Q(x) e^{\\int {P(x)dx}}dx + C)e^{-\\int {P(x)dx}}"},{label:"柯西中值定理",latex:"\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\frac{{f'(\\xi )}}{{F'(\\xi )}}"},{label:"拉格朗日中值定理",latex:"f(b) - f(a) = f'(\\xi )(b - a)"},{label:"导数公式",latex:"(\\arcsin x)' = \\frac{1}{{\\sqrt {1 - x^2} }}"},{label:"三角函数积分",latex:"\\int {tgxdx = - \\ln \\left| {\\cos x} \\right| + C}"},{label:"二次曲面",latex:"\\frac{{{x^2}}}{{{a^2}}} + \\frac{{{y^2}}}{{{b^2}}} - \\frac{{{z^2}}}{{{c^2}}} = 1"},{label:"二阶微分",latex:"\\frac {{d^2}y} {dx^2} + P(x) \\frac {dy} {dx} + Q(x)y = f(x)"},{label:"方向导数",latex:"\\frac{{\\partial f}}{{\\partial l}} = \\frac{{\\partial f}}{{\\partial x}}\\cos \\phi + \\frac{{\\partial f}}{{\\partial y}}\\sin \\phi"}],Bf=[{type:"operators",label:"数学",children:[{latex:"\\cdot"},{latex:"\\pm"},{latex:"\\mp"},{latex:"+"},{latex:"-"},{latex:"\\times"},{latex:"\\div"},{latex:"<"},{latex:">"},{latex:"="},{latex:"\\neq\\ne"},{latex:"\\leqq"},{latex:"\\geqq"},{latex:"\\leq"},{latex:"\\geq"},{latex:"\\propto"},{latex:"\\sim"},{latex:"\\equiv"},{latex:"\\dagger"},{latex:"\\ddagger"},{latex:"\\ell"},{latex:"\\#"},{latex:"\\$"},{latex:"\\&"},{latex:"\\%"},{latex:"\\langle\\rangle"},{latex:"()"},{latex:"[]"},{latex:"\\{\\}"},{latex:"||"},{latex:"\\|"},{latex:"\\exists"},{latex:"\\in"},{latex:"\\subset"},{latex:"\\supset"},{latex:"\\cup"},{latex:"\\cap"},{latex:"\\infty"},{latex:"\\partial"},{latex:"\\nabla"},{latex:"\\aleph"},{latex:"\\wp"},{latex:"\\therefore"},{latex:"\\mid"},{latex:"\\sum"},{latex:"\\prod"},{latex:"\\bigoplus"},{latex:"\\bigodot"},{latex:"\\int"},{latex:"\\oint"},{latex:"\\oplus"},{latex:"\\odot"},{latex:"\\perp"},{latex:"\\angle"},{latex:"\\triangle"},{latex:"\\Box"},{latex:"\\rightarrow"},{latex:"\\to"},{latex:"\\leftarrow"},{latex:"\\gets"},{latex:"\\circ"},{latex:"\\bigcirc"},{latex:"\\bullet"},{latex:"\\star"},{latex:"\\diamond"},{latex:"\\ast"},{latex:","},{latex:"."},{latex:";"},{latex:"!"}]},{type:"group",label:"组合",children:[{latex:"\\frac{a}{b}"},{latex:"\\frac{dx}{dx}"},{latex:"\\frac{\\partial a}{\\partial b}"},{latex:"\\sqrt{x}"},{latex:"\\sqrt[n]{x}"},{latex:"x^{n}"},{latex:"x_{n}"},{latex:"x_a^b"},{latex:"\\int_{a}^{b}"},{latex:"\\oint_a^b"},{latex:"\\lim_{a \\rightarrow b}"},{latex:"\\prod_a^b"},{latex:"\\sum_a^b"},{latex:"\\left(\\begin{array}a \\\\ b\\end{array}\\right)"},{latex:"\\begin{bmatrix}a & b \\\\ c & d \\end{bmatrix}"},{latex:"\\begin{cases}a & x = 0 \\\\ b & x > 0\\end{cases}"},{latex:"\\hat{a}"},{latex:"\\breve{a}"},{latex:"\\acute{a}"},{latex:"\\grave{a}"},{latex:"\\tilde{a}"},{latex:"\\bar{a}"},{latex:"\\vec{a}"},{latex:"\\underline{a}"},{latex:"\\overline{a}"},{latex:"\\widehat{ab}"},{latex:"\\overleftarrow{ab}"},{latex:"\\overrightarrow{ab}"}]},{type:"verbatim",label:"函数",children:[{latex:"\\log"},{latex:"\\ln"},{latex:"\\exp"},{latex:"\\mod"},{latex:"\\lim"},{latex:"\\sin"},{latex:"\\cos"},{latex:"\\tan"},{latex:"\\csc"},{latex:"\\sec"},{latex:"\\cot"},{latex:"\\sinh"},{latex:"\\cosh"},{latex:"\\tanh"},{latex:"\\csch"},{latex:"\\sech"},{latex:"\\coth"},{latex:"\\arcsin"},{latex:"\\arccos"},{latex:"\\arctan"},{latex:"\\arccsc"},{latex:"\\arcsec"},{latex:"\\arccot"}]},{type:"greek",label:"希腊字母",children:[{latex:"\\alpha"},{latex:"\\beta"},{latex:"\\gamma"},{latex:"\\delta"},{latex:"\\varepsilon"},{latex:"\\zeta"},{latex:"\\eta"},{latex:"\\vartheta"},{latex:"\\iota"},{latex:"\\kappa"},{latex:"\\lambda"},{latex:"\\mu"},{latex:"\\nu"},{latex:"\\xi"},{latex:"\\omicron"},{latex:"\\pi"},{latex:"\\rho"},{latex:"\\sigma"},{latex:"\\tau"},{latex:"\\upsilon"},{latex:"\\varphi"},{latex:"\\chi"},{latex:"\\psi"},{latex:"\\omega"},{latex:"\\epsilon"},{latex:"\\theta"},{latex:"\\phi"},{latex:"\\varsigma"},{latex:"\\Alpha"},{latex:"\\Beta"},{latex:"\\Gamma"},{latex:"\\Delta"},{latex:"\\Epsilon"},{latex:"\\Zeta"},{latex:"\\Eta"},{latex:"\\Theta"},{latex:"\\Iota"},{latex:"\\Kappa"},{latex:"\\Lambda"},{latex:"\\Mu"},{latex:"\\Nu"},{latex:"\\Xi"},{latex:"\\Omicron"},{latex:"\\Pi"},{latex:"\\Rho"},{latex:"\\Sigma"},{latex:"\\Tau"},{latex:"\\Upsilon"},{latex:"\\Phi"},{latex:"\\Chi"},{latex:"\\Psi"},{latex:"\\Omega"}]}],Lf=["width","height"],Tf=["transform"],Mf=["d"];function _f(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("svg",{class:"formula-content",overflow:"visible",width:e.box.w+32,height:e.box.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[Object(y["createElementVNode"])("g",{transform:"scale(".concat(e.scale,", ").concat(e.scale,") translate(0,0) matrix(1,0,0,1,0,0)"),"transform-origin":"0 50%"},[Object(y["createElementVNode"])("path",{d:e.pathd},null,8,Mf)],8,Tf)],8,Lf)}var Df=Object(y["defineComponent"])({name:"formula-content",props:{latex:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(e){var t=Object(y["ref"])({x:0,y:0,w:0,h:0}),n=Object(y["ref"])("");Object(y["watch"])((function(){return e.latex}),(function(){var o=new Vf["b"](e.latex);n.value=o.pathd({}),t.value=o.box({})}),{immediate:!0});var o=Object(y["computed"])((function(){var n=t.value.w+32,o=t.value.h+32;return n>e.width||o>e.height?n/o>e.width/e.height?e.width/n:e.height/o:1}));return{box:t,pathd:n,scale:o}}});const zf=Ln()(Df,[["render",_f]]);var Af=zf,Ff=["innerHTML"];function Rf(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"symbol-content",innerHTML:e.svg},null,8,Ff)}var Pf=Object(y["defineComponent"])({name:"symbol-content",props:{latex:{type:String,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t=new Vf["b"](e.latex);return t.svg({SCALE_X:10,SCALE_Y:10})}));return{svg:t}}});const Hf=Ln()(Pf,[["render",Rf]]);var qf=Hf,Xf=[{label:"常用符号",value:"symbol"},{label:"预置公式",value:"formula"}],Wf=Object(y["defineComponent"])({name:"latex-editor",emits:["update","close"],components:{FormulaContent:Af,SymbolContent:qf},props:{value:{type:String,default:""}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(""),l=Object(y["ref"])("symbol"),c=Object(y["ref"])(),a=Object(y["ref"])(Bf[0].type),r=Object(y["computed"])((function(){var e=Bf.find((function(e){return e.type===a.value}));return(null===e||void 0===e?void 0:e.children)||[]}));Object(y["onMounted"])((function(){e.value&&(o.value=e.value)}));var i=function(){if(o.value){var e=new Vf["b"](o.value),t=e.pathd({}),l=e.box({});n("update",{latex:o.value,path:t,w:l.w+32,h:l.h+32})}},u=function(){return n("close")},d=function(e){c.value&&(c.value.focus(),document.execCommand("insertText",!1,e))};return{tabs:Xf,latex:o,toolbarState:l,selectedSymbolKey:a,formulaList:Sf,symbolList:Bf,symbolPool:r,textAreaRef:c,update:i,close:u,insertSymbol:d}}});n("b824");const Gf=Ln()(Wf,[["render",If],["__scopeId","data-v-129e1afa"]]);var Uf=Gf,Yf=Object(y["defineComponent"])({name:"canvas-tool",components:{ShapePool:ss,LinePool:xs,ChartPool:Is,TableGenerator:Ws,MediaInput:lf,LaTeXEditor:Uf},setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.canvasScale,o=Object(g["c"])(de()),l=o.canUndo,c=o.canRedo,a=Object(y["computed"])((function(){return parseInt(100*n.value+"")+"%"})),r=rt(),i=r.scaleCanvas,u=r.setCanvasPercentage,d=qe(),s=d.redo,f=d.undo,p=Ue(),m=p.createImageElement,b=p.createChartElement,v=p.createTableElement,O=p.createLatexElement,h=p.createVideoElement,j=p.createAudioElement,x=function(e){var t=e[0];t&&We(t).then((function(e){return m(e)}))},C=Object(y["ref"])(!1),k=Object(y["ref"])(!1),w=Object(y["ref"])(!1),E=Object(y["ref"])(!1),N=Object(y["ref"])(!1),I=Object(y["ref"])(!1),V=function(){e.setCreatingElement({type:"text"})},S=function(t){e.setCreatingElement({type:"shape",data:t}),C.value=!1},B=function(t){e.setCreatingElement({type:"line",data:t}),k.value=!1};return{scaleCanvas:i,setCanvasPercentage:u,canvasScalePercentage:a,canUndo:l,canRedo:c,redo:s,undo:f,insertImageElement:x,shapePoolVisible:C,linePoolVisible:k,chartPoolVisible:w,tableGeneratorVisible:E,mediaInputVisible:N,latexEditorVisible:I,drawText:V,drawShape:S,drawLine:B,createChartElement:b,createTableElement:v,createLatexElement:O,createVideoElement:h,createAudioElement:j}}});n("044f");const Zf=Ln()(Yf,[["render",$d],["__scopeId","data-v-4ae7c9aa"]]);var Jf=Zf,Kf={class:"add-slide"},Qf=Object(y["createTextVNode"])("添加幻灯片"),$f={class:"select-btn"},ep=["onMousedown"];function tp(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlus"),r=Object(y["resolveComponent"])("LayoutPool"),i=Object(y["resolveComponent"])("IconDown"),u=Object(y["resolveComponent"])("Popover"),d=Object(y["resolveComponent"])("ThumbnailSlide"),s=Object(y["resolveComponent"])("Draggable"),f=Object(y["resolveDirective"])("contextmenu"),p=Object(y["resolveDirective"])("click-outside");return Object(y["withDirectives"])((Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnails",onMousedown:t[3]||(t[3]=function(){return e.setThumbnailsFocus(!0)})},[Object(y["createElementVNode"])("div",Kf,[Object(y["createElementVNode"])("div",{class:"btn",onClick:t[0]||(t[0]=function(t){return e.createSlide()})},[Object(y["createVNode"])(a,{class:"icon"}),Qf]),Object(y["createVNode"])(u,{trigger:"click",placement:"bottomLeft",visible:e.presetLayoutPopoverVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.presetLayoutPopoverVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{onSelect:t[1]||(t[1]=function(t){e.createSlideByTemplate(t),e.presetLayoutPopoverVisible=!1})})]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",$f,[Object(y["createVNode"])(i)])]})),_:1},8,["visible"])]),Object(y["createVNode"])(s,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,setData:null,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(y["withCtx"])((function(t){var n=t.element,o=t.index;return[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["thumbnail-item",{active:e.slideIndex===o,selected:e.selectedSlidesIndex.includes(o)}]),onMousedown:function(t){return e.handleClickSlideThumbnail(t,o)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["label",{"offset-left":o>=99}])},Object(y["toDisplayString"])(e.fillDigit(o+1,2)),3),Object(y["createVNode"])(d,{class:"thumbnail",slide:n,size:120,visible:oo.value?n.value=setTimeout((function(){o.value=o.value+20,e()}),600):o.value=9999};return Object(y["onMounted"])(l),Object(y["onUnmounted"])((function(){n.value&&clearTimeout(n.value)})),{slidesLoadLimit:o}},op=n("b76a"),lp=n.n(op),cp={class:"layout-pool"},ap=["onClick"];function rp(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",cp,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.layouts,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"layout-item",key:t.id,onClick:function(n){return e.selectSlideTemplate(t)}},[Object(y["createVNode"])(a,{class:"thumbnail",slide:t,size:180},null,8,["slide"])],8,ap)})),128))])}var ip=Object(y["defineComponent"])({name:"layout-pool",emits:["select"],components:{ThumbnailSlide:Pd},setup:function(e,t){var n=t.emit,o=Object(g["c"])($()),l=o.layouts,c=function(e){n("select",e)};return{layouts:l,selectSlideTemplate:c}}});n("e7b8");const up=Ln()(ip,[["render",rp],["__scopeId","data-v-741b366e"]]);var dp=up,sp=Object(y["defineComponent"])({name:"thumbnails",components:{Draggable:lp.a,ThumbnailSlide:Pd,LayoutPool:dp},setup:function(){var e=ee(),t=$(),n=se(),o=Object(g["c"])(e),l=o.selectedSlidesIndex,c=o.thumbnailsFocus,a=Object(g["c"])(t),r=a.slides,i=a.slideIndex,u=Object(g["c"])(n),d=u.ctrlKeyState,s=u.shiftKeyState,f=np(),p=f.slidesLoadLimit,m=Object(y["computed"])((function(){return[].concat(Object(G["a"])(l.value),[i.value])})),b=Object(y["ref"])(!1),v=Ze(),O=v.copySlide,h=v.pasteSlide,j=v.createSlide,x=v.createSlideByTemplate,C=v.copyAndPasteSlide,k=v.deleteSlide,w=v.cutSlide,E=v.selectAllSlide,N=function(n){e.setActiveElementIdList([]),i.value!==n&&t.updateSlideIndex(n)},I=function(t,n){var o=m.value.length>1;if(!o||!m.value.includes(n)||0===t.button)if(d.value)if(i.value===n){if(!o)return;var l=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(l),N(m.value[0])}else if(m.value.includes(n)){var c=m.value.filter((function(e){return e!==n}));e.updateSelectedSlidesIndex(c)}else{var a=[].concat(Object(G["a"])(m.value),[n]);e.updateSelectedSlidesIndex(a),N(n)}else if(s.value){if(i.value===n&&!o)return;var r=Math.min.apply(Math,Object(G["a"])(m.value)),u=n;n1&&void 0!==arguments[1]?arguments[1]:0,c=o.value,a=s(),r=a.originClipRange,i=a.originWidth,f=a.originHeight,p=a.originLeft,m=a.originTop;if(n){var b,v=f/i,O=0,h=100;if(v>n){var j=(1-n/v)/2*100;b=[[O,j],[h,h-j]]}else{var y=(1-v/n)/2*100;b=[[y,O],[h-y,h]]}t.updateElement({id:l.value,props:{clip:Object(B["a"])(Object(B["a"])({},c.clip),{},{shape:e,range:b}),left:p+i*(b[0][0]/100),top:m+f*(b[0][1]/100),width:i*(b[1][0]-b[0][0])/100,height:f*(b[1][1]-b[0][1])/100}})}else t.updateElement({id:l.value,props:{clip:Object(B["a"])(Object(B["a"])({},c.clip),{},{shape:e,range:r})}});d(),u()},p=function(e){var n=e[0];n&&(We(n).then((function(e){var n={src:e};t.updateElement({id:l.value,props:n})})),u())},m=function(){var e=o.value;if(e.clip){var n=s(),c=n.originWidth,a=n.originHeight,r=n.originLeft,i=n.originTop;t.updateElement({id:l.value,props:{left:r,top:i,width:c,height:a}})}t.removeElementProps({id:l.value,propName:["clip","outline","flip","shadow","filters"]}),u()},b=function(){var e=o.value,n=Object(B["a"])(Object(B["a"])({},a.value.background),{},{type:"image",image:e.src,imageSize:"cover"});t.updateSlide({background:n}),u()};return{clipPanelVisible:r,shapeClipPathOptions:ab,ratioClipOptions:rb,handleElement:o,clipImage:d,presetImageClip:f,replaceImage:p,resetImage:m,setBackgroundImage:b}}});n("56bc");const ub=Ln()(ib,[["render",Rm],["__scopeId","data-v-64e5a614"]]);var db=ub,sb=function(e){return Object(y["pushScopeId"])("data-v-0e201fca"),e=e(),Object(y["popScopeId"])(),e},fb={class:"shape-style-panel"},pb={class:"row"},mb=Object(y["createTextVNode"])("纯色填充"),bb=Object(y["createTextVNode"])("渐变填充"),vb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),Ob=Object(y["createTextVNode"])("线性渐变"),hb=Object(y["createTextVNode"])("径向渐变"),jb={class:"row"},yb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),gb={class:"row"},xb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Cb={key:0,class:"row"},kb=sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)}));function wb(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("Slider"),f=Object(y["resolveComponent"])("ElementFlip"),p=Object(y["resolveComponent"])("Divider"),m=Object(y["resolveComponent"])("IconFontSize"),b=Object(y["resolveComponent"])("SelectOptGroup"),v=Object(y["resolveComponent"])("IconAddText"),O=Object(y["resolveComponent"])("InputGroup"),h=Object(y["resolveComponent"])("IconText"),j=Object(y["resolveComponent"])("Button"),g=Object(y["resolveComponent"])("Tooltip"),x=Object(y["resolveComponent"])("ButtonGroup"),C=Object(y["resolveComponent"])("IconTextBold"),k=Object(y["resolveComponent"])("CheckboxButton"),w=Object(y["resolveComponent"])("IconTextItalic"),E=Object(y["resolveComponent"])("IconTextUnderline"),N=Object(y["resolveComponent"])("IconFormat"),I=Object(y["resolveComponent"])("CheckboxButtonGroup"),V=Object(y["resolveComponent"])("IconAlignTextLeft"),S=Object(y["resolveComponent"])("RadioButton"),B=Object(y["resolveComponent"])("IconAlignTextCenter"),L=Object(y["resolveComponent"])("IconAlignTextRight"),T=Object(y["resolveComponent"])("RadioGroup"),M=Object(y["resolveComponent"])("IconAlignTextTopOne"),_=Object(y["resolveComponent"])("IconAlignTextMiddleOne"),D=Object(y["resolveComponent"])("IconAlignTextBottomOne"),z=Object(y["resolveComponent"])("ElementOutline"),A=Object(y["resolveComponent"])("ElementShadow"),F=Object(y["resolveComponent"])("ElementOpacity");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fb,[Object(y["createElementVNode"])("div",pb,[Object(y["createVNode"])(r,{style:{flex:"10"},value:e.fillType,onChange:t[0]||(t[0]=function(t){return e.updateFillType(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"fill"},{default:Object(y["withCtx"])((function(){return[mb]})),_:1}),Object(y["createVNode"])(a,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[bb]})),_:1})]})),_:1},8,["value"]),vb,"fill"===e.fillType?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.fill,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[2]||(t[2]=function(t){return e.updateGradient({type:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"linear"},{default:Object(y["withCtx"])((function(){return[Ob]})),_:1}),Object(y["createVNode"])(a,{value:"radial"},{default:Object(y["withCtx"])((function(){return[hb]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",jb,[yb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.gradient.color[0],"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateGradient({color:[t,e.gradient.color[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",gb,[xb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.gradient.color[1],"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateGradient({color:[e.gradient.color[0],t]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Cb,[kb,Object(y["createVNode"])(s,{class:"slider",min:0,max:360,step:15,value:e.gradient.rotate,onChange:t[5]||(t[5]=function(t){return e.updateGradient({rotate:t})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(f),Object(y["createVNode"])(p),e.showTextTools?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(O,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[6]||(t[6]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(b,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(r,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[7]||(t[7]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.fontSizeOptions,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(x,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.richTextAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(I,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[9]||(t[9]=function(t){return e.emitRichTextCommand("bold")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("em")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("underline")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{style:{flex:"1"},onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("clear")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(T,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[13]||(t[13]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(B)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(L)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(T,{class:"row","button-style":"solid",value:e.textAlign,onChange:t[14]||(t[14]=function(t){return e.updateTextAlign(t.target.value)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顶对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"top",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"middle",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(g,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"底对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(S,{value:"bottom",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(D)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(p)],64)):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(z),Object(y["createVNode"])(p),Object(y["createVNode"])(A),Object(y["createVNode"])(p),Object(y["createVNode"])(F)])}var Eb=S,Nb=Object(y["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:Fp,ElementOutline:am,ElementShadow:Cm,ElementFlip:Um,ColorButton:om},setup:function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.handleElement,l=n.handleElementId,c=n.editingShapeElementId,a=n.richTextAttrs,r=n.availableFonts,i=Object(y["computed"])((function(){return c.value===l.value})),u=Object(y["ref"])(),d=Object(y["ref"])(),s=Object(y["ref"])("fill"),f=Object(y["ref"])("middle");Object(y["watch"])(o,(function(){var e,t;o.value&&"shape"===o.value.type&&(u.value=o.value.fill||"#000",d.value=o.value.gradient||{type:"linear",rotate:0,color:[u.value,"#fff"]},s.value=o.value.gradient?"gradient":"fill",f.value=(null===(e=o.value)||void 0===e||null===(t=e.text)||void 0===t?void 0:t.align)||"middle")}),{deep:!0,immediate:!0});var p=qe(),m=p.addHistorySnapshot,b=function(e){t.updateElement({id:l.value,props:e}),m()},v=function(e){"fill"===e?(t.removeElementProps({id:l.value,propName:"gradient"}),m()):b({gradient:d.value})},O=function(e){if(d.value){var t=Object(B["a"])(Object(B["a"])({},d.value),e);b({gradient:t})}},h=function(e){b({fill:e})},j=function(e){var t=o.value,n={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},l=t.text||n;b({text:Object(B["a"])(Object(B["a"])({},l),{},{align:e})})},x=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],C=function(e,t){$l.emit(pl.RICH_TEXT_COMMAND,{command:e,value:t})};return{fill:u,gradient:d,fillType:s,textAlign:f,richTextAttrs:a,availableFonts:r,fontSizeOptions:x,webFonts:Eb,showTextTools:i,emitRichTextCommand:C,updateFillType:v,updateFill:h,updateGradient:O,updateTextAlign:j}}});n("7e0a");const Ib=Ln()(Nb,[["render",wb],["__scopeId","data-v-0e201fca"]]);var Vb=Ib,Sb=function(e){return Object(y["pushScopeId"])("data-v-cbc4d7fa"),e=e(),Object(y["popScopeId"])(),e},Bb={class:"line-style-panel"},Lb={class:"row"},Tb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条样式:",-1)})),Mb=Object(y["createTextVNode"])("实线"),_b=Object(y["createTextVNode"])("虚线"),Db={class:"row"},zb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1)})),Ab={class:"row"},Fb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1)})),Rb={class:"row"},Pb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点样式:",-1)})),Hb=Object(y["createTextVNode"])("无"),qb=Object(y["createTextVNode"])("箭头"),Xb=Object(y["createTextVNode"])("圆点"),Wb={class:"row"},Gb=Sb((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点样式:",-1)})),Ub=Object(y["createTextVNode"])("无"),Yb=Object(y["createTextVNode"])("箭头"),Zb=Object(y["createTextVNode"])("圆点");function Jb(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("InputNumber"),f=Object(y["resolveComponent"])("Divider"),p=Object(y["resolveComponent"])("ElementShadow");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bb,[Object(y["createElementVNode"])("div",Lb,[Tb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.style,onChange:t[0]||(t[0]=function(t){return e.updateLine({style:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"solid"},{default:Object(y["withCtx"])((function(){return[Mb]})),_:1}),Object(y["createVNode"])(a,{value:"dashed"},{default:Object(y["withCtx"])((function(){return[_b]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Db,[zb,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Ab,[Fb,Object(y["createVNode"])(s,{value:e.handleElement.width,onChange:t[2]||(t[2]=function(t){return e.updateLine({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createElementVNode"])("div",Rb,[Pb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.points[0],onChange:t[3]||(t[3]=function(t){return e.updateLine({points:[t,e.handleElement.points[1]]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:""},{default:Object(y["withCtx"])((function(){return[Hb]})),_:1}),Object(y["createVNode"])(a,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[qb]})),_:1}),Object(y["createVNode"])(a,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Xb]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Wb,[Gb,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.handleElement.points[1],onChange:t[4]||(t[4]=function(t){return e.updateLine({points:[e.handleElement.points[0],t]})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:""},{default:Object(y["withCtx"])((function(){return[Ub]})),_:1}),Object(y["createVNode"])(a,{value:"arrow"},{default:Object(y["withCtx"])((function(){return[Yb]})),_:1}),Object(y["createVNode"])(a,{value:"dot"},{default:Object(y["withCtx"])((function(){return[Zb]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(f),Object(y["createVNode"])(p)])}var Kb=Object(y["defineComponent"])({name:"line-style-panel",components:{ElementShadow:Cm,ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())};return{handleElement:n,updateLine:c}}});n("04e6");const Qb=Ln()(Kb,[["render",Jb],["__scopeId","data-v-cbc4d7fa"]]);var $b=Qb,ev=function(e){return Object(y["pushScopeId"])("data-v-ee2d8b14"),e=e(),Object(y["popScopeId"])(),e},tv={class:"chart-style-panel"},nv=Object(y["createTextVNode"])(" 编辑图表数据 "),ov={class:"row"},lv=Object(y["createTextVNode"])("面积图样式"),cv=Object(y["createTextVNode"])("散点图样式"),av={class:"row"},rv=Object(y["createTextVNode"])("使用平滑曲线"),iv={key:1,class:"row"},uv=Object(y["createTextVNode"])("条形图样式"),dv={key:2,class:"row"},sv=Object(y["createTextVNode"])("环形图样式"),fv={class:"row"},pv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图例:",-1)})),mv=Object(y["createTextVNode"])("不显示"),bv=Object(y["createTextVNode"])("显示在上方"),vv=Object(y["createTextVNode"])("显示在下方"),Ov={class:"row"},hv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景填充:",-1)})),jv={class:"row"},yv=ev((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1)})),gv={style:{flex:"2"}},xv={class:"color-btn-wrap",style:{flex:"3"}},Cv=["onClick"],kv={class:"preset-themes"},wv=["onClick"],Ev=Object(y["createTextVNode"])("推荐主题"),Nv=Object(y["createTextVNode"])(" 添加主题色 ");function Iv(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconEdit"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Divider"),u=Object(y["resolveComponent"])("Checkbox"),d=Object(y["resolveComponent"])("SelectOption"),s=Object(y["resolveComponent"])("Select"),f=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("ColorButton"),m=Object(y["resolveComponent"])("Popover"),b=Object(y["resolveComponent"])("IconCloseSmall"),v=Object(y["resolveComponent"])("Tooltip"),O=Object(y["resolveComponent"])("IconPlus"),h=Object(y["resolveComponent"])("ButtonGroup"),j=Object(y["resolveComponent"])("ElementOutline"),g=Object(y["resolveComponent"])("ChartDataEditor"),x=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",tv,[Object(y["createVNode"])(r,{class:"full-width-btn",onClick:t[0]||(t[0]=function(t){return e.chartDataEditorVisible=!0})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:"btn-icon"}),nv]})),_:1}),Object(y["createVNode"])(i),"line"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",ov,[Object(y["createVNode"])(u,{onChange:t[1]||(t[1]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[lv]})),_:1},8,["checked"]),Object(y["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[cv]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",av,[Object(y["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:Object(y["withCtx"])((function(){return[rv]})),_:1},8,["checked"])])],64)):Object(y["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",iv,[Object(y["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:Object(y["withCtx"])((function(){return[uv]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",dv,[Object(y["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:Object(y["withCtx"])((function(){return[sv]})),_:1},8,["checked"])])):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(i),Object(y["createElementVNode"])("div",fv,[pv,Object(y["createVNode"])(s,{style:{flex:"3"},value:e.legend,onChange:t[6]||(t[6]=function(t){return e.updateLegend(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{value:""},{default:Object(y["withCtx"])((function(){return[mv]})),_:1}),Object(y["createVNode"])(d,{value:"top"},{default:Object(y["withCtx"])((function(){return[bv]})),_:1}),Object(y["createVNode"])(d,{value:"bottom"},{default:Object(y["withCtx"])((function(){return[vv]})),_:1})]})),_:1},8,["value"])]),Object(y["createVNode"])(i),Object(y["createElementVNode"])("div",Ov,[hv,Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.fill,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",jv,[yv,Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.gridColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createVNode"])(i),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.themeColor,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"row",key:n},[Object(y["createElementVNode"])("div",gv,Object(y["toDisplayString"])(0===n?"主题配色:":""),1),Object(y["createVNode"])(m,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:t,"onUpdate:modelValue":function(t){return e.updateTheme(t,n)}},null,8,["modelValue","onUpdate:modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",xv,[Object(y["createVNode"])(p,{color:t,style:{width:"100%"}},null,8,["color"]),Object(y["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[0!==n?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"delete-color-btn",onClick:Object(y["withModifiers"])((function(t){return e.deleteThemeColor(n)}),["stop"])},[Object(y["createVNode"])(b)],8,Cv)):Object(y["createCommentVNode"])("",!0)]})),_:2},1032,["mouseEnterDelay"])])]})),_:2},1024)])})),128)),Object(y["createVNode"])(h,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{trigger:"click",visible:e.presetThemesVisible,"onUpdate:visible":t[9]||(t[9]=function(t){return e.presetThemesVisible=t})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",kv,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.presetChartThemes,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"preset-theme",key:n,onClick:function(n){return e.applyPresetTheme(t)}},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(t,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"preset-theme-color",key:e,style:Object(y["normalizeStyle"])({backgroundColor:e})},null,4)})),128))],8,wv)})),128))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"no-padding",style:{flex:"2"}},{default:Object(y["withCtx"])((function(){return[Ev]})),_:1})]})),_:1},8,["visible"]),Object(y["createVNode"])(r,{class:"no-padding",disabled:e.themeColor.length>=10,style:{flex:"3"},onClick:t[10]||(t[10]=function(t){return e.addThemeColor()})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{class:"btn-icon"}),Nv]})),_:1},8,["disabled"])]})),_:1}),Object(y["createVNode"])(i),Object(y["createVNode"])(j),Object(y["createVNode"])(x,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[13]||(t[13]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{data:e.handleElement.data,onClose:t[11]||(t[11]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[12]||(t[12]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])}var Vv={class:"chart-data-editor"},Sv={class:"editor-content"},Bv={class:"range-box"},Lv=["id","onFocus","onPaste"],Tv={class:"btns"},Mv={class:"left"},_v=Object(y["createTextVNode"])("清空"),Dv={class:"right"},zv=Object(y["createTextVNode"])("取消"),Av=Object(y["createTextVNode"])("确认");function Fv(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Vv,[Object(y["createElementVNode"])("div",Sv,[Object(y["createElementVNode"])("div",Bv,[Object(y["createElementVNode"])("div",{class:"temp-range",style:Object(y["normalizeStyle"])({width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"})},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.rangeLines,(function(e){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["range-line",e.type]),key:e.type,style:Object(y["normalizeStyle"])(e.style)},null,6)})),128)),Object(y["createElementVNode"])("div",{class:"resizable",style:Object(y["normalizeStyle"])(e.resizablePointStyle),onMousedown:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(y["createElementVNode"])("table",null,[Object(y["createElementVNode"])("tbody",null,[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(31,(function(t){return Object(y["createElementVNode"])("tr",{key:t},[(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(7,(function(n){return Object(y["createElementVNode"])("td",{key:n,class:Object(y["normalizeClass"])({head:1===n&&t<=e.selectedRange[1]||1===t&&n<=e.selectedRange[0]})},[Object(y["createElementVNode"])("input",{class:Object(y["normalizeClass"])(["item",{selected:t<=e.selectedRange[1]&&n<=e.selectedRange[0]}]),id:"cell-".concat(t-1,"-").concat(n-1),autocomplete:"off",onFocus:function(o){return e.focusCell=[t-1,n-1]},onPaste:function(o){return e.handlePaste(o,t-1,n-1)}},null,42,Lv)],2)})),64))])})),64))])])]),Object(y["createElementVNode"])("div",Tv,[Object(y["createElementVNode"])("div",Mv,[Object(y["createVNode"])(a,{class:"btn",onClick:t[1]||(t[1]=function(t){return e.clear()})},{default:Object(y["withCtx"])((function(){return[_v]})),_:1})]),Object(y["createElementVNode"])("div",Dv,[Object(y["createVNode"])(a,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Object(y["withCtx"])((function(){return[zv]})),_:1}),Object(y["createVNode"])(a,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()}),style:{"margin-left":"10px"}},{default:Object(y["withCtx"])((function(){return[Av]})),_:1})])])])}var Rv=100,Pv=32,Hv=Object(y["defineComponent"])({name:"chart-data-editor",emits:["save","close"],props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])([0,0]),l=Object(y["ref"])({width:0,height:0}),c=Object(y["ref"])(null),a=Object(y["computed"])((function(){var e=o.value[0]*Rv,t=o.value[1]*Pv;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),r=Object(y["computed"])((function(){var e=o.value[0]*Rv,t=o.value[1]*Pv;return{left:e+"px",top:t+"px"}})),i=function(){var t=[],n=e.data,l=n.labels,c=n.legends,a=n.series,r=l.length,i=a.length;t.push([""].concat(Object(G["a"])(c)));for(var u=0;u.5*Rv&&(i+=Rv-i%Rv),u%Pv>.5*Pv&&(u+=Pv-u%Pv);var d=Math.round(u/Pv),s=Math.round(i/Rv);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],l.value={width:0,height:0}}}};return{tempRangeSize:l,rangeLines:a,resizablePointStyle:r,selectedRange:o,focusCell:c,changeSelectRange:b,getTableData:s,closeEditor:m,clear:f,handlePaste:p}}});n("6856");const qv=Ln()(Hv,[["render",Fv],["__scopeId","data-v-9a62f784"]]);var Xv=qv,Wv=[["#d87c7c","#919e8b","#d7ab82","#6e7074","#61a0a8","#efa18d"],["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78"],["#516b91","#59c4e6","#edafda","#93b7e3","#a5e7f0","#cbb0e3"],["#893448","#d95850","#eb8146","#ffb248","#f2d643","#ebdba4"],["#4ea397","#22c3aa","#7bd9a5","#d0648a","#f58db2","#f2b3c9"],["#3fb1e3","#6be6c1","#626c91","#a0a7e6","#c4ebad","#96dee8"],["#fc97af","#87f7cf","#f7f494","#72ccff","#f7c5a0","#d4a4eb"],["#c1232b","#27727b","#fcce10","#e87c25","#b5c334","#fe8463"],["#2ec7c9","#b6a2de","#5ab1ef","#ffb980","#d87a80","#8d98b3"],["#e01f54","#001852","#f5e8c8","#b8d2c7","#c6b38e","#a4d8c2"],["#c12e34","#e6b600","#0098d9","#2b821d","#005eaa","#339ca8"],["#8a7ca8","#e098c7","#8fd3e8","#71669e","#cc70af","#7cb4cc"]],Gv=Object(y["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:am,ChartDataEditor:Xv,ColorButton:om},setup:function(){var e=ee(),t=$(),n=Object(g["c"])(e),o=n.handleElement,l=n.handleElementId,c=Object(g["c"])(t),a=c.theme,r=Object(y["ref"])(!1),i=Object(y["ref"])(!1),u=qe(),d=u.addHistorySnapshot,s=Object(y["ref"])(),f=Object(y["ref"])([]),p=Object(y["ref"])(""),m=Object(y["ref"])(""),b=Object(y["ref"])(!0),v=Object(y["ref"])(!0),O=Object(y["ref"])(!1),h=Object(y["ref"])(!1),j=Object(y["ref"])(!1);Object(y["watch"])(o,(function(){if(o.value&&"chart"===o.value.type){if(s.value=o.value.fill||"#000",o.value.options){var e=o.value.options,t=e.lineSmooth,n=e.showLine,l=e.showArea,c=e.horizontalBars,a=e.donut;void 0!==t&&(b.value=t),void 0!==n&&(v.value=n),void 0!==l&&(O.value=l),void 0!==c&&(h.value=c),void 0!==a&&(j.value=a)}f.value=o.value.themeColor,p.value=o.value.gridColor||"rgba(0, 0, 0, 0.4)",m.value=o.value.legend||""}}),{deep:!0,immediate:!0});var x=function(e){t.updateElement({id:l.value,props:e}),d()},C=function(e){r.value=!1,x({data:e})},k=function(e){x({fill:e})},w=function(e){var t=o.value,n=Object(B["a"])(Object(B["a"])({},t.options),e);x({options:n})},E=function(e,t){var n={themeColor:f.value.map((function(n,o){return o===t?e:n}))};x(n)},N=function(){var e={themeColor:[].concat(Object(G["a"])(f.value),[a.value.themeColor])};x(e)},I=function(e){x({themeColor:e}),i.value=!1},V=function(e){var t={themeColor:f.value.filter((function(t,n){return n!==e}))};x(t)},S=function(e){x({gridColor:e})},L=function(e){x({legend:e})},T=function(){return r.value=!0};return $l.on(pl.OPEN_CHART_DATA_EDITOR,T),Object(y["onUnmounted"])((function(){$l.off(pl.OPEN_CHART_DATA_EDITOR,T)})),{chartDataEditorVisible:r,presetThemesVisible:i,handleElement:o,updateData:C,fill:s,updateFill:k,lineSmooth:b,showLine:v,showArea:O,horizontalBars:h,donut:j,updateOptions:w,themeColor:f,gridColor:p,legend:m,updateTheme:E,addThemeColor:N,deleteThemeColor:V,updateGridColor:S,updateLegend:L,presetChartThemes:Wv,applyPresetTheme:I}}});n("b5ae");const Uv=Ln()(Gv,[["render",Iv],["__scopeId","data-v-ee2d8b14"]]);var Yv=Uv,Zv=function(e){return Object(y["pushScopeId"])("data-v-72e00692"),e=e(),Object(y["popScopeId"])(),e},Jv={class:"table-style-panel"},Kv={class:"row"},Qv=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"行数:",-1)})),$v={class:"set-count",style:{flex:"3"}},eO={class:"count-text"},tO={class:"row"},nO=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"列数:",-1)})),oO={class:"set-count",style:{flex:"3"}},lO={class:"count-text"},cO={class:"row theme-switch"},aO=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1)})),rO={class:"switch-wrapper",style:{flex:"3"}},iO={class:"row"},uO=Object(y["createTextVNode"])("标题行"),dO=Object(y["createTextVNode"])("汇总行"),sO={class:"row"},fO=Object(y["createTextVNode"])("第一列"),pO=Object(y["createTextVNode"])("最后一列"),mO={class:"row"},bO=Zv((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1)}));function vO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconFontSize"),r=Object(y["resolveComponent"])("SelectOption"),i=Object(y["resolveComponent"])("SelectOptGroup"),u=Object(y["resolveComponent"])("Select"),d=Object(y["resolveComponent"])("IconAddText"),s=Object(y["resolveComponent"])("InputGroup"),f=Object(y["resolveComponent"])("ColorPicker"),p=Object(y["resolveComponent"])("IconText"),m=Object(y["resolveComponent"])("Button"),b=Object(y["resolveComponent"])("Tooltip"),v=Object(y["resolveComponent"])("Popover"),O=Object(y["resolveComponent"])("IconFill"),h=Object(y["resolveComponent"])("ButtonGroup"),j=Object(y["resolveComponent"])("IconTextBold"),g=Object(y["resolveComponent"])("CheckboxButton"),x=Object(y["resolveComponent"])("IconTextItalic"),C=Object(y["resolveComponent"])("IconTextUnderline"),k=Object(y["resolveComponent"])("IconStrikethrough"),w=Object(y["resolveComponent"])("CheckboxButtonGroup"),E=Object(y["resolveComponent"])("IconAlignTextLeft"),N=Object(y["resolveComponent"])("RadioButton"),I=Object(y["resolveComponent"])("IconAlignTextCenter"),V=Object(y["resolveComponent"])("IconAlignTextRight"),S=Object(y["resolveComponent"])("RadioGroup"),B=Object(y["resolveComponent"])("Divider"),L=Object(y["resolveComponent"])("ElementOutline"),T=Object(y["resolveComponent"])("IconMinus"),M=Object(y["resolveComponent"])("IconPlus"),_=Object(y["resolveComponent"])("Switch"),D=Object(y["resolveComponent"])("Checkbox"),z=Object(y["resolveComponent"])("ColorButton");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Jv,[Object(y["createVNode"])(s,{compact:"",class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[0]||(t[0]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a)]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(i,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(y["createVNode"])(u,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d)]})),default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.fontSizeOptions,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:e,value:e},{default:Object(y["withCtx"])((function(){return[Object(y["createTextVNode"])(Object(y["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(y["createVNode"])(h,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.textAttrs.color})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O),Object(y["createElementVNode"])("div",{class:"text-color-block",style:Object(y["normalizeStyle"])({backgroundColor:e.textAttrs.backcolor})},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(y["createVNode"])(w,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.bold,onClick:t[4]||(t[4]=function(t){return e.updateTextAttrs({bold:!e.textAttrs.bold})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.em,onClick:t[5]||(t[5]=function(t){return e.updateTextAttrs({em:!e.textAttrs.em})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.underline,onClick:t[6]||(t[6]=function(t){return e.updateTextAttrs({underline:!e.textAttrs.underline})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.strikethrough,onClick:t[7]||(t[7]=function(t){return e.updateTextAttrs({strikethrough:!e.textAttrs.strikethrough})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(S,{class:"row","button-style":"solid",value:e.textAttrs.align,onChange:t[8]||(t[8]=function(t){return e.updateTextAttrs({align:t.target.value})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"left",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(E)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"center",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(I)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(N,{value:"right",style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(y["createVNode"])(B),Object(y["createVNode"])(L,{fixed:!0}),Object(y["createVNode"])(B),Object(y["createElementVNode"])("div",Kv,[Qv,Object(y["createElementVNode"])("div",$v,[Object(y["createVNode"])(m,{class:"btn",disabled:e.rowCount<=1,onClick:t[9]||(t[9]=function(t){return e.setTableRow(e.rowCount-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",eO,Object(y["toDisplayString"])(e.rowCount),1),Object(y["createVNode"])(m,{class:"btn",disabled:e.rowCount>=30,onClick:t[10]||(t[10]=function(t){return e.setTableRow(e.rowCount+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["disabled"])])]),Object(y["createElementVNode"])("div",tO,[nO,Object(y["createElementVNode"])("div",oO,[Object(y["createVNode"])(m,{class:"btn",disabled:e.colCount<=1,onClick:t[11]||(t[11]=function(t){return e.setTableCol(e.colCount-1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(T)]})),_:1},8,["disabled"]),Object(y["createElementVNode"])("div",lO,Object(y["toDisplayString"])(e.colCount),1),Object(y["createVNode"])(m,{class:"btn",disabled:e.colCount>=30,onClick:t[12]||(t[12]=function(t){return e.setTableCol(e.colCount+1)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(M)]})),_:1},8,["disabled"])])]),Object(y["createVNode"])(B),Object(y["createElementVNode"])("div",cO,[aO,Object(y["createElementVNode"])("div",rO,[Object(y["createVNode"])(_,{checked:e.hasTheme,onChange:t[13]||(t[13]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.hasTheme?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",iO,[Object(y["createVNode"])(D,{onChange:t[14]||(t[14]=function(t){return e.updateTheme({rowHeader:t.target.checked})}),checked:e.theme.rowHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[uO]})),_:1},8,["checked"]),Object(y["createVNode"])(D,{onChange:t[15]||(t[15]=function(t){return e.updateTheme({rowFooter:t.target.checked})}),checked:e.theme.rowFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[dO]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",sO,[Object(y["createVNode"])(D,{onChange:t[16]||(t[16]=function(t){return e.updateTheme({colHeader:t.target.checked})}),checked:e.theme.colHeader,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[fO]})),_:1},8,["checked"]),Object(y["createVNode"])(D,{onChange:t[17]||(t[17]=function(t){return e.updateTheme({colFooter:t.target.checked})}),checked:e.theme.colFooter,style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[pO]})),_:1},8,["checked"])]),Object(y["createElementVNode"])("div",mO,[bO,Object(y["createVNode"])(v,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{modelValue:e.theme.color,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(z,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(y["createCommentVNode"])("",!0)])}var OO=S,hO=Object(y["defineComponent"])({name:"table-style-panel",components:{ElementOutline:am,ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=t.selectedTableCells,c=t.availableFonts,a=Object(y["computed"])((function(){return e.theme.themeColor})),r=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],i=Object(y["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),u=Object(y["ref"])(),d=Object(y["ref"])(!1),s=Object(y["ref"])(0),f=Object(y["ref"])(0),p=Object(y["ref"])(0),m=Object(y["ref"])(0);Object(y["watch"])(n,(function(){n.value&&"table"===n.value.type&&(u.value=n.value.theme,d.value=!!u.value,s.value=n.value.data.length,f.value=n.value.data[0].length,p.value=n.value.data.length,m.value=n.value.data[0].length)}),{deep:!0,immediate:!0});var b=qe(),v=b.addHistorySnapshot,O=function(){if(n.value&&"table"===n.value.type){var e=0,t=0;if(l.value.length){var o=l.value[0];e=+o.split("_")[0],t=+o.split("_")[1]}var c=n.value.data[e][t].style;i.value=c?{bold:!!c.bold,em:!!c.em,underline:!!c.underline,strikethrough:!!c.strikethrough,color:c.color||"#000",backcolor:c.backcolor||"#000",fontsize:c.fontsize||"12px",fontname:c.fontname||"微软雅黑",align:c.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}};Object(y["onMounted"])((function(){l.value.length&&O()})),Object(y["watch"])(l,O);var h=function(t){e.updateElement({id:o.value,props:t}),v()},j=function(e){for(var t=n.value,o=JSON.parse(JSON.stringify(t.data)),c=0;co){var l=new Array(f.value).fill({id:pe(),colspan:1,rowspan:1,text:""}),c=new Array(e-o).fill(l),a=JSON.parse(JSON.stringify(t.data));a.push.apply(a,Object(G["a"])(c)),h({data:a})}else{var r=t.data.slice(0,e);h({data:r})}},w=function(e){var t=n.value,o=t.data[0].length,l=t.data,c=t.colWidths.map((function(e){return e*t.width}));if(e>o){var a;l=l.map((function(t){var n=new Array(e-o).fill({id:pe(),colspan:1,rowspan:1,text:""});return t.push.apply(t,Object(G["a"])(n)),t}));var r=new Array(e-o).fill(100);(a=c).push.apply(a,Object(G["a"])(r))}else l=l.map((function(t){return t.slice(0,e)})),c=c.slice(0,e);var i=c.reduce((function(e,t){return e+t})),u=c.map((function(e){return e/i})),d={width:i,data:l,colWidths:u};h(d)};return{handleElement:n,availableFonts:c,fontSizeOptions:r,textAttrs:i,updateTextAttrs:j,theme:u,rowCount:s,colCount:f,minRowCount:p,minColCount:m,hasTheme:d,toggleTheme:C,updateTheme:x,setTableRow:k,setTableCol:w,webFonts:OO}}});n("eacc");const jO=Ln()(hO,[["render",vO],["__scopeId","data-v-72e00692"]]);var yO=jO,gO=function(e){return Object(y["pushScopeId"])("data-v-69f903b1"),e=e(),Object(y["popScopeId"])(),e},xO={class:"latex-style-panel"},CO={class:"row"},kO=Object(y["createTextVNode"])("编辑 LaTeX"),wO={class:"row"},EO=gO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"颜色:",-1)})),NO={class:"row"},IO=gO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"粗细:",-1)}));function VO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button"),r=Object(y["resolveComponent"])("Divider"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("InputNumber"),f=Object(y["resolveComponent"])("LaTeXEditor"),p=Object(y["resolveComponent"])("Modal");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",xO,[Object(y["createElementVNode"])("div",CO,[Object(y["createVNode"])(a,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.latexEditorVisible=!0})},{default:Object(y["withCtx"])((function(){return[kO]})),_:1})]),Object(y["createVNode"])(r),Object(y["createElementVNode"])("div",wO,[EO,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateLatex({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",NO,[IO,Object(y["createVNode"])(s,{min:1,max:3,value:e.handleElement.strokeWidth,onChange:t[2]||(t[2]=function(t){return e.updateLatex({strokeWidth:t})}),style:{flex:"3"}},null,8,["value"])]),Object(y["createVNode"])(p,{visible:e.latexEditorVisible,"onUpdate:visible":t[5]||(t[5]=function(t){return e.latexEditorVisible=t}),footer:null,centered:"",width:880,destroyOnClose:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f,{value:e.handleElement.latex,onClose:t[3]||(t[3]=function(t){return e.latexEditorVisible=!1}),onUpdate:t[4]||(t[4]=function(t){e.updateLatexData(t),e.latexEditorVisible=!1})},null,8,["value"])]})),_:1},8,["visible"])])}var SO=Object(y["defineComponent"])({name:"latex-style-panel",components:{ColorButton:om,LaTeXEditor:Uf},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=Object(y["ref"])(!1),l=qe(),c=l.addHistorySnapshot,a=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),c())},r=function(e){a({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},i=function(){return o.value=!0};return $l.on(pl.OPEN_LATEX_EDITOR,i),Object(y["onUnmounted"])((function(){$l.off(pl.OPEN_LATEX_EDITOR,i)})),{handleElement:n,latexEditorVisible:o,updateLatex:a,updateLatexData:r}}});n("e5a8");const BO=Ln()(SO,[["render",VO],["__scopeId","data-v-69f903b1"]]);var LO=BO,TO=function(e){return Object(y["pushScopeId"])("data-v-61bcaa2a"),e=e(),Object(y["popScopeId"])(),e},MO={class:"video-style-panel"},_O=TO((function(){return Object(y["createElementVNode"])("div",{class:"title"},"视频预览封面",-1)})),DO={class:"background-image-wrapper"},zO={class:"background-image"},AO={class:"row"},FO=Object(y["createTextVNode"])("重置封面");function RO(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconPlus"),r=Object(y["resolveComponent"])("FileInput"),i=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",MO,[_O,Object(y["createElementVNode"])("div",DO,[Object(y["createVNode"])(r,{onChange:t[0]||(t[0]=function(t){return e.setVideoPoster(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",zO,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.handleElement.poster,")")})},[Object(y["createVNode"])(a)],4)])]})),_:1})]),Object(y["createElementVNode"])("div",AO,[Object(y["createVNode"])(i,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.updateVideo({poster:""})})},{default:Object(y["withCtx"])((function(){return[FO]})),_:1})])])}var PO=Object(y["defineComponent"])({name:"video-style-panel",setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())},a=function(e){var t=e[0];t&&We(t).then((function(e){return c({poster:e})}))};return{handleElement:n,updateVideo:c,setVideoPoster:a}}});n("c43a");const HO=Ln()(PO,[["render",RO],["__scopeId","data-v-61bcaa2a"]]);var qO=HO,XO=function(e){return Object(y["pushScopeId"])("data-v-80767a46"),e=e(),Object(y["popScopeId"])(),e},WO={class:"audio-style-panel"},GO={class:"row"},UO=XO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"图标颜色:",-1)})),YO={class:"row switch-row"},ZO=XO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"自动播放:",-1)})),JO={class:"switch-wrapper",style:{flex:"3"}},KO={class:"row switch-row"},QO=XO((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"循环播放:",-1)})),$O={class:"switch-wrapper",style:{flex:"3"}};function eh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ColorPicker"),r=Object(y["resolveComponent"])("ColorButton"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("Switch");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",WO,[Object(y["createElementVNode"])("div",GO,[UO,Object(y["createVNode"])(i,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.updateAudio({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",YO,[ZO,Object(y["createElementVNode"])("div",JO,[Object(y["createVNode"])(u,{checked:e.handleElement.autoplay,onChange:t[1]||(t[1]=function(t){return e.updateAudio({autoplay:t})})},null,8,["checked"])])]),Object(y["createElementVNode"])("div",KO,[QO,Object(y["createElementVNode"])("div",$O,[Object(y["createVNode"])(u,{checked:e.handleElement.loop,onChange:t[2]||(t[2]=function(t){return e.updateAudio({loop:t})})},null,8,["checked"])])])])}var th=Object(y["defineComponent"])({name:"audio-style-panel",components:{ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=qe(),l=o.addHistorySnapshot,c=function(t){n.value&&(e.updateElement({id:n.value.id,props:t}),l())};return{handleElement:n,updateAudio:c}}});n("d129");const nh=Ln()(th,[["render",eh],["__scopeId","data-v-80767a46"]]);var oh=nh,lh=Object(y["defineComponent"])({name:"element-style-panel",setup:function(){var e=Object(g["c"])(ee()),t=e.handleElement,n=Object(y["computed"])((function(){var e;if(!t.value)return null;var n=(e={},Object(ae["a"])(e,oo.TEXT,Im),Object(ae["a"])(e,oo.IMAGE,db),Object(ae["a"])(e,oo.SHAPE,Vb),Object(ae["a"])(e,oo.LINE,$b),Object(ae["a"])(e,oo.CHART,Yv),Object(ae["a"])(e,oo.TABLE,yO),Object(ae["a"])(e,oo.LATEX,LO),Object(ae["a"])(e,oo.VIDEO,qO),Object(ae["a"])(e,oo.AUDIO,oh),e);return n[t.value.type]||null}));return{handleElement:t,currentPanelComponent:n}}});const ch=Ln()(lh,[["render",xp]]);var ah=ch,rh=function(e){return Object(y["pushScopeId"])("data-v-3476ee65"),e=e(),Object(y["popScopeId"])(),e},ih={class:"element-positopn-panel"},uh=rh((function(){return Object(y["createElementVNode"])("div",{class:"title"},"层级:",-1)})),dh=Object(y["createTextVNode"])(" 置于顶层"),sh=Object(y["createTextVNode"])(" 置于底层"),fh=Object(y["createTextVNode"])(" 上移一层"),ph=Object(y["createTextVNode"])(" 下移一层"),mh=rh((function(){return Object(y["createElementVNode"])("div",{class:"title"},"对齐:",-1)})),bh={class:"row"},vh=rh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"位置:",-1)})),Oh=rh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),hh=Object(y["createStaticVNode"])('
X
Y
',1),jh={class:"row"},yh=rh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"大小:",-1)})),gh={key:1,style:{flex:"1"}},xh=Object(y["createStaticVNode"])('
',1),Ch={class:"row"},kh=rh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"3"}},"旋转:",-1)})),wh=rh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)}));function Eh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconSendToBack"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("IconBringToFrontOne"),u=Object(y["resolveComponent"])("ButtonGroup"),d=Object(y["resolveComponent"])("IconBringToFront"),s=Object(y["resolveComponent"])("IconSentToBack"),f=Object(y["resolveComponent"])("Divider"),p=Object(y["resolveComponent"])("IconAlignLeft"),m=Object(y["resolveComponent"])("Tooltip"),b=Object(y["resolveComponent"])("IconAlignVertically"),v=Object(y["resolveComponent"])("IconAlignRight"),O=Object(y["resolveComponent"])("IconAlignTop"),h=Object(y["resolveComponent"])("IconAlignHorizontally"),j=Object(y["resolveComponent"])("IconAlignBottom"),g=Object(y["resolveComponent"])("InputNumber"),x=Object(y["resolveComponent"])("IconLock"),C=Object(y["resolveComponent"])("IconUnlock"),k=Object(y["resolveComponent"])("IconRotate");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ih,[uh,Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.orderElement(e.handleElement,"top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{class:"btn-icon"}),dh]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,"bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{class:"btn-icon"}),sh]})),_:1})]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,"up")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d,{class:"btn-icon"}),fh]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,"down")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"btn-icon"}),ph]})),_:1})]})),_:1}),Object(y["createVNode"])(f),mh,Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElementToCanvas("left")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas("horizontal")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas("right")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(u,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas("top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas("vertical")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas("bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(j)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(f),Object(y["createElementVNode"])("div",bh,[vh,Object(y["createVNode"])(g,{step:5,value:e.left,onChange:t[10]||(t[10]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),Oh,Object(y["createVNode"])(g,{step:5,value:e.top,onChange:t[11]||(t[11]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),hh,"line"!==e.handleElement.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[Object(y["createElementVNode"])("div",jh,[yh,Object(y["createVNode"])(g,{min:e.minSize,max:1500,step:5,value:e.width,onChange:t[12]||(t[12]=function(t){return e.updateWidth(t)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape","audio"].includes(e.handleElement.type)?(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:0},[e.fixedRatio?(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(x,{style:{flex:"1"},class:"icon-btn",onClick:t[13]||(t[13]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(y["openBlock"])(),Object(y["createBlock"])(m,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(C,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gh)),Object(y["createVNode"])(g,{min:e.minSize,max:800,step:5,disabled:"text"===e.handleElement.type,value:e.height,onChange:t[15]||(t[15]=function(t){return e.updateHeight(t)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),xh],64)):Object(y["createCommentVNode"])("",!0),["line","video","audio"].includes(e.handleElement.type)?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:1},[Object(y["createVNode"])(f),Object(y["createElementVNode"])("div",Ch,[kh,Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"icon-btn",onClick:t[16]||(t[16]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(m,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(k,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("+")}),style:Object(y["normalizeStyle"])({flex:2,transform:"rotateY(180deg)"})},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),wh,Object(y["createVNode"])(g,{min:-180,max:180,step:5,value:e.rotate,onChange:t[18]||(t[18]=function(t){return e.updateRotate(t)}),style:{flex:"4"}},null,8,["value"])])],64))])}var Nh=Object(y["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=Object(y["ref"])(0),c=Object(y["ref"])(0),a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["ref"])(0),u=Object(y["ref"])(!1),d=Object(y["computed"])((function(){return n.value&&Un[n.value.type]||20}));Object(y["watch"])(n,(function(){n.value&&(l.value=Object(Z["round"])(n.value.left,1),c.value=Object(Z["round"])(n.value.top,1),u.value="fixedRatio"in n.value&&!!n.value.fixedRatio,"line"!==n.value.type&&(a.value=Object(Z["round"])(n.value.width,1),r.value=Object(Z["round"])(n.value.height,1),i.value="rotate"in n.value&&void 0!==n.value.rotate?Object(Z["round"])(n.value.rotate,1):0))}),{deep:!0,immediate:!0});var s=nt(),f=s.orderElement,p=lo(),m=p.alignElementToCanvas,b=qe(),v=b.addHistorySnapshot,O=function(t){var n={left:t};e.updateElement({id:o.value,props:n}),v()},h=function(t){var n={top:t};e.updateElement({id:o.value,props:n}),v()},j=function(t){var n={width:t};e.updateElement({id:o.value,props:n}),v()},x=function(t){var n={height:t};e.updateElement({id:o.value,props:n}),v()},C=function(t){var n={rotate:t};e.updateElement({id:o.value,props:n}),v()},k=function(t){var n={fixedRatio:t};e.updateElement({id:o.value,props:n}),v()},w=function(t){var n=45*Math.floor(i.value/45);"+"===t?n+=45:"-"===t&&(n-=45),n<-180&&(n=-180),n>180&&(n=180);var l={rotate:n};e.updateElement({id:o.value,props:l}),v()};return{handleElement:n,orderElement:f,alignElementToCanvas:m,left:l,top:c,width:a,height:r,rotate:i,fixedRatio:u,minSize:d,updateLeft:O,updateTop:h,updateWidth:j,updateHeight:x,updateRotate:C,updateFixedRatio:k,updateRotate45:w}}});n("f10d");const Ih=Ln()(Nh,[["render",Eh],["__scopeId","data-v-3476ee65"]]);var Vh=Ih,Sh=function(e){return Object(y["pushScopeId"])("data-v-696c81e2"),e=e(),Object(y["popScopeId"])(),e},Bh={class:"element-animation-panel"},Lh={key:0,class:"element-animation"},Th={class:"animation-pool"},Mh={class:"type-title"},_h={class:"pool-item-wrapper"},Dh=["onMouseenter","onClick"],zh={key:0,class:"mask"},Ah=Object(y["createTextVNode"])(" 该元素暂不支持动画 "),Fh={key:1,class:"tip"},Rh=Object(y["createTextVNode"])(" 选中画布中的元素添加动画"),Ph={class:"index"},Hh={class:"text"},qh={class:"handler"},Xh={key:2,class:"configs"},Wh={class:"duration"},Gh=Sh((function(){return Object(y["createElementVNode"])("div",{style:{flex:"4"}},"持续时间(毫秒):",-1)}));function Uh(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconEffects"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Popover"),u=Object(y["resolveComponent"])("IconClick"),d=Object(y["resolveComponent"])("Divider"),s=Object(y["resolveComponent"])("IconPlayOne"),f=Object(y["resolveComponent"])("Tooltip"),p=Object(y["resolveComponent"])("IconCloseSmall"),m=Object(y["resolveComponent"])("Draggable"),b=Object(y["resolveComponent"])("InputNumber");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Bh,[e.handleElement?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Lh,[["chart","video"].includes(e.handleElement.type)?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,class:"element-animation-btn",disabled:""},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{"margin-right":"5px"}}),Ah]})),_:1})):(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:0,trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[1]||(t[1]=function(t){return e.animationPoolVisible=t}),onVisibleChange:t[2]||(t[2]=function(t){return e.handlePopoverVisibleChange(t)})},{content:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",Th,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.animations,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-type",key:n.name},[Object(y["createElementVNode"])("div",Mh,Object(y["toDisplayString"])(n.name)+":",1),Object(y["createElementVNode"])("div",_h,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(n.children,(function(n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(t){return e.hoverPreviewAnimation=n.value},onMouseleave:t[0]||(t[0]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-box",["animate__animated","animate__faster",e.hoverPreviewAnimation===n.value&&"animate__".concat(n.value)]])},Object(y["toDisplayString"])(n.name),3)],40,Dh)})),128))])])})),128)),e.popoverMaskHide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",zh))])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{class:"element-animation-btn"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{style:{"margin-right":"5px"}}),Object(y["createTextVNode"])(" "+Object(y["toDisplayString"])(e.handleElementAnimationName||"点击选择动画"),1)]})),_:1})]})),_:1},8,["visible"]))])):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Fh,[Object(y["createVNode"])(u,{style:{"margin-right":"5px"}}),Rh])),Object(y["createVNode"])(d),Object(y["createVNode"])(m,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Object(y["withCtx"])((function(t){var n,o=t.element,l=t.index;return[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["sequence-item",{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===o.elId}])},[Object(y["createElementVNode"])("div",Ph,Object(y["toDisplayString"])(l+1),1),Object(y["createElementVNode"])("div",Hh,"【"+Object(y["toDisplayString"])(o.elType)+"】"+Object(y["toDisplayString"])(o.animationType),1),Object(y["createElementVNode"])("div",qh,[Object(y["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(o.elId,o.type,o.duration)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(y["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(o.elId)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])],2)]})),_:1},8,["modelValue","onEnd"]),e.handleElementAnimation?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xh,[Object(y["createVNode"])(d),Object(y["createElementVNode"])("div",Wh,[Gh,Object(y["createVNode"])(b,{min:100,max:5e3,step:100,value:e.handleElementAnimation.duration,onChange:t[3]||(t[3]=function(t){return e.updateElementAnimationDuration(t)}),style:{flex:"3"}},null,8,["value"])])])):Object(y["createCommentVNode"])("",!0)])}var Yh,Zh=[{type:"bounce",name:"弹跳",children:[{name:"弹入",value:"bounceIn"},{name:"向右弹入",value:"bounceInLeft"},{name:"向左弹入",value:"bounceInRight"},{name:"向上弹入",value:"bounceInUp"},{name:"向下弹入",value:"bounceInDown"}]},{type:"fade",name:"浮现",children:[{name:"浮入",value:"fadeIn"},{name:"向下浮入",value:"fadeInDown"},{name:"向下长距浮入",value:"fadeInDownBig"},{name:"向右浮入",value:"fadeInLeft"},{name:"向右长距浮入",value:"fadeInLeftBig"},{name:"向左浮入",value:"fadeInRight"},{name:"向左长距浮入",value:"fadeInRightBig"},{name:"向上浮入",value:"fadeInUp"},{name:"向上长距浮入",value:"fadeInUpBig"},{name:"从左上浮入",value:"fadeInTopLeft"},{name:"从右上浮入",value:"fadeInTopRight"},{name:"从左下浮入",value:"fadeInBottomLeft"},{name:"从右下浮入",value:"fadeInBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转进入",value:"rotateIn"},{name:"绕左下旋转进入",value:"rotateInDownLeft"},{name:"绕右下旋转进入",value:"rotateInDownRight"},{name:"绕左上旋转进入",value:"rotateInUpLeft"},{name:"绕右上旋转进入",value:"rotateInUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"放大进入",value:"zoomIn"},{name:"向下放大进入",value:"zoomInDown"},{name:"从左放大进入",value:"zoomInLeft"},{name:"从右放大进入",value:"zoomInRight"},{name:"向上放大进入",value:"zoomInUp"}]},{type:"slide",name:"滑入",children:[{name:"向下滑入",value:"slideInDown"},{name:"从右滑入",value:"slideInLeft"},{name:"从左滑入",value:"slideInRight"},{name:"向上滑入",value:"slideInUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转进入",value:"flipInX"},{name:"Y轴翻转进入",value:"flipInY"}]},{type:"back",name:"放大滑入",children:[{name:"向下放大滑入",value:"backInDown"},{name:"从左放大滑入",value:"backInLeft"},{name:"从右放大滑入",value:"backInRight"},{name:"向上放大滑入",value:"backInUp"}]},{type:"lightSpeed",name:"飞入",children:[{name:"从右飞入",value:"lightSpeedInRight"},{name:"从左飞入",value:"lightSpeedInLeft"}]}],Jh=1e3,Kh={},Qh=Object(L["a"])(Zh);try{for(Qh.s();!(Yh=Qh.n()).done;){var $h,ej=Yh.value,tj=Object(L["a"])(ej.children);try{for(tj.s();!($h=tj.n()).done;){var nj=$h.value;Kh[nj.value]=nj.name}}catch(Bw){tj.e(Bw)}finally{tj.f()}}}catch(Bw){Qh.e(Bw)}finally{Qh.f()}var oj=Object(y["defineComponent"])({name:"element-animation-panel",components:{Draggable:lp.a},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.handleElement,o=t.handleElementId,l=Object(g["c"])(e),c=l.currentSlide,a=l.currentSlideAnimations,r=Object(y["ref"])(""),i=Object(y["ref"])(!1),u=qe(),d=u.addHistorySnapshot,s=Zh,f=Object(y["computed"])((function(){if(!a.value)return[];var e,t=[],n=Object(L["a"])(a.value);try{var o=function(){var n=e.value,o=c.value.elements.find((function(e){return e.id===n.elId}));if(!o)return"continue";var l=Gn[o.type],a=Kh[n.type];t.push(Object(B["a"])(Object(B["a"])({},n),{},{elType:l,animationType:a}))};for(n.s();!(e=n.n()).done;)o()}catch(Bw){n.e(Bw)}finally{n.f()}return t})),p=Object(y["computed"])((function(){var e=a.value||[],t=e.find((function(e){return e.elId===o.value}));return t||null})),m=Object(y["computed"])((function(){return p.value?Kh[p.value.type]:null})),b=function(t){var n=a.value.filter((function(e){return e.elId!==t}));e.updateSlide({animations:n}),d()},v=function(t){var n=t.newIndex,o=t.oldIndex;if(o!==n){var l=JSON.parse(JSON.stringify(a.value)),c=l[o];l.splice(o,1),l.splice(n,0,c),e.updateSlide({animations:l}),d()}},O=function(e,t,n){var o="animate__",l=document.querySelector("#editable-element-".concat(e," [class^=editable-element-]"));if(l){var c="".concat(o).concat(t);document.documentElement.style.setProperty("--animate-duration","".concat(n,"ms")),l.classList.add("".concat(o,"animated"),c);var a=function(){document.documentElement.style.removeProperty("--animate-duration"),l.classList.remove("".concat(o,"animated"),c)};l.addEventListener("animationend",a,{once:!0})}},h=function(t){if(a.value){var n=a.value.map((function(e){return e.elId===o.value?Object(B["a"])(Object(B["a"])({},e),{},{type:t}):e}));e.updateSlide({animations:n}),i.value=!1,d();var l=a.value.find((function(e){return e.elId===o.value})),c=(null===l||void 0===l?void 0:l.duration)||Jh;O(o.value,t,c)}},j=function(t){if(a.value&&!(t<100||t>5e3)){var n=a.value.map((function(e){return e.elId===o.value?Object(B["a"])(Object(B["a"])({},e),{},{duration:t}):e}));e.updateSlide({animations:n}),d()}},x=function(t){if(m.value)h(t);else{var n=a.value?JSON.parse(JSON.stringify(a.value)):[];n.push({elId:o.value,type:t,duration:Jh}),e.updateSlide({animations:n}),i.value=!1,d(),O(o.value,t,Jh)}},C=Object(y["ref"])(!1),k=function(e){e?setTimeout((function(){return C.value=!0}),500):C.value=!1};return{handleElement:n,animationPoolVisible:i,animations:s,animationSequence:f,hoverPreviewAnimation:r,handleElementAnimation:p,handleElementAnimationName:m,popoverMaskHide:C,addAnimation:x,deleteAnimation:b,handleDragEnd:v,runAnimation:O,updateElementAnimationDuration:j,handlePopoverVisibleChange:k}}});n("c390");const lj=Ln()(oj,[["render",Uh],["__scopeId","data-v-696c81e2"]]);var cj=lj,aj=function(e){return Object(y["pushScopeId"])("data-v-0e2f846d"),e=e(),Object(y["popScopeId"])(),e},rj={class:"slide-design-panel"},ij=aj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"背景填充",-1)})),uj={class:"row"},dj=Object(y["createTextVNode"])("纯色填充"),sj=Object(y["createTextVNode"])("图片填充"),fj=Object(y["createTextVNode"])("渐变填充"),pj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"1"}},null,-1)})),mj=Object(y["createTextVNode"])("缩放"),bj=Object(y["createTextVNode"])("拼贴"),vj=Object(y["createTextVNode"])("缩放铺满"),Oj=Object(y["createTextVNode"])("线性渐变"),hj=Object(y["createTextVNode"])("径向渐变"),jj={key:0,class:"background-image-wrapper"},yj={class:"background-image"},gj={key:1,class:"background-gradient-wrapper"},xj={class:"row"},Cj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1)})),kj={class:"row"},wj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1)})),Ej={key:0,class:"row"},Nj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1)})),Ij={class:"row"},Vj=Object(y["createTextVNode"])("应用背景到全部"),Sj={class:"row"},Bj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"画布尺寸:",-1)})),Lj=Object(y["createTextVNode"])("宽屏 16 : 9"),Tj=Object(y["createTextVNode"])("宽屏 16 :10"),Mj=Object(y["createTextVNode"])("标准 4 :3"),_j=aj((function(){return Object(y["createElementVNode"])("div",{class:"title"},"全局主题",-1)})),Dj={class:"row"},zj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体:",-1)})),Aj={class:"row"},Fj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1)})),Rj={class:"row"},Pj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1)})),Hj={class:"row"},qj=aj((function(){return Object(y["createElementVNode"])("div",{style:{flex:"2"}},"主题色:",-1)})),Xj=Object(y["createTextVNode"])(" 预置主题 "),Wj={key:2,class:"theme-list"},Gj=["onClick"],Uj={class:"theme-item-content"},Yj={class:"row"},Zj=Object(y["createTextVNode"])("应用主题到全部");function Jj(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("SelectOption"),r=Object(y["resolveComponent"])("Select"),i=Object(y["resolveComponent"])("ColorPicker"),u=Object(y["resolveComponent"])("ColorButton"),d=Object(y["resolveComponent"])("Popover"),s=Object(y["resolveComponent"])("IconPlus"),f=Object(y["resolveComponent"])("FileInput"),p=Object(y["resolveComponent"])("Slider"),m=Object(y["resolveComponent"])("Button"),b=Object(y["resolveComponent"])("Divider"),v=Object(y["resolveComponent"])("SelectOptGroup"),O=Object(y["resolveComponent"])("IconDown");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",rj,[ij,Object(y["createElementVNode"])("div",uj,[Object(y["createVNode"])(r,{style:{flex:"10"},value:e.background.type,onChange:t[0]||(t[0]=function(t){return e.updateBackgroundType(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"solid"},{default:Object(y["withCtx"])((function(){return[dj]})),_:1}),Object(y["createVNode"])(a,{value:"image"},{default:Object(y["withCtx"])((function(){return[sj]})),_:1}),Object(y["createVNode"])(a,{value:"gradient"},{default:Object(y["withCtx"])((function(){return[fj]})),_:1})]})),_:1},8,["value"]),pj,"solid"===e.background.type?(Object(y["openBlock"])(),Object(y["createBlock"])(d,{key:0,trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:1,style:{flex:"10"},value:e.background.imageSize||"cover",onChange:t[2]||(t[2]=function(t){return e.updateBackground({imageSize:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"contain"},{default:Object(y["withCtx"])((function(){return[mj]})),_:1}),Object(y["createVNode"])(a,{value:"repeat"},{default:Object(y["withCtx"])((function(){return[bj]})),_:1}),Object(y["createVNode"])(a,{value:"cover"},{default:Object(y["withCtx"])((function(){return[vj]})),_:1})]})),_:1},8,["value"])):(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:2,style:{flex:"10"},value:e.background.gradientType,onChange:t[3]||(t[3]=function(t){return e.updateBackground({gradientType:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:"linear"},{default:Object(y["withCtx"])((function(){return[Oj]})),_:1}),Object(y["createVNode"])(a,{value:"radial"},{default:Object(y["withCtx"])((function(){return[hj]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jj,[Object(y["createVNode"])(f,{onChange:t[4]||(t[4]=function(t){return e.uploadBackgroundImage(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("div",yj,[Object(y["createElementVNode"])("div",{class:"content",style:Object(y["normalizeStyle"])({backgroundImage:"url(".concat(e.background.image,")")})},[Object(y["createVNode"])(s)],4)])]})),_:1})])):Object(y["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",gj,[Object(y["createElementVNode"])("div",xj,[Cj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateBackground({gradientColor:[t,e.background.gradientColor[1]]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",kj,[wj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.background.gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateBackground({gradientColor:[e.background.gradientColor[0],t]})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ej,[Nj,Object(y["createVNode"])(p,{class:"slider",min:0,max:360,step:15,value:e.background.gradientRotate,onChange:t[7]||(t[7]=function(t){return e.updateBackground({gradientRotate:t})})},null,8,["value"])])):Object(y["createCommentVNode"])("",!0)])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Ij,[Object(y["createVNode"])(m,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.applyBackgroundAllSlide()})},{default:Object(y["withCtx"])((function(){return[Vj]})),_:1})]),Object(y["createVNode"])(b),Object(y["createElementVNode"])("div",Sj,[Bj,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.viewportRatio,onChange:t[9]||(t[9]=function(t){return e.updateViewportRatio(t)})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a,{value:.5625},{default:Object(y["withCtx"])((function(){return[Lj]})),_:1},8,["value"]),Object(y["createVNode"])(a,{value:.625},{default:Object(y["withCtx"])((function(){return[Tj]})),_:1},8,["value"]),Object(y["createVNode"])(a,{value:.75},{default:Object(y["withCtx"])((function(){return[Mj]})),_:1},8,["value"])]})),_:1},8,["value"])]),Object(y["createVNode"])(b),_j,Object(y["createElementVNode"])("div",Dj,[zj,Object(y["createVNode"])(r,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{label:"系统字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.availableFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",{style:Object(y["normalizeStyle"])({fontFamily:e.value})},Object(y["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(y["createVNode"])(v,{label:"在线字体"},{default:Object(y["withCtx"])((function(){return[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.webFonts,(function(e){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:e.value,value:e.value},{default:Object(y["withCtx"])((function(){return[Object(y["createElementVNode"])("span",null,Object(y["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(y["createElementVNode"])("div",Aj,[Fj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Rj,[Pj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",Hj,[qj,Object(y["createVNode"])(d,{trigger:"click"},{content:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["title dropdown",{active:e.showPresetThemes}]),onClick:t[14]||(t[14]=function(t){return e.togglePresetThemesVisible()}),style:{"margin-top":"20px"}},[Xj,Object(y["createVNode"])(O,{class:"icon"})],2),e.showPresetThemes?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Wj,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.themes,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"theme-item",key:n,style:Object(y["normalizeStyle"])({backgroundColor:t.background}),onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(y["createElementVNode"])("div",Uj,[Object(y["createElementVNode"])("div",{class:"text",style:Object(y["normalizeStyle"])({color:t.text})},"Aa",4),Object(y["createElementVNode"])("div",{class:"color-block",style:Object(y["normalizeStyle"])({backgroundColor:t.color})},null,4)])],12,Gj)})),128))])):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yj,[Object(y["createVNode"])(m,{style:{flex:"1"},onClick:t[15]||(t[15]=function(t){return e.applyThemeAllSlide()})},{default:Object(y["withCtx"])((function(){return[Zj]})),_:1})])])}var Kj=[{color:"#d14424",background:"#ffffff",text:"#333"},{color:"#42464b",background:"#ffffff",text:"#333"},{color:"#5d82ba",background:"#ffffff",text:"#333"},{color:"#005a6f",background:"#ffffff",text:"#333"},{color:"#d0614c",background:"#dfb044",text:"#333"},{color:"#86a1ad",background:"#dfdbd4",text:"#333"},{color:"#697586",background:"#d5c4a4",text:"#333"},{color:"#333333",background:"#7acfa6",text:"#333"},{color:"#42464b",background:"#415065",text:"#fff"},{color:"#0c5999",background:"#35a2cd",text:"#fff"},{color:"#c49a41",background:"#8c4357",text:"#fff"},{color:"#dfaa00",background:"#2e4e7d",text:"#fff"},{color:"#d1ad88",background:"#f99070",text:"#fff"},{color:"#464d52",background:"#657984",text:"#fff"},{color:"#ffcfb6",background:"#1e4c6f",text:"#fff"},{color:"#c3a043",background:"#43292a",text:"#fff"},{color:"#464d52",background:"#60546f",text:"#fff"},{color:"#df9636",background:"#5b89a0",text:"#fff"},{color:"#b898a4",background:"#93716b",text:"#fff"},{color:"#c47a11",background:"#187db1",text:"#fff"},{color:"#333333",background:"#759564",text:"#fff"},{color:"#355b5e",background:"#424b50",text:"#fff"},{color:"#d29090",background:"#942a32",text:"#fff"},{color:"#00cfdf",background:"#3b434d",text:"#fff"},{color:"#424246",background:"#c70042",text:"#fff"},{color:"#2e4155",background:"#b35d44",text:"#fff"},{color:"#11bfce",background:"#8f98aa",text:"#fff"},{color:"#333333",background:"#549688",text:"#fff"}],Qj=Kj,$j=S,ey=Object(y["defineComponent"])({name:"slide-design-panel",components:{ColorButton:om},setup:function(){var e=$(),t=Object(g["c"])(ee()),n=t.availableFonts,o=Object(g["c"])(e),l=o.slides,c=o.currentSlide,a=o.viewportRatio,r=o.theme,i=Object(y["computed"])((function(){return c.value.background?c.value.background:{type:"solid",value:"#fff"}})),u=qe(),d=u.addHistorySnapshot,s=function(t){if("solid"===t){var n=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"solid",color:i.value.color||"#fff"});e.updateSlide({background:n})}else if("image"===t){var o=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"image",image:i.value.image||"",imageSize:i.value.imageSize||"cover"});e.updateSlide({background:o})}else{var l=Object(B["a"])(Object(B["a"])({},i.value),{},{type:"gradient",gradientType:i.value.gradientType||"linear",gradientColor:i.value.gradientColor||["#fff","#fff"],gradientRotate:i.value.gradientRotate||0});e.updateSlide({background:l})}d()},f=function(t){e.updateSlide({background:Object(B["a"])(Object(B["a"])({},i.value),t)}),d()},p=function(e){var t=e[0];t&&We(t).then((function(e){return f({image:e})}))},m=function(){var t=l.value.map((function(e){return Object(B["a"])(Object(B["a"])({},e),{},{background:c.value.background})}));e.setSlides(t),d()},b=function(t){e.setTheme(t)},v=function(){var t,n=JSON.parse(JSON.stringify(l.value)),o=r.value,c=o.themeColor,a=o.backgroundColor,i=o.fontColor,u=o.fontName,s=Object(L["a"])(n);try{for(s.s();!(t=s.n()).done;){var f=t.value;f.background&&"image"===f.background.type||(f.background=Object(B["a"])(Object(B["a"])({},f.background),{},{type:"solid",color:a}));var p,m=f.elements,b=Object(L["a"])(m);try{for(b.s();!(p=b.n()).done;){var v=p.value;if("shape"===v.type)v.fill=c;else if("line"===v.type)v.color=c;else if("text"===v.type)v.defaultColor=i,v.defaultFontName=u,v.fill&&(v.fill=c);else if("table"===v.type){v.theme&&(v.theme.color=c);var O,h=Object(L["a"])(v.data);try{for(h.s();!(O=h.n()).done;){var j,y=O.value,g=Object(L["a"])(y);try{for(g.s();!(j=g.n()).done;){var x=j.value;x.style&&(x.style.color=i,x.style.fontname=u)}}catch(Bw){g.e(Bw)}finally{g.f()}}}catch(Bw){h.e(Bw)}finally{h.f()}}else"chart"===v.type?(v.themeColor=[c],v.gridColor=i):"latex"===v.type?v.color=i:"audio"===v.type&&(v.color=c)}}catch(Bw){b.e(Bw)}finally{b.f()}}}catch(Bw){s.e(Bw)}finally{s.f()}e.setSlides(n),d()},O=Object(y["ref"])(!0),h=function(){O.value=!O.value},j=function(t){e.setViewportRatio(t)};return{availableFonts:n,background:i,updateBackgroundType:s,updateBackground:f,uploadBackgroundImage:p,applyBackgroundAllSlide:m,themes:Qj,theme:r,webFonts:$j,updateTheme:b,applyThemeAllSlide:v,viewportRatio:a,updateViewportRatio:j,showPresetThemes:O,togglePresetThemesVisible:h}}});n("eb2c");const ty=Ln()(ey,[["render",Jj],["__scopeId","data-v-0e2f846d"]]);var ny=ty,oy={class:"slide-animation-panel"},ly={class:"animation-pool"},cy=["onClick"],ay={class:"animation-text"},ry=Object(y["createTextVNode"])("应用到全部");function iy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Button");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",oy,[Object(y["createElementVNode"])("div",ly,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.animations,(function(t){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["animation-item",{active:e.currentTurningMode===t.value}]),key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(y["createElementVNode"])("div",{class:Object(y["normalizeClass"])(["animation-block",t.value])},null,2),Object(y["createElementVNode"])("div",ay,Object(y["toDisplayString"])(t.label),1)],10,cy)})),128))]),Object(y["createVNode"])(a,{style:{width:"100%"},onClick:t[0]||(t[0]=function(t){return e.applyAllSlide()})},{default:Object(y["withCtx"])((function(){return[ry]})),_:1})])}var uy=Object(y["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=$(),t=Object(g["c"])(e),n=t.slides,o=t.currentSlide,l=Object(y["computed"])((function(){return o.value.turningMode||"slideY"})),c=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=qe(),r=a.addHistorySnapshot,i=function(t){t!==l.value&&(e.updateSlide({turningMode:t}),r())},u=function(){var t=n.value.map((function(e){return Object(B["a"])(Object(B["a"])({},e),{},{turningMode:o.value.turningMode})}));e.setSlides(t),r()};return{currentTurningMode:l,animations:c,updateTurningMode:i,applyAllSlide:u}}});n("6e42");const dy=Ln()(uy,[["render",iy],["__scopeId","data-v-251ceb05"]]);var sy=dy,fy={class:"multi-position-panel"},py=Object(y["createTextVNode"])("水平均匀分布"),my=Object(y["createTextVNode"])("垂直均匀分布"),by=Object(y["createTextVNode"])("组合"),vy=Object(y["createTextVNode"])("取消组合");function Oy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconAlignLeft"),r=Object(y["resolveComponent"])("Button"),i=Object(y["resolveComponent"])("Tooltip"),u=Object(y["resolveComponent"])("IconAlignHorizontally"),d=Object(y["resolveComponent"])("IconAlignRight"),s=Object(y["resolveComponent"])("ButtonGroup"),f=Object(y["resolveComponent"])("IconAlignTop"),p=Object(y["resolveComponent"])("IconAlignVertically"),m=Object(y["resolveComponent"])("IconAlignBottom"),b=Object(y["resolveComponent"])("Divider"),v=Object(y["resolveComponent"])("IconGroup"),O=Object(y["resolveComponent"])("IconUngroup");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",fy,[Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[0]||(t[0]=function(t){return e.alignElement("left")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(a)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignElement("horizontal")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignElement("right")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignElement("top")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignElement("vertical")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(y["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElement("bottom")})},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),e.displayItemCount>2?(Object(y["openBlock"])(),Object(y["createBlock"])(s,{key:0,class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.uniformHorizontalDisplay()})},{default:Object(y["withCtx"])((function(){return[py]})),_:1}),Object(y["createVNode"])(r,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.uniformVerticalDisplay()})},{default:Object(y["withCtx"])((function(){return[my]})),_:1})]})),_:1})):Object(y["createCommentVNode"])("",!0),Object(y["createVNode"])(b),Object(y["createVNode"])(s,{class:"row"},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(r,{disabled:!e.canCombine,onClick:t[8]||(t[8]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(v,{style:{"margin-right":"3px"}}),by]})),_:1},8,["disabled"]),Object(y["createVNode"])(r,{disabled:e.canCombine,onClick:t[9]||(t[9]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Object(y["withCtx"])((function(){return[Object(y["createVNode"])(O,{style:{"margin-right":"3px"}}),vy]})),_:1},8,["disabled"])]})),_:1})])}var hy=function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=function(t){var l,a=De(o.value),i=a.minX,u=a.maxX,d=a.minY,s=a.maxY,f=JSON.parse(JSON.stringify(c.value.elements)),p={},m=Object(L["a"])(o.value);try{var b=function(){var e=l.value;if(e.groupId&&!p[e.groupId]){var t=o.value.filter((function(t){return t.groupId===e.groupId}));p[e.groupId]=De(t)}};for(m.s();!(l=m.n()).done;)b()}catch(Bw){m.e(Bw)}finally{m.f()}if(t===k.LEFT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.minX-i;e.left=e.left-o}else if("rotate"in e&&e.rotate){var l=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),c=l.offsetX;e.left=i-c}else e.left=i}));else if(t===k.RIGHT)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.maxX-u;e.left=e.left-o}else{var l="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){var c=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetX;e.left=u-l+a}else e.left=u-l}}));else if(t===k.TOP)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.minY-d;e.top=e.top-o}else if("rotate"in e&&e.rotate){var l=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),c=l.offsetY;e.top=d-c}else e.top=d}));else if(t===k.BOTTOM)f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=t.maxY-s;e.top=e.top-o}else{var l="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){var c=Me({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate}),a=c.offsetY;e.top=s-l+a}else e.top=s-l}}));else if(t===k.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=(t.maxX+t.minX)/2,l=o-v;e.left=e.left-l}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-c/2}}))}else if(t===k.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(n.value.includes(e.id))if(e.groupId){var t=p[e.groupId],o=(t.maxY+t.minY)/2,l=o-O;e.top=e.top-l}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-c/2}}))}e.updateSlide({elements:f}),r()};return{alignActiveElement:i}},jy=(n("4e82"),function(){var e=$(),t=Object(g["c"])(ee()),n=t.activeElementIdList,o=t.activeElementList,l=Object(g["c"])(e),c=l.currentSlide,a=qe(),r=a.addHistorySnapshot,i=Object(y["computed"])((function(){var e,t=0,n=[],l=Object(L["a"])(o.value);try{for(l.s();!(e=l.n()).done;){var c=e.value;c.groupId?n.includes(c.groupId)||(n.push(c.groupId),t+=1):t+=1}}catch(Bw){l.e(Bw)}finally{l.f()}return t})),u=function(){var t,l=De(o.value),a=l.minX,i=l.maxX,u=JSON.parse(JSON.stringify(o.value)),d=JSON.parse(JSON.stringify(c.value.elements)),s=[],f=[],p=Object(L["a"])(u);try{var m=function(){var e=t.value;if(e.groupId){var n=f.find((function(t){return t.groupId===e.groupId}));n?f=f.map((function(t){return t.groupId===e.groupId?Object(B["a"])(Object(B["a"])({},t),{},{els:[].concat(Object(G["a"])(t.els),[e])}):t})):f.push({groupId:e.groupId,els:[e]})}else{var o=_e(e),l=o.minX,c=o.maxX;s.push({min:l,max:c,el:e})}};for(p.s();!(t=p.n()).done;)m()}catch(Bw){p.e(Bw)}finally{p.f()}var b,v=[],O=Object(L["a"])(f);try{for(O.s();!(b=O.n()).done;){var h=b.value,j=De(h.els),y=j.minX,g=j.maxX;v.push({min:y,max:g,els:h.els})}}catch(Bw){O.e(Bw)}finally{O.f()}var x=[].concat(s,v);x.sort((function(e,t){return e.min-t.min}));var C,k=0,w=Object(L["a"])(x);try{for(w.s();!(C=w.n()).done;){var E=C.value,N=E.max-E.min;k+=N}}catch(Bw){w.e(Bw)}finally{w.f()}var I=(i-a-k)/(x.length-1),V=[],S=x[0],T={min:S.min,max:S.max};if("el"in S)V.push({pos:S.min,el:S.el});else{var M,_=Object(L["a"])(S.els);try{for(_.s();!(M=_.n()).done;){var D=M.value,z=_e(D),A=z.minX;V.push({pos:A,el:D})}}catch(Bw){_.e(Bw)}finally{_.f()}}for(var F=1;F","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],By=Sy,Ly=Object(y["defineComponent"])({name:"symbol-panel",setup:function(){var e=Object(y["ref"])(By[0].key),t=Object(y["computed"])((function(){var t=By.find((function(t){return t.key===e.value}));return(null===t||void 0===t?void 0:t.children)||[]})),n=function(e){$l.emit(pl.RICH_TEXT_COMMAND,{command:"insert",value:e})};return{symbolPoolList:By,symbolPool:t,selectedSymbolKey:e,selectSymbol:n}}});n("56b6");const Ty=Ln()(Ly,[["render",Vy],["__scopeId","data-v-6b8c5938"]]);var My=Ty,_y=Object(y["defineComponent"])({name:"toolbar",setup:function(){var e=ee(),t=Object(g["c"])(e),n=t.activeElementIdList,o=t.handleElement,l=t.toolbarState,c=Object(y["computed"])((function(){var e;return"text"===(null===(e=o.value)||void 0===e?void 0:e.type)?[{label:"样式",value:pp.EL_STYLE},{label:"符号",value:pp.SYMBOL},{label:"位置",value:pp.EL_POSITION},{label:"动画",value:pp.EL_ANIMATION}]:[{label:"样式",value:pp.EL_STYLE},{label:"位置",value:pp.EL_POSITION},{label:"动画",value:pp.EL_ANIMATION}]})),a=[{label:"设计",value:pp.SLIDE_DESIGN},{label:"切换",value:pp.SLIDE_ANIMATION},{label:"动画",value:pp.EL_ANIMATION}],r=[{label:"位置",value:pp.MULTI_POSITION},{label:"样式",value:pp.EL_STYLE}],i=function(t){e.setToolbarState(t)},u=Object(y["computed"])((function(){return n.value.length?n.value.length>1?r:c.value:a}));Object(y["watch"])(u,(function(){var t=u.value.map((function(e){return e.value}));t.includes(l.value)||e.setToolbarState(t[0])}));var d=Object(y["computed"])((function(){var e,t=(e={},Object(ae["a"])(e,pp.EL_STYLE,ah),Object(ae["a"])(e,pp.EL_POSITION,Vh),Object(ae["a"])(e,pp.EL_ANIMATION,cj),Object(ae["a"])(e,pp.SLIDE_DESIGN,ny),Object(ae["a"])(e,pp.SLIDE_ANIMATION,sy),Object(ae["a"])(e,pp.MULTI_POSITION,xy),Object(ae["a"])(e,pp.SYMBOL,My),e);return t[l.value]||null}));return{toolbarState:l,currentTabs:u,setToolbarState:i,currentPanelComponent:d}}});n("6d15");const Dy=Ln()(_y,[["render",jp],["__scopeId","data-v-0df9576a"]]);var zy=Dy,Ay={class:"remark"},Fy=["value"];function Ry(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ay,[Object(y["createElementVNode"])("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=function(t){return e.resize(t)})},null,32),Object(y["createElementVNode"])("textarea",{value:e.remark,placeholder:"点击输入演讲者备注",onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,Fy)])}var Py=Object(y["defineComponent"])({name:"remark",emits:["update:height"],props:{height:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=$(),l=Object(g["c"])(o),c=l.currentSlide,a=Object(y["computed"])((function(){var e;return(null===(e=c.value)||void 0===e?void 0:e.remark)||""})),r=function(e){var t=e.target.value;o.updateSlide({remark:t})},i=function(t){var o=!0,l=t.pageY,c=e.height;document.onmousemove=function(e){if(o){var t=e.pageY,a=t-l,r=-a+c;r<40&&(r=40),r>120&&(r=120),n("update:height",r)}},document.onmouseup=function(){o=!1,document.onmousemove=null,document.onmouseup=null}};return{remark:a,handleInput:r,resize:i}}});n("c329");const Hy=Ln()(Py,[["render",Ry],["__scopeId","data-v-5a6e24c6"]]);var qy=Hy,Xy=Object(y["defineComponent"])({name:"editor",components:{EditorHeader:zn,Canvas:Ud,CanvasTool:Jf,Thumbnails:mp,Toolbar:zy,Remark:qy},setup:function(){var e=Object(y["ref"])(40);return it(),ut(),{remarkHeight:e}}});n("1fec");const Wy=Ln()(Xy,[["render",je],["__scopeId","data-v-55178b6a"]]);var Gy=Wy,Uy={class:"pptist-screen"},Yy={class:"tools"};function Zy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ScreenSlide"),r=Object(y["resolveComponent"])("SlideThumbnails"),i=Object(y["resolveComponent"])("WritingBoardTool"),u=Object(y["resolveComponent"])("IconLeftTwo"),d=Object(y["resolveComponent"])("IconRightTwo"),s=Object(y["resolveComponent"])("IconWrite"),f=Object(y["resolveDirective"])("contextmenu");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Uy,[Object(y["withDirectives"])(Object(y["createElementVNode"])("div",{class:"slide-list",onMousewheel:t[0]||(t[0]=function(t){return e.mousewheelListener(t)}),onTouchstart:t[1]||(t[1]=function(t){return e.touchStartListener(t)}),onTouchend:t[2]||(t[2]=function(t){return e.touchEndListener(t)})},[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["slide-item","turning-mode-".concat(t.turningMode||"slideY"),{current:n===e.slideIndex,before:ne.slideIndex,hide:(n===e.slideIndex-1||n===e.slideIndex+1)&&t.turningMode!==e.currentSlide.turningMode}]),key:t.id},[Math.abs(e.slideIndex-n)<2?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:"slide-content",style:Object(y["normalizeStyle"])({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[Object(y["createVNode"])(a,{slide:t,scale:e.scale,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId},null,8,["slide","scale","animationIndex","turnSlideToId"])],4)):Object(y["createCommentVNode"])("",!0)],2)})),128))],544),[[f,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[3]||(t[3]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(y["createCommentVNode"])("",!0),e.writingBoardToolVisible?(Object(y["openBlock"])(),Object(y["createBlock"])(i,{key:1,onClose:t[4]||(t[4]=function(t){return e.writingBoardToolVisible=!1})})):Object(y["createCommentVNode"])("",!0),Object(y["createElementVNode"])("div",Yy,[Object(y["createVNode"])(u,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[5]||(t[5]=function(t){return e.execPrev()})}),Object(y["createVNode"])(d,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=function(t){return e.execNext()})}),Object(y["createVNode"])(s,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[7]||(t[7]=function(t){return e.writingBoardToolVisible=!0})})]),e.showPageNumber?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:2,class:"page-number",onClick:t[8]||(t[8]=function(t){return e.slideThumbnailModelVisible=!0})},Object(y["toDisplayString"])(e.slideIndex+1)+" / "+Object(y["toDisplayString"])(e.slides.length),1)):Object(y["createCommentVNode"])("",!0)])}function Jy(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("ScreenElement");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-slide",style:Object(y["normalizeStyle"])({width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.viewportRatio+"px",transform:"scale(".concat(e.scale,")")})},[Object(y["createElementVNode"])("div",{class:"background",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.backgroundStyle))},null,4),(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slide.elements,(function(t,n){return Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId"])})),128))],4)}var Ky=["id","title"];function Qy(e,t,n,o,l,c){var a;return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["screen-element",{link:e.elementInfo.link}]),id:"screen-element-".concat(e.elementInfo.id),style:Object(y["normalizeStyle"])({zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName,visibility:e.needWaitAnimation?"hidden":"visible"}),title:(null===(a=e.elementInfo.link)||void 0===a?void 0:a.target)||"",onClick:t[0]||(t[0]=function(t){return e.openLink()})},[(Object(y["openBlock"])(),Object(y["createBlock"])(Object(y["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,Ky)}function $y(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("BaseChartElement");return Object(y["openBlock"])(),Object(y["createBlock"])(a,{class:"screen-element-chart",elementInfo:e.elementInfo,needScaleSize:!1},null,8,["elementInfo"])}var eg=Object(y["defineComponent"])({name:"screen-element-chart",components:{BaseChartElement:ad},props:{elementInfo:{type:Object,required:!0}}});const tg=Ln()(eg,[["render",$y]]);var ng=tg,og={class:"element-content"};function lg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("VideoPlayer");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-video",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",og,[e.inCurrentSlide?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:e.scale},null,8,["width","height","src","poster","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}var cg=Object(y["defineComponent"])({name:"screen-element-video",components:{VideoPlayer:ir},props:{elementInfo:{type:Object,required:!0}},setup:function(){var e=Object(g["c"])($()),t=e.currentSlide,n=Object(y["inject"])("slideScale")||Object(y["ref"])(1),o=Object(y["inject"])("slideId")||Object(y["ref"])(""),l=Object(y["computed"])((function(){return t.value.id===o.value}));return{scale:n,inCurrentSlide:l}}});n("7893");const ag=Ln()(cg,[["render",lg],["__scopeId","data-v-a45a17a4"]]);var rg=ag,ig={class:"element-content"};function ug(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconVolumeNotice"),r=Object(y["resolveComponent"])("AudioPlayer");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"screen-element-audio",style:Object(y["normalizeStyle"])({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[Object(y["createElementVNode"])("div",{class:"rotate-wrapper",style:Object(y["normalizeStyle"])({transform:"rotate(".concat(e.elementInfo.rotate,"deg)")})},[Object(y["createElementVNode"])("div",ig,[Object(y["createVNode"])(a,{class:"audio-icon",style:Object(y["normalizeStyle"])({fontSize:e.audioIconSize,color:e.elementInfo.color}),onClick:t[0]||(t[0]=function(t){return e.toggle()})},null,8,["style"]),e.inCurrentSlide?(Object(y["openBlock"])(),Object(y["createBlock"])(r,{key:0,class:"audio-player",ref:"audioPlayerRef",style:Object(y["normalizeStyle"])(Object(B["a"])({},e.audioPlayerPosition)),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:e.scale},null,8,["style","src","loop","autoplay","scale"])):Object(y["createCommentVNode"])("",!0)])],4)],4)}var dg=Object(y["defineComponent"])({name:"screen-element-audio",components:{AudioPlayer:_r},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=t.currentSlide,l=Object(y["inject"])("slideScale")||Object(y["ref"])(1),c=Object(y["inject"])("slideId")||Object(y["ref"])(""),a=Object(y["computed"])((function(){return o.value.id===c.value})),r=Object(y["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)+"px"})),i=Object(y["computed"])((function(){var t=Ge,o=Ge*n.value,c=280/l.value,a=50/l.value,r=e.elementInfo.width,i=e.elementInfo.height,u=e.elementInfo.left,d=e.elementInfo.top,s=0,f=i;return u+c>=t&&(s=r-c),d+i+a>=o&&(f=-a),{left:s+"px",top:f+"px"}})),u=Object(y["ref"])(),d=function(){u.value&&u.value.toggle()};return{scale:l,inCurrentSlide:a,audioIconSize:r,audioPlayerPosition:i,audioPlayerRef:u,toggle:d}}});n("eed2");const sg=Ln()(dg,[["render",ug],["__scopeId","data-v-b08df80e"]]);var fg=sg,pg=Object(y["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,default:-1},turnSlideToId:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t,n=(t={},Object(ae["a"])(t,oo.IMAGE,Du),Object(ae["a"])(t,oo.TEXT,Pu),Object(ae["a"])(t,oo.SHAPE,Ju),Object(ae["a"])(t,oo.LINE,nd),Object(ae["a"])(t,oo.CHART,ng),Object(ae["a"])(t,oo.TABLE,hd),Object(ae["a"])(t,oo.LATEX,Ed),Object(ae["a"])(t,oo.VIDEO,rg),Object(ae["a"])(t,oo.AUDIO,fg),t);return n[e.elementInfo.type]||null})),n=Object(g["c"])($()),o=n.currentSlide,l=n.theme,c=Object(y["computed"])((function(){var t=o.value.animations||[],n=t.findIndex((function(t){return t.elId===e.elementInfo.id}));return-1!==n&&n>=e.animationIndex})),a=function(){var t=e.elementInfo.link;t&&("web"===t.type?window.open(t.target):"slide"===t.type&&e.turnSlideToId(t.target))};return{currentElementComponent:t,needWaitAnimation:c,theme:l,openLink:a}}});n("6042");const mg=Ln()(pg,[["render",Qy],["__scopeId","data-v-3b227002"]]);var bg=mg,vg=Object(y["defineComponent"])({name:"screen-slide",components:{ScreenElement:bg},props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,default:-1},turnSlideToId:{type:Function,required:!0}},setup:function(e){var t=Object(g["c"])($()),n=t.viewportRatio,o=Object(y["computed"])((function(){return e.slide.background})),l=$r(o),c=l.backgroundStyle,a=Object(y["computed"])((function(){return e.slide.id}));return Object(y["provide"])("slideId",a),{backgroundStyle:c,VIEWPORT_SIZE:Ge,viewportRatio:n}}});n("d530");const Og=Ln()(vg,[["render",Jy],["__scopeId","data-v-7827b40a"]]);var hg=Og,jg={class:"slide-thumbnails"},yg={class:"return-button"},gg={class:"slide-thumbnails-content"},xg=["onClick"];function Cg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("IconArrowCircleLeft"),r=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",jg,[Object(y["createElementVNode"])("div",yg,[Object(y["createVNode"])(a,{class:"icon",onClick:t[0]||(t[0]=function(t){return e.close()})})]),Object(y["createElementVNode"])("div",gg,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:Object(y["normalizeClass"])(["thumbnail",{active:n===e.slideIndex}]),key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(y["createVNode"])(r,{slide:t,size:150,visible:n=o?a:c-i/o*c,-1===r?n:1*n/3+2*r/3},v=function(t,n){var o=(new Date).getTime();if("pen"===e.model){var c=m(t,n),i=o-a,u=b(c,i);f(t,n,u),r=u}else p(t,n);l={x:t,y:n},a=(new Date).getTime()},O=function(e){var t=e instanceof MouseEvent?e.offsetX:e.changedTouches[0].pageX,n=e instanceof MouseEvent?e.offsetY:e.changedTouches[0].pageY;c=!0,l={x:t,y:n},a=(new Date).getTime(),e instanceof TouchEvent&&(u(t,n),d.value=!0)},h=function(e){var t=e instanceof MouseEvent?e.offsetX:e.changedTouches[0].pageX,n=e instanceof MouseEvent?e.offsetY:e.changedTouches[0].pageY;u(t,n),c&&v(t,n)},j=function(){c&&(c=!1)},g=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)};return{mouse:i,mouseInCanvas:d,penSize:_g,rubberSize:Dg,writingBoardRef:n,canvasRef:o,handleMousedown:O,handleMousemove:h,handleMouseup:j,clearCanvas:g}}});n("097f");const Ag=Ln()(zg,[["render",Mg],["__scopeId","data-v-7ff9fa00"]]);var Fg=Ag,Rg=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],Pg=Object(y["defineComponent"])({name:"writing-board-tool",emits:["close"],components:{WritingBoard:Fg},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(),l=Object(y["ref"])("#e2534d"),c=Object(y["ref"])("pen"),a=Object(y["ref"])(!1),r=function(){c.value="pen"},i=function(){c.value="eraser"},u=function(){o.value.clearCanvas()},d=function(e){"pen"!==c.value&&(c.value="pen"),l.value=e},s=function(){n("close")};return{writingBoardRef:o,writingBoardColors:Rg,writingBoardColor:l,writingBoardModel:c,blackboard:a,changePen:r,changeEraser:i,clearCanvas:u,changeColor:d,closeWritingBoard:s}}});n("4c08");const Hg=Ln()(Pg,[["render",Bg],["__scopeId","data-v-7a2e5324"]]);var qg=Hg,Xg=Object(y["defineComponent"])({name:"screen",components:{ScreenSlide:hg,SlideThumbnails:Eg,WritingBoardTool:qg},setup:function(){var e=$(),t=Object(g["c"])(e),n=t.slides,o=t.slideIndex,l=t.currentSlide,c=t.viewportRatio,a=Object(y["ref"])(0),r=Object(y["ref"])(0),i=Object(y["computed"])((function(){return a.value/Ge})),u=Object(y["ref"])(!1),d=Object(y["ref"])(!1),s=Object(y["ref"])(!1),f=function(){var e,t,n=document.body.clientWidth,o=document.body.clientHeight;o/n===c.value?(e=n,t=o):o/n>c.value?(e=n,t=n*c.value):(e=o/c.value,t=o),a.value=e,r.value=t},p=at(),m=p.exitScreening,b=function(){f(),ct()||m()};Object(y["onMounted"])((function(){f(),window.addEventListener("resize",b)})),Object(y["onUnmounted"])((function(){window.removeEventListener("resize",b)}));var v=Object(y["computed"])((function(){return l.value.animations||[]})),O=Object(y["ref"])(0),h=function(){var e="animate__",t=v.value[O.value];O.value+=1;var n=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(n){var o="".concat(e).concat(t.type);document.documentElement.style.setProperty("--animate-duration","".concat(t.duration,"ms")),n.classList.add("".concat(e,"animated"),o);var l=function(){document.documentElement.style.removeProperty("--animate-duration"),n.classList.remove("".concat(e,"animated"),o)};n.addEventListener("animationend",l,{once:!0})}},j=Object(y["ref"])(0),x=function(){j.value&&(clearInterval(j.value),j.value=0)};Object(y["onUnmounted"])(x);var C=Object(Z["throttle"])((function(e){ge["a"].success(e)}),1e3,{leading:!0,trailing:!1}),k=function(){if(v.value.length&&O.value>0)O.value-=1;else if(o.value>0){e.updateSlideIndex(o.value-1);var t=v.value?v.value.length:0;O.value=t}else C("已经是第一页了")},w=function(){v.value.length&&O.value0&&w()}),500,{leading:!0,trailing:!1}),V=Object(y["ref"])(null),S=function(e){V.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},B=function(e){if(V.value){var t=Math.abs(V.value.x-e.changedTouches[0].pageX),n=e.changedTouches[0].pageY-V.value.y;Math.abs(n)>t&&Math.abs(n)>50&&(V.value=null,n>0?k():w())}},L=function(e){var t=e.key.toUpperCase();t===I.UP||t===I.LEFT?k():t!==I.DOWN&&t!==I.RIGHT&&t!==I.SPACE&&t!==I.ENTER||w()};Object(y["onMounted"])((function(){document.addEventListener("keydown",L)})),Object(y["onUnmounted"])((function(){document.removeEventListener("keydown",L)}));var T=function(){e.updateSlideIndex(o.value-1),O.value=0},M=function(){e.updateSlideIndex(o.value+1),O.value=0},_=function(t){d.value=!1,e.updateSlideIndex(t),O.value=0},D=function(t){var o=n.value.findIndex((function(e){return e.id===t}));-1!==o&&(e.updateSlideIndex(o),O.value=0)},z=function(){return[{text:"上一页",subText:"↑ ←",disable:o.value<=0,handler:function(){return T()}},{text:"下一页",subText:"↓ →",disable:o.value>=n.value.length-1,handler:function(){return M()}},{text:"第一页",disable:0===o.value,handler:function(){return _(0)}},{text:"最后一页",disable:o.value===n.value.length-1,handler:function(){return _(n.value.length-1)}},{divider:!0},{text:"显示页码",subText:u.value?"√":"",handler:function(){return u.value=!u.value}},{text:"查看所有幻灯片",handler:function(){return d.value=!0}},{text:"画笔",handler:function(){return s.value=!0}},{divider:!0},{text:j.value?"取消自动放映":"自动放映",handler:j.value?x:E},{text:"结束放映",subText:"ESC",handler:m}]};return Object(y["provide"])("slideScale",i),{slides:n,slideIndex:o,currentSlide:l,slideWidth:a,slideHeight:r,scale:i,mousewheelListener:N,touchStartListener:S,touchEndListener:B,animationIndex:O,contextmenus:z,execPrev:k,execNext:w,slideThumbnailModelVisible:d,turnSlideToIndex:_,turnSlideToId:D,writingBoardToolVisible:s,showPageNumber:u}}});n("ad18");const Wg=Ln()(Xg,[["render",Zy],["__scopeId","data-v-1d67bb30"]]);var Gg=Wg,Ug={class:"mobile",ref:"mobileRef"},Yg={class:"thumbnail-list"};function Zg(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Alert"),r=Object(y["resolveComponent"])("ThumbnailSlide");return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ug,[Object(y["createVNode"])(a,{class:"tip",message:"注意",description:"移动设备下仅支持预览,请在PC上进行编辑",type:"warning",closable:"","show-icon":""}),Object(y["createElementVNode"])("div",Yg,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.slides,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"thumbnail-item",key:t.id},[Object(y["createVNode"])(r,{slide:t,size:e.slideWidth,visible:nl?1:Math.round(100*r/l)/100,o.value.a!==t&&n("colorChange",{r:o.value.r,g:o.value.g,b:o.value.b,a:t})}},r=function e(){window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",e)},i=function(e){a(e),window.addEventListener("mousemove",a),window.addEventListener("mouseup",r)};return Object(y["onUnmounted"])(r),{alphaRef:c,gradientColor:l,handleMouseDown:i,color:o}}});n("f418");const wk=Ln()(kk,[["render",vk],["__scopeId","data-v-6f2cb744"]]);var Ek=wk,Nk=function(e){return Object(y["pushScopeId"])("data-v-1766620e"),e=e(),Object(y["popScopeId"])(),e},Ik={class:"hue"},Vk=Nk((function(){return Object(y["createElementVNode"])("div",{class:"hue-picker"},null,-1)})),Sk=[Vk];function Bk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Ik,[Object(y["createElementVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Object(y["createElementVNode"])("div",{class:"hue-pointer",style:Object(y["normalizeStyle"])({left:e.pointerLeft})},Sk,4)],544)])}var Lk=Object(y["defineComponent"])({name:"hue",emits:["colorChange"],props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["ref"])(0),l=Object(y["ref"])(""),c=Object(y["computed"])((function(){var t=Y()(e.value).toHsl();return-1!==e.hue&&(t.h=e.hue),t})),a=Object(y["computed"])((function(){return 0===c.value.h&&"right"===l.value?"100%":100*c.value.h/360+"%"}));Object(y["watch"])((function(){return e.value}),(function(){var t=Y()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(l.value="right"),0!==n&&n-o.value<0&&(l.value="left"),o.value=n}));var r=Object(y["ref"])(),i=function(t){if(t.preventDefault(),r.value){var o,l,a=r.value.clientWidth,i=r.value.getBoundingClientRect().left+window.pageXOffset,u=t.pageX-i;u<0?o=0:u>a?o=360:(l=100*u/a,o=360*l/100),-1!==e.hue&&c.value.h===o||n("colorChange",{h:o,l:c.value.l,s:c.value.s,a:c.value.a})}},u=function e(){window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)},d=function(e){i(e),window.addEventListener("mousemove",i),window.addEventListener("mouseup",u)};return Object(y["onUnmounted"])(u),{hueRef:r,handleMouseDown:d,pointerLeft:a}}});n("468f");const Tk=Ln()(Lk,[["render",Bk],["__scopeId","data-v-1766620e"]]);var Mk=Tk,_k=function(e){return Object(y["pushScopeId"])("data-v-8982eb4a"),e=e(),Object(y["popScopeId"])(),e},Dk=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-white"},null,-1)})),zk=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-black"},null,-1)})),Ak=_k((function(){return Object(y["createElementVNode"])("div",{class:"saturation-circle"},null,-1)})),Fk=[Ak];function Rk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{class:"saturation",ref:"saturationRef",style:Object(y["normalizeStyle"])({background:e.bgColor}),onMousedown:t[0]||(t[0]=function(t){return e.handleMouseDown(t)})},[Dk,zk,Object(y["createElementVNode"])("div",{class:"saturation-pointer",style:Object(y["normalizeStyle"])({top:e.pointerTop,left:e.pointerLeft})},Fk,4)],36)}var Pk=Object(y["defineComponent"])({name:"saturation",emits:["colorChange"],props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["computed"])((function(){var t=Y()(e.value).toHsv();return-1!==e.hue&&(t.h=e.hue),t})),l=Object(y["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),c=Object(y["computed"])((function(){return-100*o.value.v+1+100+"%"})),a=Object(y["computed"])((function(){return 100*o.value.s+"%"})),r=Object(Z["throttle"])((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(y["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,l=i.value.getBoundingClientRect().left+window.pageXOffset,c=i.value.getBoundingClientRect().top+window.pageYOffset,a=Object(Z["clamp"])(e.pageX-l,0,t),u=Object(Z["clamp"])(e.pageY-c,0,n),d=a/t,s=Object(Z["clamp"])(-u/n+1,0,1);r({h:o.value.h,s:d,v:s,a:o.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(y["onUnmounted"])(d),{saturationRef:i,bgColor:l,handleMouseDown:s,pointerTop:c,pointerLeft:a}}});n("a46e");const Hk=Ln()(Pk,[["render",Rk],["__scopeId","data-v-8982eb4a"]]);var qk=Hk,Xk={class:"editable-input"},Wk=["value"];function Gk(e,t,n,o,l,c){return Object(y["openBlock"])(),Object(y["createElementBlock"])("div",Xk,[Object(y["createElementVNode"])("input",{class:"input-content",value:e.val,onInput:t[0]||(t[0]=function(t){return e.handleInput(t)})},null,40,Wk)])}var Uk=Object(y["defineComponent"])({name:"editable-input",emits:["colorChange"],props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(y["computed"])((function(){var t="";return t=e.value.a<1?Y()(e.value).toHex8String().toUpperCase():Y()(e.value).toHexString().toUpperCase(),t.replace("#","")})),l=function(e){var t=e.target.value;t.length>=6&&n("colorChange",Y()(t).toRgb())};return{val:o,handleInput:l}}});n("1a34");const Yk=Ln()(Uk,[["render",Gk],["__scopeId","data-v-00ea8dfc"]]);var Zk=Yk,Jk="RECENT_COLORS",Kk=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],Qk=function(e,t,n){for(var o=Y()(e).toRgb(),l=Y()(t).toRgb(),c=(l.r-o.r)/n,a=(l.g-o.g)/n,r=(l.b-o.b)/n,i=[],u=0;ut&&(l.value=l.value.slice(0,t))}}),300,{trailing:!0});Object(y["onMounted"])((function(){var e=localStorage.getItem(Jk);e&&(l.value=JSON.parse(e))})),Object(y["watch"])(l,(function(){var e=JSON.stringify(l.value);localStorage.setItem(Jk,e)}));var f=function(e){"h"in e?(o.value=e.h,c.value=Y()(e).toRgb()):(o.value=Y()(e).toHsl().h,c.value=e),s()};return{themeColors:a,standardColors:r,presetColors:i,color:c,hue:o,currentColor:u,changeColor:f,selectPresetColor:d,recentColors:l}}});n("6c3c");const tw=Ln()(ew,[["render",dk],["__scopeId","data-v-210672ee"]]);var nw=tw,ow={key:0,class:"fullscreen-spin"};function lw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("Spin");return n.loading?(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",ow,[Object(y["createVNode"])(a,{tip:n.tip,size:"large"},null,8,["tip"])])):Object(y["createCommentVNode"])("",!0)}var cw={name:"fullscreen-spin",props:{loading:{type:Boolean,default:!1},tip:{type:String,default:""}}};n("3f8e");const aw=Ln()(cw,[["render",lw],["__scopeId","data-v-6275c730"]]);var rw=aw,iw={install:function(e){e.component("FileInput",zC),e.component("CheckboxButton",PC),e.component("CheckboxButtonGroup",GC),e.component("ColorPicker",nw),e.component("FullscreenSpin",rw)}};function uw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("MenuContent");return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],null,[Object(y["createElementVNode"])("div",{class:"mask",onContextmenu:t[0]||(t[0]=Object(y["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[1]||(t[1]=function(t){return e.removeContextmenu()})},null,32),Object(y["createElementVNode"])("div",{class:"contextmenu",style:Object(y["normalizeStyle"])({left:e.style.left+"px",top:e.style.top+"px"}),onContextmenu:t[2]||(t[2]=Object(y["withModifiers"])((function(){}),["prevent"]))},[Object(y["createVNode"])(a,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var dw={class:"menu-content"},sw=["onClick"],fw={class:"text"},pw={key:0,class:"sub-text"};function mw(e,t,n,o,l,c){var a=Object(y["resolveComponent"])("menu-content",!0);return Object(y["openBlock"])(),Object(y["createElementBlock"])("ul",dw,[(Object(y["openBlock"])(!0),Object(y["createElementBlock"])(y["Fragment"],null,Object(y["renderList"])(e.menus,(function(t,n){return Object(y["openBlock"])(),Object(y["createElementBlock"])(y["Fragment"],{key:t.text||n},[t.hide?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("li",{key:0,class:Object(y["normalizeClass"])(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:Object(y["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(y["createCommentVNode"])("",!0):(Object(y["openBlock"])(),Object(y["createElementBlock"])("div",{key:0,class:Object(y["normalizeClass"])(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[Object(y["createElementVNode"])("span",fw,Object(y["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(y["openBlock"])(),Object(y["createElementBlock"])("span",pw,Object(y["toDisplayString"])(t.subText),1)):Object(y["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(y["openBlock"])(),Object(y["createBlock"])(a,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(y["createCommentVNode"])("",!0)],2))],10,sw))],64)})),128))])}var bw=Object(y["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("0c74");const vw=Ln()(bw,[["render",mw],["__scopeId","data-v-eb1555e8"]]);var Ow=vw,hw=Object(y["defineComponent"])({name:"contextmenu",components:{MenuContent:Ow},props:{axis:{type:Object,required:!0},el:{type:Object,required:!0},menus:{type:Array,required:!0},removeContextmenu:{type:Function,required:!0}},setup:function(e){var t=Object(y["computed"])((function(){var t=170,n=30,o=11,l=5,c=e.axis,a=c.x,r=c.y,i=e.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=e.menus.filter((function(e){return e.divider})).length,d=t,s=i*n+u*o+2*l,f=document.body.clientWidth,p=document.body.clientHeight;return{left:f<=a+d?a-d:a,top:p<=r+s?r-s:r}})),n=function(t){t.disable||t.children&&!t.handler||(t.handler&&t.handler(e.el),e.removeContextmenu())};return{style:t,handleClickMenuItem:n}}});n("b837");const jw=Ln()(hw,[["render",uw]]);var yw=jw,gw="CTX_CONTEXTMENU_HANDLER",xw=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var l=null,c=function t(){l&&(document.body.removeChild(l),l=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",t),window.removeEventListener("resize",t)},a={axis:{x:t.x,y:t.y},el:e,menus:o,removeContextmenu:c};l=document.createElement("div");var r=Object(y["createVNode"])(yw,a,null);Object(y["render"])(r,l),document.body.appendChild(l),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",c),window.addEventListener("resize",c)}},Cw={mounted:function(e,t){e[gw]=function(n){return xw(e,n,t)},e.addEventListener("contextmenu",e[gw])},unmounted:function(e){e&&e[gw]&&(e.removeEventListener("contextmenu",e[gw]),delete e[gw])}},kw=Cw,ww="CTX_CLICK_OUTSIDE_HANDLER",Ew=function(e,t,n){var o=n.value,l=t.composedPath(),c=l?l.indexOf(e)<0:!e.contains(t.target);c&&o(t)},Nw={mounted:function(e,t){e[ww]=function(n){return Ew(e,n,t)},setTimeout((function(){document.addEventListener("click",e[ww])}),0)},unmounted:function(e){e[ww]&&(document.removeEventListener("click",e[ww]),delete e[ww])}},Iw=Nw,Vw={install:function(e){e.directive("contextmenu",kw),e.directive("click-outside",Iw)}},Sw=Object(y["createApp"])(tx);Sw.component("InputNumber",j["a"]),Sw.component("Divider",h["a"]),Sw.component("Button",O["a"]),Sw.component("ButtonGroup",O["a"].Group),Sw.component("Tooltip",v["a"]),Sw.component("Popover",b["a"]),Sw.component("Slider",m["a"]),Sw.component("Select",p["a"]),Sw.component("SelectOption",p["a"].Option),Sw.component("SelectOptGroup",p["a"].OptGroup),Sw.component("Switch",f["a"]),Sw.component("Radio",s["a"]),Sw.component("RadioGroup",s["a"].Group),Sw.component("RadioButton",s["a"].Button),Sw.component("Input",d["a"]),Sw.component("InputGroup",d["a"].Group),Sw.component("TextArea",d["a"].TextArea),Sw.component("Modal",u["a"]),Sw.component("Dropdown",i["a"]),Sw.component("Menu",r["a"]),Sw.component("MenuItem",r["a"].Item),Sw.component("Checkbox",a["a"]),Sw.component("Drawer",c["a"]),Sw.component("Spin",l["a"]),Sw.component("Alert",o["a"]),Sw.use(LC),Sw.use(iw),Sw.use(Vw),Sw.use(Object(g["a"])()),Sw.mount("#app")},cdff:function(e,t,n){},d0e2:function(e,t,n){},d129:function(e,t,n){"use strict";n("1b9e")},d2f4:function(e,t,n){},d4cb:function(e,t,n){},d530:function(e,t,n){"use strict";n("c242")},d572:function(e,t,n){},d65a:function(e,t,n){},d6d3:function(e,t,n){},d908:function(e,t,n){"use strict";n("2ab1")},da17:function(e,t,n){"use strict";n("e44d")},dab5:function(e,t,n){"use strict";n("6702")},dbe5:function(e,t,n){},dc2f:function(e,t,n){},dc5e:function(e,t,n){},ddc3:function(e,t,n){},de30:function(e,t,n){"use strict";n("ddc3")},e09c:function(e,t,n){},e1f8:function(e,t,n){},e3df:function(e,t,n){"use strict";n("f0f3")},e44d:function(e,t,n){},e4ed:function(e,t,n){"use strict";n("1160")},e4fe:function(e,t,n){},e5a8:function(e,t,n){"use strict";n("6532")},e5b9:function(e,t,n){},e6a5:function(e,t,n){},e7b8:function(e,t,n){"use strict";n("46ba")},e9e0:function(e,t,n){},eacc:function(e,t,n){"use strict";n("50c5")},eaff:function(e,t,n){},eb2c:function(e,t,n){"use strict";n("fa63")},ec3f:function(e,t,n){},ec9c:function(e,t,n){"use strict";n("b994")},eed2:function(e,t,n){"use strict";n("4c0a")},efbe:function(e,t,n){"use strict";n("4fda")},f076:function(e,t,n){"use strict";n("e09c")},f0f3:function(e,t,n){},f10d:function(e,t,n){"use strict";n("4a74")},f33f:function(e,t,n){"use strict";n("a9ab")},f349:function(e,t,n){"use strict";n("013f")},f418:function(e,t,n){"use strict";n("0f92")},f9a0:function(e,t,n){"use strict";n("803b")},fa63:function(e,t,n){},fb1d:function(e,t,n){"use strict";n("d572")},ff8b:function(e,t,n){},ffb8:function(e,t,n){"use strict";n("3831")}}); -//# sourceMappingURL=app.8d780616.js.map \ No newline at end of file diff --git a/js/app.8d780616.js.map b/js/app.8d780616.js.map deleted file mode 100644 index f093d01f..00000000 --- a/js/app.8d780616.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?d655","webpack:///./src/views/Editor/CanvasTool/index.vue?3499","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?cee8","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?a976","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?06f4","webpack:///./src/components/WritingBoard.vue?2e18","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ced2","webpack:///./src/components/Contextmenu/MenuContent.vue?f410","webpack:///./src/views/components/element/LatexElement/index.vue?1604","webpack:///./src/views/components/element/TableElement/index.vue?47e0","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?43a5","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?56b7","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ac30","webpack:///./src/components/ColorPicker/EditableInput.vue?0adf","webpack:///./src/views/Editor/index.vue?b100","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?d975","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?563d","webpack:///./src/views/Editor/Thumbnails/index.vue?4a6f","webpack:///./src/views/Editor/Canvas/index.vue?8810","webpack:///./src/views/components/element/AudioElement/index.vue?d3bb","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?3a9f","webpack:///./src/views/components/element/ImageElement/index.vue?388a","webpack:///./src/views/Editor/EditorHeader/index.vue?081c","webpack:///./src/views/components/element/ChartElement/Chart.vue?5228","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?2e8f","webpack:///./src/views/components/element/LineElement/index.vue?bff4","webpack:///./src/components/FullscreenSpin.vue?94b8","webpack:///./src/views/components/ThumbnailSlide/index.vue?5486","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?ea96","webpack:///./src/components/ColorPicker/Hue.vue?3cb1","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?2125","webpack:///./src/views/Screen/WritingBoardTool.vue?e13d","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?54ca","webpack:///./src/views/components/element/TextElement/index.vue?097b","webpack:///./src/views/components/element/ElementOutline.vue?53a5","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?2e80","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?0f15","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?ee88","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?99ff","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?d62e","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?a7f1","webpack:///./src/views/Screen/ScreenElement.vue?edad","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?2f25","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?3b58","webpack:///./src/views/Editor/Canvas/Operate/index.vue?a512","webpack:///./src/components/CheckboxButtonGroup.vue?2eb8","webpack:///./src/components/ColorPicker/index.vue?fb23","webpack:///./src/views/Editor/Toolbar/index.vue?8498","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?24bf","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?cd35","webpack:///./src/components/CheckboxButton.vue?4d8d","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?bbd4","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?e4fa","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?19e8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?177c","webpack:///./src/components/ColorPicker/Checkboard.vue?dbe5","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?c189","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?b2e7","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?e809","webpack:///./src/views/components/element/TableElement/StaticTable.vue?0130","webpack:///./src/views/components/element/ChartElement/Chart.vue?65b9","webpack:///./src/views/components/element/TableElement/EditableTable.vue?e1af","webpack:///./src/components/ColorPicker/Saturation.vue?6538","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?a02f","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?fdec","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?3ed9","webpack:///./src/views/Screen/index.vue?7152","webpack:///./src/views/components/element/ChartElement/index.vue?9df7","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?ba54","webpack:///./src/App.vue?2118","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?38fb","webpack:///./src/components/LaTeXEditor/index.vue?f977","webpack:///./src/components/Contextmenu/index.vue?694c","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?b95d","webpack:///./src/views/Editor/Remark/index.vue?3b8b","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?b489","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?18d8","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?3e23","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?60de","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?966c","webpack:///./src/views/Screen/SlideThumbnails.vue?eef4","webpack:///./src/App.vue?9e45","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/prosemirror/utils.ts","webpack:///./src/utils/font.ts","webpack:///./src/mocks/slides.ts","webpack:///./src/mocks/theme.ts","webpack:///./src/mocks/layout.ts","webpack:///./src/store/slides.ts","webpack:///./src/store/main.ts","webpack:///./src/utils/database.ts","webpack:///./src/store/snapshot.ts","webpack:///./src/store/keyboard.ts","webpack:///./src/store/screen.ts","webpack:///./src/utils/common.ts","webpack:///./src/views/Editor/index.vue?2c6d","webpack:///./src/utils/crypto.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/element.ts","webpack:///./src/utils/textParser.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/usePasteTextClipboardData.ts","webpack:///./src/hooks/useSlideHandler.ts","webpack:///./src/hooks/useLockElement.ts","webpack:///./src/hooks/useDeleteElement.ts","webpack:///./src/hooks/useCombineElement.ts","webpack:///./src/hooks/useCopyAndPasteElement.ts","webpack:///./src/hooks/useSelectAllElement.ts","webpack:///./src/hooks/useMoveElement.ts","webpack:///./src/hooks/useOrderElement.ts","webpack:///./src/utils/fullscreen.ts","webpack:///./src/hooks/useScreening.ts","webpack:///./src/hooks/useScaleCanvas.ts","webpack:///./src/hooks/useGlobalHotkey.ts","webpack:///./src/hooks/usePasteEvent.ts","webpack:///./src/views/Editor/EditorHeader/index.vue?207e","webpack:///./src/utils/htmlParser/tags.ts","webpack:///./src/utils/htmlParser/lexer.ts","webpack:///./src/utils/htmlParser/parser.ts","webpack:///./src/utils/htmlParser/format.ts","webpack:///./src/utils/htmlParser/index.ts","webpack:///./src/utils/svgPathParser.ts","webpack:///./src/utils/svg2Base64.ts","webpack:///./src/hooks/useExport.ts","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?b691","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/index.vue?f944","webpack:///./src/views/Editor/Canvas/index.vue?6132","webpack:///./src/utils/selection.ts","webpack:///./src/views/Editor/Canvas/hooks/useViewportSize.ts","webpack:///./src/views/Editor/Canvas/hooks/useMouseSelection.ts","webpack:///./src/views/Editor/Canvas/hooks/useDropImageOrText.ts","webpack:///./src/views/Editor/Canvas/hooks/useRotateElement.ts","webpack:///./src/configs/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useScaleElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useSelectElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragLineElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useInsertFromCreateSelection.ts","webpack:///./src/views/Editor/Canvas/EditableElement.vue?e3b3","webpack:///./src/types/slides.ts","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/views/components/element/ImageElement/index.vue?1ff8","webpack:///./src/views/components/element/hooks/useElementShadow.ts","webpack:///./src/configs/imageClip.ts","webpack:///./src/views/components/element/hooks/useElementFlip.ts","webpack:///./src/views/components/element/ImageElement/useClipImage.ts","webpack:///./src/views/components/element/ImageElement/useFilter.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?d64e","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?dedf","webpack:///./src/views/components/element/hooks/useElementOutline.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?6e01","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?9a24","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?f9e6","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?f963","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?819e","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?a843","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?a441","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?2c28","webpack:///./src/views/components/element/ImageElement/index.vue","webpack:///./src/views/components/element/ImageElement/index.vue?ff2b","webpack:///./src/views/components/element/TextElement/index.vue?7653","webpack:///./src/views/components/element/ElementOutline.vue?b944","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?e7ed","webpack:///./src/views/components/element/ProsemirrorEditor.vue?6651","webpack:///./src/utils/emitter.ts","webpack:///./src/utils/prosemirror/plugins/keymap.ts","webpack:///./src/utils/prosemirror/plugins/inputrules.ts","webpack:///./src/utils/prosemirror/plugins/index.ts","webpack:///./src/utils/prosemirror/schema/nodes.ts","webpack:///./src/utils/prosemirror/schema/marks.ts","webpack:///./src/utils/prosemirror/schema/index.ts","webpack:///./src/utils/prosemirror/index.ts","webpack:///./src/utils/prosemirror/commands/setTextAlign.ts","webpack:///./src/utils/prosemirror/commands/toggleList.ts","webpack:///./src/views/components/element/ProsemirrorEditor.vue","webpack:///./src/views/components/element/ProsemirrorEditor.vue?4854","webpack:///./src/views/components/element/TextElement/index.vue","webpack:///./src/views/components/element/TextElement/index.vue?6fb4","webpack:///./src/views/components/element/ShapeElement/index.vue?b1a4","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?49a1","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?def0","webpack:///./src/views/components/element/ShapeElement/index.vue","webpack:///./src/views/components/element/ShapeElement/index.vue?6caf","webpack:///./src/views/components/element/LineElement/index.vue?59e9","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?8de0","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?ee66","webpack:///./src/views/components/element/LineElement/index.vue","webpack:///./src/views/components/element/LineElement/index.vue?4793","webpack:///./src/views/components/element/ChartElement/index.vue?4de5","webpack:///./src/views/components/element/ChartElement/Chart.vue?03f6","webpack:///./src/views/components/element/ChartElement/Chart.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue?7db2","webpack:///./src/views/components/element/ChartElement/index.vue","webpack:///./src/views/components/element/ChartElement/index.vue?2bdf","webpack:///./src/views/components/element/TableElement/index.vue?9a52","webpack:///./src/views/components/element/TableElement/EditableTable.vue?0dcd","webpack:///./src/views/components/element/TableElement/utils.ts","webpack:///./src/views/components/element/TableElement/useHideCells.ts","webpack:///./src/views/components/element/TableElement/useSubThemeColor.ts","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?d975","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?abdd","webpack:///./src/views/components/element/TableElement/EditableTable.vue","webpack:///./src/views/components/element/TableElement/EditableTable.vue?adf9","webpack:///./src/views/components/element/TableElement/index.vue","webpack:///./src/views/components/element/TableElement/index.vue?a4cf","webpack:///./src/views/components/element/LatexElement/index.vue?6cc0","webpack:///./src/views/components/element/LatexElement/index.vue","webpack:///./src/views/components/element/LatexElement/index.vue?faec","webpack:///./src/views/components/element/VideoElement/index.vue?52dc","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?cfe6","webpack:///./src/views/components/element/VideoElement/VideoPlayer/useMSE.ts","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue","webpack:///./src/views/components/element/VideoElement/VideoPlayer/index.vue?a136","webpack:///./src/views/components/element/VideoElement/index.vue","webpack:///./src/views/components/element/VideoElement/index.vue?9c8b","webpack:///./src/views/components/element/AudioElement/index.vue?b2aa","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?ffda","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue","webpack:///./src/views/components/element/AudioElement/AudioPlayer.vue?7c58","webpack:///./src/views/components/element/AudioElement/index.vue","webpack:///./src/views/components/element/AudioElement/index.vue?0032","webpack:///./src/views/Editor/Canvas/EditableElement.vue","webpack:///./src/views/Editor/Canvas/EditableElement.vue?e703","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?6f24","webpack:///./src/views/Editor/Canvas/MouseSelection.vue","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?4329","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?825f","webpack:///./src/views/Editor/Canvas/GridLines.vue?480d","webpack:///./src/views/Editor/Canvas/GridLines.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue?863a","webpack:///./src/hooks/useSlideBackgroundStyle.ts","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?db9c","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?bc40","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?af47","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?2cad","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e33f","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?f010","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?9d52","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?cd27","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?9c98","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?640d","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?962f","webpack:///./src/views/Editor/Canvas/Operate/index.vue?0f6b","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?a10f","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?7bca","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?8b12","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?1576","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?059a","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?3000","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?efcf","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?ab3e","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?ae63","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?8922","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?7dc9","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?e0eb","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?4924","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?b957","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?6521","webpack:///./src/hooks/useLink.ts","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/LinkHandler.vue?53bc","webpack:///./src/views/Editor/Canvas/Operate/index.vue","webpack:///./src/views/Editor/Canvas/Operate/index.vue?ec8a","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?bc4f","webpack:///./src/views/components/ThumbnailSlide/index.vue?503d","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?5010","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?682c","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?dbd8","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?345f","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?f2a6","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?9d0d","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?5afd","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?89e3","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?d2cb","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?1976","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?928d","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?9d51","webpack:///./src/views/components/element/TableElement/StaticTable.vue?622f","webpack:///./src/views/components/element/TableElement/StaticTable.vue","webpack:///./src/views/components/element/TableElement/StaticTable.vue?ff6d","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?e6c9","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?184e","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue","webpack:///./src/views/components/element/LatexElement/BaseLatexElement.vue?45c1","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?f013","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue","webpack:///./src/views/components/element/VideoElement/BaseVideoElement.vue?c20a","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?237b","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3937","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?ddb6","webpack:///./src/views/components/ThumbnailSlide/index.vue","webpack:///./src/views/components/ThumbnailSlide/index.vue?2e09","webpack:///./src/views/Editor/Canvas/LinkDialog.vue","webpack:///./src/views/Editor/Canvas/LinkDialog.vue?19ad","webpack:///./src/views/Editor/Canvas/index.vue","webpack:///./src/views/Editor/Canvas/index.vue?5e25","webpack:///./src/views/Editor/CanvasTool/index.vue?ebd8","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?a5b8","webpack:///./src/configs/shapes.ts","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?258a","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?9608","webpack:///./src/configs/lines.ts","webpack:///./src/views/Editor/CanvasTool/LinePool.vue","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?5b7d","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?f15b","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?2e9d","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?f19b","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?ddc5","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?58fa","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue","webpack:///./src/views/Editor/CanvasTool/MediaInput.vue?23a0","webpack:///./src/components/LaTeXEditor/index.vue?593a","webpack:///./src/components/LaTeXEditor/hfmath.ts","webpack:///./src/configs/latex.ts","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?76d2","webpack:///./src/components/LaTeXEditor/FormulaContent.vue","webpack:///./src/components/LaTeXEditor/FormulaContent.vue?ecb1","webpack:///./src/components/LaTeXEditor/SymbolContent.vue?673d","webpack:///./src/components/LaTeXEditor/SymbolContent.vue","webpack:///./src/components/LaTeXEditor/SymbolContent.vue?9c88","webpack:///./src/components/LaTeXEditor/index.vue","webpack:///./src/components/LaTeXEditor/index.vue?e61f","webpack:///./src/views/Editor/CanvasTool/index.vue","webpack:///./src/views/Editor/CanvasTool/index.vue?e1a6","webpack:///./src/views/Editor/Thumbnails/index.vue?fde6","webpack:///./src/hooks/useLoadSlides.ts","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?e54e","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?cca8","webpack:///./src/views/Editor/Thumbnails/index.vue","webpack:///./src/views/Editor/Thumbnails/index.vue?97d5","webpack:///./src/types/toolbar.ts","webpack:///./src/views/Editor/Toolbar/index.vue?92c2","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?3646","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?2b09","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?5a1a","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?8eaf","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?3bc0","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?32c9","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?6f8d","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?78bd","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?53af","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?7b9e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?90a9","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?8a9b","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?ea9a","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?0828","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?a4b4","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFilter.vue?fefc","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?35b6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?cdd8","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?6e51","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?7782","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?ebc3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?433a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?7cbe","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?13cd","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?7d6e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?bca3","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?1838","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?cdab","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?73c6","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?c59d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?27ee","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?cc3e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?82fb","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?ba7d","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?1004","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9199","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?5759","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?9f55","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?562d","webpack:///./src/configs/theme.ts","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?8ed6","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?a53d","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?09d8","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?8004","webpack:///./src/hooks/useAlignActiveElement.ts","webpack:///./src/hooks/useUniformDisplayElement.ts","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?82ab","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?7eed","webpack:///./src/configs/symbol.ts","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue","webpack:///./src/views/Editor/Toolbar/SymbolPanel.vue?8779","webpack:///./src/views/Editor/Toolbar/index.vue","webpack:///./src/views/Editor/Toolbar/index.vue?3efa","webpack:///./src/views/Editor/Remark/index.vue?9bb3","webpack:///./src/views/Editor/Remark/index.vue","webpack:///./src/views/Editor/Remark/index.vue?4c66","webpack:///./src/views/Editor/index.vue","webpack:///./src/views/Editor/index.vue?fb1c","webpack:///./src/views/Screen/index.vue?290f","webpack:///./src/views/Screen/ScreenSlide.vue?0f03","webpack:///./src/views/Screen/ScreenElement.vue?ad3e","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?16d6","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?9bdc","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?77e4","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue","webpack:///./src/views/components/element/VideoElement/ScreenVideoElement.vue?1989","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?25bc","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?bb8a","webpack:///./src/views/Screen/ScreenElement.vue","webpack:///./src/views/Screen/ScreenElement.vue?448e","webpack:///./src/views/Screen/ScreenSlide.vue","webpack:///./src/views/Screen/ScreenSlide.vue?4983","webpack:///./src/views/Screen/SlideThumbnails.vue?b449","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?2aa3","webpack:///./src/views/Screen/WritingBoardTool.vue?6969","webpack:///./src/components/WritingBoard.vue?07ad","webpack:///./src/components/WritingBoard.vue","webpack:///./src/components/WritingBoard.vue?daf9","webpack:///./src/views/Screen/WritingBoardTool.vue","webpack:///./src/views/Screen/WritingBoardTool.vue?56cc","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/index.vue?d18a","webpack:///./src/views/Mobile.vue?a8ce","webpack:///./src/views/Mobile.vue","webpack:///./src/views/Mobile.vue?44c6","webpack:///./src/App.vue","webpack:///./src/App.vue?ae2f","webpack:///./src/plugins/icon.ts","webpack:///./src/components/FileInput.vue?2df9","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?ae58","webpack:///./src/components/CheckboxButton.vue?61b5","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?b241","webpack:///./src/components/CheckboxButtonGroup.vue?37b7","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?da6b","webpack:///./src/components/ColorPicker/index.vue?ac23","webpack:///./src/components/ColorPicker/Alpha.vue?6cbb","webpack:///./src/components/ColorPicker/Checkboard.vue?d198","webpack:///./src/components/ColorPicker/Checkboard.vue","webpack:///./src/components/ColorPicker/Checkboard.vue?fca6","webpack:///./src/components/ColorPicker/Alpha.vue","webpack:///./src/components/ColorPicker/Alpha.vue?f3a6","webpack:///./src/components/ColorPicker/Hue.vue?481f","webpack:///./src/components/ColorPicker/Hue.vue","webpack:///./src/components/ColorPicker/Hue.vue?01db","webpack:///./src/components/ColorPicker/Saturation.vue?1bc0","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?7588","webpack:///./src/components/ColorPicker/EditableInput.vue?bb22","webpack:///./src/components/ColorPicker/EditableInput.vue","webpack:///./src/components/ColorPicker/EditableInput.vue?e9b2","webpack:///./src/components/ColorPicker/index.vue","webpack:///./src/components/ColorPicker/index.vue?260d","webpack:///./src/components/FullscreenSpin.vue?a4d8","webpack:///./src/components/FullscreenSpin.vue","webpack:///./src/components/FullscreenSpin.vue?40fd","webpack:///./src/plugins/component.ts","webpack:///./src/components/Contextmenu/index.vue?a623","webpack:///./src/components/Contextmenu/MenuContent.vue?5a42","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?0215","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/index.vue?0141","webpack:///./src/plugins/directive/contextmenu.ts","webpack:///./src/plugins/directive/clickOutside.ts","webpack:///./src/plugins/directive/index.ts","webpack:///./src/main.ts","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?74eb","webpack:///./src/views/Screen/ScreenSlide.vue?34b9","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?0174","webpack:///./src/views/components/element/ProsemirrorEditor.vue?43ca","webpack:///./src/views/components/element/AudioElement/BaseAudioElement.vue?3687","webpack:///./src/views/components/element/VideoElement/index.vue?c05f","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?32d2","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?177e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?1f92","webpack:///./src/views/Editor/Thumbnails/LayoutPool.vue?17f5","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?e445","webpack:///./src/views/Editor/Toolbar/SlideDesignPanel.vue?d1ea","webpack:///./src/views/Mobile.vue?4d0f","webpack:///./src/views/components/element/AudioElement/ScreenAudioElement.vue?c4c4","webpack:///./src/views/components/element/ShapeElement/index.vue?e85c","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?b877","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?c3d6","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?4190","webpack:///./src/components/FileInput.vue?3731","webpack:///./src/components/ColorPicker/Alpha.vue?9bb4","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?16b4","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?d038","webpack:///./src/views/Editor/Canvas/GridLines.vue?f4b3"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_ctx","_cache","$props","$setup","$data","$options","_component_Screen","_component_Editor","_component_Mobile","screening","isPC","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","SYS_FONTS","label","WEB_FONTS","equalNodeType","nodeType","node","Array","isArray","indexOf","type","findParentNodeClosestToPos","$pos","predicate","depth","pos","before","start","findParentNode","_ref","$from","findParentNodeOfType","selection","isActiveOfParentNodeType","state","schema","nodes","getMarkAttrs","view","doc","from","nodeAt","lastChild","marks","markType","attr","mark","attrs","getAttrValueInSelection","to","keepChecking","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","defaultRichTextAttrs","isSupportFont","fontName","arial","toLowerCase","size","width","height","str","canvas","document","createElement","ctx","getContext","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","filter","item","join","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","themeColor","fontColor","backgroundColor","wordSpace","outline","text","useSlidesStore","theme","slides","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","layouts","subColor","isDark","layoutsString","JSON","stringify","replaceAll","parse","actions","setTheme","themeProps","this","setViewportRatio","setSlides","addSlide","slide","addIndex","updateSlide","props","deleteSlide","slideId","slidesId","deleteSlidesIndex","index","findIndex","newIndex","Math","min","maxIndex","updateSlideIndex","addElement","element","currentSlideEls","newEls","updateElement","elIdList","removeElementProps","propName","propsNames","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","canvasPercentage","canvasScale","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","creatingElement","availableFonts","toolbarState","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","editingShapeElementId","selectedSlidesIndex","activeElementList","slidesStore","handleElement","find","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setCanvasPercentage","percentage","setCanvasScale","scale","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLinesState","show","setCreatingElement","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","setEditingShapeElementId","ellId","updateSelectedSlidesIndex","version","stores","snapshots","table","snapshotDB","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","orderBy","toArray","lastSnapshot","clear","newFirstSnapshot","add","addSnapshot","keys","allKeys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","useScreenStore","setScreening","createRandomCode","len","charset","maxLen","ret","randomIndex","floor","random","digit","navigator","userAgent","match","_hoisted_1","class","_hoisted_2","_hoisted_3","_component_EditorHeader","_component_Thumbnails","_component_CanvasTool","_component_Canvas","_component_Remark","_component_Toolbar","remarkHeight","$event","HOTKEY_DOC","children","CRYPTO_KEY","msg","AES","encrypt","toString","ciphertext","bytes","decrypt","enc","Utf8","Promise","resolve","reject","fakeElement","clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","clipboardData","pasteExcelClipboardString","lines","split","pop","colCount","getRectRotatedRange","radius","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","max","yRange","getRectRotatedOffset","originXRange","originYRange","rotatedXRange","rotatedYRange","offsetX","offsetY","getElementRange","minX","maxX","minY","maxY","getElementListRange","elementList","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","uniqLines","line","_line","uniqLine","rangeMin","range","rangeMax","groupIdMap","elIdMap","groupId","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","htmlText","replace","paragraphs","string","paragraph","snapshotStore","addHistorySnapshot","trailing","redo","leading","undo","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","useHistorySnapshot","setTimeout","createImageElement","createChartElement","chartType","gridColor","labels","legends","series","createTableElement","row","col","rowCells","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","createShapeElement","newElement","special","createLineElement","isBroken","isCurve","createLatexElement","w","h","latex","strokeWidth","createVideoElement","createAudioElement","loop","autoplay","useCreateElement","addElementsFromClipboard","currentSlideElementIdList","inCurrentSlide","values","addSlidesFromClipboard","newSlides","createTextElementFromClipboard","pasteTextClipboardData","options","onlySlide","onlyElements","_selectedSlidesIndex","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","message","warning","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","lockElement","newElementList","lock","unlockElement","groupElementIdList","deleteElement","deleteAllElements","canCombine","firstGroupId","inSameGroup","every","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","pasteElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","move","LEFT","RIGHT","getCombineElementLevelRange","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","exitFullscreen","mozCancelFullScreen","webkitCancelFullScreen","isFullscreen","mozFullScreen","webkitIsFullScreen","webkitFullScreen","screenStore","enterScreening","enterScreeningFromStart","exitScreening","scaleCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","order","tabActiveElement","currentIndex","nextIndex","nextElementId","firstElement","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","F","preventDefault","C","X","D","Z","Y","A","L","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","TAB","keyupListener","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","getAsFile","getAsString","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","href","target","_hoisted_28","_component_IconFolderClose","_component_MenuItem","_component_Menu","_component_Dropdown","_component_IconEdit","_component_IconPpt","_component_IconHelpcenter","_component_Tooltip","_component_IconGithub","_component_HotkeyDoc","_component_Drawer","_component_FullscreenSpin","trigger","overlay","default","onClick","exportJSON","_","exportPPTX","toggleGridLines","goIssues","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","visible","onClose","loading","exporting","tip","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","tr","td","voidTags","jumpPosition","movePositopn","findTextEnd","isEnd","textEnd","char","charAt","test","lexText","tokens","lexComment","contentEnd","commentEnd","lexTagName","isTagChar","tagName","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","newWord","thirdWord","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","close","firstChar","tagEndClose","isComment","safeTag","lexer","root","stack","tagParents","parentTagName","rewindStack","newLength","token","tagToken","shouldRewind","isClosingTag","shouldRewindToAutoClose","previousIndex","attributes","tagEndToken","_token","elementNode","hasChildren","innerState","splitHead","sep","idx","unquote","car","formatAttributes","attribute","parts","trim","format","typeMap","1","2","4","8","16","32","64","128","256","512","pathData","commands","x","y","relative","x1","y1","x2","y2","lastPoint","cubicBezierPoints","px","py","cx","cy","rx","rX","ry","rY","xAxisRotation","xRot","largeArcFlag","lArcFlag","sweepFlag","cbPoint","characters","PREFIX","utf8Encode","utftext","charCodeAt","String","fromCharCode","encode","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","isNaN","svg2Base64","XMLS","XMLSerializer","svg","serializeToString","blob","Blob","formatColor","_color","alpha","getAlpha","toHexString","formatHTML","html","ast","slices","obj","baseStyleObj","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","_value","fontSize","parseInt","highlight","strike","italic","fontFace","formatPoints","point","undefined","moveTo","pptx","pptxSlide","image","transparency","gradientColor","color1","color2","mix","textProps","valign","charSpacing","lineSpacingMultiple","shadow","blur","offset","v","angle","addText","flipH","clip","shape","rounding","link","hyperlink","url","addImage","svgRef","querySelector","base64SVG","fillColor","dashType","addShape","beginArrowType","endArrowType","chartData","chartColors","analogous","supplement","legend","showLegend","legendPos","legendColor","legendFontSize","ChartType","bar","barDir","horizontalBars","showArea","area","showLine","scatter","lineSize","lineSmooth","donut","doughnut","holeSize","pie","addChart","hiddenCells","rowData","cell","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","writeFile","fileName","error","hotkeys","hotkey","setup","__exports__","components","HotkeyDoc","useExport","open","_component_ElementCreateSelection","_component_AlignmentLine","_component_MultiSelectOperate","_component_Operate","_component_ViewportBackground","_component_MouseSelection","_component_EditableElement","_component_LinkDialog","_component_Modal","_directive_contextmenu","_directive_click_outside","ref","onMousewheel","handleMousewheelCanvas","onMousedown","handleClickBlankArea","onCreated","insertElementFromCreateSelection","viewportStyles","alignmentLines","axis","scaleMultiElement","elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","openLinkDialog","dragLineElement","transform","mouseSelectionState","isShow","quadrant","elementIndex","selectElement","linkDialogVisible","footer","centered","destroyOnClose","contextmenus","removeEditorAreaFocus","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","resizeObserver","ResizeObserver","observe","unobserve","viewportRef","updateMouseSelection","isMouseDown","viewportRect","getBoundingClientRect","minSelectionRange","startPageX","pageX","startPageY","pageY","onmousemove","currentPageX","currentPageY","offsetWidth","offsetHeight","abs","onmouseup","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","mouseX","mouseY","sorptionRange","ELEMENT_TYPE_ZH","chart","video","audio","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","startMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","adsorptionPoints","startX","startY","endX","endY","midX","midY","START","adsorptionPoint","END","newEl","MID","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","zIndex","currentElementComponent","ElementTypes","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","_component_ImageClipHandler","_component_ImageOutline","isCliping","clipData","clipPath","clipShape","onClip","handleClip","shadowStyle","flipStyle","handleSelectElement","draggable","imgPosition","onDragstart","alt","ClipPathTypes","ClipPaths","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","filters","_component_ImageRectOutline","_component_ImageEllipseOutline","_component_ImagePolygonOutline","overflow","stroke","outlineColor","outlineWidth","outlineStyle","Number","required","useElementOutline","Function","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","clipWrapperPositionStyle","bottomImgPositionStyle","topImgWrapperPositionStyle","topImgPositionStyle","moveClipRange","scaleClipRange","emits","emit","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","topLeft","topTop","topWidth","topHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","bottomPosition","originPositopn","minWidth","minHeight","targetWidth","targetHeight","ImageOutline","ImageClipHandler","useElementShadow","useElementFlip","useFilter","stopPropagation","originClip","_props","_component_ElementOutline","_component_ProsemirrorEditor","textShadow","letterSpacing","fontFamily","elementId","editable","onUpdate","updateContent","EmitterEvents","cmd","strong","list_item","childCount","rules","ordered_list","bullet_list","code_block","_orderedList","group","_bulletList","parseDOM","tag","getAttrs","dom","getAttribute","toDOM","excludes","forecolor","inline","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","plugins","emitter","mitt","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","dispatch","isList","listType","itemType","$to","blockRange","parentList","validContent","Boolean","autoFocus","editorView","editorViewRef","handleInput","innerHTML","handleFocus","handleBlur","handleClick","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","handleDOMEvents","focus","keydown","execCommand","payload","empty","addMark","removeMark","insertText","RICH_TEXT_COMMAND","off","ElementOutline","ProsemirrorEditor","canMove","realHeightCache","updateTextElementHeight","entries","contentRect","realHeight","_component_GradientDefs","onDblclick","enterEditing","gradient","updateText","gradientTransform","GradientDefs","exitEditing","defaultText","_text","_component_LinePointMarker","svgWidth","svgHeight","baseSize","lineDashArray","markerUnits","orient","markerWidth","markerHeight","refX","refY","pathMap","dot","arrow","rotateMap","LinePointMarker","_component_Chart","openDataEditor","flexDirection","chartHeight","slideScale","themeColors","chartRef","getDataAndOptions","propsOptopns","renderChart","updateChart","colors","updateTheme","setProperty","updateGridColor","Chart","OPEN_CHART_DATA_EDITOR","_component_EditableTable","onChange","updateTableCells","onChangeColWidths","widths","updateColWidths","onChangeSelectedCells","updateSelectedCells","startEdit","_component_CustomTextarea","totalWidth","dragLinePosition","handleMousedownColHandler","subThemeColor","colSizeList","span","tableCells","rowIndex","colIndex","selectedCells","activedCell","borderStyle","borderColor","borderWidth","getTextStyle","handleCellMousedown","onMouseenter","handleCellMouseenter","contenteditable","onUpdateValue","onInsertExcelData","insertExcelData","formatText","hideCells","textDecoration","fontWeight","fontStyle","immediate","onFocus","onBlur","onInput","textareaRef","onpaste","excelData","CustomTextarea","isStartSelect","startCell","endCell","set","newData","useSubThemeColor","reduce","a","b","removeSelectedCells","useHideCells","oldValue","selectedRange","handleMouseup","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","originWidth","round","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","EditableTable","updateTableElementHeight","openLatexEditor","OPEN_LATEX_EDITOR","_component_VideoPlayer","poster","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","hideController","onMousemove","autoHideController","toggle","playsinline","onDurationchange","handleDurationchange","onTimeupdate","handleTimeupdate","onEnded","handleEnded","onProgress","handleProgress","onPlay","onPause","onError","handleError","bezelTransition","onAnimationend","paused","toggleVolume","volume","handleMousedownVolumeBar","onTouchstart","handleClickVolumeBar","volumeBarWidth","ptime","dtime","speedMenuVisible","onMouseleave","speedOptions","playbackRate","speed","toggleLoop","handleMousedownPlayBar","handleMousemovePlayBar","playBarTimeVisible","playBarTimeLeft","playBarTime","loadedBarWidth","playedBarWidth","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","secondToTime","second","add0","num","hour","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","currentTime","duration","loaded","seek","time","play","pause","setVolume","muted","rate","buffered","thumbMove","clientX","changedTouches","thumbUp","volumeMove","volumeUp","tx","autoHideControllerTimer","clearTimeout","played","useMSE","VideoPlayer","_component_AudioPlayer","audioIconSize","audioPlayerPosition","handlePlayed","audioRef","AudioPlayer","audioWidth","audioHeight","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","hide","validator","_component_GridLines","backgroundStyle","bgColor","colorList","mostReadable","includeFallbackColors","gridSize","getPath","imageSize","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","GridLines","useSlideBackgroundStyle","sizeStyle","createSelection","onContextmenu","lineData","selectionRef","absX","absY","isOpposite","endPageX","endPageY","defaultSize","_startX","_startY","_endX","_endY","_component_BorderLine","_component_ResizeHandler","borderLines","disableResize","resizeHandlers","textElementResizeHandlers","T","R","rotateClassName","prefix","isWide","ResizeHandler","BorderLine","localActiveElementList","useCommonOperate","setRange","_component_LinkHandler","transformOrigin","currentOperateComponent","handlerVisible","elementIndexInAnimation","_component_RotateHandler","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","midHandler","cannotRotate","_component_Divider","removeLink","setLink","linkRegExp","useLink","LinkHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","_component_Input","_component_SelectOption","_component_Select","_component_ThumbnailSlide","_component_Button","tabs","tab","address","placeholder","selectedSlide","save","_component_ThumbnailElement","needScaleSize","chartWidth","_component_StaticTable","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","ThumbnailElement","ThumbnailSlide","success","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","ElementCreateSelection","MultiSelectOperate","Operate","LinkDialog","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","throttleScaleCanvas","throttleUpdateSlideIndex","deltaY","useInsertFromCreateSelection","_component_IconBack","_component_IconNext","_component_IconFontSize","_component_IconPicture","_component_FileInput","_component_ShapePool","_component_IconGraphicDesign","_component_Popover","_component_LinePool","_component_IconConnection","_component_ChartPool","_component_IconChartProportion","_component_TableGenerator","_component_IconInsertTable","_component_IconFormula","_component_MediaInput","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","_component_LaTeXEditor","mouseEnterDelay","drawText","files","insertImageElement","shapePoolVisible","onSelect","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","onInsert","latexEditorVisible","mediaInputVisible","onInsertVideo","onInsertAudio","canvasScalePercentage","shapeList","selectShape","SHAPE_LIST","lineList","selectLine","LINE_LIST","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","chartList","selectChart","_component_InputNumber","isCustom","customRow","customCol","insertCustomTable","handleClickTable","videoSrc","insertVideo","audioSrc","insertAudio","_component_TextArea","_component_FormulaContent","_component_SymbolContent","symbolList","selectedSymbolKey","symbolPool","insertSymbol","formulaList","hfmath","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","boxW","boxH","SCALE_X","SCALE_Y","FormulaContent","SymbolContent","textAreaRef","selectedSymbol","ShapePool","LinePool","ChartPool","TableGenerator","MediaInput","LaTeXEditor","_component_LayoutPool","_component_IconDown","_component_Draggable","presetLayoutPopoverVisible","modelValue","scroll","scrollSensitivity","setData","onEnd","handleDragEnd","itemKey","handleClickSlideThumbnail","fillDigit","slidesLoadLimit","contextmenusThumbnailItem","contextmenusThumbnails","timer","loadSlide","selectSlideTemplate","Draggable","LayoutPool","useLoadSlides","changSlideIndex","minIndex","eventData","oldIndex","_slides","_slide","ToolbarStates","currentTabs","currentPanelComponent","_component_SelectOptGroup","_component_IconAddText","_component_InputGroup","_component_ColorPicker","_component_IconText","_component_IconBackgroundColor","_component_IconFill","_component_ButtonGroup","_component_IconTextBold","_component_CheckboxButton","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_CheckboxButtonGroup","_component_IconUpOne","_component_IconDownOne","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconAlignTextLeft","_component_RadioButton","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_RadioGroup","_component_IconList","_component_IconOrderedList","_component_IconRowHeight","_component_IconFullwidth","_component_ElementShadow","_component_ElementOpacity","presetStyles","emitBatchRichTextCommand","compact","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","updateFill","checked","updateLineHeight","lineHeightOptions","updateWordSpace","wordSpaceOptions","_component_Slider","updateOpacity","deep","_component_Switch","_component_ColorButton","fixed","hasOutline","toggleOutline","updateOutline","_component_IconPlatte","ColorButton","outlineProps","_outline","hasShadow","toggleShadow","updateShadow","shadowProps","_shadow","ElementOpacity","ElementShadow","_component_ElementFlip","_component_IconTailoring","_component_ElementFilter","_component_IconTransform","_component_IconUndo","_component_IconTheme","clipImage","clipPanelVisible","shapeClipPathOptions","presetImageClip","ratioClipOptions","ratio","replaceImage","resetImage","setBackgroundImage","_component_IconFlipVertically","_component_IconFlipHorizontally","updateFlip","flipProps","hasFilters","toggleFilters","filterOptions","updateFilter","defaultFilters","unit","_handleElement","originFilters","ElementFlip","ElementFilter","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","originLeft","originTop","imageRatio","distance","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","fillType","updateFillType","updateGradient","showTextTools","updateTextAlign","gradientProps","_gradient","updateLine","_component_Checkbox","_component_IconCloseSmall","_component_ChartDataEditor","chartDataEditorVisible","updateOptions","updateLegend","deleteThemeColor","presetThemesVisible","presetChartThemes","applyPresetTheme","disabled","addThemeColor","closable","onSave","updateData","tempRangeSize","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","focusCell","onPaste","handlePaste","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","initData","_data","inputRef","moveNextRow","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","optionProps","newOptions","textAttrs","updateTextAttrs","setTableRow","setTableCol","hasTheme","toggleTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","textAttrProp","themeProp","_theme","newTableCells","newColSizeList","updateLatex","updateLatexData","setVideoPoster","updateVideo","updateAudio","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","_component_IconSendToBack","_component_IconBringToFrontOne","_component_IconBringToFront","_component_IconSentToBack","_component_IconAlignLeft","_component_IconAlignVertically","_component_IconAlignRight","_component_IconAlignTop","_component_IconAlignHorizontally","_component_IconAlignBottom","_component_IconLock","_component_IconUnlock","_component_IconRotate","updateLeft","updateTop","updateWidth","updateFixedRatio","updateHeight","updateRotate45","flex","updateRotate","_rotate","_component_IconEffects","_component_IconClick","animationPoolVisible","onVisibleChange","handlePopoverVisibleChange","hoverPreviewAnimation","addAnimation","popoverMaskHide","handleElementAnimationName","animationSequence","elType","animationType","runAnimation","deleteAnimation","handleElementAnimation","updateElementAnimationDuration","ANIMATIONS","defaultDuration","animationTypes","elRef","animationName","classList","handleAnimationEnd","removeProperty","once","updateElementAnimation","animationItem","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","updateBackgroundType","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","updateViewportRatio","showPresetThemes","togglePresetThemesVisible","themes","applyThemeAllSlide","PRESET_THEMES","newBackground","currentTurningMode","updateTurningMode","applyAllSlide","turningMode","_component_IconGroup","_component_IconUngroup","alignElement","displayItemCount","uniformHorizontalDisplay","uniformVerticalDisplay","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","count","groupIdList","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","symbolPoolList","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_DESIGN","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","resize","remark","newHeight","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","Remark","useGlobalHotkey","usePasteEvent","_component_ScreenSlide","_component_SlideThumbnails","_component_WritingBoardTool","_component_IconLeftTwo","_component_IconRightTwo","_component_IconWrite","mousewheelListener","touchStartListener","onTouchend","touchEndListener","slideWidth","slideHeight","animationIndex","turnSlideToId","slideThumbnailModelVisible","turnSlideToIndex","writingBoardToolVisible","execPrev","execNext","showPageNumber","_component_ScreenElement","visibility","needWaitAnimation","openLink","_component_BaseChartElement","audioPlayerRef","ScreenChartElement","ScreenVideoElement","ScreenAudioElement","ScreenElement","_component_IconArrowCircleLeft","_component_WritingBoard","_component_IconErase","_component_IconClear","_component_IconClose","writingBoardColor","blackboard","model","writingBoardModel","changePen","changeEraser","clearCanvas","writingBoardColors","changeColor","closeWritingBoard","handleMousedown","handleMousemove","onMouseup","onTouchmove","mouseInCanvas","mouse","penSize","rubberSize","writingBoardRef","lastTime","lastLineWidth","updateMousePosition","initCanvas","lineCap","lineJoin","draw","posX","posY","lineWidth","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","maxV","minV","maxWidth","handleMove","Date","getTime","MouseEvent","TouchEvent","WritingBoard","ScreenSlide","SlideThumbnails","WritingBoardTool","setSlideContentSize","winWidth","winHeight","windowResizeListener","autoPlayTimer","closeAutoPlay","clearInterval","throttleMassage","lastIndex","autoPlay","setInterval","touchInfo","SPACE","turnPrevSlide","turnNextSlide","_component_Alert","description","mobileRef","Editor","Screen","Mobile","onbeforeunload","install","app","component","$slots","accept","handleChange","_component_Saturation","_component_Checkboard","_component_Hue","_component_Alpha","_component_EditableInput","hue","onColorChange","currentColor","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","toDataURL","getCheckboard","checkboard","Checkboard","rgbaStr","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","pointerLeft","oldHue","pullDirection","hsla","toHsl","hueRef","percent","pointerTop","hsva","toHsv","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","Alpha","Hue","Saturation","EditableInput","rgbaString","colorString","updateRecentColorsCache","maxLength","recentColorsCache","localStorage","getItem","setItem","_component_Spin","FileInput","CheckboxButton","CheckboxButtonGroup","ColorPicker","FullscreenSpin","_component_MenuContent","removeContextmenu","menus","handleClickMenuItem","_component_menu_content","menu","MenuContent","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenWidth","screenHeight","CTX_CONTEXTMENU_HANDLER","event","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","contains","ClickOutsideDirective","directive","App","Group","Option","OptGroup","Button","TextArea","Item","use","mount"],"mappings":"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oCCAA,W,oCCAA,W,2DCAA,W,2DCAA,W,oCCAA,W,6GCAA,W,6DCAA,W,6DCAA,W,oFCAA,W,2DCAA,W,kCCAA,W,kCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,oFCAA,W,2DCAA,W,2JCAA,W,yDCAA,W,oCCAA,W,8DCAA,W,6DCAA,W,oCCAA,W,sFCAA,W,2GCAA,W,6DCAA,W,kCCAA,W,oCCAA,W,2DCAA,W,oCCAA,W,oCCAA,W,oCCAA,W,wICAA,W,kCCAA,W,+JCAA,W,sICAA,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,8HCAA,W,yDCAA,W,kCCAA,W,gFCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,gFCAA,W,uGCAA,W,kCCAA,W,yDCAA,W,yDCAA,W,kCCAA,W,kCCAA,W,gFCAA,W,qjBCEM,SAAUyC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMC,EAAoB,8BAAkB,UACtCC,EAAoB,8BAAkB,UACtCC,EAAoB,8BAAkB,UAE5C,OAAQR,EAAKS,WACR,yBAAc,yBAAaH,EAAmB,CAAEjB,IAAK,KACrDW,EAAKU,MACH,yBAAc,yBAAaH,EAAmB,CAAElB,IAAK,MACrD,yBAAc,yBAAamB,EAAmB,CAAEnB,IAAK,K,sDCN5CsB,EASAC,EAYAC,EASAC,EAaAC,EChDAC,ECALC,EAAY,CACvB,CAAEC,MAAO,QAASnC,MAAO,SACzB,CAAEmC,MAAO,OAAQnC,MAAO,mBACxB,CAAEmC,MAAO,KAAMnC,MAAO,UACtB,CAAEmC,MAAO,KAAMnC,MAAO,UACtB,CAAEmC,MAAO,KAAMnC,MAAO,SACtB,CAAEmC,MAAO,MAAOnC,MAAO,WACvB,CAAEmC,MAAO,KAAMnC,MAAO,YACtB,CAAEmC,MAAO,KAAMnC,MAAO,eACtB,CAAEmC,MAAO,OAAQnC,MAAO,WACxB,CAAEmC,MAAO,OAAQnC,MAAO,WACxB,CAAEmC,MAAO,OAAQnC,MAAO,UACxB,CAAEmC,MAAO,OAAQnC,MAAO,cACxB,CAAEmC,MAAO,OAAQnC,MAAO,eACxB,CAAEmC,MAAO,OAAQnC,MAAO,UACxB,CAAEmC,MAAO,OAAQn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C,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,yEAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,yEAKZ,CACE3F,KAAM,OACNuR,SAAU,CACR,CACE7L,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,yDAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,yCAER,CACED,QAAS,IACTC,KAAM,uCAER,CACED,QAAS,IACTC,KAAM,6BAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,wDAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,gFAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,wEAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,sHAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,oIAER,CACED,QAAS,IACTC,KAAM,qEAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,2EAER,CACED,QAAS,IACTC,KAAM,6HAKZ,CACE3F,KAAM,KACNuR,SAAU,CACR,CACE7L,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qOAER,CACED,QAAS,IACTC,KAAM,uFAER,CACED,QAAS,IACTC,KAAM,sFAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,6FAER,CACED,QAAS,IACTC,KAAM,yFAER,CACED,QAAS,IACTC,KAAM,0HAER,CACED,QAAS,KACTC,KAAM,8IACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,gJACN0U,SAAS,KAKf,CACEra,KAAM,OACNuR,SAAU,CACR,CACE7L,QAAS,KACTC,KAAM,qvCACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,42BACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,icACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,mfACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,gpDACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,4uBACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,gbACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,ssCACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,w/BACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,w3CACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,wkBACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,0jBACN0U,SAAS,GAEX,CACE3U,QAAS,KACTC,KAAM,qyBACN0U,SAAS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","file":"js/app.8d780616.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseLatexElement.vue?vue&type=style&index=0&id=4118f3dd&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=4ae7c9aa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LineStylePanel.vue?vue&type=style&index=0&id=cbc4d7fa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ResizeHandler.vue?vue&type=style&index=0&id=680e5917&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ViewportBackground.vue?vue&type=style&index=0&id=4d0018d8&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WritingBoard.vue?vue&type=style&index=0&id=7ff9fa00&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementFlip.vue?vue&type=style&index=0&id=7bd50f1a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MenuContent.vue?vue&type=style&index=0&id=eb1555e8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=3168526a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=426704b7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementFilter.vue?vue&type=style&index=0&id=181ae0aa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AudioPlayer.vue?vue&type=style&index=0&id=5cabbb47&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./EditableInput.vue?vue&type=style&index=0&id=00ea8dfc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageClipHandler.vue?vue&type=style&index=0&id=430c7e6e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=ec4c62e4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=1386e8fc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=66dd4448&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MultiPositionPanel.vue?vue&type=style&index=0&id=88d13362&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=d35423d2&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=32a5341e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Chart.vue?vue&type=style&index=1&id=3ac5559a&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MediaInput.vue?vue&type=style&index=0&id=4916d8ab&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=603a705d&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FullscreenSpin.vue?vue&type=style&index=0&id=6275c730&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=06a163ec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseTableElement.vue?vue&type=style&index=0&id=3bbcc75c&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Hue.vue?vue&type=style&index=0&id=1766620e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseVideoElement.vue?vue&type=style&index=0&id=1c831c75&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WritingBoardTool.vue?vue&type=style&index=0&id=7a2e5324&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImagePolygonOutline.vue?vue&type=style&index=0&id=21ca95cc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=58d3557f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOutline.vue?vue&type=style&index=0&id=722bf8fa&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseTextElement.vue?vue&type=style&index=0&id=2ec235c4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./HotkeyDoc.vue?vue&type=style&index=0&id=0418e74e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinkHandler.vue?vue&type=style&index=0&id=3250b72d&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SymbolPanel.vue?vue&type=style&index=0&id=6b8c5938&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageStylePanel.vue?vue&type=style&index=0&id=64e5a614&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TableGenerator.vue?vue&type=style&index=0&id=e325ce98&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenElement.vue?vue&type=style&index=0&id=3b227002&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseShapeElement.vue?vue&type=style&index=0&id=68d8af98&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ChartDataEditor.vue?vue&type=style&index=0&id=9a62f784&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=71428444&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=210672ee&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=0df9576a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideAnimationPanel.vue?vue&type=style&index=0&id=251ceb05&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinkDialog.vue?vue&type=style&index=0&id=5a0d0b33&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenVideoElement.vue?vue&type=style&index=0&id=a45a17a4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseLineElement.vue?vue&type=style&index=0&id=4032440c&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageRectOutline.vue?vue&type=style&index=0&id=48a14431&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapeStylePanel.vue?vue&type=style&index=0&id=0e201fca&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Checkboard.vue?vue&type=style&index=0&id=0a544b87&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageElementOperate.vue?vue&type=style&index=0&id=24706869&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementCreateSelection.vue?vue&type=style&index=0&id=a8c28cdc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StaticTable.vue?vue&type=style&index=0&id=74b60291&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Chart.vue?vue&type=style&index=0&id=3ac5559a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./EditableTable.vue?vue&type=style&index=0&id=c0c56b6e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Saturation.vue?vue&type=style&index=0&id=8982eb4a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseImageElement.vue?vue&type=style&index=0&id=b0d4d1b2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./MultiSelectOperate.vue?vue&type=style&index=0&id=2d010d5c&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=e716fb74&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=1d67bb30&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=c09631b6&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ImageEllipseOutline.vue?vue&type=style&index=0&id=692bbda6&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=039e9a08&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=ee2d8b14&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=129e1afa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOpacity.vue?vue&type=style&index=0&id=f62a02b6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=5a6e24c6&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementAnimationPanel.vue?vue&type=style&index=0&id=696c81e2&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./VideoStylePanel.vue?vue&type=style&index=0&id=61bcaa2a&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseChartElement.vue?vue&type=style&index=0&id=60d9ae43&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TextStylePanel.vue?vue&type=style&index=0&id=2d6233f4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AlignmentLine.vue?vue&type=style&index=0&id=62c9018e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideThumbnails.vue?vue&type=style&index=0&id=2236d5e3&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Screen = _resolveComponent(\"Screen\")!\n const _component_Editor = _resolveComponent(\"Editor\")!\n const _component_Mobile = _resolveComponent(\"Mobile\")!\n\n return (_ctx.screening)\n ? (_openBlock(), _createBlock(_component_Screen, { key: 0 }))\n : (_ctx.isPC)\n ? (_openBlock(), _createBlock(_component_Editor, { key: 1 }))\n : (_openBlock(), _createBlock(_component_Mobile, { key: 2 }))\n}","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\n\r\nexport type ElementOrderCommand = 'up' | 'down' | 'top' | 'bottom'\r\n\r\nexport const enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport type ElementAlignCommand = 'top'| 'bottom' | 'left' | 'right' | 'vertical' | 'horizontal' | 'center'\r\n\r\nexport const enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport type OperateBorderLine = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport type OperateResizeHandler = '' | 'left-top' | 'top' | 'right-top' | 'left' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport type OperateLineHandler = 'start' | 'end' | 'mid'\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n MID = 'mid',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number; \r\n y: number;\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal';\r\n axis: AlignmentLineAxis;\r\n length: number;\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number;\r\n maxX: number;\r\n minY: number;\r\n maxY: number;\r\n}\r\n\r\nexport type ImageClipDataRange = [[number, number], [number, number]]\r\n\r\nexport interface ImageClipData {\r\n range: ImageClipDataRange;\r\n path: string;\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange;\r\n position: {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n };\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text';\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape';\r\n data: ShapePoolItem;\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line';\r\n data: LinePoolItem;\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement","export const enum KEYS {\n C = 'C',\n X = 'X',\n Z = 'Z',\n Y = 'Y',\n A = 'A',\n G = 'G',\n L = 'L',\n F = 'F',\n D = 'D',\n B = 'B',\n MINUS = '-',\n EQUAL = '=',\n DIGIT_0 = '0',\n DELETE = 'DELETE',\n UP = 'ARROWUP',\n DOWN = 'ARROWDOWN',\n LEFT = 'ARROWLEFT',\n RIGHT = 'ARROWRIGHT',\n ENTER = 'ENTER',\n SPACE = ' ',\n TAB = 'TAB',\n BACKSPACE = 'BACKSPACE',\n}\n\nexport const HOTKEY_DOC = [\n {\n type: '通用',\n children: [\n { label: '剪切', value: 'Ctrl + X' },\n { label: '复制', value: 'Ctrl + C' },\n { label: '粘贴', value: 'Ctrl + V' },\n { label: '快速复制粘贴', value: 'Ctrl + D' },\n { label: '全选', value: 'Ctrl + A' },\n { label: '撤销', value: 'Ctrl + Z' },\n { label: '恢复', value: 'Ctrl + Y' },\n { label: '删除', value: 'Delete / Backspace' },\n { label: '多选', value: '按住 Ctrl 或 Shift' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '开始放映幻灯片', value: 'Ctrl + F' },\n { label: '切换上一页', value: '↑ / ←' },\n { label: '切换下一页', value: '↓ / → / Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚动' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '缩放画布到合适大小', value: 'Ctrl + 0' },\n { label: '编辑上一页', value: '↑ / ← / 鼠标上滚' },\n { label: '编辑下一页', value: '↓ / → / 鼠标下滚' },\n ],\n },\n {\n type: '元素操作',\n children: [\n { label: '移动', value: '↑ / ← / ↓ / →' },\n { label: '锁定', value: 'Ctrl + L' },\n { label: '组合', value: 'Ctrl + G' },\n { label: '取消组合', value: 'Ctrl + Shift + G' },\n { label: '置顶层', value: 'Alt + F' },\n { label: '置底层', value: 'Alt + B' },\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\n { label: '切换焦点元素', value: 'Tab' },\n { label: '确认图片裁剪', value: 'Enter' },\n ],\n },\n {\n type: '表格编辑',\n children: [\n { label: '聚焦到下一个单元格', value: 'Tab' },\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\n { label: '在右侧插入一列', value: 'Ctrl + →' },\n ],\n },\n {\n type: '图表数据编辑',\n children: [\n { label: '聚焦到下一行', value: 'Enter' },\n ],\n },\n {\n type: '文本编辑',\n children: [\n { label: '加粗', value: 'Ctrl + B' },\n { label: '斜体', value: 'Ctrl + I' },\n { label: '下划线', value: 'Ctrl + U' },\n { label: '删除线', value: 'Ctrl + D' },\n ],\n },\n]","export const SYS_FONTS = [\n { label: 'Arial', value: 'Arial' },\n { label: '微软雅黑', value: 'Microsoft Yahei' },\n { label: '宋体', value: 'SimSun' },\n { label: '黑体', value: 'SimHei' },\n { label: '楷体', value: 'KaiTi' },\n { label: '新宋体', value: 'NSimSun' },\n { label: '仿宋', value: 'FangSong' },\n { label: '苹方', value: 'PingFang SC' },\n { label: '华文黑体', value: 'STHeiti' },\n { label: '华文楷体', value: 'STKaiti' },\n { label: '华文宋体', value: 'STSong' },\n { label: '华文仿宋', value: 'STFangSong' },\n { label: '华文中宋', value: 'STZhongSong' },\n { label: '华文琥珀', value: 'STHupo' },\n { label: '华文新魏', value: 'STXinwei' },\n { label: '华文隶书', value: 'STLiti' },\n { label: '华文行楷', value: 'STXingkai' },\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\n { label: '兰亭黑', value: 'Lantinghei SC' },\n { label: '偏偏体', value: 'Hanzipen SC' },\n { label: '手札体', value: 'Hannotate SC' },\n { label: '宋体', value: 'Songti SC' },\n { label: '娃娃体', value: 'Wawati SC' },\n { label: '行楷', value: 'Xingkai SC' },\n { label: '圆体', value: 'Yuanti SC' },\n { label: '华文细黑', value: 'STXihei' },\n { label: '幼圆', value: 'YouYuan' },\n { label: '隶书', value: 'LiSu' },\n]\n\nexport const WEB_FONTS = [\n { label: '仓耳小丸子', value: '仓耳小丸子' },\n { label: '优设标题黑', value: '优设标题黑' },\n { label: '峰广明锐体', value: '峰广明锐体' },\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\n { label: '站酷快乐体', value: '站酷快乐体' },\n { label: '字制区喜脉体', value: '字制区喜脉体' },\n { label: '素材集市康康体', value: '素材集市康康体' },\n { label: '联盟起艺卢帅正锐黑体', value: '联盟起艺卢帅正锐黑体' },\n { label: '素材集市酷方体', value: '素材集市酷方体' },\n { label: '途牛类圆体', value: '途牛类圆体' },\n { label: '锐字真言体', value: '锐字真言体' },\n { label: '阿里汉仪智能黑体', value: '阿里汉仪智能黑体' },\n]","import { Node, NodeType, ResolvedPos, Mark } from 'prosemirror-model'\nimport { EditorState, Selection } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\n\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\n}\n\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\n}\n\nexport const findParentNodeOfType = (nodeType: NodeType) => {\n return (selection: Selection) => {\n return findParentNode((node: Node) => {\n return equalNodeType(nodeType, node)\n })(selection)\n }\n}\n\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\n const node = state.schema.nodes[nodeType]\n return !!findParentNodeOfType(node)(state.selection)\n}\n\nexport const getMarkAttrs = (view: EditorView) => {\n const { selection, doc } = view.state\n const { from } = selection\n\n let node = doc.nodeAt(from) || doc.nodeAt(from - 1)\n if (node?.lastChild) node = node.lastChild\n\n return node?.marks || []\n}\n\nexport const getAttrValue = (marks: Mark[], markType: string, attr: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\n }\n return null\n}\n\nexport const isActiveMark = (marks: Mark[], markType: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType) return true\n }\n return false\n}\n\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\n const { selection, doc } = view.state\n const { from, to } = selection\n\n let keepChecking = true\n let value = ''\n doc.nodesBetween(from, to, node => {\n if (keepChecking && node.attrs[attr]) {\n keepChecking = false\n value = node.attrs[attr]\n }\n return keepChecking\n })\n return value\n}\n\ninterface DefaultAttrs {\n color?: string;\n backcolor?: string;\n fontsize?: string;\n fontname?: string;\n align?: string;\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '#000',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, defaultAttrs: DefaultAttrs = {}) => {\n defaultAttrs = { ..._defaultAttrs, ...defaultAttrs }\n\n const marks = getMarkAttrs(view)\n\n const isBold = isActiveMark(marks, 'strong')\n const isEm = isActiveMark(marks, 'em')\n const isUnderline = isActiveMark(marks, 'underline')\n const isStrikethrough = isActiveMark(marks, 'strikethrough')\n const isSuperscript = isActiveMark(marks, 'superscript')\n const isSubscript = isActiveMark(marks, 'subscript')\n const isCode = isActiveMark(marks, 'code')\n const color = getAttrValue(marks, 'forecolor', 'color') || defaultAttrs.color\n const backcolor = getAttrValue(marks, 'backcolor', 'backcolor') || defaultAttrs.backcolor\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || defaultAttrs.fontsize\n const fontname = getAttrValue(marks, 'fontname', 'fontname') || defaultAttrs.fontname\n const align = getAttrValueInSelection(view, 'align') || defaultAttrs.align\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\n\n return {\n bold: isBold,\n em: isEm,\n underline: isUnderline,\n strikethrough: isStrikethrough,\n superscript: isSuperscript,\n subscript: isSubscript,\n code: isCode,\n color: color,\n backcolor: backcolor,\n fontsize: fontsize,\n fontname: fontname,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const defaultRichTextAttrs: TextAttrs = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n superscript: false,\n subscript: false,\n code: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n bulletList: false,\n orderedList: false,\n blockquote: false,\n}","/**\n * 判断操作系统是否存在某字体\n * @param fontName 字体名\n */\nexport const isSupportFont = (fontName: string) => {\n if (typeof fontName !== 'string') return false\n\n const arial = 'Arial'\n if (fontName.toLowerCase() === arial.toLowerCase()) return true\n\n const size = 100\n const width = 100\n const height = 100\n const str = 'a'\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return false\n\n canvas.width = width\n canvas.height = height\n ctx.textAlign = 'center'\n ctx.fillStyle = 'black'\n ctx.textBaseline = 'middle'\n\n const getDotArray = (_fontFamily: string) => {\n ctx.clearRect(0, 0, width, height)\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\n ctx.fillText(str, width / 2, height / 2)\n const imageData = ctx.getImageData(0, 0, width, height).data\n return [].slice.call(imageData).filter(item => item !== 0)\n }\n\n return getDotArray(arial).join('') !== getDotArray(fontName).join('')\n}","import { Slide } from '@/types/slides'\n\nexport const slides: Slide[] = [\n {\n id: 'test123456',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'idn7Mx',\n left: 355,\n top: 65.25,\n width: 585,\n height: 188,\n lineHeight: 1.2,\n content: '

PPTIST

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'text',\n id: '7stmVP',\n left: 355,\n top: 253.25,\n width: 585,\n height: 56,\n content: '

基于 Vue 3.x + TypeScript 的在线演示文稿应用

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '#5b9bd5',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '#ffffff',\n },\n }\n]","import { SlideTheme } from '@/types/slides'\n\nexport const theme: SlideTheme = {\n themeColor: '#5b9bd5',\n fontColor: '#333',\n fontName: 'Microsoft Yahei',\n backgroundColor: '#fff',\n}","/* eslint-disable max-lines */\n\nimport { Slide } from '@/types/slides'\n\nexport const layouts: Slide[] = [\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'AkIh3E',\n left: 355,\n top: 95.11111111111111,\n width: 585,\n height: 116,\n lineHeight: 1.2,\n content: '

输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 6\n },\n {\n type: 'text',\n id: '7stmVP',\n left: 355,\n top: 253.25,\n width: 585,\n height: 56,\n content: '

请在此处输入副标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '{{themeColor}}',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'ptNnUJ',\n left: 145,\n top: 148,\n width: 711,\n height: 77,\n lineHeight: 1.2,\n content: '

在此处添加标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'mRHvQN',\n left: 207.50000000000003,\n top: 249.84259259259264,\n width: 585,\n height: 56,\n content: '

在此处添加副标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'line',\n id: '7CQDwc',\n left: 323.09259259259267,\n top: 238.33333333333334,\n start: [0, 0],\n end: [354.8148148148148, 0],\n points: ['', ''],\n color: '{{themeColor}}',\n style: 'solid',\n width: 4\n }, \n {\n type: 'shape',\n id: '09wqWw',\n left: -27.648148148148138,\n top: 432.73148148148147,\n width: 1056.2962962962963,\n height: 162.96296296296296,\n viewBox: 200,\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'vSheCJ',\n left: 183.5185185185185,\n top: 175.5092592592593,\n width: 605.1851851851851,\n height: 185.18518518518516,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n }, \n {\n type: 'shape',\n id: 'Mpwv7x',\n left: 211.29629629629628,\n top: 201.80555555555557,\n width: 605.1851851851851,\n height: 185.18518518518516,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n opacity: 0.7\n }, \n {\n type: 'text',\n id: 'WQOTAp',\n left: 304.9074074074074,\n top: 198.10185185185182,\n width: 417.9629629629629,\n height: 140,\n content: '

感谢观看

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 5\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'MZVO1kkj',\n elements: [\n {\n type: 'shape',\n id: 'cql0h8',\n left: 0,\n top: 0,\n width: 352.59259259259255,\n height: 562.5,\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0\n },\n {\n type: 'shape',\n id: '_RTaF4',\n left: 171.4814814814814,\n top: 100.13888888888887,\n width: 362.22222222222223,\n height: 362.22222222222223,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: 'rgba(255,255,255,0)',\n fixedRatio: false,\n rotate: 0,\n outline: {\n width: 10,\n color: '{{backgroundColor}}',\n style: 'solid'\n }\n },\n {\n type: 'shape',\n id: 'UZfo8N',\n left: 216.66666666666663,\n top: 145.32407407407408,\n width: 271.85185185185185,\n height: 271.85185185185185,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

01

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n },\n {\n type: 'text',\n id: 'ysqtBg',\n left: 561.4814814814814,\n top: 100.1388888888889,\n width: 359.25925925925924,\n height: 80,\n content: '

在此处输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n },\n {\n type: 'text',\n id: 'lXsoHa',\n left: 572.5925925925925,\n top: 202.3611111111111,\n width: 257.77777777777777,\n height: 260,\n content: '
  1. 在此处输入内容

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n lineHeight: 2,\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'EBBnTr',\n left: 360.5996472663139,\n top: 141.8496472663139,\n width: 278.80070546737215,\n height: 278.80070546737215,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 0,\n color: '{{backgroundColor}}',\n style: 'solid'\n }\n }, \n {\n type: 'shape',\n id: 'gDIWDH',\n left: 456.4373897707231,\n top: 98.287037037037,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

1

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'DUWT7E',\n left: 317.037037037037,\n top: 237.68738977072314,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

4

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'pbhn38',\n left: 456.43738977072303,\n top: 377.08774250440916,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

3

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'shape',\n id: 'CvMKrO',\n left: 595.8377425044091,\n top: 237.6873897707231,\n width: 87.12522045855381,\n height: 87.12522045855381,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: true,\n rotate: 0,\n outline: {\n width: 4,\n color: '{{backgroundColor}}',\n style: 'solid'\n },\n text: {\n content: '

2

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'adudHB',\n left: 402.962962962963,\n top: 39.39814814814815,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: '9UpDwg',\n left: 402.962962962963,\n top: 473.1018518518518,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'GERdpB',\n left: 111.48148148148151,\n top: 256.25,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'text',\n id: 'G5qoho',\n left: 691.1111111111111,\n top: 256.25,\n width: 194.07407407407408,\n height: 50,\n content: '

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }, \n {\n type: 'shape',\n id: 'vdZcI6',\n left: 415.18518518518516,\n top: 196.4351851851852,\n width: 169.62962962962962,\n height: 169.62962962962962,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'tYUmrx',\n left: 156.66666666666683,\n top: 149.02777777777771,\n width: 264.4444444444445,\n height: 264.4444444444445,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

01

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n },\n {\n type: 'shape',\n id: '0GVHf8',\n left: 342.2222222222223,\n top: 217.17592592592587,\n width: 128.14814814814812,\n height: 128.14814814814812,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{backgroundColor}}',\n fixedRatio: false,\n rotate: 0\n },\n {\n type: 'text',\n id: 'BO33Sv',\n left: 378.8888888888889,\n top: 235.24999999999994,\n width: 464.4444444444444,\n height: 92,\n content: '

在此处添加标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'Hj7ttp',\n left: 69.35185185185185,\n top: 49.21759259259262,\n width: 420,\n height: 63,\n lineHeight: 1.2,\n content: '

1.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'FmKMNB',\n left: 69.35185185185185,\n top: 129.28240740740745,\n width: 420,\n height: 384,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'rI7ZeO',\n left: 510.64814814814815,\n top: 49.21759259259262,\n width: 420,\n height: 63,\n lineHeight: 1.2,\n content: '

2.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'KspwGc',\n left: 510.64814814814815,\n top: 129.28240740740745,\n width: 420,\n height: 384,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'Rx63Jo',\n left: 69.35185185185179,\n top: 51.71759259259262,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

1.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'ulyuzE',\n left: 69.35185185185179,\n top: 131.78240740740745,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'kr35Ca',\n left: 510.6481481481481,\n top: 51.71759259259262,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

2.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'BNQSpC',\n left: 510.6481481481481,\n top: 131.78240740740745,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'Vr38Nu',\n left: 69.35185185185185,\n top: 301.71759259259255,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

3.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'IwKRSu',\n left: 69.35185185185185,\n top: 381.7824074074074,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: '0Opr1v',\n left: 510.64814814814815,\n top: 301.71759259259255,\n width: 420,\n height: 58,\n lineHeight: 1.2,\n content: '

4.请输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: '4L9Uzz',\n left: 510.64814814814815,\n top: 381.7824074074074,\n width: 420,\n height: 129,\n content: '

在此处输入内容

在此处输入内容

在此处输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'text',\n id: 'GdEGxg',\n left: 134.53703703703704,\n top: 127.25,\n width: 152.77777777777777,\n height: 308,\n lineHeight: 1.8,\n content: '

请在此处输入标题

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n wordSpace: 8,\n fill: '{{themeColor}}',\n },\n {\n type: 'text',\n id: 'y5sAfw',\n left: 332.8703703703704,\n top: 127.25,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容1

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'VeuocM',\n left: 332.8703703703704,\n top: 212.0648148148148,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容2

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'RyFWQe',\n left: 332.8703703703704,\n top: 296.8796296296296,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容3

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n {\n type: 'text',\n id: 'Q56viI',\n left: 332.8703703703704,\n top: 381.69444444444446,\n width: 532.5925925925926,\n height: 50,\n content: '

请在此处输入内容4

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}',\n },\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n {\n id: 'template',\n elements: [\n {\n type: 'shape',\n id: 'SUWirT',\n left: 73.8888888888889,\n top: 64.21296296296302,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

1

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'YjzN1M',\n left: 148.70370370370372,\n top: 64.21296296296302,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'fS09I7',\n left: 527.5925925925926,\n top: 64.21296296296302,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

2

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'qCnfB1',\n left: 602.4074074074074,\n top: 64.21296296296302,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n },\n {\n type: 'shape',\n id: 'difAAT',\n left: 73.8888888888889,\n top: 221.25000000000003,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

3

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: 'EUlvMo',\n left: 148.70370370370372,\n top: 221.25000000000003,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'US_9jB',\n left: 527.5925925925926,\n top: 221.25000000000003,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

4

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '243MnQ',\n left: 602.4074074074074,\n top: 221.25000000000003,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'Y_KUj0',\n left: 73.8888888888889,\n top: 378.287037037037,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

5

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '9GglMe',\n left: 148.70370370370372,\n top: 378.287037037037,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }, \n {\n type: 'shape',\n id: 'eSInje',\n left: 527.5925925925926,\n top: 378.287037037037,\n width: 49.629629629629626,\n height: 49.629629629629626,\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n fill: '{{themeColor}}',\n fixedRatio: false,\n rotate: 0,\n text: {\n content: '

6

',\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n align: 'middle'\n }\n }, \n {\n type: 'text',\n id: '0S3yUg',\n left: 602.4074074074074,\n top: 378.287037037037,\n width: 323.7037037037037,\n height: 120,\n content: '

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n]","import { defineStore } from 'pinia'\nimport tinycolor from 'tinycolor2'\nimport { omit } from 'lodash'\nimport { Slide, SlideTheme, PPTElement } from '@/types/slides'\nimport { slides } from '@/mocks/slides'\nimport { theme } from '@/mocks/theme'\nimport { layouts } from '@/mocks/layout'\n\ninterface RemoveElementPropData {\n id: string;\n propName: string | string[];\n}\n\ninterface UpdateElementData {\n id: string | string[];\n props: Partial;\n}\n\nexport interface SlidesState {\n theme: SlideTheme;\n slides: Slide[];\n slideIndex: number;\n viewportRatio: number;\n}\n\nexport const useSlidesStore = defineStore('slides', {\n state: (): SlidesState => ({\n theme: theme, // 主题样式\n slides: slides, // 幻灯片页面数据\n slideIndex: 0, // 当前页面索引\n viewportRatio: 0.5625, // 可是区域比例,默认16:9\n }),\n\n getters: {\n currentSlide(state) {\n return state.slides[state.slideIndex]\n },\n \n currentSlideAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide) return null\n const animations = currentSlide.animations\n if (!animations) return null\n \n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return animations.filter(animation => elIds.includes(animation.elId))\n },\n \n layouts(state) {\n const {\n themeColor,\n fontColor,\n fontName,\n backgroundColor,\n } = state.theme\n \n const subColor = tinycolor(fontColor).isDark() ? 'rgba(230, 230, 230, 0.5)' : 'rgba(180, 180, 180, 0.5)'\n \n const layoutsString = JSON.stringify(layouts)\n .replaceAll('{{themeColor}}', themeColor)\n .replaceAll('{{fontColor}}', fontColor)\n .replaceAll('{{fontName}}', fontName)\n .replaceAll('{{backgroundColor}}', backgroundColor)\n .replaceAll('{{subColor}}', subColor)\n \n return JSON.parse(layoutsString)\n },\n },\n\n actions: {\n setTheme(themeProps: Partial) {\n this.theme = { ...this.theme, ...themeProps }\n },\n \n setViewportRatio(viewportRatio: number) {\n this.viewportRatio = viewportRatio\n },\n \n setSlides(slides: Slide[]) {\n this.slides = slides\n },\n \n addSlide(slide: Slide | Slide[]) {\n const slides = Array.isArray(slide) ? slide : [slide]\n const addIndex = this.slideIndex + 1\n this.slides.splice(addIndex, 0, ...slides)\n this.slideIndex = addIndex\n },\n \n updateSlide(props: Partial) {\n const slideIndex = this.slideIndex\n this.slides[slideIndex] = { ...this.slides[slideIndex], ...props }\n },\n \n deleteSlide(slideId: string | string[]) {\n const slidesId = Array.isArray(slideId) ? slideId : [slideId]\n \n const deleteSlidesIndex = []\n for (let i = 0; i < slidesId.length; i++) {\n const index = this.slides.findIndex(item => item.id === slidesId[i])\n deleteSlidesIndex.push(index)\n }\n let newIndex = Math.min(...deleteSlidesIndex)\n \n const maxIndex = this.slides.length - slidesId.length - 1\n if (newIndex > maxIndex) newIndex = maxIndex\n \n this.slideIndex = newIndex\n this.slides = this.slides.filter(item => !slidesId.includes(item.id))\n },\n \n updateSlideIndex(index: number) {\n this.slideIndex = index\n },\n \n addElement(element: PPTElement | PPTElement[]) {\n const elements = Array.isArray(element) ? element : [element]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = [...currentSlideEls, ...elements]\n this.slides[this.slideIndex].elements = newEls\n },\n \n updateElement(data: UpdateElementData) {\n const { id, props } = data\n const elIdList = typeof id === 'string' ? [id] : id\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return elIdList.includes(el.id) ? { ...el, ...props } : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n \n removeElementProps(data: RemoveElementPropData) {\n const { id, propName } = data\n const propsNames = typeof propName === 'string' ? [propName] : propName\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return el.id === id ? omit(el, propsNames) : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n },\n})","import { defineStore } from 'pinia'\nimport { CreatingElement } from '@/types/edit'\nimport { ToolbarState } from '@/types/toolbar'\nimport { SYS_FONTS } from '@/configs/font'\nimport { TextAttrs, defaultRichTextAttrs } from '@/utils/prosemirror/utils'\nimport { isSupportFont } from '@/utils/font'\n\nimport { useSlidesStore } from './slides'\n\nexport interface MainState {\n activeElementIdList: string[];\n handleElementId: string;\n activeGroupElementId: string;\n canvasPercentage: number;\n canvasScale: number;\n thumbnailsFocus: boolean;\n editorAreaFocus: boolean;\n disableHotkeys: boolean;\n showGridLines: boolean;\n creatingElement: CreatingElement | null;\n availableFonts: typeof SYS_FONTS;\n toolbarState: ToolbarState;\n clipingImageElementId: string;\n isScaling: boolean;\n richTextAttrs: TextAttrs;\n selectedTableCells: string[];\n editingShapeElementId: string;\n selectedSlidesIndex: number[];\n}\n\nexport const useMainStore = defineStore('main', {\n state: (): MainState => ({\n activeElementIdList: [], // 被选中的元素ID集合,包含 handleElementId\n handleElementId: '', // 正在操作的元素ID\n activeGroupElementId: '', // 组合元素成员中,被选中可独立操作的元素ID\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n showGridLines: false, // 显示网格线\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n availableFonts: [], // 当前环境可用字体\n toolbarState: 'slideDesign', // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n editingShapeElementId: '', // 当前正处在编辑文字状态的形状ID \n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n }),\n\n getters: {\n activeElementList(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return []\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\n },\n \n handleElement(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return null\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\n },\n },\n\n actions: {\n setActiveElementIdList(activeElementIdList: string[]) {\n if (activeElementIdList.length === 1) this.handleElementId = activeElementIdList[0]\n else this.handleElementId = ''\n \n this.activeElementIdList = activeElementIdList\n },\n \n setHandleElementId(handleElementId: string) {\n this.handleElementId = handleElementId\n },\n \n setActiveGroupElementId(activeGroupElementId: string) {\n this.activeGroupElementId = activeGroupElementId\n },\n \n setCanvasPercentage(percentage: number) {\n this.canvasPercentage = percentage\n },\n \n setCanvasScale(scale: number) {\n this.canvasScale = scale\n },\n \n setThumbnailsFocus(isFocus: boolean) {\n this.thumbnailsFocus = isFocus\n },\n \n setEditorareaFocus(isFocus: boolean) {\n this.editorAreaFocus = isFocus\n },\n \n setDisableHotkeysState(disable: boolean) {\n this.disableHotkeys = disable\n },\n \n setGridLinesState(show: boolean) {\n this.showGridLines = show\n },\n \n setCreatingElement(element: CreatingElement | null) {\n this.creatingElement = element\n },\n \n setAvailableFonts() {\n this.availableFonts = SYS_FONTS.filter(font => isSupportFont(font.value))\n },\n \n setToolbarState(toolbarState: ToolbarState) {\n this.toolbarState = toolbarState\n },\n \n setClipingImageElementId(elId: string) {\n this.clipingImageElementId = elId\n },\n \n setRichtextAttrs(attrs: TextAttrs) {\n this.richTextAttrs = attrs\n },\n \n setSelectedTableCells(cells: string[]) {\n this.selectedTableCells = cells\n },\n \n setScalingState(isScaling: boolean) {\n this.isScaling = isScaling\n },\n \n setEditingShapeElementId(ellId: string) {\n this.editingShapeElementId = ellId\n },\n \n updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n },\n})","import Dexie from 'dexie'\nimport { Slide } from '@/types/slides'\n\nexport interface Snapshot {\n index: number;\n slides: Slide[];\n}\n\nclass SnapshotDatabase extends Dexie {\n public snapshots: Dexie.Table\n\n public constructor() {\n super('SnapshotDatabase')\n this.version(1).stores({\n snapshots: '++id'\n })\n this.snapshots = this.table('snapshots')\n }\n}\n\nexport const snapshotDB = new SnapshotDatabase()","import { defineStore } from 'pinia'\nimport { IndexableTypeArray } from 'dexie'\nimport { snapshotDB, Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number;\n snapshotLength: number;\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const lastSnapshot = snapshots.slice(-1)[0]\n \n if (lastSnapshot) {\n snapshotDB.snapshots.clear()\n }\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await snapshotDB.snapshots.add(newFirstSnapshot)\n this.setSnapshotCursor(0)\n this.setSnapshotLength(1)\n },\n \n async addSnapshot() {\n const slidesStore = useSlidesStore()\n\n // 获取当前indexeddb中全部快照的ID\n const allKeys = await snapshotDB.snapshots.orderBy('id').keys()\n \n let needDeleteKeys: IndexableTypeArray = []\n \n // 记录需要删除的快照ID\n // 若当前快照指针不处在最后一位,那么再添加快照时,应该将当前指针位置后面的快照全部删除,对应的实际情况是:\n // 用户撤回多次后,再进行操作(添加快照),此时原先被撤销的快照都应该被删除\n if (this.snapshotCursor >= 0 && this.snapshotCursor < allKeys.length - 1) {\n needDeleteKeys = allKeys.slice(this.snapshotCursor + 1)\n }\n \n // 添加新快照\n const snapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await snapshotDB.snapshots.add(snapshot)\n \n // 计算当前快照长度,用于设置快照指针的位置(此时指针应该处在最后一位,即:快照长度 - 1)\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\n \n // 快照数量超过长度限制时,应该将头部多余的快照删除\n const snapshotLengthLimit = 20\n if (snapshotLength > snapshotLengthLimit) {\n needDeleteKeys.push(allKeys[0])\n snapshotLength--\n }\n \n // 快照数大于1时,需要保证撤回操作后维持页面焦点不变:也就是将倒数第二个快照对应的索引设置为当前页的索引\n // https://github.com/pipipi-pikachu/PPTist/issues/27\n if (snapshotLength >= 2) {\n snapshotDB.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await snapshotDB.snapshots.bulkDelete(needDeleteKeys)\n \n this.setSnapshotCursor(snapshotLength - 1)\n this.setSnapshotLength(snapshotLength)\n },\n \n async unDo() {\n if (this.snapshotCursor <= 0) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor - 1\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n \n async reDo() {\n if (this.snapshotCursor >= this.snapshotLength - 1) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor + 1\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface KeyboardState {\n ctrlKeyState: boolean;\n shiftKeyState: boolean;\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n }),\n\n getters: {\n ctrlOrShiftKeyActive(state) {\n return state.ctrlKeyState || state.shiftKeyState\n },\n },\n\n actions: {\n setCtrlKeyState(active: boolean) {\n this.ctrlKeyState = active\n },\n setShiftKeyState(active: boolean) {\n this.shiftKeyState = active\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface ScreenState {\n screening: boolean;\n}\n\nexport const useScreenStore = defineStore('screen', {\n state: (): ScreenState => ({\n screening: false, // 是否进入放映状态\n }),\n\n actions: {\n setScreening(screening: boolean) {\n this.screening = screening\n },\n },\n})","import { padStart } from 'lodash'\n\n/**\n * 生成随机码\n * @param len 随机码长度\n */\nexport const createRandomCode = (len = 6) => {\n const charset = `_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`\n const maxLen = charset.length\n let ret = ''\n for (let i = 0; i < len; i++) {\n const randomIndex = Math.floor(Math.random() * maxLen)\n ret += charset[randomIndex]\n }\n return ret\n}\n\n/**\n * 补足数字位数\n * @param digit 数字\n * @param len 位数\n */\nexport const fillDigit = (digit: number, len: number) => {\n return padStart('' + digit, len, '0')\n}\n\n/**\n * 判断设备\n */\nexport const isPC = () => {\n return !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-55178b6a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-editor\" }\nconst _hoisted_2 = { class: \"layout-content\" }\nconst _hoisted_3 = { class: \"layout-content-center\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_EditorHeader = _resolveComponent(\"EditorHeader\")!\n const _component_Thumbnails = _resolveComponent(\"Thumbnails\")!\n const _component_CanvasTool = _resolveComponent(\"CanvasTool\")!\n const _component_Canvas = _resolveComponent(\"Canvas\")!\n const _component_Remark = _resolveComponent(\"Remark\")!\n const _component_Toolbar = _resolveComponent(\"Toolbar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_EditorHeader, { class: \"layout-header\" }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Thumbnails, { class: \"layout-content-left\" }),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_CanvasTool, { class: \"center-top\" }),\n _createVNode(_component_Canvas, {\n class: \"center-body\",\n style: _normalizeStyle({ height: `calc(100% - ${_ctx.remarkHeight + 40}px)` })\n }, null, 8, [\"style\"]),\n _createVNode(_component_Remark, {\n class: \"center-bottom\",\n height: _ctx.remarkHeight,\n \"onUpdate:height\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.remarkHeight) = $event)),\n style: _normalizeStyle({ height: `${_ctx.remarkHeight}px` })\n }, null, 8, [\"height\", \"style\"])\n ]),\n _createVNode(_component_Toolbar, { class: \"layout-content-right\" })\n ])\n ]))\n}","import CryptoJS from 'crypto-js'\n\nconst CRYPTO_KEY = 'pptist'\n\n/**\n * 加密\n * @param msg 待加密字符串\n */\nexport const encrypt = (msg: string) => {\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\n}\n\n/**\n * 解密\n * @param ciphertext 待解密字符串\n */\nexport const decrypt = (ciphertext: string) => {\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\n return bytes.toString(CryptoJS.enc.Utf8)\n}","import Clipboard from 'clipboard'\nimport { decrypt } from '@/utils/crypto'\n\n/**\n * 复制文本到剪贴板\n * @param text 文本内容\n */\nexport const copyText = (text: string) => {\n return new Promise((resolve, reject) => {\n const fakeElement = document.createElement('button')\n const clipboard = new Clipboard(fakeElement, {\n text: () => text,\n action: () => 'copy',\n container: document.body,\n })\n clipboard.on('success', e => {\n clipboard.destroy()\n resolve(e)\n })\n clipboard.on('error', e => {\n clipboard.destroy()\n reject(e)\n })\n document.body.appendChild(fakeElement)\n fakeElement.click()\n document.body.removeChild(fakeElement)\n })\n}\n\n// 读取剪贴板\nexport const readClipboard = (): Promise => {\n return new Promise((resolve, reject) => {\n if (navigator.clipboard?.readText) {\n navigator.clipboard.readText().then(text => {\n if (!text) reject('剪贴板为空或者不包含文本')\n return resolve(text)\n })\n }\n else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V')\n })\n}\n\n// 解析加密后的剪贴板内容\nexport const pasteCustomClipboardString = (text: string) => {\n let clipboardData\n try {\n clipboardData = JSON.parse(decrypt(text))\n }\n catch {\n clipboardData = text\n }\n\n return clipboardData\n}\n\n// 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式\nexport const pasteExcelClipboardString = (text: string): string[][] | null => {\n const lines: string[] = text.split('\\r\\n')\n\n if (lines[lines.length - 1] === '') lines.pop()\n\n let colCount = -1\n const data: string[][] = []\n for (const index in lines) {\n data[index] = lines[index].split('\\t')\n\n if (data[index].length === 1) return null\n if (colCount === -1) colCount = data[index].length\n else if (colCount !== data[index].length) return null\n }\n return data\n}","import tinycolor from 'tinycolor2'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\n\r\ninterface RotatedElementData {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n rotate: number;\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置范围\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedRange = (element: RotatedElementData) => {\r\n const { left, top, width, height, rotate = 0 } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - rotate - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - rotate) * Math.PI / 180\r\n\r\n const middleLeft = left + width / 2\r\n const middleTop = top + height / 2\r\n\r\n const xAxis = [\r\n middleLeft + radius * Math.cos(tlbraRadian),\r\n middleLeft + radius * Math.cos(trblaRadian),\r\n middleLeft - radius * Math.cos(tlbraRadian),\r\n middleLeft - radius * Math.cos(trblaRadian),\r\n ]\r\n const yAxis = [\r\n middleTop - radius * Math.sin(tlbraRadian),\r\n middleTop - radius * Math.sin(trblaRadian),\r\n middleTop + radius * Math.sin(tlbraRadian),\r\n middleTop + radius * Math.sin(trblaRadian),\r\n ]\r\n\r\n return {\r\n xRange: [Math.min(...xAxis), Math.max(...xAxis)],\r\n yRange: [Math.min(...yAxis), Math.max(...yAxis)],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置与旋转之前位置的偏离距离\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedOffset = (element: RotatedElementData) => {\r\n const { xRange: originXRange, yRange: originYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: 0,\r\n })\r\n const { xRange: rotatedXRange, yRange: rotatedYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n return {\r\n offsetX: rotatedXRange[0] - originXRange[0],\r\n offsetY: rotatedYRange[0] - originYRange[0],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的位置范围\r\n * @param element 元素信息\r\n */\r\nexport const getElementRange = (element: PPTElement) => {\r\n let minX, maxX, minY, maxY\r\n\r\n if (element.type === 'line') {\r\n minX = element.left\r\n maxX = element.left + Math.max(element.start[0], element.end[0])\r\n minY = element.top\r\n maxY = element.top + Math.max(element.start[1], element.end[1])\r\n }\r\n else if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height, rotate } = element\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n minX = xRange[0]\r\n maxX = xRange[1]\r\n minY = yRange[0]\r\n maxY = yRange[1]\r\n }\r\n else {\r\n minX = element.left\r\n maxX = element.left + element.width\r\n minY = element.top\r\n maxY = element.top + element.height\r\n }\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\n/**\r\n * 计算一组元素在画布中的位置范围\r\n * @param elementList 一组元素信息\r\n */\r\nexport const getElementListRange = (elementList: PPTElement[]) => {\r\n const leftValues: number[] = []\r\n const topValues: number[] = []\r\n const rightValues: number[] = []\r\n const bottomValues: number[] = []\r\n\r\n elementList.forEach(element => {\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n leftValues.push(minX)\r\n topValues.push(minY)\r\n rightValues.push(maxX)\r\n bottomValues.push(maxY)\r\n })\r\n\r\n const minX = Math.min(...leftValues)\r\n const maxX = Math.max(...rightValues)\r\n const minY = Math.min(...topValues)\r\n const maxY = Math.max(...bottomValues)\r\n\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\nexport interface AlignLine {\r\n value: number;\r\n range: [number, number];\r\n}\r\n\r\n/**\r\n * 将一组对齐吸附线进行去重:同位置的的多条对齐吸附线仅留下一条,取该位置所有对齐吸附线的最大值和最小值为新的范围\r\n * @param lines 一组对齐吸附线信息\r\n */\r\nexport const uniqAlignLines = (lines: AlignLine[]) => {\r\n const uniqLines: AlignLine[] = []\r\n lines.forEach(line => {\r\n const index = uniqLines.findIndex(_line => _line.value === line.value)\r\n if (index === -1) uniqLines.push(line)\r\n else {\r\n const uniqLine = uniqLines[index]\r\n const rangeMin = Math.min(uniqLine.range[0], line.range[0])\r\n const rangeMax = Math.max(uniqLine.range[1], line.range[1])\r\n const range: [number, number] = [rangeMin, rangeMax]\r\n const _line = { value: line.value, range }\r\n uniqLines[index] = _line\r\n }\r\n })\r\n return uniqLines\r\n}\r\n\r\n/**\r\n * 以元素列表为基础,为每一个元素生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于复制元素时,维持数据中各处元素ID原有的关系\r\n * 例如:原本两个组合的元素拥有相同的groupId,复制后依然会拥有另一个相同的groupId\r\n * @param elements 元素列表数据\r\n */\r\nexport const createElementIdMap = (elements: PPTElement[]) => {\r\n const groupIdMap = {}\r\n const elIdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = createRandomCode()\r\n }\r\n elIdMap[element.id] = createRandomCode()\r\n }\r\n return {\r\n groupIdMap,\r\n elIdMap,\r\n }\r\n}\r\n\r\n/**\r\n * 根据表格的主题色,获取对应用于配色的子颜色\r\n * @param themeColor 主题色\r\n */\r\nexport const getTableSubThemeColor = (themeColor: string) => {\r\n const rgba = tinycolor(themeColor)\r\n return [\r\n rgba.setAlpha(0.3).toRgbString(),\r\n rgba.setAlpha(0.1).toRgbString(),\r\n ]\r\n}\r\n\r\n/**\r\n * 获取线条元素路径字符串\r\n * @param element 线条元素\r\n */\r\nexport const getLineElementPath = (element: PPTLineElement) => {\r\n const start = element.start.join(',')\r\n const end = element.end.join(',')\r\n if (element.broken) {\r\n const mid = element.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n}","/**\r\n * 将普通文本转为带段落信息的HTML字符串\r\n * @param text 文本\r\n */\r\nexport const parseText2Paragraphs = (text: string) => {\r\n const htmlText = text.replace(/[\\n\\r]+/g, '
')\r\n const paragraphs = htmlText.split('
')\r\n let string = ''\r\n for (const paragraph of paragraphs) {\r\n if (paragraph) string += `
${paragraph}
`\r\n }\r\n return string\r\n}","import { debounce, throttle} from 'lodash'\nimport { useSnapshotStore } from '@/store'\n\nexport default () => {\n const snapshotStore = useSnapshotStore()\n\n // 添加历史快照(历史记录)\n const addHistorySnapshot = debounce(function() {\n snapshotStore.addSnapshot()\n }, 300, { trailing: true })\n\n // 重做\n const redo = throttle(function() {\n snapshotStore.reDo()\n }, 100, { leading: true, trailing: false })\n\n // 撤销\n const undo = throttle(function() {\n snapshotStore.unDo()\n }, 100, { leading: true, trailing: false })\n\n return {\n addHistorySnapshot,\n redo,\n undo,\n }\n}","interface ImageSize {\n width: number;\n height: number;\n}\n\n/**\n * 获取图片的原始宽高\n * @param src 图片地址\n */\nexport const getImageSize = (src: string): Promise => {\n return new Promise(resolve => {\n const img = document.createElement('img')\n img.src = src\n img.style.opacity = '0'\n document.body.appendChild(img)\n\n img.onload = () => {\n const imgWidth = img.clientWidth\n const imgHeight = img.clientHeight\n \n img.onload = null\n img.onerror = null\n\n document.body.removeChild(img)\n\n resolve({ width: imgWidth, height: imgHeight })\n }\n\n img.onerror = () => {\n img.onload = null\n img.onerror = null\n }\n })\n}\n\n/**\n * 读取图片文件的dataURL\n * @param file 图片文件\n */\nexport const getImageDataURL = (file: File): Promise => {\n return new Promise(resolve => {\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n resolve(reader.result as string)\n })\n reader.readAsDataURL(file)\n })\n}","export const VIEWPORT_SIZE = 1000","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { createRandomCode } from '@/utils/common'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { PPTLineElement, ChartType, PPTElement, TableCell, TableCellStyle, PPTShapeElement } from '@/types/slides'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface CommonElementPosition {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\ninterface LineElementPosition {\n top: number;\n left: number;\n start: [number, number];\n end: [number, number];\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 创建(插入)一个元素并将其设置为被选中元素\n const createElement = (element: PPTElement) => {\n slidesStore.addElement(element)\n mainStore.setActiveElementIdList([element.id])\n\n if (creatingElement.value) mainStore.setCreatingElement(null)\n\n setTimeout(() => {\n mainStore.setEditorareaFocus(true)\n }, 0)\n\n addHistorySnapshot()\n }\n\n /**\n * 创建图片元素\n * @param src 图片地址\n */\n const createImageElement = (src: string) => {\n getImageSize(src).then(({ width, height }) => {\n const scale = height / width\n \n if (scale < viewportRatio.value && width > VIEWPORT_SIZE) {\n width = VIEWPORT_SIZE\n height = width * scale\n }\n else if (height > VIEWPORT_SIZE * viewportRatio.value) {\n height = VIEWPORT_SIZE * viewportRatio.value\n width = height / scale\n }\n\n createElement({\n type: 'image',\n id: createRandomCode(),\n src,\n width,\n height,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n fixedRatio: true,\n rotate: 0,\n })\n })\n }\n \n /**\n * 创建图表元素\n * @param chartType 图表类型\n */\n const createChartElement = (chartType: ChartType) => {\n createElement({\n type: 'chart',\n id: createRandomCode(),\n chartType,\n left: 300,\n top: 81.25,\n width: 400,\n height: 400,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\n legends: ['系列1'],\n series: [\n [12, 19, 5, 2, 18],\n ],\n },\n })\n }\n \n /**\n * 创建表格元素\n * @param row 行数\n * @param col 列数\n */\n const createTableElement = (row: number, col: number) => {\n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n rowCells.push({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '', style })\n }\n data.push(rowCells)\n }\n\n const DEFAULT_CELL_WIDTH = 100\n const DEFAULT_CELL_HEIGHT = 36\n\n const colWidths: number[] = new Array(col).fill(1 / col)\n\n const width = col * DEFAULT_CELL_WIDTH\n const height = row * DEFAULT_CELL_HEIGHT\n\n createElement({\n type: 'table',\n id: createRandomCode(),\n width,\n height,\n colWidths,\n rotate: 0,\n data,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: theme.value.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n const createTextElement = (position: CommonElementPosition, content = '请输入内容') => {\n const { left, top, width, height } = position\n createElement({\n type: 'text',\n id: createRandomCode(),\n left, \n top, \n width, \n height,\n content,\n rotate: 0,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n })\n }\n \n /**\n * 创建形状元素\n * @param position 位置大小信息\n * @param data 形状路径信息\n */\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem) => {\n const { left, top, width, height } = position\n const newElement: PPTShapeElement = {\n type: 'shape',\n id: createRandomCode(),\n left, \n top, \n width, \n height,\n viewBox: data.viewBox,\n path: data.path,\n fill: theme.value.themeColor,\n fixedRatio: false,\n rotate: 0,\n }\n if (data.special) newElement.special = true\n createElement(newElement)\n }\n \n /**\n * 创建线条元素\n * @param position 位置大小信息\n * @param data 线条的路径和样式\n */\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\n const { left, top, start, end } = position\n\n const newElement: PPTLineElement = {\n type: 'line',\n id: createRandomCode(),\n left, \n top, \n start,\n end,\n points: data.points,\n color: theme.value.themeColor,\n style: data.style,\n width: 2,\n }\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n createElement(newElement)\n }\n \n /**\n * 创建LaTeX元素\n * @param svg SVG代码\n */\n const createLatexElement = (data: { path: string; latex: string; w: number; h: number; }) => {\n createElement({\n type: 'latex',\n id: createRandomCode(),\n width: data.w,\n height: data.h,\n rotate: 0,\n left: (VIEWPORT_SIZE - data.w) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - data.h) / 2,\n path: data.path,\n latex: data.latex,\n color: theme.value.fontColor,\n strokeWidth: 2,\n viewBox: [data.w, data.h],\n fixedRatio: true,\n })\n }\n \n /**\n * 创建视频元素\n * @param src 视频地址\n */\n const createVideoElement = (src: string) => {\n createElement({\n type: 'video',\n id: createRandomCode(),\n width: 500,\n height: 300,\n rotate: 0,\n left: (VIEWPORT_SIZE - 500) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 300) / 2,\n src,\n })\n }\n \n /**\n * 创建音频元素\n * @param src 音频地址\n */\n const createAudioElement = (src: string) => {\n createElement({\n type: 'audio',\n id: createRandomCode(),\n width: 50,\n height: 50,\n rotate: 0,\n left: (VIEWPORT_SIZE - 50) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 50) / 2,\n loop: false,\n autoplay: false,\n fixedRatio: true,\n color: theme.value.themeColor,\n src,\n })\n }\n\n return {\n createImageElement,\n createChartElement,\n createTableElement,\n createTextElement,\n createShapeElement,\n createLineElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { PPTElement, Slide } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { createElementIdMap } from '@/utils/element'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useCreateElement from '@/hooks/useCreateElement'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean;\n onlyElements?: boolean;\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n const { createTextElement } = useCreateElement()\n\n /**\n * 粘贴元素(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromClipboard = (elements: PPTElement[]) => {\n const { groupIdMap, elIdMap } = createElementIdMap(elements)\n const currentSlideElementIdList = currentSlide.value.elements.map(el => el.id)\n \n for (const element of elements) {\n const inCurrentSlide = currentSlideElementIdList.includes(element.id)\n \n element.id = elIdMap[element.id]\n\n if (inCurrentSlide) {\n element.left = element.left + 10\n element.top = element.top + 10\n }\n\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n slidesStore.addElement(elements)\n mainStore.setActiveElementIdList(Object.values(elIdMap))\n addHistorySnapshot()\n }\n\n /**\n * 粘贴页面\n * @param slide 页面数据\n */\n const addSlidesFromClipboard = (slides: Slide[]) => {\n const newSlides = slides.map(slide => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: createRandomCode(8),\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n /**\n * 粘贴普通文本:创建为新的文本元素\n * @param text 文本\n */\n const createTextElementFromClipboard = (text: string) => {\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, text)\n }\n\n /**\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\n * @param text 剪贴板内容\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\n */\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\n const onlySlide = options?.onlySlide || false\n const onlyElements = options?.onlyElements || false\n\n const clipboardData = pasteCustomClipboardString(text)\n\n // 元素或页面\n if (typeof clipboardData === 'object') {\n const { type, data } = clipboardData\n\n if (type === 'elements' && !onlySlide) addElementsFromClipboard(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromClipboard(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n addSlidesFromClipboard,\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { createElementIdMap } from '@/utils/element'\nimport { KEYS } from '@/configs/hotkey'\nimport { message } from 'ant-design-vue'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex } = storeToRefs(mainStore)\n const { currentSlide, slides, theme, slideIndex } = storeToRefs(slidesStore)\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n const selectedSlides = computed(() => slides.value.filter((item, index) => selectedSlidesIndex.value.includes(index)))\n const selectedSlidesId = computed(() => selectedSlides.value.map(item => item.id))\n\n const { pasteTextClipboardData, addSlidesFromClipboard } = usePasteTextClipboardData()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: createRandomCode(8),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n slidesStore.updateSlideIndex(0)\n mainStore.setActiveElementIdList([])\n slidesStore.setSlides([emptySlide])\n }\n\n /**\n * 移动页面焦点\n * @param command 移动页面焦点命令:上移、下移\n */\n const updateSlideIndex = (command: string) => {\n if (command === KEYS.UP && slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n // 将当前页面数据加密后复制到剪贴板\n const copySlide = () => {\n const text = encrypt(JSON.stringify({\n type: 'slides',\n data: selectedSlides.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setThumbnailsFocus(true)\n })\n }\n\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\n const pasteSlide = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text, { onlySlide: true })\n }).catch(err => message.warning(err))\n }\n\n // 创建一页空白页并添加到下一页\n const createSlide = () => {\n const emptySlide: Slide = {\n id: createRandomCode(8),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(emptySlide)\n addHistorySnapshot()\n }\n\n // 根据模板创建新页面\n const createSlideByTemplate = (slide: Slide) => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n const newSlide = {\n ...slide,\n id: createRandomCode(8),\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(newSlide)\n addHistorySnapshot()\n }\n\n // 将当前页复制一份到下一页\n const copyAndPasteSlide = () => {\n const slide = JSON.parse(JSON.stringify(currentSlide.value))\n addSlidesFromClipboard([slide])\n }\n\n // 删除当前页,若将删除全部页面,则执行重置幻灯片操作\n const deleteSlide = (targetSlidesId = selectedSlidesId.value) => {\n if (slides.value.length === targetSlidesId.length) resetSlides()\n else slidesStore.deleteSlide(targetSlidesId)\n\n mainStore.updateSelectedSlidesIndex([])\n\n addHistorySnapshot()\n }\n\n // 将当前页复制后删除(剪切)\n // 由于复制操作会导致多选状态消失,所以需要提前将需要删除的页面ID进行缓存\n const cutSlide = () => {\n const targetSlidesId = [...selectedSlidesId.value]\n copySlide()\n deleteSlide(targetSlidesId)\n }\n\n // 选中全部幻灯片\n const selectAllSlide = () => {\n const newSelectedSlidesIndex = Array.from(Array(slides.value.length), (item, index) => index)\n mainStore.setActiveElementIdList([])\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 锁定选中的元素,并清空选中元素状态\n const lockElement = () => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n \n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) element.lock = true\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([])\n addHistorySnapshot()\n }\n\n /**\n * 解除元素的锁定状态,并将其设置为当前选择元素\n * @param handleElement 需要解锁的元素\n */\n const unlockElement = (handleElement: PPTElement) => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n if (handleElement.groupId) {\n const groupElementIdList = []\n for (const element of newElementList) {\n if (element.groupId === handleElement.groupId) {\n element.lock = false\n groupElementIdList.push(element.id)\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList(groupElementIdList)\n }\n else {\n for (const element of newElementList) {\n if (element.id === handleElement.id) {\n element.lock = false\n break\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([handleElement.id])\n }\n addHistorySnapshot()\n }\n\n return {\n lockElement,\n unlockElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 删除全部选中元素\n // 组合元素成员中,存在被选中可独立操作的元素时,优先删除该元素。否则默认删除所有被选中的元素\n const deleteElement = () => {\n if (!activeElementIdList.value.length) return\n\n let newElementList: PPTElement[] = []\n if (activeGroupElementId.value) {\n newElementList = currentSlide.value.elements.filter(el => el.id !== activeGroupElementId.value)\n }\n else {\n newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\n }\n\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n // 删除内面内全部元素(无论是否选中)\n const deleteAllElements = () => {\n if (!currentSlide.value.elements.length) return\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: [] })\n addHistorySnapshot()\n }\n\n return {\n deleteElement,\n deleteAllElements,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 判断当前选中的元素是否可以组合\n */\n const canCombine = computed(() => {\n if (activeElementList.value.length < 2) return false\n\n const firstGroupId = activeElementList.value[0].groupId\n if (!firstGroupId) return true\n\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\n return !inSameGroup\n })\n\n /**\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\n */\n const combineElements = () => {\n if (!activeElementList.value.length) return\n\n // 生成一个新元素列表进行后续操作\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n // 生成分组ID\n const groupId = createRandomCode()\n\n // 收集需要组合的元素列表,并赋上唯一分组ID\n const combineElementList: PPTElement[] = []\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) {\n element.groupId = groupId\n combineElementList.push(element)\n }\n }\n\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\n const combineElementIdList = combineElementList.map(_element => _element.id)\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\n\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\n newElementList.splice(insertLevel, 0, ...combineElementList)\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n /**\n * 取消组合元素:移除选中元素的分组ID\n */\n const uncombineElements = () => {\n if (!activeElementList.value.length) return\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\n if (!hasElementInGroup) return\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\n }\n slidesStore.updateSlide({ elements: newElementList })\n\n // 取消组合后,需要重置激活元素状态\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\n mainStore.setActiveElementIdList(handleElementIdList)\n\n addHistorySnapshot()\n }\n\n return {\n canCombine,\n combineElements,\n uncombineElements,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { message } from 'ant-design-vue'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useDeleteElement from './useDeleteElement'\n\nexport default () => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeElementList } = storeToRefs(mainStore)\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { deleteElement } = useDeleteElement()\n\n // 将选中元素数据加密后复制到剪贴板\n const copyElement = () => {\n if (!activeElementIdList.value.length) return\n\n const text = encrypt(JSON.stringify({\n type: 'elements',\n data: activeElementList.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setEditorareaFocus(true)\n })\n }\n\n // 将选中元素复制后删除(剪切)\n const cutElement = () => {\n copyElement()\n deleteElement()\n }\n\n // 尝试将剪贴板元素数据解密后进行粘贴\n const pasteElement = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text)\n }).catch(err => message.warning(err))\n }\n\n // 将选中元素复制后立刻粘贴\n const quickCopyElement = () => {\n copyElement()\n pasteElement()\n }\n\n return {\n copyElement,\n cutElement,\n pasteElement,\n quickCopyElement,\n }\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\n\r\nexport default () => {\r\n const mainStore = useMainStore()\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n mainStore.setActiveElementIdList(newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将元素向指定方向移动指定的距离\r\n * 组合元素成员中,存在被选中可独立操作的元素时,优先移动该元素。否则默认移动所有被选中的元素\r\n * @param command 移动方向\r\n * @param step 移动距离\r\n */\r\n const moveElement = (command: string, step = 1) => {\r\n let newElementList: PPTElement[] = []\r\n\r\n const move = (el: PPTElement) => {\r\n let { left, top } = el\r\n switch (command) {\r\n case KEYS.LEFT: \r\n left = left - step\r\n break\r\n case KEYS.RIGHT: \r\n left = left + step\r\n break\r\n case KEYS.UP: \r\n top = top - step\r\n break\r\n case KEYS.DOWN: \r\n top = top + step\r\n break\r\n default: break\r\n }\r\n return { ...el, left, top }\r\n }\r\n\r\n if (activeGroupElementId.value) {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeGroupElementId.value === el.id ? move(el) : el\r\n })\r\n }\r\n else {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeElementIdList.value.includes(el.id) ? move(el) : el\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 获取组合元素层级范围\n * @param elementList 本页所有元素列表\n * @param combineElementList 组合元素列表\n */\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\n return {\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\n }\n }\n\n /**\n * 上移一层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n const nextElement = copyOfElementList[maxLevel + 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (nextElement.groupId) {\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return\n\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n const nextElement = copyOfElementList[level + 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n if (nextElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level + 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 下移一层,操作方式同上移\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const prevElement = copyOfElementList[minLevel - 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (prevElement.groupId) {\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n const prevElement = copyOfElementList[level - 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n if (prevElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level - 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置顶层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.push(...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\n copyOfElementList.splice(level, 1)\n copyOfElementList.push(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置底层,操作方式同置顶\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.unshift(...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n copyOfElementList.splice(level, 1)\n copyOfElementList.unshift(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 调整元素层级\n * @param element 需要调整层级的元素\n * @param command 调整命令:上移、下移、置顶、置底\n */\n const orderElement = (element: PPTElement, command: ElementOrderCommand) => {\n let newElementList\n \n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\n\n if (!newElementList) return\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n orderElement,\n }\n}","// 进入全屏\nexport const enterFullscreen = () => {\n const docElm = document.documentElement\n if (docElm.requestFullscreen) docElm.requestFullscreen() \n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => (\n document.mozFullScreen || \n document.webkitIsFullScreen || \n document.webkitFullScreen\n)","import { useScreenStore, useSlidesStore } from '@/store'\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\n\nexport default () => {\n const screenStore = useScreenStore()\n const slidesStore = useSlidesStore()\n\n // 进入放映状态(从当前页开始)\n const enterScreening = () => {\n enterFullscreen()\n screenStore.setScreening(true)\n }\n\n // 进入放映状态(从第一页开始)\n const enterScreeningFromStart = () => {\n slidesStore.updateSlideIndex(0)\n enterScreening()\n }\n\n // 退出放映状态\n const exitScreening = () => {\n screenStore.setScreening(false)\n if (isFullscreen()) exitFullscreen()\n }\n\n return {\n enterScreening,\n enterScreeningFromStart,\n exitScreening,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage } = storeToRefs(mainStore)\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 120\n const min = 60\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画笔百分比\n * @param percentage 百分比(小数形式,如0.8)\n */\n const setCanvasPercentage = (percentage: number) => {\n mainStore.setCanvasPercentage(percentage)\n }\n \n return {\n scaleCanvas,\n setCanvasPercentage,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useSlideHandler from './useSlideHandler'\nimport useLockElement from './useLockElement'\nimport useDeleteElement from './useDeleteElement'\nimport useCombineElement from './useCombineElement'\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\nimport useSelectAllElement from './useSelectAllElement'\nimport useMoveElement from './useMoveElement'\nimport useOrderElement from './useOrderElement'\nimport useHistorySnapshot from './useHistorySnapshot'\nimport useScreening from './useScreening'\nimport useScaleCanvas from './useScaleCanvas'\n\nexport default () => {\n const mainStore = useMainStore()\n const keyboardStore = useKeyboardStore()\n const {\n activeElementIdList,\n disableHotkeys,\n handleElement,\n handleElementId,\n editorAreaFocus,\n thumbnailsFocus,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\n const {\n updateSlideIndex,\n copySlide,\n createSlide,\n deleteSlide,\n cutSlide,\n copyAndPasteSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement } = useLockElement()\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n const { moveElement } = useMoveElement()\n const { orderElement } = useOrderElement()\n const { redo, undo } = useHistorySnapshot()\n const { enterScreening } = useScreening()\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\n\n const copy = () => {\n if (activeElementIdList.value.length) copyElement()\n else if (thumbnailsFocus.value) copySlide()\n }\n\n const cut = () => {\n if (activeElementIdList.value.length) cutElement()\n else if (thumbnailsFocus.value) cutSlide()\n }\n\n const quickCopy = () => {\n if (activeElementIdList.value.length) quickCopyElement()\n else if (thumbnailsFocus.value) copyAndPasteSlide()\n }\n\n const selectAll = () => {\n if (editorAreaFocus.value) selectAllElement()\n if (thumbnailsFocus.value) selectAllSlide()\n }\n\n const lock = () => {\n if (!editorAreaFocus.value) return\n lockElement()\n }\n const combine = () => {\n if (!editorAreaFocus.value) return\n combineElements()\n }\n\n const uncombine = () => {\n if (!editorAreaFocus.value) return\n uncombineElements()\n }\n\n const remove = () => {\n if (activeElementIdList.value.length) deleteElement()\n else if (thumbnailsFocus.value) deleteSlide()\n }\n\n const move = (key: string) => {\n if (activeElementIdList.value.length) moveElement(key)\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\n }\n\n const order = (command: ElementOrderCommand) => {\n if (!handleElement.value) return\n orderElement(handleElement.value, command)\n }\n\n const create = () => {\n if (!thumbnailsFocus.value) return\n createSlide()\n }\n\n const tabActiveElement = () => {\n if (!currentSlide.value.elements.length) return\n if (!handleElementId.value) {\n const firstElement = currentSlide.value.elements[0]\n mainStore.setActiveElementIdList([firstElement.id])\n return\n }\n const currentIndex = currentSlide.value.elements.findIndex(el => el.id === handleElementId.value)\n const nextIndex = currentIndex >= currentSlide.value.elements.length - 1 ? 0 : currentIndex + 1\n const nextElementId = currentSlide.value.elements[nextIndex].id\n\n mainStore.setActiveElementIdList([nextElementId])\n }\n\n const keydownListener = (e: KeyboardEvent) => {\n const { ctrlKey, shiftKey, altKey, metaKey } = e\n const ctrlOrMetaKeyActive = ctrlKey || metaKey\n \n const key = e.key.toUpperCase()\n\n if (ctrlOrMetaKeyActive && !ctrlKeyState.value) keyboardStore.setCtrlKeyState(true)\n if (shiftKey && !shiftKeyState.value) keyboardStore.setShiftKeyState(true)\n\n if (ctrlOrMetaKeyActive && key === KEYS.F) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setCtrlKeyState(false)\n }\n \n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \n\n if (ctrlOrMetaKeyActive && key === KEYS.C) {\n if (disableHotkeys.value) return\n e.preventDefault()\n copy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.X) {\n if (disableHotkeys.value) return\n e.preventDefault()\n cut()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.D) {\n if (disableHotkeys.value) return\n e.preventDefault()\n quickCopy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Z) {\n if (disableHotkeys.value) return\n e.preventDefault()\n undo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Y) {\n if (disableHotkeys.value) return\n e.preventDefault()\n redo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.A) {\n if (disableHotkeys.value) return\n e.preventDefault()\n selectAll()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.L) {\n if (disableHotkeys.value) return\n e.preventDefault()\n lock()\n }\n if (!shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n combine()\n }\n if (shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n uncombine()\n }\n if (altKey && key === KEYS.F) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.TOP)\n }\n if (altKey && key === KEYS.B) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.BOTTOM)\n }\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\n if (disableHotkeys.value) return\n e.preventDefault()\n remove()\n }\n if (key === KEYS.UP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.UP)\n }\n if (key === KEYS.DOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.DOWN)\n }\n if (key === KEYS.LEFT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.LEFT)\n }\n if (key === KEYS.RIGHT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.RIGHT)\n }\n if (key === KEYS.ENTER) {\n if (disableHotkeys.value) return\n e.preventDefault()\n create()\n }\n if (key === KEYS.MINUS) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('-')\n }\n if (key === KEYS.EQUAL) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('+')\n }\n if (key === KEYS.DIGIT_0) {\n if (disableHotkeys.value) return\n e.preventDefault()\n setCanvasPercentage(90)\n }\n if (key === KEYS.TAB) {\n if (disableHotkeys.value) return\n e.preventDefault()\n tabActiveElement()\n }\n }\n \n const keyupListener = () => {\n if (ctrlKeyState.value) keyboardStore.setCtrlKeyState(false)\n if (shiftKeyState.value) keyboardStore.setShiftKeyState(false)\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n document.addEventListener('keyup', keyupListener)\n window.addEventListener('blur', keyupListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n document.removeEventListener('keyup', keyupListener)\n window.removeEventListener('blur', keyupListener)\n })\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\nimport useCreateElement from './useCreateElement'\n\nexport default () => {\n const { editorAreaFocus, thumbnailsFocus, disableHotkeys } = storeToRefs(useMainStore())\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { createImageElement } = useCreateElement()\n\n // 粘贴图片到幻灯片元素\n const pasteImageFile = (imageFile: File) => {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n /**\n * 粘贴事件监听\n * @param e ClipboardEvent\n */\n const pasteListener = (e: ClipboardEvent) => {\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\n if (disableHotkeys.value) return\n\n if (!e.clipboardData) return\n\n const clipboardDataItems = e.clipboardData.items\n const clipboardDataFirstItem = clipboardDataItems[0]\n\n if (!clipboardDataFirstItem) return\n\n // 如果剪贴板内有图片,优先尝试读取图片\n for (const item of clipboardDataItems) {\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\n const imageFile = item.getAsFile()\n if (imageFile) pasteImageFile(imageFile)\n return\n }\n }\n \n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\n }\n }\n\n onMounted(() => {\n document.addEventListener('paste', pasteListener)\n })\n onUnmounted(() => {\n document.removeEventListener('paste', pasteListener)\n })\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-32a5341e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-header\" }\nconst _hoisted_2 = { class: \"left\" }\nconst _hoisted_3 = { class: \"menu-item\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"文件\", -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"导出 JSON\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"导出 PPTX\")\nconst _hoisted_8 = { class: \"menu-item\" }\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"编辑\", -1))\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"撤销\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"重做\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"添加页面\")\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"删除页面\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"重置幻灯片\")\nconst _hoisted_16 = { class: \"menu-item\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"演示\", -1))\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"从头开始\")\nconst _hoisted_20 = /*#__PURE__*/_createTextVNode(\"从当前页开始\")\nconst _hoisted_21 = { class: \"menu-item\" }\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode()\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"text\" }, \"帮助\", -1))\nconst _hoisted_24 = /*#__PURE__*/_createTextVNode(\"意见反馈\")\nconst _hoisted_25 = /*#__PURE__*/_createTextVNode(\"快捷键\")\nconst _hoisted_26 = { class: \"right\" }\nconst _hoisted_27 = {\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_28 = { class: \"menu-item\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFolderClose = _resolveComponent(\"IconFolderClose\")!\n const _component_MenuItem = _resolveComponent(\"MenuItem\")!\n const _component_Menu = _resolveComponent(\"Menu\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconPpt = _resolveComponent(\"IconPpt\")!\n const _component_IconHelpcenter = _resolveComponent(\"IconHelpcenter\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconGithub = _resolveComponent(\"IconGithub\")!\n const _component_HotkeyDoc = _resolveComponent(\"HotkeyDoc\")!\n const _component_Drawer = _resolveComponent(\"Drawer\")!\n const _component_FullscreenSpin = _resolveComponent(\"FullscreenSpin\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.exportJSON()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.exportPPTX()))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconFolderClose),\n _hoisted_4,\n _hoisted_5\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.undo()))\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.redo()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.createSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.deleteSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.toggleGridLines()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.showGridLines ? '关闭网格线' : '打开网格线'), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.resetSlides()))\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_IconEdit),\n _hoisted_9,\n _hoisted_10\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.enterScreeningFromStart()))\n }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.enterScreening()))\n }, {\n default: _withCtx(() => [\n _hoisted_20\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_IconPpt),\n _hoisted_17,\n _hoisted_18\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_Dropdown, { trigger: ['click'] }, {\n overlay: _withCtx(() => [\n _createVNode(_component_Menu, null, {\n default: _withCtx(() => [\n _createVNode(_component_MenuItem, {\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.goIssues()))\n }, {\n default: _withCtx(() => [\n _hoisted_24\n ]),\n _: 1\n }),\n _createVNode(_component_MenuItem, {\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.hotkeyDrawerVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_25\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_21, [\n _createVNode(_component_IconHelpcenter),\n _hoisted_22,\n _hoisted_23\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_26, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n title: \"幻灯片放映\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.enterScreening()))\n }, [\n _createVNode(_component_IconPpt, {\n size: \"18\",\n fill: \"#666\",\n style: {\"margin-top\":\"2px\"}\n })\n ])\n ]),\n _: 1\n }),\n _createElementVNode(\"a\", _hoisted_27, [\n _createElementVNode(\"div\", _hoisted_28, [\n _createVNode(_component_IconGithub, {\n size: \"18\",\n fill: \"#666\"\n })\n ])\n ])\n ]),\n _createVNode(_component_Drawer, {\n width: \"320\",\n placement: \"right\",\n visible: _ctx.hotkeyDrawerVisible,\n onClose: _cache[13] || (_cache[13] = ($event: any) => (_ctx.hotkeyDrawerVisible = false))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_FullscreenSpin, {\n loading: _ctx.exporting,\n tip: \"正在导出...\"\n }, null, 8, [\"loading\"])\n ]))\n}","export const childlessTags = ['style', 'script', 'template']\n\nexport const closingTags = ['html', 'head', 'body', 'p', 'dt', 'dd', 'li', 'option', 'thead', 'th', 'tbody', 'tr', 'td', 'tfoot', 'colgroup']\n\nexport const closingTagAncestorBreakers = {\n li: ['ul', 'ol', 'menu'],\n dt: ['dl'],\n dd: ['dl'],\n tbody: ['table'],\n thead: ['table'],\n tfoot: ['table'],\n tr: ['table'],\n td: ['table'],\n}\n\nexport const voidTags = ['!doctype', 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr']","import { startsWith, endsWith } from 'lodash'\nimport { Token } from './types'\nimport { childlessTags } from './tags'\n\ninterface State {\n str: string;\n position: number;\n tokens: Token[];\n}\n\nconst jumpPosition = (state: State, end: number) => {\n const len = end - state.position\n movePositopn(state, len)\n}\n\nconst movePositopn = (state: State, len: number) => {\n state.position = state.position + len\n}\n\nconst findTextEnd = (str: string, index: number) => {\n const isEnd = false\n while (!isEnd) {\n const textEnd = str.indexOf('<', index)\n if (textEnd === -1) {\n return textEnd\n }\n const char = str.charAt(textEnd + 1)\n if (char === '/' || char === '!' || /[A-Za-z0-9]/.test(char)) {\n return textEnd\n }\n index = textEnd + 1\n }\n return -1\n}\n\nconst lexText = (state: State) => {\n const { str } = state\n let textEnd = findTextEnd(str, state.position)\n if (textEnd === state.position) return\n if (textEnd === -1) {\n textEnd = str.length\n }\n\n const content = str.slice(state.position, textEnd)\n jumpPosition(state, textEnd)\n\n state.tokens.push({\n type: 'text', \n content, \n })\n}\n\nconst lexComment = (state: State) => {\n const { str } = state\n\n movePositopn(state, 4)\n let contentEnd = str.indexOf('-->', state.position)\n let commentEnd = contentEnd + 3\n if (contentEnd === -1) {\n contentEnd = commentEnd = str.length\n }\n\n const content = str.slice(state.position, contentEnd)\n jumpPosition(state, commentEnd)\n\n state.tokens.push({\n type: 'comment',\n content,\n })\n}\n\nconst lexTagName = (state: State) => {\n const { str } = state\n const len = str.length\n let start = state.position\n\n while (start < len) {\n const char = str.charAt(start)\n const isTagChar = !(/\\s/.test(char) || char === '/' || char === '>')\n if (isTagChar) break\n start++\n }\n\n let end = start + 1\n while (end < len) {\n const char = str.charAt(end)\n const isTagChar = !(/\\s/.test(char) || char === '/' || char === '>')\n if (!isTagChar) break\n end++\n }\n\n jumpPosition(state, end)\n const tagName = str.slice(start, end)\n state.tokens.push({\n type: 'tag',\n content: tagName\n })\n return tagName\n}\n\nconst lexTagAttributes = (state: State) => {\n const { str, tokens } = state\n let cursor = state.position\n let quote = null\n let wordBegin = cursor\n const words = []\n const len = str.length\n while (cursor < len) {\n const char = str.charAt(cursor)\n if (quote) {\n const isQuoteEnd = char === quote\n if (isQuoteEnd) quote = null\n cursor++\n continue\n }\n\n const isTagEnd = char === '/' || char === '>'\n if (isTagEnd) {\n if (cursor !== wordBegin) words.push(str.slice(wordBegin, cursor))\n break\n }\n\n const isWordEnd = /\\s/.test(char)\n if (isWordEnd) {\n if (cursor !== wordBegin) words.push(str.slice(wordBegin, cursor))\n wordBegin = cursor + 1\n cursor++\n continue\n }\n\n const isQuoteStart = char === '\\'' || char === '\"'\n if (isQuoteStart) {\n quote = char\n cursor++\n continue\n }\n\n cursor++\n }\n jumpPosition(state, cursor)\n\n const type = 'attribute'\n for (let i = 0; i < words.length; i++) {\n const word = words[i]\n\n const isNotPair = word.indexOf('=') === -1\n if (isNotPair) {\n const secondWord = words[i + 1]\n if (secondWord && startsWith(secondWord, '=')) {\n if (secondWord.length > 1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n const thirdWord = words[i + 2]\n i += 1\n if (thirdWord) {\n const newWord = word + '=' + thirdWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n }\n }\n if (endsWith(word, '=')) {\n const secondWord = words[i + 1]\n if (secondWord && secondWord.indexOf('=') === -1) {\n const newWord = word + secondWord\n tokens.push({ type, content: newWord })\n i += 1\n continue\n }\n\n const newWord = word.slice(0, -1)\n tokens.push({ type, content: newWord })\n continue\n }\n\n tokens.push({ type, content: word })\n }\n}\n\nconst lexSkipTag = (tagName: string, state: State) => {\n const { str, tokens } = state\n const safeTagName = tagName.toLowerCase()\n const len = str.length\n let index = state.position\n \n while (index < len) {\n const nextTag = str.indexOf(' {\n const { str } = state\n const secondChar = str.charAt(state.position + 1)\n const tagStartClose = secondChar === '/'\n movePositopn(state, tagStartClose ? 2 : 1)\n state.tokens.push({\n type: 'tag-start',\n close: tagStartClose,\n })\n\n const tagName = lexTagName(state)\n lexTagAttributes(state)\n\n const firstChar = str.charAt(state.position)\n const tagEndClose = firstChar === '/'\n movePositopn(state, tagEndClose ? 2 : 1)\n state.tokens.push({\n type: 'tag-end',\n close: tagEndClose,\n })\n return tagName\n}\n\nconst lex = (state: State) => {\n const str = state.str\n const len = str.length\n\n while (state.position < len) {\n const start = state.position\n lexText(state)\n\n if (state.position === start) {\n const isComment = startsWith(str, '!--', start + 1)\n if (isComment) lexComment(state)\n else {\n const tagName = lexTag(state)\n const safeTag = tagName.toLowerCase()\n if (childlessTags.includes(safeTag)) lexSkipTag(tagName, state)\n }\n }\n }\n}\n\nexport const lexer = (str: string): Token[] => {\n const state = {\n str,\n position: 0,\n tokens: [],\n }\n lex(state)\n return state.tokens\n}","import { Token, HTMLNode, TagToken, NormalElement, TagEndToken, AttributeToken, TextToken } from './types'\nimport { closingTags, closingTagAncestorBreakers, voidTags } from './tags'\n\ninterface StackItem {\n tagName: string | null;\n children: HTMLNode[];\n}\n\ninterface State {\n stack: StackItem[];\n cursor: number;\n tokens: Token[];\n}\n\nexport const parser = (tokens: Token[]) => {\n const root: StackItem = { tagName: null, children: [] }\n const state: State = { tokens, cursor: 0, stack: [root] }\n parse(state)\n return root.children\n}\n\nexport const hasTerminalParent = (tagName: string, stack: StackItem[]) => {\n const tagParents = closingTagAncestorBreakers[tagName]\n if (tagParents) {\n let currentIndex = stack.length - 1\n while (currentIndex >= 0) {\n const parentTagName = stack[currentIndex].tagName\n if (parentTagName === tagName) break\n if (tagParents.includes(parentTagName)) return true\n currentIndex--\n }\n }\n return false\n}\n\nexport const rewindStack = (stack: StackItem[], newLength: number) => {\n stack.splice(newLength)\n}\n\nexport const parse = (state: State) => {\n const { stack, tokens } = state\n let { cursor } = state\n let nodes = stack[stack.length - 1].children\n const len = tokens.length\n \n while (cursor < len) {\n const token = tokens[cursor]\n if (token.type !== 'tag-start') {\n nodes.push(token as TextToken)\n cursor++\n continue\n }\n\n const tagToken = tokens[++cursor] as TagToken\n cursor++\n const tagName = tagToken.content.toLowerCase()\n if (token.close) {\n let index = stack.length\n let shouldRewind = false\n while (--index > -1) {\n if (stack[index].tagName === tagName) {\n shouldRewind = true\n break\n }\n }\n while (cursor < len) {\n if (tokens[cursor].type !== 'tag-end') break\n cursor++\n }\n if (shouldRewind) {\n rewindStack(stack, index)\n break\n } \n else continue\n }\n\n const isClosingTag = closingTags.includes(tagName)\n let shouldRewindToAutoClose = isClosingTag\n if (shouldRewindToAutoClose) {\n shouldRewindToAutoClose = !hasTerminalParent(tagName, stack)\n }\n\n if (shouldRewindToAutoClose) {\n let currentIndex = stack.length - 1\n while (currentIndex > 0) {\n if (tagName === stack[currentIndex].tagName) {\n rewindStack(stack, currentIndex)\n const previousIndex = currentIndex - 1\n nodes = stack[previousIndex].children\n break\n }\n currentIndex = currentIndex - 1\n }\n }\n\n const attributes = []\n let tagEndToken: TagEndToken | undefined\n while (cursor < len) {\n const _token = tokens[cursor]\n if (_token.type === 'tag-end') {\n tagEndToken = _token\n break\n }\n attributes.push((_token as AttributeToken).content)\n cursor++\n }\n\n if (!tagEndToken) break\n\n cursor++\n const children: HTMLNode[] = []\n const elementNode: NormalElement = {\n type: 'element',\n tagName: tagToken.content,\n attributes,\n children,\n }\n nodes.push(elementNode)\n\n const hasChildren = !(tagEndToken.close || voidTags.includes(tagName))\n if (hasChildren) {\n stack.push({tagName, children})\n const innerState = { tokens, cursor, stack }\n parse(innerState)\n cursor = innerState.cursor\n }\n }\n state.cursor = cursor\n}","import { HTMLNode, CommentOrTextAST, ElementAST, AST } from './types'\n\nexport const splitHead = (str: string, sep: string) => {\n const idx = str.indexOf(sep)\n if (idx === -1) return [str]\n return [str.slice(0, idx), str.slice(idx + sep.length)]\n}\n\nconst unquote = (str: string) => {\n const car = str.charAt(0)\n const end = str.length - 1\n const isQuoteStart = car === '\"' || car === \"'\"\n if (isQuoteStart && car === str.charAt(end)) {\n return str.slice(1, end)\n }\n return str\n}\n\nconst formatAttributes = (attributes: string[]) => {\n return attributes.map(attribute => {\n const parts = splitHead(attribute.trim(), '=')\n const key = parts[0]\n const value = typeof parts[1] === 'string' ? unquote(parts[1]) : null\n return { key, value }\n })\n}\n\nexport const format = (nodes: HTMLNode[]): AST[] => {\n return nodes.map(node => { \n if (node.type === 'element') {\n const children = format(node.children)\n const item: ElementAST = {\n type: 'element',\n tagName: node.tagName.toLowerCase(),\n attributes: formatAttributes(node.attributes),\n children,\n }\n return item\n }\n\n const item: CommentOrTextAST = {\n type: node.type,\n content: node.content,\n }\n return item\n })\n}","// 参考:https://github.com/andrejewski/himalaya 用TypeScript重写并简化部分功能\n\nimport { lexer } from './lexer'\nimport { parser } from './parser'\nimport { format } from './format'\nimport { toHTML } from './stringify'\nimport type { AST } from './types'\n\nexport const toAST = (str: string) => {\n const tokens = lexer(str)\n const nodes = parser(tokens)\n return format(nodes)\n}\n\nexport { toHTML, AST }","import { SVGPathData } from 'svg-pathdata'\nimport arcToBezier from 'svg-arc-to-cubic-bezier'\n\nconst typeMap = {\n 1: 'Z',\n 2: 'M',\n 4: 'H',\n 8: 'V',\n 16: 'L',\n 32: 'C',\n 64: 'S',\n 128: 'Q',\n 256: 'T',\n 512: 'A',\n}\n\n/**\n * 简单解析SVG路径\n * @param d SVG path d属性\n */\nexport const parseSvgPath = (d: string) => {\n const pathData = new SVGPathData(d)\n\n const ret = pathData.commands.map(item => {\n return { ...item, type: typeMap[item.type] }\n })\n return ret\n}\n\nexport type SvgPath = ReturnType\n\n/**\n * 解析SVG路径,并将圆弧(A)类型的路径转为三次贝塞尔(C)类型的路径\n * @param d SVG path d属性\n */\nexport const toPoints = (d: string) => {\n const pathData = new SVGPathData(d)\n \n const points = []\n for (const item of pathData.commands) {\n const type = typeMap[item.type]\n\n if (item.type === 2 || item.type === 16) {\n points.push({\n x: item.x,\n y: item.y,\n relative: item.relative,\n type,\n })\n }\n if (item.type === 32) {\n points.push({\n x: item.x, \n y: item.y,\n curve: {\n type: 'cubic',\n x1: item.x1,\n y1: item.y1,\n x2: item.x2,\n y2: item.y2,\n },\n relative: item.relative,\n type,\n })\n }\n else if (item.type === 128) {\n points.push({\n x: item.x, \n y: item.y,\n curve: {\n type: 'quadratic',\n x1: item.x1,\n y1: item.y1,\n },\n relative: item.relative,\n type,\n })\n }\n else if (item.type === 512) {\n const lastPoint = points[points.length - 1]\n if (!['M', 'L', 'Q', 'C'].includes(lastPoint.type)) continue\n\n const cubicBezierPoints = arcToBezier({\n px: lastPoint.x as number,\n py: lastPoint.y as number,\n cx: item.x,\n cy: item.y,\n rx: item.rX,\n ry: item.rY,\n xAxisRotation: item.xRot,\n largeArcFlag: item.lArcFlag,\n sweepFlag: item.sweepFlag,\n })\n for (const cbPoint of cubicBezierPoints) {\n points.push({\n x: cbPoint.x, \n y: cbPoint.y,\n curve: {\n type: 'cubic',\n x1: cbPoint.x1,\n y1: cbPoint.y1,\n x2: cbPoint.x2,\n y2: cbPoint.y2,\n },\n relative: false,\n type: 'C',\n })\n }\n }\n else if (item.type === 1) {\n points.push({ close: true, type })\n }\n else continue\n }\n return points\n}\n\nexport type SvgPoints = ReturnType","// svg转base64图片,参考:https://github.com/scriptex/svg64\n\nconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\nconst PREFIX = 'data:image/svg+xml;base64,'\n\nconst utf8Encode = (string: string) => {\n string = string.replace(/\\r\\n/g, '\\n')\n let utftext = ''\n\n for (let n = 0; n < string.length; n++) {\n const c = string.charCodeAt(n)\n\n if (c < 128) {\n utftext += String.fromCharCode(c)\n }\n else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n else {\n utftext += String.fromCharCode((c >> 12) | 224)\n utftext += String.fromCharCode(((c >> 6) & 63) | 128)\n utftext += String.fromCharCode((c & 63) | 128)\n }\n }\n\n return utftext\n}\n\nconst encode = (input: string) => {\n let output = ''\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4\n let i = 0\n input = utf8Encode(input)\n while (i < input.length) {\n chr1 = input.charCodeAt(i++)\n chr2 = input.charCodeAt(i++)\n chr3 = input.charCodeAt(i++)\n enc1 = chr1 >> 2\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4)\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6)\n enc4 = chr3 & 63\n if (isNaN(chr2)) enc3 = enc4 = 64\n else if (isNaN(chr3)) enc4 = 64\n output = output + characters.charAt(enc1) + characters.charAt(enc2) + characters.charAt(enc3) + characters.charAt(enc4)\n }\n return output\n}\n\nexport const svg2Base64 = (element: Element) => {\n const XMLS = new XMLSerializer()\n const svg = XMLS.serializeToString(element)\n\n return PREFIX + encode(svg)\n}","import { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { trim } from 'lodash'\nimport { saveAs } from 'file-saver'\nimport pptxgen from 'pptxgenjs'\nimport tinycolor from 'tinycolor2'\nimport { useSlidesStore } from '@/store'\nimport { getElementRange, getLineElementPath, getTableSubThemeColor } from '@/utils/element'\nimport { AST, toAST } from '@/utils/htmlParser'\nimport { SvgPoints, toPoints } from '@/utils/svgPathParser'\nimport { svg2Base64 } from '@/utils/svg2Base64'\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const { slides } = storeToRefs(useSlidesStore())\n\n const exporting = ref(false)\n \n // 导出JSON文件\n const exportJSON = () => {\n const blob = new Blob([JSON.stringify(slides.value)], { type: '' })\n saveAs(blob, 'pptist_slides.json')\n }\n\n // 格式化颜色值为 透明度 + HexString,供pptxgenjs使用\n const formatColor = (_color: string) => {\n const c = tinycolor(_color)\n const alpha = c.getAlpha()\n const color = alpha === 0 ? '#ffffff' : c.setAlpha(1).toHexString()\n return {\n alpha,\n color,\n }\n }\n\n type FormatColor = ReturnType\n\n // 将HTML字符串格式化为pptxgenjs所需的格式\n // 核心思路:将HTML字符串按样式分片平铺,每个片段需要继承祖先元素的样式信息,遇到块级元素需要换行\n const formatHTML = (html: string) => {\n const ast = toAST(html)\n\n const slices: pptxgen.TextProps[] = []\n const parse = (obj: AST[], baseStyleObj = {}) => {\n for (const item of obj) {\n if ('tagName' in item && ['div', 'ul', 'li', 'p'].includes(item.tagName) && slices.length) {\n const lastSlice = slices[slices.length - 1]\n if (!lastSlice.options) lastSlice.options = {}\n lastSlice.options.breakLine = true\n }\n\n const styleObj = { ...baseStyleObj }\n const styleAttr = 'attributes' in item ? item.attributes.find(attr => attr.key === 'style') : null\n if (styleAttr && styleAttr.value) {\n const styleArr = styleAttr.value.split(';')\n for (const styleItem of styleArr) {\n const [_key, _value] = styleItem.split(': ')\n const [key, value] = [trim(_key), trim(_value)]\n if (key && value) styleObj[key] = value\n }\n }\n\n if ('tagName' in item) {\n if (item.tagName === 'em') {\n styleObj['font-style'] = 'italic'\n }\n if (item.tagName === 'strong') {\n styleObj['font-weight'] = 'bold'\n }\n if (item.tagName === 'sup') {\n styleObj['vertical-align'] = 'super'\n }\n if (item.tagName === 'sub') {\n styleObj['vertical-align'] = 'sub'\n }\n }\n\n if ('tagName' in item && item.tagName === 'br') {\n slices.push({ text: '', options: { breakLine: true } })\n }\n else if ('content' in item) {\n const text = item.content.replace(/\\n/g, '').replace(/ /g, ' ')\n const options: pptxgen.TextPropsOptions = {}\n\n if (styleObj['font-size']) {\n options.fontSize = parseInt(styleObj['font-size']) * 0.75\n }\n if (styleObj['color']) {\n options.color = formatColor(styleObj['color']).color\n }\n if (styleObj['background-color']) {\n options.highlight = formatColor(styleObj['background-color']).color\n }\n if (styleObj['text-decoration-line']) {\n if (styleObj['text-decoration-line'].indexOf('underline') !== -1) {\n options.underline = {\n color: options.color || '#000000',\n style: 'sng',\n }\n }\n if (styleObj['text-decoration-line'].indexOf('line-through') !== -1) {\n options.strike = 'sngStrike'\n }\n }\n if (styleObj['text-decoration']) {\n if (styleObj['text-decoration'].indexOf('underline') !== -1) {\n options.underline = {\n color: options.color || '#000000',\n style: 'sng',\n }\n }\n if (styleObj['text-decoration'].indexOf('line-through') !== -1) {\n options.strike = 'sngStrike'\n }\n }\n if (styleObj['vertical-align']) {\n if (styleObj['vertical-align'] === 'super') options.superscript = true\n if (styleObj['vertical-align'] === 'sub') options.subscript = true\n }\n if (styleObj['text-align']) options.align = styleObj['text-align']\n if (styleObj['font-weight']) options.bold = styleObj['font-weight'] === 'bold'\n if (styleObj['font-style']) options.italic = styleObj['font-style'] === 'italic'\n if (styleObj['font-family']) options.fontFace = styleObj['font-family']\n\n slices.push({ text, options })\n }\n else if ('children' in item) parse(item.children, styleObj)\n }\n }\n parse(ast)\n return slices\n }\n\n type Points = Array<\n | { x: number; y: number; moveTo?: boolean }\n | { x: number; y: number; curve: { type: 'arc'; hR: number; wR: number; stAng: number; swAng: number } }\n | { x: number; y: number; curve: { type: 'quadratic'; x1: number; y1: number } }\n | { x: number; y: number; curve: { type: 'cubic'; x1: number; y1: number; x2: number; y2: number } }\n | { close: true }\n >\n\n // 将SVG路径信息格式化为pptxgenjs所需要的格式\n const formatPoints = (points: SvgPoints, scale = { x: 1, y: 1 }): Points => {\n return points.map(point => {\n if (point.close !== undefined) {\n return { close: true }\n }\n else if (point.type === 'M') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n moveTo: true,\n }\n }\n else if (point.curve) {\n if (point.curve.type === 'cubic') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n curve: {\n type: 'cubic',\n x1: (point.curve.x1 as number) / 100 * scale.x,\n y1: (point.curve.y1 as number) / 100 * scale.y,\n x2: (point.curve.x2 as number) / 100 * scale.x,\n y2: (point.curve.y2 as number) / 100 * scale.y,\n },\n }\n }\n else if (point.curve.type === 'quadratic') {\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n curve: {\n type: 'quadratic',\n x1: (point.curve.x1 as number) / 100 * scale.x,\n y1: (point.curve.y1 as number) / 100 * scale.y,\n },\n }\n }\n }\n return {\n x: point.x / 100 * scale.x,\n y: point.y / 100 * scale.y,\n }\n })\n }\n\n // 导出PPTX文件\n const exportPPTX = () => {\n exporting.value = true\n const pptx = new pptxgen()\n\n for (const slide of slides.value) {\n const pptxSlide = pptx.addSlide()\n\n if (slide.background) {\n const background = slide.background\n if (background.type === 'image' && background.image) {\n pptxSlide.background = { data: background.image }\n }\n else if (background.type === 'solid' && background.color) {\n const c = formatColor(background.color)\n pptxSlide.background = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n else if (background.type === 'gradient' && background.gradientColor) {\n const [color1, color2] = background.gradientColor\n const color = tinycolor.mix(color1, color2).toHexString()\n const c = formatColor(color)\n pptxSlide.background = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n }\n\n if (!slide.elements) continue\n\n for (const el of slide.elements) {\n if (el.type === 'text') {\n const textProps = formatHTML(el.content)\n\n const options: pptxgen.TextPropsOptions = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fontSize: 20 * 0.75,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: 'middle',\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.wordSpace) options.charSpacing = el.wordSpace * 0.75\n if (el.lineHeight) options.lineSpacingMultiple = el.lineHeight * 0.75\n if (el.fill) {\n const c = formatColor(el.fill)\n const opacity = el.opacity === undefined ? 1 : el.opacity\n options.fill = { color: c.color, transparency: (1 - c.alpha * opacity) * 100 }\n }\n if (el.defaultColor) options.color = formatColor(el.defaultColor).color\n if (el.defaultFontName) options.fontFace = el.defaultFontName\n if (el.shadow) {\n const c = formatColor(el.shadow.color)\n options.shadow = {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: el.shadow.blur * 0.75,\n offset: (el.shadow.h + el.shadow.v) / 2 * 0.75,\n angle: 45,\n }\n }\n\n pptxSlide.addText(textProps, options)\n }\n\n else if (el.type === 'image') {\n const options: pptxgen.ImageProps = {\n path: el.src,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.flipH) options.flipH = el.flipH\n if (el.flipV) options.flipV = el.flipV\n if (el.rotate) options.rotate = el.rotate\n if (el.clip && el.clip.shape === 'ellipse') options.rounding = true\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n\n else if (el.type === 'shape') {\n if (el.special) {\n const svgRef = document.querySelector(`.thumbnail-list .base-element-${el.id} svg`) as HTMLElement\n const base64SVG = svg2Base64(svgRef)\n\n const options: pptxgen.ImageProps = {\n data: base64SVG,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n else {\n const scale = {\n x: el.width / el.viewBox,\n y: el.height / el.viewBox,\n }\n const points = formatPoints(toPoints(el.path), scale)\n \n const fillColor = formatColor(el.fill)\n const opacity = el.opacity === undefined ? 1 : el.opacity\n \n const options: pptxgen.ShapeProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fill: { color: fillColor.color, transparency: (1 - fillColor.alpha * opacity) * 100 },\n points,\n }\n if (el.flipH) options.flipH = el.flipH\n if (el.flipV) options.flipV = el.flipV\n if (el.outline?.width) {\n options.line = {\n color: formatColor(el.outline?.color || '#000000').color, \n width: el.outline.width * 0.75, \n dashType: el.outline.style === 'solid' ? 'solid' : 'dash',\n }\n }\n if (el.shadow) {\n const c = formatColor(el.shadow.color)\n options.shadow = {\n type: 'outer',\n color: c.color.replace('#', ''),\n opacity: c.alpha,\n blur: el.shadow.blur * 0.75,\n offset: (el.shadow.h + el.shadow.v) / 2 * 0.75,\n angle: 45,\n }\n }\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addShape('custGeom' as pptxgen.ShapeType, options)\n }\n if (el.text) {\n const textProps = formatHTML(el.text.content)\n\n const options: pptxgen.TextPropsOptions = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n fontSize: 20 * 0.75,\n fontFace: '微软雅黑',\n color: '#000000',\n valign: el.text.align,\n }\n if (el.rotate) options.rotate = el.rotate\n if (el.text.defaultColor) options.color = formatColor(el.text.defaultColor).color\n if (el.text.defaultFontName) options.fontFace = el.text.defaultFontName\n\n pptxSlide.addText(textProps, options)\n }\n }\n\n else if (el.type === 'line') {\n const path = getLineElementPath(el)\n const points = formatPoints(toPoints(path))\n const { minX, maxX, minY, maxY } = getElementRange(el)\n\n const options: pptxgen.ShapeProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: (maxX - minX) / 100,\n h: (maxY - minY) / 100,\n line: {\n color: formatColor(el.color).color, \n width: el.width * 0.75, \n dashType: el.style === 'solid' ? 'solid' : 'dash',\n beginArrowType: el.points[0] ? 'arrow' : 'none',\n endArrowType: el.points[1] ? 'arrow' : 'none',\n },\n points,\n }\n pptxSlide.addShape('custGeom' as pptxgen.ShapeType, options)\n }\n\n else if (el.type === 'chart') {\n const chartData = []\n for (let i = 0; i < el.data.series.length; i++) {\n const item = el.data.series[i]\n chartData.push({\n name: `系列${i + 1}`,\n labels: el.data.labels,\n values: item,\n })\n }\n\n let chartColors: string[] = []\n if (el.themeColor.length === 10) chartColors = el.themeColor.map(color => formatColor(color).color)\n else if (el.themeColor.length === 1) chartColors = tinycolor(el.themeColor[0]).analogous(10).map(color => formatColor(color.toHexString()).color)\n else {\n const len = el.themeColor.length\n const supplement = tinycolor(el.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toHexString())\n chartColors = [...el.themeColor.slice(0, len - 1), ...supplement].map(color => formatColor(color).color)\n }\n \n const options: pptxgen.IChartOpts = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n chartColors: el.chartType === 'pie' ? chartColors : chartColors.slice(0, el.data.series.length),\n }\n\n if (el.fill) options.fill = formatColor(el.fill).color\n if (el.legend) {\n options.showLegend = true\n options.legendPos = el.legend === 'top' ? 't' : 'b'\n options.legendColor = formatColor(el.gridColor || '#000000').color\n options.legendFontSize = 14 * 0.75\n }\n\n let type = pptx.ChartType.bar\n if (el.chartType === 'bar') {\n type = pptx.ChartType.bar\n options.barDir = el.options?.horizontalBars ? 'bar' : 'col'\n }\n else if (el.chartType === 'line') {\n if (el.options?.showArea) type = pptx.ChartType.area\n else if (el.options?.showLine === false) {\n type = pptx.ChartType.scatter\n\n chartData.unshift({ name: 'X-Axis', values: Array(el.data.series[0].length).fill(0).map((v, i) => i) })\n options.lineSize = 0\n }\n else type = pptx.ChartType.line\n\n if (el.options?.lineSmooth) options.lineSmooth = true\n }\n else if (el.chartType === 'pie') {\n if (el.options?.donut) {\n type = pptx.ChartType.doughnut\n options.holeSize = 75\n }\n else type = pptx.ChartType.pie\n }\n \n pptxSlide.addChart(type, chartData, options)\n }\n\n else if (el.type === 'table') {\n const hiddenCells = []\n for (let i = 0; i < el.data.length; i++) {\n const rowData = el.data[i]\n\n for (let j = 0; j < rowData.length; j++) {\n const cell = rowData[j]\n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) hiddenCells.push(`${row}_${col}`)\n }\n }\n }\n }\n\n const tableData = []\n\n const theme = el.theme\n let themeColor: FormatColor | null = null\n let subThemeColors: FormatColor[] = []\n if (theme) {\n themeColor = formatColor(theme.color)\n subThemeColors = getTableSubThemeColor(theme.color).map(item => formatColor(item))\n }\n\n for (let i = 0; i < el.data.length; i++) {\n const row = el.data[i]\n const _row = []\n\n for (let j = 0; j < row.length; j++) {\n const cell = row[j]\n const cellOptions: pptxgen.TableCellProps = {\n colspan: cell.colspan,\n rowspan: cell.rowspan,\n bold: cell.style?.bold || false,\n italic: cell.style?.em || false,\n underline: { style: cell.style?.underline ? 'sng' : 'none' },\n align: cell.style?.align || 'left',\n valign: 'middle',\n fontFace: cell.style?.fontname || '微软雅黑',\n fontSize: (cell.style?.fontsize ? parseInt(cell.style?.fontsize) : 14) * 0.75,\n }\n if (theme && themeColor) {\n let c: FormatColor\n if (i % 2 === 0) c = subThemeColors[1]\n else c = subThemeColors[0]\n\n if (theme.rowHeader && i === 0) c = themeColor\n else if (theme.rowFooter && i === el.data.length - 1) c = themeColor\n else if (theme.colHeader && j === 0) c = themeColor\n else if (theme.colFooter && j === row.length - 1) c = themeColor\n\n cellOptions.fill = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n if (cell.style?.backcolor) {\n const c = formatColor(cell.style.backcolor)\n cellOptions.fill = { color: c.color, transparency: (1 - c.alpha) * 100 }\n }\n if (cell.style?.color) cellOptions.color = formatColor(cell.style.color).color\n\n if (!hiddenCells.includes(`${i}_${j}`)) {\n _row.push({\n text: cell.text,\n options: cellOptions,\n })\n }\n }\n if (_row.length) tableData.push(_row)\n }\n\n const options: pptxgen.TableProps = {\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n colW: el.colWidths.map(item => el.width * item / 100),\n }\n if (el.theme) options.fill = { color: '#ffffff' }\n if (el.outline.width && el.outline.color) {\n options.border = {\n type: el.outline.style === 'solid' ? 'solid' : 'dash',\n pt: el.outline.width * 0.75,\n color: formatColor(el.outline.color).color,\n }\n }\n\n pptxSlide.addTable(tableData, options)\n }\n \n else if (el.type === 'latex') {\n const svgRef = document.querySelector(`.thumbnail-list .base-element-${el.id} svg`) as HTMLElement\n const base64SVG = svg2Base64(svgRef)\n\n const options: pptxgen.ImageProps = {\n data: base64SVG,\n x: el.left / 100,\n y: el.top / 100,\n w: el.width / 100,\n h: el.height / 100,\n }\n if (el.link) {\n const { type, target } = el.link\n if (type === 'web') options.hyperlink = { url: target }\n else if (type === 'slide') {\n const index = slides.value.findIndex(slide => slide.id === target)\n if (index !== -1) options.hyperlink = { slide: index + 1 }\n }\n }\n\n pptxSlide.addImage(options)\n }\n }\n }\n pptx.writeFile({ fileName: `pptist.pptx` }).then(() => exporting.value = false).catch(() => {\n exporting.value = false\n message.error('导出失败')\n })\n }\n\n return {\n exporting,\n exportJSON,\n exportPPTX,\n }\n}","\n\n\n\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=0418e74e&scoped=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=0418e74e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0418e74e\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useExport from '@/hooks/useExport'\n\nimport HotkeyDoc from './HotkeyDoc.vue'\n\nexport default defineComponent({\n name: 'editor-header',\n components: {\n HotkeyDoc,\n },\n setup() {\n const mainStore = useMainStore()\n const { showGridLines } = storeToRefs(mainStore)\n\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { createSlide, deleteSlide, resetSlides } = useSlideHandler()\n const { redo, undo } = useHistorySnapshot()\n const { exporting, exportJSON, exportPPTX } = useExport()\n\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n const hotkeyDrawerVisible = ref(false)\n\n const goIssues = () => {\n window.open('https://github.com/pipipi-pikachu/PPTist/issues')\n }\n\n return {\n redo,\n undo,\n showGridLines,\n hotkeyDrawerVisible,\n exporting,\n enterScreening,\n enterScreeningFromStart,\n createSlide,\n deleteSlide,\n toggleGridLines,\n resetSlides,\n exportJSON,\n exportPPTX,\n goIssues,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=32a5341e&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=32a5341e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32a5341e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1386e8fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementCreateSelection = _resolveComponent(\"ElementCreateSelection\")!\n const _component_AlignmentLine = _resolveComponent(\"AlignmentLine\")!\n const _component_MultiSelectOperate = _resolveComponent(\"MultiSelectOperate\")!\n const _component_Operate = _resolveComponent(\"Operate\")!\n const _component_ViewportBackground = _resolveComponent(\"ViewportBackground\")!\n const _component_MouseSelection = _resolveComponent(\"MouseSelection\")!\n const _component_EditableElement = _resolveComponent(\"EditableElement\")!\n const _component_LinkDialog = _resolveComponent(\"LinkDialog\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"canvas\",\n ref: \"canvasRef\",\n onMousewheel: _cache[3] || (_cache[3] = $event => _ctx.handleMousewheelCanvas($event)),\n onMousedown: _cache[4] || (_cache[4] = $event => _ctx.handleClickBlankArea($event))\n }, [\n (_ctx.creatingElement)\n ? (_openBlock(), _createBlock(_component_ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _ctx.insertElementFromCreateSelection(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _ctx.canvasScale + 'px',\n height: _ctx.viewportStyles.height * _ctx.canvasScale + 'px',\n left: _ctx.viewportStyles.left + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.alignmentLines, (line, index) => {\n return (_openBlock(), _createBlock(_component_AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length\n }, null, 8, [\"type\", \"axis\", \"length\"]))\n }), 128)),\n (_ctx.activeElementIdList.length > 1)\n ? (_openBlock(), _createBlock(_component_MultiSelectOperate, {\n key: 0,\n elementList: _ctx.elementList,\n scaleMultiElement: _ctx.scaleMultiElement\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element) => {\n return (_openBlock(), _createBlock(_component_Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _ctx.activeElementIdList.includes(element.id),\n isActive: _ctx.handleElementId === element.id,\n isActiveGroupElement: _ctx.activeGroupElementId === element.id,\n isMultiSelect: _ctx.activeElementIdList.length > 1,\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n openLinkDialog: _ctx.openLinkDialog,\n dragLineElement: _ctx.dragLineElement\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"openLinkDialog\", \"dragLineElement\"]))\n }), 128)),\n _createVNode(_component_ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref: \"viewportRef\",\n style: _normalizeStyle({ transform: `scale(${_ctx.canvasScale})` })\n }, [\n (_ctx.mouseSelectionState.isShow)\n ? (_openBlock(), _createBlock(_component_MouseSelection, {\n key: 0,\n top: _ctx.mouseSelectionState.top,\n left: _ctx.mouseSelectionState.left,\n width: _ctx.mouseSelectionState.width,\n height: _ctx.mouseSelectionState.height,\n quadrant: _ctx.mouseSelectionState.quadrant\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.elementList, (element, index) => {\n return (_openBlock(), _createBlock(_component_EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _ctx.activeElementIdList.length > 1,\n selectElement: _ctx.selectElement,\n openLinkDialog: _ctx.openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\", \"openLinkDialog\"]))\n }), 128))\n ], 4)\n ], 4),\n _createVNode(_component_Modal, {\n visible: _ctx.linkDialogVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.linkDialogVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 540,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LinkDialog, {\n onClose: _cache[1] || (_cache[1] = ($event: any) => (_ctx.linkDialogVisible = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 544)), [\n [_directive_contextmenu, _ctx.contextmenus],\n [_directive_click_outside, _ctx.removeEditorAreaFocus]\n ])\n}","// 清除文字选区\nexport const removeAllRanges = () => {\n const selection = window.getSelection()\n selection && selection.removeAllRanges()\n}","import { ref, computed, onMounted, onUnmounted, Ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nexport default (canvasRef: Ref) => {\n const viewportLeft = ref(0)\n const viewportTop = ref(0)\n\n const mainStore = useMainStore()\n const { canvasPercentage } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n // 计算画布可视区域的位置\n const setViewportPosition = () => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualWidth / VIEWPORT_SIZE)\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\n viewportTop.value = (canvasHeight - viewportActualWidth * viewportRatio.value) / 2\n }\n else {\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n viewportLeft.value = (canvasWidth - viewportActualHeight / viewportRatio.value) / 2\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\n }\n }\n\n // 可视区域缩放或比例变化时,更新可视区域的位置\n watch([canvasPercentage, viewportRatio], setViewportPosition)\n\n // 画布可视区域位置和大小的样式\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n left: viewportLeft.value,\n top: viewportTop.value,\n }))\n\n // 监听画布尺寸发生变化时,更新可视区域的位置\n const resizeObserver = new ResizeObserver(setViewportPosition)\n\n onMounted(() => {\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\n })\n onUnmounted(() => {\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\n })\n\n return {\n viewportStyles,\n }\n}","import { Ref, reactive } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementRange } from '@/utils/element'\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale } = storeToRefs(mainStore)\n\n const mouseSelectionState = reactive({\n isShow: false,\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n quadrant: 1,\n })\n\n // 更新鼠标框选范围\n const updateMouseSelection = (e: MouseEvent) => {\n if (!viewportRef.value) return\n\n let isMouseDown = true\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const minSelectionRange = 5\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const left = (startPageX - viewportRect.x) / canvasScale.value\n const top = (startPageY - viewportRect.y) / canvasScale.value\n\n // 确定框选的起始位置和其他默认值初始化\n mouseSelectionState.isShow = false\n mouseSelectionState.quadrant = 4\n mouseSelectionState.top = top\n mouseSelectionState.left = left\n mouseSelectionState.width = 0\n mouseSelectionState.height = 0\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\n\n const width = Math.abs(offsetWidth)\n const height = Math.abs(offsetHeight)\n\n if ( width < minSelectionRange || height < minSelectionRange ) return\n \n // 计算鼠标框选(移动)的方向\n // 按四个象限的位置区分,如右下角为第四象限\n let quadrant = 0\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 1\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 2\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\n\n // 更新框选范围\n mouseSelectionState.isShow = true\n mouseSelectionState.quadrant = quadrant\n mouseSelectionState.width = width\n mouseSelectionState.height = height\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n isMouseDown = false\n\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\n let inRangeElementList: PPTElement[] = []\n for (let i = 0; i < elementList.value.length; i++) {\n const element = elementList.value[i]\n const mouseSelectionLeft = mouseSelectionState.left\n const mouseSelectionTop = mouseSelectionState.top\n const mouseSelectionWidth = mouseSelectionState.width\n const mouseSelectionHeight = mouseSelectionState.height\n\n const quadrant = mouseSelectionState.quadrant\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (quadrant === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (quadrant === 1) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (quadrant === 2) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (quadrant === 3) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n\n // 被锁定的元素即使在范围内,也不需要设置为选中状态\n if (isInclude && !element.lock) inRangeElementList.push(element)\n }\n\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\n if (inRangeElement.groupId) {\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\n }\n return true\n })\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n mainStore.setActiveElementIdList(inRangeElementIdList)\n\n mouseSelectionState.isShow = false\n }\n }\n\n return {\n mouseSelectionState,\n updateMouseSelection,\n }\n}","import { onMounted, onUnmounted, Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (elementRef: Ref) => {\n const { disableHotkeys } = storeToRefs(useMainStore())\n\n const { createImageElement, createTextElement } = useCreateElement()\n\n // 拖拽元素到画布中\n const handleDrop = (e: DragEvent) => {\n if (!e.dataTransfer || e.dataTransfer.items.length === 0) return\n const dataTransferItem = e.dataTransfer.items[0]\n\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\n const imageFile = dataTransferItem.getAsFile()\n if (imageFile) {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n }\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\n dataTransferItem.getAsString(text => {\n if (disableHotkeys.value) return\n const string = parseText2Paragraphs(text)\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, string)\n })\n }\n }\n\n onMounted(() => {\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\n\n document.ondragleave = e => e.preventDefault()\n document.ondrop = e => e.preventDefault()\n document.ondragenter = e => e.preventDefault()\n document.ondragover = e => e.preventDefault()\n })\n onUnmounted(() => {\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\n\n document.ondragleave = null\n document.ondrop = null\n document.ondragenter = null\n document.ondragover = null\n })\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTTextElement, PPTImageElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n/**\n * 计算给定坐标到原点连线的弧度\n * @param x 坐标x\n * @param y 坐标y\n */\nconst getAngleFromCoordinate = (x: number, y: number) => {\n const radian = Math.atan2(x, y)\n const angle = 180 / Math.PI * radian\n return angle\n}\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 旋转元素\n const rotateElement = (element: PPTTextElement | PPTImageElement | PPTShapeElement) => {\n let isMouseDown = true\n let angle = 0\n const elOriginRotate = element.rotate || 0\n\n const elLeft = element.left\n const elTop = element.top\n const elWidth = element.width\n const elHeight = element.height\n\n // 元素中心点(旋转中心点)\n const centerX = elLeft + elWidth / 2\n const centerY = elTop + elHeight / 2\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\n const mouseX = (e.pageX - viewportRect.left) / canvasScale.value\n const mouseY = (e.pageY - viewportRect.top) / canvasScale.value\n const x = mouseX - centerX\n const y = centerY - mouseY\n\n angle = getAngleFromCoordinate(x, y)\n\n // 靠近45倍数的角度时有吸附效果\n const sorptionRange = 5\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\n\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (elOriginRotate === angle) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n rotateElement,\n }\n}","export const ELEMENT_TYPE_ZH = {\n text: '文本',\n image: '图片',\n shape: '形状',\n line: '线条',\n chart: '图表',\n table: '表格',\n video: '视频',\n audio: '音频',\n}\n\nexport const MIN_SIZE = {\n text: 20,\n image: 20,\n shape: 15,\n chart: 200,\n table: 20,\n video: 250,\n audio: 20,\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandlers, AlignmentLineProps, MultiSelectRange } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { MIN_SIZE } from '@/configs/element'\nimport { AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface RotateElementData {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\n/**\n * 计算旋转后的元素八个缩放点的位置\n * @param element 元素原始位置大小信息\n * @param angle 旋转角度\n */\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\n const { left, top, width, height } = element\n\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\n\n const tlbraRadian = (180 - angle - auxiliaryAngle) * Math.PI / 180\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\n const taRadian = (90 - angle) * Math.PI / 180\n const raRadian = angle * Math.PI / 180\n\n const halfWidth = width / 2\n const halfHeight = height / 2\n\n const middleLeft = left + halfWidth\n const middleTop = top + halfHeight\n\n const leftTopPoint = {\n left: middleLeft + radius * Math.cos(tlbraRadian),\n top: middleTop - radius * Math.sin(tlbraRadian),\n }\n const topPoint = {\n left: middleLeft + halfHeight * Math.cos(taRadian),\n top: middleTop - halfHeight * Math.sin(taRadian),\n }\n const rightTopPoint = {\n left: middleLeft + radius * Math.cos(trblaRadian),\n top: middleTop - radius * Math.sin(trblaRadian),\n }\n const rightPoint = {\n left: middleLeft + halfWidth * Math.cos(raRadian),\n top: middleTop + halfWidth * Math.sin(raRadian),\n }\n const rightBottomPoint = {\n left: middleLeft - radius * Math.cos(tlbraRadian),\n top: middleTop + radius * Math.sin(tlbraRadian),\n }\n const bottomPoint = {\n left: middleLeft - halfHeight * Math.sin(raRadian),\n top: middleTop + halfHeight * Math.cos(raRadian),\n }\n const leftBottomPoint = {\n left: middleLeft - radius * Math.cos(trblaRadian),\n top: middleTop + radius * Math.sin(trblaRadian),\n }\n const leftPoint = {\n left: middleLeft - halfWidth * Math.cos(raRadian),\n top: middleTop - halfWidth * Math.sin(raRadian),\n }\n\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\n}\n\n/**\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\n * @param direction 当前操作的缩放点\n * @param points 旋转后的元素八个缩放点的位置\n */\nconst getOppositePoint = (direction: string, points: ReturnType): { left: number; top: number } => {\n const oppositeMap = {\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\n [OperateResizeHandlers.TOP]: points.bottomPoint,\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\n [OperateResizeHandlers.LEFT]: points.rightPoint,\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\n }\n return oppositeMap[direction]\n}\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId, canvasScale } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => {\n let isMouseDown = true\n mainStore.setScalingState(true)\n\n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = element.height\n \n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n const rotateRadian = Math.PI * elRotate / 180\n\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\n const aspectRatio = elOriginWidth / elOriginHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n // 元素最小缩放限制\n const minSize = MIN_SIZE[element.type] || 20\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\n\n let points: ReturnType\n let baseLeft = 0\n let baseTop = 0\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\n if ('rotate' in element && element.rotate) {\n const { left, top, width, height } = element\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\n const oppositePoint = getOppositePoint(command, points)\n\n baseLeft = oppositePoint.left\n baseTop = oppositePoint.top\n }\n\n // 未旋转的元素具有缩放时的对齐吸附功能,在这处收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\n // 其中线条和被旋转过的元素不参与吸附对齐\n else {\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n const isActiveGroupElement = element.id === activeGroupElementId.value\n \n for (const el of elementList.value) {\n if ('rotate' in el && el.rotate) continue\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n const left = el.left\n const top = el.top\n const width = el.width\n const height = el.height\n const right = left + width\n const bottom = top + height\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine)\n verticalLines.push(leftLine, rightLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n }\n \n // 对齐吸附方法\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\n // 水平和垂直两个方向需要分开计算\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\n const sorptionRange = 5\n\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n const correctionVal = { offsetX: 0, offsetY: 0 }\n \n if (currentY || currentY === 0) {\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, currentX || 0)\n const max = Math.max(...range, currentX || 0)\n \n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\n correctionVal.offsetY = currentY - value\n isHorizontalAdsorbed = true\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\n }\n }\n }\n if (currentX || currentX === 0) {\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, (currentY || 0))\n const max = Math.max(...range, (currentY || 0))\n\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\n correctionVal.offsetX = currentX - value\n isVerticalAdsorbed = true\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\n }\n }\n }\n alignmentLines.value = _alignmentLines\n return correctionVal\n }\n\n // 开始缩放\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n let width = elOriginWidth\n let height = elOriginHeight\n let left = elOriginLeft\n let top = elOriginTop\n \n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\n if (elRotate) {\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\n\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\n }\n\n // 根据不同的操作点分别计算元素缩放后的大小和位置\n // 需要注意:\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getSizeWithinRange(elOriginHeight + revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getSizeWithinRange(elOriginHeight - revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.TOP) {\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n }\n\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\n const currentOppositePoint = getOppositePoint(command, currentPoints)\n const currentBaseLeft = currentOppositePoint.left\n const currentBaseTop = currentOppositePoint.top\n\n const offsetX = currentBaseLeft - baseLeft\n const offsetY = currentBaseTop - baseTop\n\n left = left - offsetX\n top = top - offsetY\n }\n\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\n // 额外需要处理对齐吸附相关的操作\n // 锁定宽高比例相关的操作同上,不再赘述\n else {\n let moveX = x / canvasScale.value\n let moveY = y / canvasScale.value\n\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getSizeWithinRange(elOriginHeight + moveY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getSizeWithinRange(elOriginHeight - moveY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth - moveX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth + moveX)\n }\n else if (command === OperateResizeHandlers.TOP) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n }\n \n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, left, top, width, height } : el)\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n alignmentLines.value = []\n \n if (startPageX === e.pageX && startPageY === e.pageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n }\n\n // 多选元素缩放\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\n let isMouseDown = true\n \n const { minX, maxX, minY, maxY } = range\n const operateWidth = maxX - minX\n const operateHeight = maxY - minY\n const aspectRatio = operateWidth / operateHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = (currentPageX - startPageX) / canvasScale.value\n let y = (currentPageY - startPageY) / canvasScale.value\n\n // 锁定宽高比例,逻辑同上\n if (ctrlOrShiftKeyActive.value) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\n }\n\n // 所有选中元素的整体范围\n let currentMinX = minX\n let currentMaxX = maxX\n let currentMinY = minY\n let currentMaxY = maxY\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n currentMaxX = maxX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n currentMinX = minX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n currentMinX = minX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n currentMaxX = maxX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.TOP) {\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT) {\n currentMinX = minX + x\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n currentMaxX = maxX + x\n }\n\n // 所有选中元素的整体宽高\n const currentOppositeWidth = currentMaxX - currentMinX\n const currentOppositeHeight = currentMaxY - currentMinY\n\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\n let widthScale = currentOppositeWidth / operateWidth\n let heightScale = currentOppositeHeight / operateHeight\n\n if (widthScale <= 0) widthScale = 0\n if (heightScale <= 0) heightScale = 0\n \n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\n elementList.value = elementList.value.map(el => {\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\n return {\n ...el,\n width: originElement.width * widthScale,\n height: originElement.height * heightScale,\n left: currentMinX + (originElement.left - minX) * widthScale,\n top: currentMinY + (originElement.top - minY) * heightScale,\n }\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (startPageX === e.pageX && startPageY === e.pageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n scaleElement,\n scaleMultiElement,\n }\n}","import { Ref } from 'vue'\nimport { uniq } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\n\nexport default (\n elementList: Ref,\n moveElement: (e: MouseEvent, element: PPTElement) => void,\n) => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeGroupElementId, handleElementId, editorAreaFocus } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n // 选中元素\n // startMove 表示是否需要再选中操作后进入到开始移动的状态\n const selectElement = (e: MouseEvent, element: PPTElement, startMove = true) => {\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n\n // 如果目标元素当前未被选中,则将他设为选中状态\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一起设置为选中状态,否则仅将目标元素设置为选中状态\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\n if (!activeElementIdList.value.includes(element.id)) {\n let newActiveIdList: string[] = []\n\n if (ctrlOrShiftKeyActive.value) {\n newActiveIdList = [...activeElementIdList.value, element.id]\n }\n else newActiveIdList = [element.id]\n \n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\n }\n\n mainStore.setActiveElementIdList(uniq(newActiveIdList))\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\n else if (ctrlOrShiftKeyActive.value) {\n let newActiveIdList: string[] = []\n\n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\n }\n else {\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\n }\n\n if (newActiveIdList.length > 0) {\n mainStore.setActiveElementIdList(newActiveIdList)\n }\n }\n\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\n else if (handleElementId.value !== element.id) {\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\n else if (activeGroupElementId.value !== element.id) {\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) {\n mainStore.setActiveGroupElementId(element.id)\n ;(e.target as HTMLElement).onmouseup = null\n }\n }\n }\n\n if (startMove) moveElement(e, element)\n }\n\n // 选中页面内的全部元素\n const selectAllElement = () => {\n const unlockedElements = elementList.value.filter(el => !el.lock)\n const newActiveElementIdList = unlockedElements.map(el => el.id)\n mainStore.setActiveElementIdList(newActiveElementIdList)\n }\n\n return {\n selectElement,\n selectAllElement,\n }\n}\n","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { getRectRotatedRange, AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId, canvasScale } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent, element: PPTElement) => {\n if (!activeElementIdList.value.includes(element.id)) return\n let isMouseDown = true\n\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n \n const sorptionRange = 5\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\n \n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n let isMisoperation: boolean | null = null\n\n const isActiveGroupElement = element.id === activeGroupElementId.value\n\n // 收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n for (const el of elementList.value) {\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n let left, top, width, height\n if ('rotate' in el && el.rotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: el.left,\n top: el.top,\n width: el.width,\n height: el.height,\n rotate: el.rotate,\n })\n left = xRange[0]\n top = yRange[0]\n width = xRange[1] - xRange[0]\n height = yRange[1] - yRange[0]\n }\n else {\n left = el.left\n top = el.top\n width = el.width\n height = el.height\n }\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n // 对齐吸附线去重\n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n\n // 开始移动\n document.onmousemove = e => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\n if (isMisoperation !== false) {\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \n Math.abs(startPageY - currentPageY) < sorptionRange\n }\n if (!isMouseDown || isMisoperation) return\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n // 基础目标位置\n let targetLeft = elOriginLeft + moveX\n let targetTop = elOriginTop + moveY\n\n // 计算目标元素在画布中的位置范围,用于吸附对齐\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\n\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n if (elOriginRotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: targetLeft,\n top: targetTop,\n width: elOriginWidth,\n height: elOriginHeight,\n rotate: elOriginRotate,\n })\n targetMinX = xRange[0]\n targetMaxX = xRange[1]\n targetMinY = yRange[0]\n targetMaxY = yRange[1]\n }\n else if (element.type === 'line') {\n targetMinX = targetLeft\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\n targetMinY = targetTop\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\n }\n else {\n targetMinX = targetLeft\n targetMaxX = targetLeft + elOriginWidth\n targetMinY = targetTop\n targetMaxY = targetTop + elOriginHeight\n }\n }\n else {\n const leftValues = []\n const topValues = []\n const rightValues = []\n const bottomValues = []\n \n for (let i = 0; i < originActiveElementList.length; i++) {\n const element = originActiveElementList[i]\n const left = element.left + moveX\n const top = element.top + moveY\n const width = element.width\n const height = ('height' in element && element.height) ? element.height : 0\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n\n if ('rotate' in element && element.rotate) {\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\n leftValues.push(xRange[0])\n topValues.push(yRange[0])\n rightValues.push(xRange[1])\n bottomValues.push(yRange[1])\n }\n else if (element.type === 'line') {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\n }\n else {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + width)\n bottomValues.push(top + height)\n }\n }\n\n targetMinX = Math.min(...leftValues)\n targetMaxX = Math.max(...rightValues)\n targetMinY = Math.min(...topValues)\n targetMaxY = Math.max(...bottomValues)\n }\n \n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\n\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\n // 水平和垂直两个方向需要分开计算\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, targetMinX, targetMaxX)\n const max = Math.max(...range, targetMinX, targetMaxX)\n \n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMinY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMaxY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetCenterY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n }\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, targetMinY, targetMaxY)\n const max = Math.max(...range, targetMinY, targetMaxY)\n\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMinX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMaxX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetCenterX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n }\n alignmentLines.value = _alignmentLines\n \n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n elementList.value = elementList.value.map(el => {\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\n })\n }\n\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\n else {\n const handleElement = elementList.value.find(el => el.id === element.id)\n if (!handleElement) return\n\n elementList.value = elementList.value.map(el => {\n if (activeElementIdList.value.includes(el.id)) {\n if (el.id === element.id) {\n return {\n ...el,\n left: targetLeft,\n top: targetTop,\n }\n }\n return {\n ...el,\n left: el.left + (targetLeft - handleElement.left),\n top: el.top + (targetTop - handleElement.top),\n }\n }\n return el\n })\n }\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n alignmentLines.value = []\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragElement,\n }\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement, PPTLineElement } from '@/types/slides'\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface AdsorptionPoint {\n x: number;\n y: number;\n}\n\nexport default (elementList: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 拖拽线条端点\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => {\n let isMouseDown = true\n\n const sorptionRange = 8\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const adsorptionPoints: AdsorptionPoint[] = []\n\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\n for (let i = 0; i < elementList.value.length; i++) {\n const _element = elementList.value[i]\n if (_element.type === 'line' || _element.rotate) continue\n\n const left = _element.left\n const top = _element.top\n const width = _element.width\n const height = _element.height\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topPoint = { x: centerY, y: top }\n const bottomPoint = { x: centerY, y: bottom }\n const leftPoint = { x: left, y: centerX }\n const rightPoint = { x: right, y: centerX }\n\n const leftTopPoint = { x: left, y: top }\n const rightTopPoint = { x: right, y: top }\n const leftBottomPoint = { x: left, y: bottom }\n const rightBottomPoint = { x: right, y: bottom }\n\n adsorptionPoints.push(\n topPoint,\n bottomPoint,\n leftPoint,\n rightPoint,\n leftTopPoint,\n rightTopPoint,\n leftBottomPoint,\n rightBottomPoint,\n )\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n \n // 线条起点和终点在编辑区域中的位置\n let startX = element.left + element.start[0]\n let startY = element.top + element.start[1]\n let endX = element.left + element.end[0]\n let endY = element.top + element.end[1]\n\n const mid = element.broken || element.curve || [0, 0]\n let midX = element.left + mid[0]\n let midY = element.top + mid[1]\n\n // 拖拽起点或终点的位置\n // 水平和垂直方向上有吸附\n if (command === OperateLineHandlers.START) {\n startX = startX + moveX\n startY = startY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\n startX = x\n startY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.END) {\n endX = endX + moveX\n endY = endY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\n endX = x\n endY = y\n break\n }\n }\n }\n else {\n midX = midX + moveX\n midY = midY + moveY\n\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\n midX = (startX + endX) / 2\n midY = (startY + endY) / 2\n }\n }\n\n // 计算更新起点和终点基于自身元素位置的坐标\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const start: [number, number] = [0, 0]\n const end: [number, number] = [maxX - minX, maxY - minY]\n if (startX > endX) {\n start[0] = maxX - minX\n end[0] = 0\n }\n if (startY > endY) {\n start[1] = maxY - minY\n end[1] = 0\n }\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id) {\n const newEl: PPTLineElement = {\n ...(el as PPTLineElement),\n left: minX,\n top: minY,\n start: start,\n end: end,\n }\n if (command !== OperateLineHandlers.MID) {\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n }\n else {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n return newEl\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragLineElement,\n }\n}","import { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { CreateElementSelectionData, CreatingLineElement, CreatingShapeElement } from '@/types/edit'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, creatingElement } = storeToRefs(mainStore)\n\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n return { left, top, width, height }\n }\n\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n const _start: [number, number] = [\n startX === minX ? 0 : width,\n startY === minY ? 0 : height,\n ]\n const _end: [number, number] = [\n endX === minX ? 0 : width,\n endY === minY ? 0 : height,\n ]\n\n return {\n left,\n top,\n start: _start,\n end: _end,\n }\n }\n\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\n\n // 根据鼠标选区的位置大小插入元素\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\n if (!creatingElement.value) return\n\n const type = creatingElement.value.type\n if (type === 'text') {\n const position = formatCreateSelection(selectionData)\n position && createTextElement(position)\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, (creatingElement.value as CreatingShapeElement).data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, (creatingElement.value as CreatingLineElement).data)\n }\n mainStore.setCreatingElement(null)\n }\n\n return {\n insertElementFromCreateSelection,\n }\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), {\n elementInfo: _ctx.elementInfo,\n selectElement: _ctx.selectElement,\n contextmenus: _ctx.contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\", \"contextmenus\"]))\n ], 12, _hoisted_1))\n}","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\n\nexport const enum ElementTypes {\n TEXT = 'text',\n IMAGE = 'image',\n SHAPE = 'shape',\n LINE = 'line',\n CHART = 'chart',\n TABLE = 'table',\n LATEX = 'latex',\n VIDEO = 'video',\n AUDIO = 'audio',\n}\n\n/**\n * 元素阴影\n * \n * h: 水平偏移量\n * \n * v: 垂直偏移量\n * \n * blur: 模糊程度\n * \n * color: 阴影颜色\n */\nexport interface PPTElementShadow {\n h: number;\n v: number;\n blur: number;\n color: string;\n}\n\n/**\n * 元素边框\n * \n * style?: 边框样式(实线或虚线)\n * \n * width?: 边框宽度\n * \n * color?: 边框颜色\n */\nexport interface PPTElementOutline {\n style?: 'dashed' | 'solid';\n width?: number;\n color?: string;\n}\n\n/**\n * 元素超链接\n * \n * type: 链接类型(网页、幻灯片页面)\n * \n * target: 目标地址(网页链接、幻灯片页面ID)\n */\nexport interface PPTElementLink {\n type: 'web' | 'slide';\n target: string;\n}\n\n\n/**\n * 元素通用属性\n * \n * id: 元素ID\n * \n * left: 元素水平方向位置(距离画布左侧)\n * \n * top: 元素垂直方向位置(距离画布顶部)\n * \n * lock?: 锁定元素\n * \n * groupId?: 组合ID(拥有相同组合ID的元素即为同一组合元素成员)\n * \n * width: 元素宽度\n * \n * height: 元素高度\n * \n * rotate: 旋转角度\n * \n * link?: 超链接\n */\ninterface PPTBaseElement {\n id: string;\n left: number;\n top: number;\n lock?: boolean;\n groupId?: string;\n width: number;\n height: number;\n rotate: number;\n link?: PPTElementLink;\n}\n\n\n/**\n * 文本元素\n * \n * type: 元素类型(text)\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * outline?: 边框\n * \n * fill?: 填充色\n * \n * lineHeight?: 行高(倍),默认1.5\n * \n * wordSpace?: 字间距,默认0\n * \n * opacity?: 不透明度,默认1\n * \n * shadow?: 阴影\n */\nexport interface PPTTextElement extends PPTBaseElement {\n type: 'text';\n content: string;\n defaultFontName: string;\n defaultColor: string;\n outline?: PPTElementOutline;\n fill?: string;\n lineHeight?: number;\n wordSpace?: number;\n opacity?: number;\n shadow?: PPTElementShadow;\n}\n\n\n/**\n * 图片翻转、形状翻转\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n */\nexport interface ImageOrShapeFlip {\n flipH?: boolean;\n flipV?: boolean;\n}\n\n/**\n * 图片滤镜\n * \n * https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter\n * \n * 'blur'?: 模糊,默认0(px)\n * \n * 'brightness'?: 亮度,默认100(%)\n * \n * 'contrast'?: 对比度,默认100(%)\n * \n * 'grayscale'?: 灰度,默认0(%)\n * \n * 'saturate'?: 饱和度,默认100(%)\n * \n * 'hue-rotate'?: 色相旋转,默认0(deg)\n * \n * 'opacity'?: 不透明度,默认100(%)\n */\nexport interface ImageElementFilters {\n 'blur'?: string;\n 'brightness'?: string;\n 'contrast'?: string;\n 'grayscale'?: string;\n 'saturate'?: string;\n 'hue-rotate'?: string;\n 'opacity'?: string;\n}\n\n/**\n * 图片裁剪\n * \n * range: 裁剪范围,例如:[[10, 10], [90, 90]] 表示裁取原图从左上角 10%, 10% 到 90%, 90% 的范围\n * \n * shape: 裁剪形状,见 configs/imageClip.ts CLIPPATHS \n */\nexport interface ImageElementClip {\n range: [[number, number], [number, number]];\n shape: string;\n}\n\n/**\n * 图片元素\n * \n * type: 元素类型(image)\n * \n * fixedRatio: 固定图片宽高比例\n * \n * src: 图片地址\n * \n * outline?: 边框\n * \n * filters?: 图片滤镜\n * \n * clip?: 裁剪信息\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n */\nexport interface PPTImageElement extends PPTBaseElement {\n type: 'image';\n fixedRatio: boolean;\n src: string;\n outline?: PPTElementOutline;\n filters?: ImageElementFilters;\n clip?: ImageElementClip;\n flipH?: boolean;\n flipV?: boolean;\n shadow?: PPTElementShadow;\n}\n\n\n/**\n * 形状渐变\n * \n * type: 渐变类型(径向、线性)\n * \n * color: 渐变颜色\n * \n * rotate: 渐变角度(线性渐变)\n */\nexport interface ShapeGradient {\n type: 'linear' | 'radial';\n color: [string, string];\n rotate: number;\n}\n\n/**\n * 形状内文本\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * align: 文本对齐方向(垂直方向)\n */\nexport interface ShapeText {\n content: string;\n defaultFontName: string;\n defaultColor: string;\n align: 'top' | 'middle' | 'bottom';\n}\n\n/**\n * 形状元素\n * \n * type: 元素类型(shape)\n * \n * viewBox: SVG的viewBox属性,默认为正方形,例如 1000 表示 '0 0 1000 1000'\n * \n * path: 形状路径,SVG path 的 d 属性\n * \n * fixedRatio: 固定形状宽高比例\n * \n * fill: 填充,不存在渐变时生效\n * \n * gradient?: 渐变,该属性存在时将优先作为填充\n * \n * outline?: 边框\n * \n * opacity?: 不透明度\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n * \n * special?: 特殊形状(标记一些难以解析的形状,例如路径使用了 L Q C A 以外的类型,该类形状在导出后将变为图片的形式)\n * \n * text?: 形状内文本\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape';\n viewBox: number;\n path: string;\n fixedRatio: boolean;\n fill: string;\n gradient?: ShapeGradient;\n outline?: PPTElementOutline;\n opacity?: number;\n flipH?: boolean;\n flipV?: boolean;\n shadow?: PPTElementShadow;\n special?: boolean;\n text?: ShapeText;\n}\n\n\nexport type LinePoint = '' | 'arrow' | 'dot' \n\n/**\n * 线条元素\n * \n * type: 元素类型(line)\n * \n * start: 起点位置([x, y])\n * \n * end: 终点位置([x, y])\n * \n * style: 线条样式(实线、虚线)\n * \n * color: 线条颜色\n * \n * points: 端点样式([起点样式, 终点样式],可选:无、箭头、圆点)\n * \n * shadow?: 阴影\n * \n * broken?: 折线中点位置([x, y])\n * \n * curve?: 曲线中点位置([x, y])\n */\nexport interface PPTLineElement extends Omit {\n type: 'line';\n start: [number, number];\n end: [number, number];\n style: 'solid' | 'dashed';\n color: string;\n points: [LinePoint, LinePoint];\n shadow?: PPTElementShadow;\n broken?: [number, number];\n curve?: [number, number];\n}\n\n\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport interface ChartData {\n labels: string[];\n legends: string[];\n series: number[][];\n}\n\n/**\n * 图表元素\n * \n * type: 元素类型(chart)\n * \n * fill?: 填充色\n * \n * chartType: 图表类型\n * \n * data: 图表数据\n * \n * options?: 图表配置项\n * \n * outline?: 边框\n * \n * themeColor: 主题色\n * \n * gridColor?: 网格&坐标颜色\n * \n * legend?: 图例/位置\n */\nexport interface PPTChartElement extends PPTBaseElement {\n type: 'chart';\n fill?: string;\n chartType: ChartType;\n data: ChartData;\n options?: ILineChartOptions & IBarChartOptions & IPieChartOptions;\n outline?: PPTElementOutline;\n themeColor: string[];\n gridColor?: string;\n legend?: '' | 'top' | 'bottom',\n}\n\n\n/**\n * 表格单元格样式\n * \n * bold?: 加粗\n * \n * em?: 斜体\n * \n * underline?: 下划线\n * \n * strikethrough?: 删除线\n * \n * color?: 字体颜色\n * \n * backcolor?: 填充色\n * \n * fontsize?: 字体大小\n * \n * fontname?: 字体\n * \n * align?: 对齐方式\n */\nexport interface TableCellStyle {\n bold?: boolean;\n em?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n color?: string;\n backcolor?: string;\n fontsize?: string;\n fontname?: string;\n align?: 'left' | 'center' | 'right';\n}\n\n\n/**\n * 表格单元格\n * \n * id: 单元格ID\n * \n * colspan: 合并列数\n * \n * rowspan: 合并行数\n * \n * text: 文字内容\n * \n * style?: 单元格样式\n */\nexport interface TableCell {\n id: string;\n colspan: number;\n rowspan: number;\n text: string;\n style?: TableCellStyle;\n}\n\n/**\n * 表格主题\n * \n * color: 主题色\n * \n * rowHeader: 标题行\n * \n * rowFooter: 汇总行\n * \n * colHeader: 第一列\n * \n * colFooter: 最后一列\n */\nexport interface TableTheme {\n color: string;\n rowHeader: boolean;\n rowFooter: boolean;\n colHeader: boolean;\n colFooter: boolean;\n}\n\n/**\n * 表格元素\n * \n * type: 元素类型(table)\n * \n * outline: 边框\n * \n * theme?: 主题\n * \n * colWidths: 列宽数组,如[30, 50, 20]表示三列宽度分别为30%, 50%, 20%\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table';\n outline: PPTElementOutline;\n theme?: TableTheme;\n colWidths: number[];\n data: TableCell[][];\n}\n\n\n/**\n * LaTeX元素(公式)\n * \n * type: 元素类型(latex)\n * \n * latex: latex代码\n * \n * path: svg path\n * \n * color: 颜色\n * \n * strokeWidth: 路径宽度\n * \n * viewBox: SVG的viewBox属性\n * \n * fixedRatio: 固定形状宽高比例\n */\nexport interface PPTLatexElement extends PPTBaseElement {\n type: 'latex';\n latex: string;\n path: string;\n color: string;\n strokeWidth: number;\n viewBox: [number, number];\n fixedRatio: boolean;\n}\n\n/**\n * 视频元素\n * \n * type: 元素类型(video)\n * \n * src: 视频地址\n * \n * poster: 预览封面\n */\nexport interface PPTVideoElement extends PPTBaseElement {\n type: 'video';\n src: string;\n poster?: string;\n}\n\n/**\n * 音频元素\n * \n * type: 元素类型(audio)\n * \n * fixedRatio: 固定图标宽高比例\n * \n * color: 图标颜色\n * \n * loop: 循环播放\n * \n * autoplay: 自动播放\n * \n * src: 音频地址\n */\nexport interface PPTAudioElement extends PPTBaseElement {\n type: 'audio';\n fixedRatio: boolean;\n color: string,\n loop: boolean,\n autoplay: boolean,\n src: string;\n}\n\n\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement | PPTLatexElement | PPTVideoElement | PPTAudioElement\n\n\n/**\n * 元素动画\n * \n * elId: 元素ID\n * \n * type: 动画类型\n * \n * duration: 动画持续时间\n */\nexport interface PPTAnimation {\n elId: string;\n type: string;\n duration: number;\n}\n\n/**\n * 幻灯片背景\n * \n * type: 背景类型(纯色、图片、渐变)\n * \n * color?: 背景颜色(纯色)\n * \n * image?: 图片地址(图片)\n * \n * imageSize?: 图片填充方式\n * \n * gradientType?: 渐变类型(线性、径向)\n * \n * gradientColor?: 渐变颜色\n * \n * gradientRotate?: 渐变角度(线性)\n */\nexport interface SlideBackground {\n type: 'solid' | 'image' | 'gradient';\n color?: string;\n image?: string;\n imageSize?: 'cover' | 'contain' | 'repeat';\n gradientType?: 'linear' | 'radial';\n gradientColor?: [string, string];\n gradientRotate?: number;\n}\n\n\nexport type TurningMode = 'no' | 'fade' | 'slideX' | 'slideY'\n\n/**\n * 幻灯片页面\n * \n * id: 页面ID\n * \n * elements: 元素集合\n * \n * remark?: 备注\n * \n * background?: 页面背景\n * \n * animations?: 元素动画集合\n * \n * turningMode?: 翻页方式\n */\nexport interface Slide {\n id: string;\n elements: PPTElement[];\n remark?: string;\n background?: SlideBackground;\n animations?: PPTAnimation[];\n turningMode?: TurningMode;\n}\n\n/**\n * 幻灯片主题\n * \n * backgroundColor: 页面背景颜色\n * \n * themeColor: 主题色,用于默认创建的形状颜色等\n * \n * fontColor: 字体颜色\n * \n * fontName: 字体\n */\nexport interface SlideTheme {\n backgroundColor: string;\n themeColor: string;\n fontColor: string;\n fontName: string;\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\nimport { getElementListRange } from '@/utils/element'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useHistorySnapshot from './useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 将所有选中的元素对齐到画布\n * @param command 对齐方向\n */\n const alignElementToCanvas = (command: ElementAlignCommand) => {\n const viewportWidth = VIEWPORT_SIZE\n const viewportHeight = VIEWPORT_SIZE * viewportRatio.value\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (!activeElementIdList.value.includes(element.id)) continue\n \n // 水平垂直居中\n if (command === ElementAlignCommands.CENTER) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.top = element.top - offsetY \n element.left = element.left - offsetX \n }\n\n // 顶部对齐\n if (command === ElementAlignCommands.TOP) {\n const offsetY = minY - 0\n element.top = element.top - offsetY \n }\n\n // 垂直居中\n else if (command === ElementAlignCommands.VERTICAL) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n element.top = element.top - offsetY \n }\n\n // 底部对齐\n else if (command === ElementAlignCommands.BOTTOM) {\n const offsetY = maxY - viewportHeight\n element.top = element.top - offsetY \n }\n \n // 左侧对齐\n else if (command === ElementAlignCommands.LEFT) {\n const offsetX = minX - 0\n element.left = element.left - offsetX \n }\n\n // 水平居中\n else if (command === ElementAlignCommands.HORIZONTAL) {\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.left = element.left - offsetX \n }\n\n // 右侧对齐\n else if (command === ElementAlignCommands.RIGHT) {\n const offsetX = maxX - viewportWidth\n element.left = element.left - offsetX \n }\n }\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n alignElementToCanvas,\n }\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d35423d2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageClipHandler = _resolveComponent(\"ImageClipHandler\")!\n const _component_ImageOutline = _resolveComponent(\"ImageOutline\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n (_ctx.isCliping)\n ? (_openBlock(), _createBlock(_component_ImageClipHandler, {\n key: 0,\n src: _ctx.elementInfo.src,\n clipData: _ctx.elementInfo.clip,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n top: _ctx.elementInfo.top,\n left: _ctx.elementInfo.left,\n clipPath: _ctx.clipShape.style,\n onClip: _cache[0] || (_cache[0] = range => _ctx.handleClip(range))\n }, null, 8, [\"src\", \"clipData\", \"width\", \"height\", \"top\", \"left\", \"clipPath\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _ctx.clipShape.style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _ctx.imgPosition.top,\n left: _ctx.imgPosition.left,\n width: _ctx.imgPosition.width,\n height: _ctx.imgPosition.height,\n filter: _ctx.filter,\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { computed, Ref } from 'vue'\nimport { PPTElementShadow } from '@/types/slides'\n\n// 计算元素的阴影样式\nexport default (shadow: Ref) => {\n const shadowStyle = computed(() => {\n if (shadow.value) {\n const { h, v, blur, color } = shadow.value\n return `${h}px ${v}px ${blur}px ${color}`\n }\n return ''\n })\n\n return {\n shadowStyle,\n }\n}","export const enum ClipPathTypes {\n RECT = 'rect',\n ELLIPSE = 'ellipse',\n POLYGON = 'polygon',\n}\n\nexport const enum ClipPaths {\n RECT = 'rect',\n ROUNDRECT = 'roundRect',\n ELLIPSE = 'ellipse',\n TRIANGLE = 'triangle',\n PENTAGON = 'pentagon',\n RHOMBUS = 'rhombus',\n STAR = 'star',\n}\n\nexport const CLIPPATHS = {\n rect: {\n name: '矩形',\n type: ClipPathTypes.RECT,\n radius: '0',\n style: '',\n },\n rect2: {\n name: '矩形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\n },\n },\n rect3: {\n name: '矩形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.8} Z`\n },\n },\n roundRect: {\n name: '圆角矩形',\n type: ClipPathTypes.RECT,\n radius: '10%',\n style: 'inset(0 0 0 0 round 10% 10% 10% 10%)',\n },\n ellipse: {\n name: '圆形',\n type: ClipPathTypes.ELLIPSE,\n style: 'ellipse(50% 50% at 50% 50%)',\n },\n triangle: {\n name: '三角形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n triangle2: {\n name: '三角形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\n },\n },\n triangle3: {\n name: '三角形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n rhombus: {\n name: '菱形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\n },\n },\n hexagon: {\n name: '六边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.2} 0 L ${width * 0.8} 0 L ${width} ${height * 0.5} L ${width * 0.8} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.5} Z`\n },\n },\n pentagon: {\n name: '五边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${0.38 * height} L ${0.82 * width} ${height} L ${0.18 * width} ${height} L 0 ${0.38 * height} Z`\n },\n },\n parallelogram: {\n name: '平行四边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\n },\n },\n parallelogram2: {\n name: '平行四边形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\n },\n },\n trapezoid: {\n name: '梯形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\n },\n },\n trapezoid2: {\n name: '梯形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\n },\n },\n}","import { computed, Ref } from 'vue'\n\n// 计算元素的翻转样式\nexport default (flipH: Ref, flipV: Ref) => {\n const flipStyle = computed(() => {\n let style = ''\n \n if (flipH.value && flipV.value) style = 'rotateX(180deg) rotateY(180deg)'\n else if (flipV.value) style = 'rotateX(180deg)'\n else if (flipH.value) style = 'rotateY(180deg)'\n\n return style\n })\n\n return {\n flipStyle,\n }\n}","import { computed, Ref } from 'vue'\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\nimport { ImageElementClip } from '@/types/slides'\n\nexport default (clip: Ref) => {\n const clipShape = computed(() => {\n if (!clip.value) return CLIPPATHS.rect\n const shape = clip.value.shape || ClipPathTypes.RECT\n\n return CLIPPATHS[shape]\n })\n\n const imgPosition = computed(() => {\n if (!clip.value) {\n return {\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n }\n }\n\n const [start, end] = clip.value.range\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return {\n left: -left + '%',\n top: -top + '%',\n width: 100 / widthScale + '%',\n height: 100 / heightScale + '%',\n }\n })\n\n return {\n clipShape,\n imgPosition,\n }\n}","import { computed, Ref } from 'vue'\nimport { ImageElementFilters } from '@/types/slides'\n\nexport default (filters: Ref) => {\n const filter = computed(() => {\n if (!filters.value) return ''\n let filter = ''\n for (const key of Object.keys(filters.value)) {\n filter += `${key}(${filters.value[key]}) `\n }\n return filter\n })\n\n return {\n filter,\n }\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageRectOutline = _resolveComponent(\"ImageRectOutline\")!\n const _component_ImageEllipseOutline = _resolveComponent(\"ImageEllipseOutline\")!\n const _component_ImagePolygonOutline = _resolveComponent(\"ImagePolygonOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.clipShape.type === 'rect')\n ? (_openBlock(), _createBlock(_component_ImageRectOutline, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n radius: _ctx.clipShape.radius,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_ctx.clipShape.type === 'ellipse')\n ? (_openBlock(), _createBlock(_component_ImageEllipseOutline, {\n key: 1,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_ctx.clipShape.type === 'polygon')\n ? (_openBlock(), _createBlock(_component_ImagePolygonOutline, {\n key: 2,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline,\n createPath: _ctx.clipShape.createPath\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-48a14431\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n rx: _ctx.radius,\n ry: _ctx.radius,\n width: _ctx.width,\n height: _ctx.height,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","import { computed, Ref } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\n\n// 计算边框相关属性值,主要是对默认值的处理\nexport default (outline: Ref) => {\n const outlineWidth = computed(() => outline.value?.width ?? 0)\n const outlineStyle = computed(() => outline.value?.style || 'solid')\n const outlineColor = computed(() => outline.value?.color || '#d14424')\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-rect-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n radius: {\n type: String,\n default: '0',\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImageRectOutline.vue?vue&type=template&id=48a14431&scoped=true&ts=true\"\nimport script from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=48a14431&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-48a14431\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-692bbda6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n cx: _ctx.width / 2,\n cy: _ctx.height / 2,\n rx: _ctx.width / 2,\n ry: _ctx.height / 2,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-ellipse-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImageEllipseOutline.vue?vue&type=template&id=692bbda6&scoped=true&ts=true\"\nimport script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=692bbda6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-692bbda6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-21ca95cc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n d: _ctx.createPath(_ctx.width, _ctx.height),\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'image-polygon-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n createPath: {\n type: Function,\n required: true,\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ImagePolygonOutline.vue?vue&type=template&id=21ca95cc&scoped=true&ts=true\"\nimport script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=21ca95cc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-21ca95cc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTImageElement } from '@/types/slides'\nimport useClipImage from '../useClipImage'\n\nimport ImageRectOutline from './ImageRectOutline.vue'\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\n\nexport default defineComponent({\n name: 'image-outline',\n components: {\n ImageRectOutline,\n ImageEllipseOutline,\n ImagePolygonOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const clip = computed(() => props.elementInfo.clip)\n const { clipShape } = useClipImage(clip)\n\n return {\n clipShape,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=6b56be7d&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-430c7e6e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z\"\n })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = [\"onMousedown\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 4 L 16 4 Z\"\n })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(_ctx.clipWrapperPositionStyle)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_ctx.bottomImgPositionStyle)\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ..._ctx.topImgWrapperPositionStyle,\n clipPath: _ctx.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(_ctx.topImgPositionStyle)\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(_ctx.topImgWrapperPositionStyle),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t-l', 't-r', 'b-l', 'b-r'], (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point]),\n key: point,\n onMousedown: _withModifiers($event => _ctx.scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t', 'b', 'l', 'r'], (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', '', point]),\n key: point,\n onMousedown: _withModifiers($event => _ctx.scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, _ctx.handleClip]\n ])\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, reactive, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { ImageClipData, ImageClipDataRange, ImageClipedEmitData } from '@/types/edit'\n\ntype ScaleClipRangeType = 't-l' | 't-r' | 'b-l' | 'b-r'\n\nexport default defineComponent({\n name: 'image-clip-handler',\n emits: ['clip'],\n props: {\n src: {\n type: String,\n required: true,\n },\n clipData: {\n type: Object as PropType,\n },\n clipPath: {\n type: String,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n top: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const { canvasScale } = storeToRefs(useMainStore())\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const clipWrapperPositionStyle = reactive({\n top: '0',\n left: '0',\n })\n const isSettingClipRange = ref(false)\n const currentRange = ref(null)\n\n // 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\n const getClipDataTransformInfo = () => {\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return { widthScale, heightScale, left, top }\n }\n \n // 底层图片位置大小(遮罩区域图片)\n const imgPosition = computed(() => {\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\n return {\n left: -left,\n top: -top,\n width: 100 / widthScale,\n height: 100 / heightScale,\n }\n })\n\n // 底层图片位置大小样式(遮罩区域图片)\n const bottomImgPositionStyle = computed(() => {\n return {\n top: imgPosition.value.top + '%',\n left: imgPosition.value.left + '%',\n width: imgPosition.value.width + '%',\n height: imgPosition.value.height + '%',\n }\n })\n\n // 顶层图片容器位置大小(裁剪高亮区域)\n const topImgWrapperPosition = reactive({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 顶层图片容器位置大小样式(裁剪高亮区域)\n const topImgWrapperPositionStyle = computed(() => {\n return {\n top: topImgWrapperPosition.top + '%',\n left: topImgWrapperPosition.left + '%',\n width: topImgWrapperPosition.width + '%',\n height: topImgWrapperPosition.height + '%',\n }\n })\n\n // 顶层图片位置大小样式(裁剪区域图片)\n const topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const topLeft = topImgWrapperPosition.left\n const topTop = topImgWrapperPosition.top\n const topWidth = topImgWrapperPosition.width\n const topHeight = topImgWrapperPosition.height\n \n return {\n left: -topLeft * (100 / topWidth) + '%',\n top: -topTop * (100 / topHeight) + '%',\n width: bottomWidth / topWidth * 100 + '%',\n height: bottomHeight / topHeight * 100 + '%',\n }\n })\n\n // 初始化裁剪位置信息\n const initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.left = left\n topImgWrapperPosition.top = top\n topImgWrapperPosition.width = 100\n topImgWrapperPosition.height = 100\n \n clipWrapperPositionStyle.top = -top + '%'\n clipWrapperPositionStyle.left = -left + '%'\n }\n\n // 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\n const handleClip = () => {\n if (isSettingClipRange.value) return\n\n if (!currentRange.value) {\n emit('clip', null)\n return\n }\n\n const { left, top } = getClipDataTransformInfo()\n\n const position = {\n left: (topImgWrapperPosition.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.height - 100) / 100 * props.height,\n }\n\n const clipedEmitData: ImageClipedEmitData = {\n range: currentRange.value,\n position,\n }\n emit('clip', clipedEmitData)\n }\n\n // 快捷键监听:回车确认裁剪\n const keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n }\n\n onMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n })\n\n // 计算并更新裁剪区域范围数据\n const updateRange = () => {\n const retPosition = {\n left: parseInt(topImgPositionStyle.value.left),\n top: parseInt(topImgPositionStyle.value.top),\n width: parseInt(topImgPositionStyle.value.width),\n height: parseInt(topImgPositionStyle.value.height),\n }\n\n const widthScale = 100 / retPosition.width\n const heightScale = 100 / retPosition.height\n\n const start: [number, number] = [\n -retPosition.left * widthScale,\n -retPosition.top * heightScale,\n ]\n const end: [number, number] = [\n widthScale * 100 + start[0],\n heightScale * 100 + start[1],\n ]\n\n currentRange.value = [start, end]\n }\n\n // 移动裁剪区域\n const moveClipRange = (e: MouseEvent) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = {\n left: topImgWrapperPosition.left,\n top: topImgWrapperPosition.top,\n width: topImgWrapperPosition.width,\n height: topImgWrapperPosition.height,\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n const moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n let targetLeft = originPositopn.left + moveX\n let targetTop = originPositopn.top + moveY\n\n if (targetLeft < 0) targetLeft = 0\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\n targetLeft = bottomPosition.width - originPositopn.width\n }\n if (targetTop < 0) targetTop = 0\n else if (targetTop + originPositopn.height > bottomPosition.height) {\n targetTop = bottomPosition.height - originPositopn.height\n }\n \n topImgWrapperPosition.left = targetLeft\n topImgWrapperPosition.top = targetTop\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => {\n isSettingClipRange.value = false\n }, 0)\n }\n }\n\n // 缩放裁剪区域\n const scaleClipRange = (e: MouseEvent, type: ScaleClipRangeType) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const minWidth = 50 / props.width * 100\n const minHeight = 50 / props.height * 100\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = {\n left: topImgWrapperPosition.left,\n top: topImgWrapperPosition.top,\n width: topImgWrapperPosition.width,\n height: topImgWrapperPosition.height,\n }\n\n const aspectRatio = topImgWrapperPosition.width / topImgWrapperPosition.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (ctrlOrShiftKeyActive.value) {\n if (type === 'b-r' || type === 't-l') moveY = moveX / aspectRatio\n if (type === 'b-l' || type === 't-r') moveY = -moveX / aspectRatio\n }\n\n let targetLeft, targetTop, targetWidth, targetHeight\n\n if (type === 't-l') {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top + moveY\n }\n else if (type === 't-r') {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === 'b-l') {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else if (type === 'b-r') {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === 't') {\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === 'b') {\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === 'l') {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n targetHeight = originPositopn.height\n targetWidth = originPositopn.width + moveX\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n \n topImgWrapperPosition.left = targetLeft\n topImgWrapperPosition.top = targetTop\n topImgWrapperPosition.width = targetWidth\n topImgWrapperPosition.height = targetHeight\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => isSettingClipRange.value = false, 0)\n }\n }\n\n return {\n clipWrapperPositionStyle,\n bottomImgPositionStyle,\n topImgWrapperPositionStyle,\n topImgPositionStyle,\n handleClip,\n moveClipRange,\n scaleClipRange,\n }\n },\n})\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=430c7e6e&scoped=true&ts=true\"\nimport script from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=430c7e6e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-430c7e6e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageElementClip, PPTImageElement } from '@/types/slides'\nimport { ImageClipedEmitData } from '@/types/edit'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\nimport ImageClipHandler from './ImageClipHandler.vue'\n\nexport default defineComponent({\n name: 'editable-element-image',\n components: {\n ImageOutline,\n ImageClipHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { clipingImageElementId } = storeToRefs(mainStore)\n\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const clip = computed(() => props.elementInfo.clip)\n const { clipShape, imgPosition } = useClipImage(clip)\n\n const filters = computed(() => props.elementInfo.filters)\n const { filter } = useFilter(filters)\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n }\n\n const handleClip = (data: ImageClipedEmitData) => {\n mainStore.setClipingImageElementId('')\n \n if (!data) return\n\n const { range, position } = data\n const originClip: ImageElementClip = props.elementInfo.clip || { shape: 'rect', range: [[0, 0], [100, 100]] }\n \n const _props = {\n clip: { ...originClip, range },\n left: props.elementInfo.left + position.left,\n top: props.elementInfo.top + position.top,\n width: props.elementInfo.width + position.width,\n height: props.elementInfo.height + position.height,\n }\n slidesStore.updateElement({ id: props.elementInfo.id, props: _props })\n \n addHistorySnapshot()\n }\n\n return {\n isCliping,\n handleClip,\n clipingImageElementId,\n shadowStyle,\n handleSelectElement,\n clipShape,\n imgPosition,\n filter,\n flipStyle,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=d35423d2&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=d35423d2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d35423d2\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58d3557f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler top\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler bottom\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ProsemirrorEditor = _resolveComponent(\"ProsemirrorEditor\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': _ctx.elementInfo.lock }]),\n ref: \"elementRef\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _ctx.shadowStyle,\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_ProsemirrorEditor, {\n class: \"text\",\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.elementInfo.defaultColor,\n defaultFontName: _ctx.elementInfo.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: _ctx.elementInfo.content,\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]),\n _hoisted_1,\n _hoisted_2\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-722bf8fa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n d: `M0,0 L${_ctx.width},0 L${_ctx.width},${_ctx.height} L0,${_ctx.height} Z`,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { PropType, defineComponent, toRef } from 'vue'\nimport { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\nexport default defineComponent({\n name: 'element-outline',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n outline: {\n type: Object as PropType\n },\n },\n setup(props) {\n const {\n outlineWidth,\n outlineStyle,\n outlineColor,\n } = useElementOutline(toRef(props, 'outline'))\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n }\n },\n})\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=722bf8fa&scoped=true&ts=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=722bf8fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-722bf8fa\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f0d6ea86\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"prosemirror-editor\",\n ref: \"editorViewRef\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, null, 512))\n}","import mitt, { Emitter } from 'mitt'\n\nexport const enum EmitterEvents {\n RICH_TEXT_COMMAND = 'RICH_TEXT_COMMAND',\n OPEN_CHART_DATA_EDITOR = 'OPEN_CHART_DATA_EDITOR',\n OPEN_LATEX_EDITOR = 'OPEN_LATEX_EDITOR',\n}\n\nexport interface RichTextCommand {\n command: string;\n value?: string;\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: RichTextCommand | RichTextCommand[];\n [EmitterEvents.OPEN_CHART_DATA_EDITOR]: void;\n [EmitterEvents.OPEN_LATEX_EDITOR]: void;\n} \n\nconst emitter: Emitter = mitt()\n\nexport default emitter","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\n Command,\n} from 'prosemirror-commands'\n\nexport const buildKeymap = (schema: Schema) => {\n const keys = {}\n const bind = (key: string, cmd: Command) => keys[key] = cmd\n\n bind('Alt-ArrowUp', joinUp)\n bind('Alt-ArrowDown', joinDown)\n bind('Ctrl-z', undo)\n bind('Ctrl-y', redo)\n bind('Backspace', undoInputRule)\n bind('Escape', selectParentNode)\n bind('Ctrl-b', toggleMark(schema.marks.strong))\n bind('Ctrl-i', toggleMark(schema.marks.em))\n bind('Ctrl-u', toggleMark(schema.marks.underline))\n bind('Ctrl-d', toggleMark(schema.marks.strikethrough))\n\n bind('Enter', splitListItem(schema.nodes.list_item))\n bind('Mod-[', liftListItem(schema.nodes.list_item))\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\n\n return keys\n}","import { NodeType, Schema } from 'prosemirror-model'\nimport {\n inputRules,\n wrappingInputRule,\n textblockTypeInputRule,\n smartQuotes,\n emDash,\n ellipsis,\n} from 'prosemirror-inputrules'\n\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\n\nconst orderedListRule = (nodeType: NodeType) => (\n wrappingInputRule(\n /^(\\d+)\\.\\s$/, \n nodeType, \n match => ({order: +match[1]}),\n (match, node) => node.childCount + node.attrs.order === +match[1],\n )\n)\n\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\n\nconst codeBlockRule = (nodeType: NodeType) => textblockTypeInputRule(/^```$/, nodeType)\n\nexport const buildInputRules = (schema: Schema) => {\n const rules = [\n ...smartQuotes,\n ellipsis,\n emDash,\n ]\n rules.push(blockQuoteRule(schema.nodes.blockquote))\n rules.push(orderedListRule(schema.nodes.ordered_list))\n rules.push(bulletListRule(schema.nodes.bullet_list))\n rules.push(codeBlockRule(schema.nodes.code_block))\n\n return inputRules({ rules })\n}","import { keymap } from 'prosemirror-keymap'\nimport { Schema } from 'prosemirror-model'\nimport { history } from 'prosemirror-history'\nimport { baseKeymap } from 'prosemirror-commands'\nimport { dropCursor } from 'prosemirror-dropcursor'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\nimport { buildKeymap } from './keymap'\nimport { buildInputRules } from './inputrules'\n\nexport const buildPlugins = (schema: Schema) => {\n return [\n buildInputRules(schema),\n keymap(buildKeymap(schema)),\n keymap(baseKeymap),\n dropCursor(),\n gapCursor(),\n history(),\n ]\n}","import { nodes } from 'prosemirror-schema-basic'\nimport { Node, NodeSpec } from 'prosemirror-model'\nimport { orderedList, bulletList, listItem } from 'prosemirror-schema-list'\n\nconst _orderedList: NodeSpec = {\n ...orderedList,\n content: 'list_item+',\n group: 'block',\n}\n\nconst _bulletList: NodeSpec = {\n ...bulletList,\n content: 'list_item+',\n group: 'block',\n}\n\nconst _listItem: NodeSpec = {\n ...listItem,\n content: 'paragraph block*',\n group: 'block',\n}\n\nconst paragraph: NodeSpec = {\n attrs: {\n align: {\n default: '',\n },\n },\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: 'p',\n getAttrs: dom => {\n const { textAlign } = (dom as HTMLElement).style\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n \n return { align }\n }\n }\n ],\n toDOM: (node: Node) => {\n const { align } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n\n return ['p', { style }, 0]\n },\n}\n\nexport default {\n ...nodes,\n 'ordered_list': _orderedList,\n 'bullet_list': _bulletList,\n 'list_item': _listItem,\n paragraph,\n}\n","import { marks } from 'prosemirror-schema-basic'\nimport { MarkSpec } from 'prosemirror-model'\n\nconst subscript: MarkSpec = {\n excludes: 'subscript',\n parseDOM: [\n { tag: 'sub' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'sub' && null\n },\n ],\n toDOM: () => ['sub', 0],\n}\n\nconst superscript: MarkSpec = {\n excludes: 'superscript',\n parseDOM: [\n { tag: 'sup' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'super' && null\n },\n ],\n toDOM: () => ['sup', 0],\n}\n\nconst strikethrough: MarkSpec = {\n parseDOM: [\n { tag: 'strike' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'line-through' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'line-through' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration-line: line-through' }, 0],\n}\n\nconst underline: MarkSpec = {\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'underline' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'underline' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration: underline' }, 0],\n}\n\nconst forecolor: MarkSpec = {\n attrs: {\n color: {},\n },\n parseDOM: [\n {\n style: 'color',\n getAttrs: color => color ? { color } : {}\n },\n ],\n toDOM: mark => {\n const { color } = mark.attrs\n let style = ''\n if (color) style += `color: ${color};`\n return ['span', { style }, 0]\n },\n}\n\nconst backcolor: MarkSpec = {\n attrs: {\n backcolor: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n tag: 'span[style*=background-color]',\n getAttrs: backcolor => backcolor ? { backcolor } : {}\n },\n ],\n toDOM: mark => {\n const { backcolor } = mark.attrs\n let style = ''\n if (backcolor) style += `background-color: ${backcolor};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontsize: MarkSpec = {\n attrs: {\n fontsize: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-size',\n getAttrs: fontsize => fontsize ? { fontsize } : {}\n },\n ],\n toDOM: mark => {\n const { fontsize } = mark.attrs\n let style = ''\n if (fontsize) style += `font-size: ${fontsize}`\n return ['span', { style }, 0]\n },\n}\n\nconst fontname: MarkSpec = {\n attrs: {\n fontname: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-family',\n getAttrs: fontname => {\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\n }\n },\n ],\n toDOM: mark => {\n const { fontname } = mark.attrs\n let style = ''\n if (fontname) style += `font-family: ${fontname}`\n return ['span', { style }, 0]\n },\n}\n\nexport default {\n ...marks,\n subscript,\n superscript,\n strikethrough,\n underline,\n forecolor,\n backcolor,\n fontsize,\n fontname,\n}","import nodes from './nodes'\nimport marks from './marks'\n\nexport const schemaNodes = nodes\nexport const schemaMarks = marks\n","import { EditorState } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { Schema, DOMParser } from 'prosemirror-model'\n\nimport { buildPlugins } from './plugins/index'\nimport { schemaNodes, schemaMarks } from './schema/index'\n\nconst schema = new Schema({\n nodes: schemaNodes,\n marks: schemaMarks,\n})\n\nexport const createDocument = (content: string) => {\n const htmlString = `
${content}
`\n const parser = new window.DOMParser()\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\n return DOMParser.fromSchema(schema).parse(element as Element)\n}\n\nexport const initProsemirrorEditor = (dom: Element, content: string, props = {}) => {\n return new EditorView(dom, {\n state: EditorState.create({\n doc: createDocument(content),\n plugins: buildPlugins(schema),\n }),\n ...props,\n })\n}","import { Schema, Node, NodeType } from 'prosemirror-model'\nimport { Transaction } from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\n\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n const { from, to } = selection\n const { nodes } = schema\n\n const blockquote = nodes.blockquote\n const listItem = nodes.list_item\n const paragraph = nodes.paragraph\n\n interface Task {\n node: Node;\n pos: number;\n nodeType: NodeType;\n }\n\n const tasks: Task[] = []\n alignment = alignment || ''\n\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n const align = node.attrs.align || ''\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\n tasks.push({\n node,\n pos,\n nodeType,\n })\n }\n return true\n })\n\n if (!tasks.length) return tr\n\n tasks.forEach(task => {\n const { node, pos, nodeType } = task\n let { attrs } = node\n if (alignment) attrs = { ...attrs, align: alignment }\n else attrs = { ...attrs, align: null }\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\n })\n\n return tr\n}\n\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\n const { state } = view\n const { schema, selection } = state\n const tr = setTextAlign(\n state.tr.setSelection(selection),\n schema,\n alignment,\n )\n view.dispatch(tr)\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\nimport { Schema, Node, NodeType } from 'prosemirror-model'\nimport { Transaction, EditorState } from 'prosemirror-state'\nimport { findParentNode } from '../utils'\n\nconst isList = (node: Node, schema: Schema) => {\n return (\n node.type === schema.nodes.bullet_list ||\n node.type === schema.nodes.ordered_list\n )\n}\n\nexport const toggleList = (listType: NodeType, itemType: NodeType) => {\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\n const { schema, selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) return false\n\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n tr.setNodeMarkup(parentList.pos, listType)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n return wrapInList(listType)(state, dispatch)\n }\n}\n","\nimport { computed, defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { EditorView } from 'prosemirror-view'\nimport { toggleMark, wrapIn, selectAll } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { getTextAttrs } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { toggleList } from '@/utils/prosemirror/commands/toggleList'\n\nexport default defineComponent({\n name: 'prosemirror-editor',\n emits: ['update', 'focus', 'blur'],\n props: {\n elementId: {\n type: String,\n required: true,\n },\n defaultColor: {\n type: String,\n required: true,\n },\n defaultFontName: {\n type: String,\n required: true,\n },\n editable: {\n type: Boolean,\n default: false,\n },\n value: {\n type: String,\n required: true,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const mainStore = useMainStore()\n const { handleElementId } = storeToRefs(mainStore)\n\n const editorViewRef = ref()\n let editorView: EditorView\n\n // 富文本的各种交互事件监听:\n // 聚焦时取消全局快捷键事件\n // 输入文字时同步数据到vuex\n // 点击鼠标和键盘时同步富文本状态到工具栏\n const handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n }, 300, { trailing: true })\n\n const handleFocus = () => {\n if (props.value === '请输入内容') {\n setTimeout(() => {\n selectAll(editorView.state, editorView.dispatch)\n }, 0)\n }\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n }\n\n const handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n }\n\n const handleClick = debounce(function() {\n const attrs = getTextAttrs(editorView, {\n color: props.defaultColor,\n fontname: props.defaultFontName,\n })\n mainStore.setRichtextAttrs(attrs)\n }, 30, { trailing: true })\n\n const handleKeydown = () => {\n handleInput()\n handleClick()\n }\n\n // 将富文本内容同步到DOM\n const textContent = computed(() => props.value)\n watch(textContent, () => {\n if (!editorView) return\n if (editorView.hasFocus()) return\n\n const { doc, tr } = editorView.state\n editorView.dispatch(tr.replaceRangeWith(0, doc.content.size, createDocument(textContent.value)))\n })\n\n // 打开/关闭编辑器的编辑模式\n watch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n })\n\n // Prosemirror编辑器的初始化和卸载\n onMounted(() => {\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\n handleDOMEvents: {\n focus: handleFocus,\n blur: handleBlur,\n keydown: handleKeydown,\n click: handleClick,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n })\n onUnmounted(() => {\n editorView && editorView.destroy()\n })\n \n // 执行富文本命令(可以是一个或多个)\n // 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\n const execCommand = (payload: RichTextCommand | RichTextCommand[]) => {\n if (handleElementId.value !== props.elementId) return\n\n const commands = ('command' in payload) ? [payload] : payload\n\n for (const item of commands) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n else if (item.command === 'bold') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'subscript') {\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'superscript') {\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'blockquote') {\n wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'code') {\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'align' && item.value) {\n alignmentCommand(editorView, item.value)\n }\n else if (item.command === 'bulletList') {\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(bulletList, listItem)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n toggleList(orderedList, listItem)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n const { empty } = editorView.state.selection\n if (empty) selectAll(editorView.state, editorView.dispatch)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n }\n\n emitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n onUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n })\n\n return {\n editorViewRef,\n }\n },\n})\n","import { render } from \"./ProsemirrorEditor.vue?vue&type=template&id=f0d6ea86&scoped=true&ts=true\"\nimport script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=f0d6ea86&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f0d6ea86\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTextElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\nexport default defineComponent({\n name: 'editable-element-text',\n components: {\n ElementOutline,\n ProsemirrorEditor,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElementId, isScaling } = storeToRefs(mainStore)\n \n const { addHistorySnapshot } = useHistorySnapshot()\n\n const elementRef = ref()\n\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n }\n\n // 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\n const realHeightCache = ref(-1)\n\n watch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n })\n\n const updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n }\n const resizeObserver = new ResizeObserver(updateTextElementHeight)\n\n onMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n })\n onUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n })\n\n const updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n }\n\n return {\n elementRef,\n shadowStyle,\n updateContent,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=58d3557f&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=58d3557f&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58d3557f\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4faf3734\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GradientDefs = _resolveComponent(\"GradientDefs\")!\n const _component_ProsemirrorEditor = _resolveComponent(\"ProsemirrorEditor\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n color: _ctx.text.defaultColor,\n fontFamily: _ctx.text.defaultFontName,\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.enterEditing()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(_component_GradientDefs, {\n id: `editabel-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#editabel-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 6' : '0 0'\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", [_ctx.text.align, { 'editable': _ctx.editable }]])\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createBlock(_component_ProsemirrorEditor, {\n key: 0,\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.text.defaultColor,\n defaultFontName: _ctx.text.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n autoFocus: true,\n value: _ctx.text.content,\n onUpdate: _cache[0] || (_cache[0] = value => _ctx.updateText(value)),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"show-text ProseMirror-static\",\n innerHTML: _ctx.text.content\n }, null, 8, _hoisted_5))\n ], 2)\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"gradientTransform\"]\nconst _hoisted_2 = [\"stop-color\"]\nconst _hoisted_3 = [\"stop-color\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"stop-color\"]\nconst _hoisted_6 = [\"stop-color\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: _ctx.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${_ctx.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: _ctx.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}","\r\nimport { defineComponent, PropType } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'gradient-defs',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'linear' | 'radial'>,\r\n },\r\n color1: {\r\n type: String,\r\n required: true,\r\n },\r\n color2: {\r\n type: String,\r\n required: true,\r\n },\r\n rotate: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n})\r\n","import { render } from \"./GradientDefs.vue?vue&type=template&id=b787d5ea&ts=true\"\nimport script from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTShapeElement, ShapeText } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport GradientDefs from './GradientDefs.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n GradientDefs,\n ProsemirrorEditor,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElementId } = storeToRefs(mainStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n const outline = computed(() => props.elementInfo.outline)\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const editable = ref(false)\n\n const enterEditing = () => {\n editable.value = true\n mainStore.setEditingShapeElementId(props.elementInfo.id)\n }\n\n const exitEditing = () => {\n editable.value = false\n mainStore.setEditingShapeElementId('')\n }\n \n watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) exitEditing()\n }\n })\n\n const text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n })\n\n const updateText = (content: string) => {\n const _text = { ...text.value, content }\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { text: _text },\n })\n \n addHistorySnapshot()\n }\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n editable,\n text,\n handleSelectElement,\n updateText,\n enterEditing,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=4faf3734&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4faf3734&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4faf3734\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-603a705d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.svgWidth,\n height: _ctx.svgHeight\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: _ctx.path,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": _ctx.lineDashArray,\n fill: \"none\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: _ctx.path,\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"markerWidth\", \"markerHeight\", \"refX\", \"refY\"]\nconst _hoisted_2 = [\"d\", \"fill\", \"transform\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${_ctx.id}-${_ctx.type}-${_ctx.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: _ctx.size * 3,\n markerHeight: _ctx.size * 3,\n refX: _ctx.size * 1.5,\n refY: _ctx.size * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.path,\n fill: _ctx.color,\n transform: `scale(${_ctx.size * 0.3}, ${_ctx.size * 0.3}) rotate(${_ctx.rotate}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\n\nconst pathMap = {\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\n arrow: 'M0,0 L10,5 0,10 Z',\n}\nconst rotateMap = {\n 'arrow-start': 180,\n 'arrow-end': 0,\n}\n\nexport default defineComponent({\n name: 'line-point-marker',\n props: {\n id: {\n type: String,\n required: true,\n },\n position: {\n type: String as PropType<'start' | 'end'>,\n required: true,\n },\n type: {\n type: String as PropType<'dot' | 'arrow'>,\n required: true,\n },\n color: {\n type: String,\n },\n baseSize: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const path = computed(() => pathMap[props.type])\n const rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\n const size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\n return {\n path,\n rotate,\n size,\n }\n },\n})\n","import { render } from \"./LinePointMarker.vue?vue&type=template&id=62085f5a&ts=true\"\nimport script from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n LinePointMarker,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n })\n const svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n })\n\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\n\n const path = computed(() => {\n return getLineElementPath(props.elementInfo)\n })\n\n return {\n handleSelectElement,\n shadowStyle,\n svgWidth,\n svgHeight,\n lineDashArray,\n path,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=603a705d&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=603a705d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-603a705d\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_Chart = _resolveComponent(\"Chart\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openDataEditor()))\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_Chart, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: _ctx.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref: \"chartRef\",\n style: _normalizeStyle({\n width: _ctx.width + 'px',\n height: _ctx.chartHeight + 'px',\n transform: `scale(${1 / _ctx.slideScale})`,\n })\n }, null, 4),\n (_ctx.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.slideScale})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: _ctx.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: _ctx.themeColors[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","\nimport { computed, defineComponent, inject, onMounted, PropType, ref, Ref, watch } from 'vue'\nimport { upperFirst } from 'lodash'\nimport tinycolor from 'tinycolor2'\nimport Chartist, {\n IChartistLineChart,\n IChartistBarChart,\n IChartistPieChart,\n ILineChartOptions,\n IBarChartOptions,\n IPieChartOptions,\n} from 'chartist'\nimport { ChartData, ChartType } from '@/types/slides'\n\nimport 'chartist/dist/scss/chartist.scss'\n\nexport default defineComponent({\n name: 'chart',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n type: {\n type: String as PropType,\n required: true,\n },\n data: {\n type: Object as PropType,\n required: true,\n },\n options: {\n type: Object as PropType,\n },\n themeColor: {\n type: Array as PropType,\n required: true,\n },\n legends: {\n type: Array as PropType,\n required: true,\n },\n gridColor: {\n type: String,\n },\n legend: {\n type: String as PropType<'' | 'top' | 'bottom'>,\n },\n },\n setup(props) {\n const chartRef = ref()\n const slideScale: Ref = inject('slideScale') || ref(1)\n\n let chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\n\n const chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n })\n\n const getDataAndOptions = () => {\n const propsOptopns = props.options || {}\n const options = {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n const data = props.type === 'pie' ? { ...props.data, series: props.data.series[0] } : props.data\n return { data, options }\n }\n\n const renderChart = () => {\n if (!chartRef.value) return\n\n const type = upperFirst(props.type)\n const { data, options } = getDataAndOptions()\n chart = new Chartist[type](chartRef.value, data, options)\n }\n\n const updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const { data, options } = getDataAndOptions()\n chart.update(data, options)\n }\n\n watch([\n () => props.width,\n () => props.height,\n () => props.data,\n slideScale,\n ], updateChart)\n\n onMounted(renderChart)\n\n const themeColors = computed(() => {\n let colors: string[] = []\n if (props.themeColor.length >= 10) colors = props.themeColor\n else if (props.themeColor.length === 1) colors = tinycolor(props.themeColor[0]).analogous(10).map(color => color.toHexString())\n else {\n const len = props.themeColor.length\n const supplement = tinycolor(props.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toHexString())\n colors = [...props.themeColor.slice(0, len - 1), ...supplement]\n }\n return colors\n })\n\n // 更新主题配色:\n // 如果当前所设置的主题色数小于10,剩余部分获取最后一个主题色的相近颜色作为配色\n const updateTheme = () => {\n if (!chartRef.value) return\n\n for (let i = 0; i < 10; i++) {\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, themeColors.value[i])\n }\n }\n\n watch(themeColors, updateTheme)\n onMounted(updateTheme)\n\n // 更新网格颜色,包括坐标的文字部分\n const updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n }\n\n watch(() => props.gridColor, updateGridColor)\n onMounted(updateGridColor)\n\n return {\n chartHeight,\n themeColors,\n slideScale,\n chartRef,\n }\n },\n})\n","import { render } from \"./Chart.vue?vue&type=template&id=3ac5559a&scoped=true&ts=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=3ac5559a&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=3ac5559a&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3ac5559a\"]])\n\nexport default __exports__","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n }\r\n\r\n return {\r\n handleSelectElement,\r\n openDataEditor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=c09631b6&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c09631b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c09631b6\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-426704b7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_EditableTable = _resolveComponent(\"EditableTable\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': _ctx.elementInfo.lock }]),\n ref: \"elementRef\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme,\n editable: _ctx.editable,\n onChange: _cache[1] || (_cache[1] = data => _ctx.updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => _ctx.updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => _ctx.updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!_ctx.editable || _ctx.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': _ctx.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => _ctx.handleSelectElement($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _ctx.canvasScale })` })\n }, \"双击编辑\", 4)\n ], 34))\n : _createCommentVNode(\"\", true)\n ], 512), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createBlock as _createBlock, vShow as _vShow, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c0c56b6e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = [\"onMousedown\"]\nconst _hoisted_3 = [\"width\"]\nconst _hoisted_4 = [\"rowspan\", \"colspan\", \"data-cell-index\", \"onMousedown\", \"onMouseenter\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CustomTextarea = _resolveComponent(\"CustomTextarea\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: _ctx.totalWidth + 'px' })\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.dragLinePosition, (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => _ctx.handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _ctx.theme,\n 'row-header': _ctx.theme?.rowHeader,\n 'row-footer': _ctx.theme?.rowFooter,\n 'col-header': _ctx.theme?.colHeader,\n 'col-footer': _ctx.theme?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_ctx.theme?.color}; --subThemeColor1: ${_ctx.subThemeColor[0]}; --subThemeColor2: ${_ctx.subThemeColor[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colSizeList, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tableCells, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", { key: rowIndex }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: _normalizeClass([\"cell\", {\n 'selected': _ctx.selectedCells.includes(`${rowIndex}_${colIndex}`) && _ctx.selectedCells.length > 1,\n 'active': _ctx.activedCell === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._ctx.getTextStyle(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n \"data-cell-index\": `${rowIndex}_${colIndex}`,\n onMousedown: $event => _ctx.handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (_ctx.handleCellMouseenter(rowIndex, colIndex))\n }, [\n (_ctx.activedCell === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(_component_CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': _ctx.activedCell === `${rowIndex}_${colIndex}` }]),\n contenteditable: \"plaintext-only\",\n value: cell.text,\n onUpdateValue: value => _ctx.handleInput(value, rowIndex, colIndex),\n onInsertExcelData: value => _ctx.insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n innerHTML: _ctx.formatText(cell.text)\n }, null, 8, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_ctx.hideCells.includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, el => _ctx.contextmenus(el)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}","import { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle) => {\n if (!style) return {}\n const {\n bold,\n em,\n underline,\n strikethrough,\n color,\n backcolor,\n fontsize,\n fontname,\n align,\n } = style\n\n let textDecoration = `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`\n if (textDecoration === ' ') textDecoration = 'none'\n \n return {\n fontWeight: bold ? 'bold' : 'normal',\n fontStyle: em ? 'italic' : 'normal',\n textDecoration,\n color: color || '#000',\n backgroundColor: backcolor || '',\n fontSize: fontsize || '14px',\n fontFamily: fontname || '微软雅黑',\n textAlign: align || 'left',\n }\n}\n\nexport const formatText = (text: string) => {\n return text.replace(/\\n/g, '
').replace(/ /g, ' ')\n}","import { computed, Ref } from 'vue'\nimport { TableCell } from '@/types/slides'\n\n// 计算无效的单元格位置(被合并的单元格位置)集合\n\nexport default (cells: Ref) => {\n const hideCells = computed(() => {\n const hideCells = []\n \n for (let i = 0; i < cells.value.length; i++) {\n const rowCells = cells.value[i]\n\n for (let j = 0; j < rowCells.length; j++) {\n const cell = rowCells[j]\n \n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\n hideCells.push(`${row}_${col}`)\n }\n }\n }\n }\n }\n return hideCells\n })\n\n return {\n hideCells,\n }\n}","import { ref, Ref, watch } from 'vue'\nimport { TableTheme } from '@/types/slides'\nimport { getTableSubThemeColor } from '@/utils/element'\n\n// 通过表格的主题色计算辅助颜色\n\nexport default (theme: Ref) => {\n const subThemeColor = ref(['', ''])\n watch(() => theme.value, () => {\n if (theme.value) {\n subThemeColor.value = getTableSubThemeColor(theme.value.color)\n }\n }, { immediate: true })\n\n return {\n subThemeColor,\n }\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-59f468e0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"contenteditable\", \"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref: \"textareaRef\",\n contenteditable: _ctx.contenteditable,\n onFocus: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.handleFocus && _ctx.handleFocus(...args))),\n onBlur: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleBlur && _ctx.handleBlur(...args))),\n onInput: _cache[2] || (_cache[2] = $event => _ctx.handleInput($event)),\n innerHTML: _ctx.text\n }, null, 40, _hoisted_1))\n}","\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\nexport default defineComponent({\n name: 'custom-textarea',\n emits: ['updateValue', 'insertExcelData'],\n props: {\n value: {\n type: String,\n default: '',\n },\n contenteditable: {\n type: [Boolean, String],\n default: false,\n },\n },\n setup(props, { emit }) {\n const textareaRef = ref()\n const text = ref('')\n const isFocus = ref(false)\n\n // 自定义v-modal,同步数据\n // 当文本框聚焦时,不执行数据同步\n watch(() => props.value, () => {\n if (isFocus.value) return\n text.value = props.value\n if (textareaRef.value) textareaRef.value.innerHTML = props.value\n }, { immediate: true })\n\n const handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n }\n\n // 聚焦时更新焦点标记,并监听粘贴事件\n const handleFocus = () => {\n isFocus.value = true\n\n if (!textareaRef.value) return\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\n e.preventDefault()\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n emit('insertExcelData', excelData)\n if (textareaRef.value) textareaRef.value.innerHTML = excelData[0][0]\n return\n }\n\n emit('updateValue', text)\n document.execCommand('insertText', false, text)\n })\n }\n }\n }\n\n // 失焦时更新焦点标记,清除粘贴事件监听\n const handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n }\n\n // 清除粘贴事件监听\n onUnmounted(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n })\n\n return {\n textareaRef,\n handleFocus,\n handleInput,\n handleBlur,\n text,\n }\n },\n})\n","import { render } from \"./CustomTextarea.vue?vue&type=template&id=59f468e0&scoped=true&ts=true\"\nimport script from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=59f468e0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59f468e0\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { debounce, isEqual } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\nimport { createRandomCode } from '@/utils/common'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nimport CustomTextarea from './CustomTextarea.vue'\n\nexport default defineComponent({\n name: 'editable-table',\n emits: ['change', 'changeColWidths', 'changeSelectedCells'],\n components: {\n CustomTextarea,\n },\n props: {\n data: {\n type: Array as PropType,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n colWidths: {\n type: Array as PropType,\n required: true,\n },\n outline: {\n type: Object as PropType,\n required: true,\n },\n theme: {\n type: Object as PropType,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n },\n setup(props, { emit }) {\n const { canvasScale } = storeToRefs(useMainStore())\n \n const isStartSelect = ref(false)\n const startCell = ref([])\n const endCell = ref([])\n\n const tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n })\n\n // 主题辅助色\n const theme = computed(() => props.theme)\n const { subThemeColor } = useSubThemeColor(theme)\n\n // 计算表格每一列的列宽和总宽度\n const colSizeList = ref([])\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n watch([\n () => props.colWidths,\n () => props.width,\n ], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n }, { immediate: true })\n \n // 清除全部单元格的选中状态\n // 表格处于不可编辑状态时也需要清除\n const removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n }\n\n watch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n })\n\n // 用于拖拽列宽的操作节点位置\n const dragLinePosition = computed(() => {\n const dragLinePosition: number[] = []\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\n dragLinePosition.push(pos)\n }\n return dragLinePosition\n })\n\n // 无效的单元格位置(被合并的单元格位置)集合\n const cells = computed(() => props.data)\n const { hideCells } = useHideCells(cells)\n\n // 当前选中的单元格集合\n const selectedCells = computed(() => {\n if (!startCell.value.length) return []\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return [`${startX}_${startY}`]\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\n\n const selectedCells = []\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n for (let j = 0; j < rowCells.length; j++) {\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\n }\n }\n return selectedCells\n })\n\n watch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n })\n\n // 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\n const activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n })\n\n // 当前选中的单元格位置范围\n const selectedRange = computed(() => {\n if (!startCell.value.length) return null\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return { row: [startX, startX], col: [startY, startY] }\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return { row: [startX, startX], col: [startY, startY] }\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n return {\n row: [minX, maxX],\n col: [minY, maxY],\n }\n })\n\n // 设置选中单元格状态(鼠标点击或拖选)\n const handleMouseup = () => isStartSelect.value = false\n\n const handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\n if (e.button === 0) {\n endCell.value = []\n isStartSelect.value = true\n startCell.value = [rowIndex, colIndex]\n }\n }\n\n const handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n }\n\n onMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n })\n onUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n })\n\n // 判断某位置是否为无效单元格(被合并掉的位置)\n const isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n // 选中指定的列\n const selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n }\n\n // 选中指定的行\n const selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n }\n\n // 选中全部单元格\n const selectAll = () => {\n const maxRow = tableCells.value.length - 1\n const maxCol = tableCells.value[maxRow].length - 1\n startCell.value = [0, 0]\n endCell.value = [maxRow, maxCol]\n }\n\n // 删除一行\n const deleteRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const targetCells = tableCells.value[rowIndex]\n const hideCellsPos = []\n for (let i = 0; i < targetCells.length; i++) {\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\n }\n \n for (const pos of hideCellsPos) {\n for (let i = rowIndex; i >= 0; i--) {\n if (!isHideCell(i, pos)) {\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\n break\n }\n }\n }\n\n _tableCells.splice(rowIndex, 1)\n tableCells.value = _tableCells\n }\n\n // 删除一列\n const deleteCol = (colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const hideCellsPos = []\n for (let i = 0; i < tableCells.value.length; i++) {\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\n }\n\n for (const pos of hideCellsPos) {\n for (let i = colIndex; i >= 0; i--) {\n if (!isHideCell(pos, i)) {\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\n break\n }\n }\n }\n\n tableCells.value = _tableCells.map(item => {\n item.splice(colIndex, 1)\n return item\n })\n colSizeList.value.splice(colIndex, 1)\n emit('changeColWidths', colSizeList.value)\n }\n \n // 插入一行\n const insertRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const rowCells: TableCell[] = []\n for (let i = 0; i < _tableCells[0].length; i++) {\n rowCells.push({\n colspan: 1,\n rowspan: 1,\n text: '',\n id: createRandomCode(),\n })\n }\n\n _tableCells.splice(rowIndex, 0, rowCells)\n tableCells.value = _tableCells\n }\n\n // 插入一列\n const insertCol = (colIndex: number) => {\n tableCells.value = tableCells.value.map(item => {\n const cell = {\n colspan: 1,\n rowspan: 1,\n text: '',\n id: createRandomCode(),\n }\n item.splice(colIndex, 0, cell)\n return item\n })\n colSizeList.value.splice(colIndex, 0, 100)\n emit('changeColWidths', colSizeList.value)\n }\n\n // 填充指定的行/列数\n const fillTable = (rowCount: number, colCount: number) => {\n let _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n const defaultCell = { colspan: 1, rowspan: 1, text: '' }\n \n if (rowCount) {\n const newRows = []\n for (let i = 0; i < rowCount; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < _tableCells[0].length; j++) {\n rowCells.push({\n ...defaultCell,\n id: createRandomCode(),\n })\n }\n newRows.push(rowCells)\n }\n _tableCells = [..._tableCells, ...newRows]\n }\n if (colCount) {\n _tableCells = _tableCells.map(item => {\n const cells: TableCell[] = []\n for (let i = 0; i < colCount; i++) {\n const cell = {\n ...defaultCell,\n id: createRandomCode(),\n }\n cells.push(cell)\n }\n return [...item, ...cells]\n })\n colSizeList.value = [...colSizeList.value, ...new Array(colCount).fill(100)]\n emit('changeColWidths', colSizeList.value)\n }\n\n tableCells.value = _tableCells\n }\n \n // 合并单元格\n const mergeCells = () => {\n const [startX, startY] = startCell.value\n const [endX, endY] = endCell.value\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n \n _tableCells[minX][minY].rowspan = maxX - minX + 1\n _tableCells[minX][minY].colspan = maxY - minY + 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n }\n\n // 拆分单元格\n const splitCells = (rowIndex: number, colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n _tableCells[rowIndex][colIndex].rowspan = 1\n _tableCells[rowIndex][colIndex].colspan = 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n }\n\n // 鼠标拖拽调整列宽\n const handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\n removeSelectedCells()\n let isMouseDown = true\n\n const originWidth = colSizeList.value[colIndex]\n const startPageX = e.pageX\n\n const minWidth = 50\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const moveX = (e.pageX - startPageX) / canvasScale.value\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\n\n colSizeList.value[colIndex] = width\n }\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n emit('changeColWidths', colSizeList.value)\n }\n }\n\n // 清空选中单元格内的文字\n const clearSelectedCellText = () => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n for (let i = 0; i < _tableCells.length; i++) {\n for (let j = 0; j < _tableCells[i].length; j++) {\n if (selectedCells.value.includes(`${i}_${j}`)) {\n _tableCells[i][j].text = ''\n }\n }\n }\n tableCells.value = _tableCells\n }\n\n // 将焦点移动到下一个单元格\n // 当前行右边有单元格时,焦点右移\n // 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动至下一行行首\n // 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\n const tabActiveCell = () => {\n const getNextCell = (i: number, j: number): [number, number] | null => {\n if (!tableCells.value[i]) return null\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\n return [i, j]\n }\n\n endCell.value = []\n\n const nextRow = startCell.value[0]\n const nextCol = startCell.value[1] + 1\n\n const nextCell = getNextCell(nextRow, nextCol)\n if (!nextCell) {\n insertRow(nextRow + 1)\n startCell.value = [nextRow + 1, 0]\n }\n else startCell.value = nextCell\n\n // 移动焦点后自动聚焦文本\n nextTick(() => {\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\n if (textRef) textRef.focus()\n })\n }\n\n // 表格快捷键监听\n const keydownListener = (e: KeyboardEvent) => {\n if (!props.editable || !selectedCells.value.length) return\n\n const key = e.key.toUpperCase()\n if (selectedCells.value.length < 2) {\n if (key === KEYS.TAB) {\n e.preventDefault()\n tabActiveCell()\n }\n if (e.ctrlKey && key === KEYS.UP) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex)\n }\n if (e.ctrlKey && key === KEYS.DOWN) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex + 1)\n }\n if (e.ctrlKey && key === KEYS.LEFT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex)\n }\n if (e.ctrlKey && key === KEYS.RIGHT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex + 1)\n }\n }\n else if (key === KEYS.DELETE) {\n clearSelectedCellText()\n }\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n })\n\n // 单元格文字输入时更新表格数据\n const handleInput = debounce(function(value, rowIndex, colIndex) {\n tableCells.value[rowIndex][colIndex].text = value\n emit('change', tableCells.value)\n }, 300, { trailing: true })\n\n // 插入来自Excel的数据,表格的行/列数不够时自动补足\n const insertExcelData = (data: string[][], rowIndex: number, colIndex: number) => {\n const maxRow = data.length\n const maxCol = data[0].length\n\n let fillRowCount = 0\n let fillColCount = 0\n if (rowIndex + maxRow > tableCells.value.length) fillRowCount = rowIndex + maxRow - tableCells.value.length\n if (colIndex + maxCol > tableCells.value[0].length) fillColCount = colIndex + maxCol - tableCells.value[0].length\n if (fillRowCount || fillColCount) fillTable(fillRowCount, fillColCount)\n\n nextTick(() => {\n for (let i = 0; i < maxRow; i++) {\n for (let j = 0; j < maxCol; j++) {\n if (tableCells.value[rowIndex + i][colIndex + j]) {\n tableCells.value[rowIndex + i][colIndex + j].text = data[i][j]\n }\n }\n }\n emit('change', tableCells.value)\n })\n }\n\n // 获取有效的单元格(排除掉被合并的单元格)\n const getEffectiveTableCells = () => {\n const effectiveTableCells = []\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n const _rowCells = []\n for (let j = 0; j < rowCells.length; j++) {\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\n }\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\n }\n\n return effectiveTableCells\n }\n\n // 检查是否可以删除行和列:有效的行/列数大于1\n const checkCanDeleteRowOrCol = () => {\n const effectiveTableCells = getEffectiveTableCells()\n const canDeleteRow = effectiveTableCells.length > 1\n const canDeleteCol = effectiveTableCells[0].length > 1\n\n return { canDeleteRow, canDeleteCol }\n }\n\n // 检查是否可以合并或拆分\n // 必须多选才可以合并\n // 必须单选且所选单元格为合并单元格才可以拆分\n const checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\n const isMultiSelected = selectedCells.value.length > 1\n const targetCell = tableCells.value[rowIndex][colIndex]\n\n const canMerge = isMultiSelected\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\n\n return { canMerge, canSplit }\n }\n\n const contextmenus = (el: HTMLElement): ContextmenuItem[] => {\n const cellIndex = el.dataset.cellIndex as string\n const rowIndex = +cellIndex.split('_')[0]\n const colIndex = +cellIndex.split('_')[1]\n\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\n startCell.value = [rowIndex, colIndex]\n endCell.value = []\n }\n\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\n\n return [\n {\n text: '插入列',\n children: [\n { text: '到左侧', handler: () => insertCol(colIndex) },\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\n ],\n },\n {\n text: '插入行',\n children: [\n { text: '到上方', handler: () => insertRow(rowIndex) },\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\n ],\n },\n {\n text: '删除列',\n disable: !canDeleteCol,\n handler: () => deleteCol(colIndex),\n },\n {\n text: '删除行',\n disable: !canDeleteRow,\n handler: () => deleteRow(rowIndex),\n },\n { divider: true },\n {\n text: '合并单元格',\n disable: !canMerge,\n handler: mergeCells,\n },\n {\n text: '取消合并单元格',\n disable: !canSplit,\n handler: () => splitCells(rowIndex, colIndex),\n },\n { divider: true },\n {\n text: '选中当前列',\n handler: () => selectCol(colIndex),\n },\n {\n text: '选中当前行',\n handler: () => selectRow(rowIndex),\n },\n {\n text: '选中全部单元格',\n handler: selectAll,\n },\n ]\n }\n\n return {\n getTextStyle,\n dragLinePosition,\n tableCells,\n colSizeList,\n totalWidth,\n hideCells,\n selectedCells,\n activedCell,\n selectedRange,\n handleCellMousedown,\n handleCellMouseenter,\n selectCol,\n selectRow,\n handleMousedownColHandler,\n contextmenus,\n handleInput,\n insertExcelData,\n subThemeColor,\n formatText,\n }\n },\n})\n","import { render } from \"./EditableTable.vue?vue&type=template&id=c0c56b6e&scoped=true&ts=true\"\nimport script from \"./EditableTable.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=c0c56b6e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c0c56b6e\"]])\n\nexport default __exports__","\nimport { defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport EditableTable from './EditableTable.vue'\n\nexport default defineComponent({\n name: 'editable-element-table',\n components: {\n EditableTable,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n \n const elementRef = ref()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n // 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\n const editable = ref(false)\n\n watch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n })\n\n watch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n })\n\n const startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n }\n\n // 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\n const realHeightCache = ref(-1)\n\n watch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (isScaling.value) editable.value = false\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n })\n\n const updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n }\n\n const resizeObserver = new ResizeObserver(updateTableElementHeight)\n\n onMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n })\n onUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n })\n\n // 更新表格内容数据\n const updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n }\n\n // 更新表格的列宽数据\n const updateColWidths = (widths: number[]) => {\n const width = widths.reduce((a, b) => a + b)\n const colWidths = widths.map(item => item / width)\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { width, colWidths },\n })\n addHistorySnapshot()\n }\n\n // 更新表格当前选中的单元格\n const updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n }\n\n return {\n elementRef,\n canvasScale,\n handleSelectElement,\n updateTableCells,\n updateColWidths,\n editable,\n startEdit,\n updateSelectedCells,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=426704b7&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=426704b7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-426704b7\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3168526a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event)),\n onDblclick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\nexport default defineComponent({\n name: 'editable-element-latex',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLatexElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n const openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n }\n\n return {\n handleSelectElement,\n openLatexEditor,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=3168526a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3168526a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3168526a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPlayer = _resolveComponent(\"VideoPlayer\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event, false))\n }, [\n _createVNode(_component_VideoPlayer, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _ctx.canvasScale\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t', 'b', 'l', 'r'], (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['handler-border', item]),\n key: item,\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e716fb74\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"poster\"]\nconst _hoisted_2 = { class: \"bezel\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_4 = { class: \"controller\" }\nconst _hoisted_5 = { class: \"icons icons-left\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = { class: \"volume\" }\nconst _hoisted_8 = { class: \"icon-content\" }\nconst _hoisted_9 = {\n class: \"volume-bar\",\n ref: \"volumeBarRef\"\n}\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_15 = { class: \"dtime\" }\nconst _hoisted_16 = { class: \"icons icons-right\" }\nconst _hoisted_17 = { class: \"speed\" }\nconst _hoisted_18 = { class: \"icon speed-icon\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"icon-content\" }, \"循环\", -1))\nconst _hoisted_21 = [\n _hoisted_20\n]\nconst _hoisted_22 = { class: \"bar\" }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_24 = [\n _hoisted_23\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"video-player\", { 'hide-controller': _ctx.hideController }]),\n style: _normalizeStyle({\n width: _ctx.width * _ctx.scale + 'px',\n height: _ctx.height * _ctx.scale + 'px',\n transform: `scale(${1 / _ctx.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (_ctx.autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (_ctx.autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"video\", {\n class: \"video\",\n ref: \"videoRef\",\n src: _ctx.src,\n poster: _ctx.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (_ctx.handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => (_ctx.autoHideController())),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (_ctx.autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (_ctx.handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': _ctx.bezelTransition }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (_ctx.bezelTransition = false))\n }, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPause, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPlayOne, { key: 1 }))\n ], 34)\n ])\n ]),\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_8, [\n (_ctx.volume === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (_ctx.volume === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[11] || (_cache[11] = $event => _ctx.handleMousedownVolumeBar($event)),\n onTouchstart: _cache[12] || (_cache[12] = $event => _ctx.handleMousedownVolumeBar($event)),\n onClick: _cache[13] || (_cache[13] = $event => _ctx.handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _ctx.volumeBarWidth })\n }, _hoisted_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.ptime), 1),\n _hoisted_14,\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.dtime), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.speedMenuVisible = !_ctx.speedMenuVisible))\n }, \"倍速\"),\n (_ctx.speedMenuVisible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (_ctx.speedMenuVisible = false))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.speedOptions, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === _ctx.playbackRate }]),\n key: item.label,\n onClick: ($event: any) => (_ctx.speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_19))\n }), 128))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': _ctx.loop }])\n }, _hoisted_21, 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref: \"playBarWrap\",\n onMousedown: _cache[17] || (_cache[17] = $event => _ctx.handleMousedownPlayBar($event)),\n onTouchstart: _cache[18] || (_cache[18] = $event => _ctx.handleMousedownPlayBar($event)),\n onMousemove: _cache[19] || (_cache[19] = $event => _ctx.handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (_ctx.playBarTimeVisible = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (_ctx.playBarTimeVisible = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !_ctx.playBarTimeVisible }]),\n style: _normalizeStyle({ left: _ctx.playBarTimeLeft })\n }, _toDisplayString(_ctx.playBarTime), 7),\n _createElementVNode(\"div\", _hoisted_22, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _ctx.loadedBarWidth })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _ctx.playedBarWidth })\n }, _hoisted_24, 4)\n ])\n ], 544)\n ])\n ], 38))\n}","/* eslint-disable */\n\nimport { onMounted, Ref } from 'vue'\n\nexport default (\n src: string,\n videoRef: Ref,\n) => {\n onMounted(() => {\n if (!videoRef.value) return\n\n let type = 'normal'\n if (/m3u8(#|\\?|$)/i.exec(src)) type = 'hls'\n else if (/.flv(#|\\?|$)/i.exec(src)) type = 'flv'\n\n if (videoRef.value && type === 'hls' && (videoRef.value.canPlayType('application/x-mpegURL') || videoRef.value.canPlayType('application/vnd.apple.mpegURL'))) {\n type = 'normal'\n }\n\n if (type === 'hls') {\n const Hls = (window as any).Hls\n \n if (Hls && Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(src)\n hls.attachMedia(videoRef.value)\n }\n }\n else if (type === 'flv') {\n const flvjs = (window as any).flvjs\n if (flvjs && flvjs.isSupported()) {\n const flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: src,\n })\n flvPlayer.attachMediaElement(videoRef.value)\n flvPlayer.load()\n }\n }\n })\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport useMSE from './useMSE'\nimport { message } from 'ant-design-vue'\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nexport default defineComponent({\n name: 'video-player',\n props: {\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n src: {\n type: String,\n required: true,\n },\n poster: {\n type: String,\n default: '',\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n setup(props) {\n const videoRef = ref()\n const playBarWrap = ref()\n const volumeBarRef = ref()\n\n const volume = ref(0.5)\n const paused = ref(true)\n const currentTime = ref(0)\n const duration = ref(0)\n const loaded = ref(0)\n const loop = ref(false)\n const bezelTransition = ref(false)\n const playbackRate = ref(1)\n\n const playBarTimeVisible = ref(false)\n const playBarTime = ref('00:00')\n const playBarTimeLeft = ref('0')\n\n const ptime = computed(() => secondToTime(currentTime.value))\n const dtime = computed(() => secondToTime(duration.value))\n const playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\n const loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\n const volumeBarWidth = computed(() => volume.value * 100 + '%')\n\n const speedMenuVisible = ref(false)\n const speedOptions = [\n { label: '2x', value: 2 },\n { label: '1.5x', value: 1.5 },\n { label: '1.25x', value: 1.25 },\n { label: '1x', value: 1 },\n { label: '0.75x', value: 0.75 },\n { label: '0.5x', value: 0.5 },\n ]\n\n const seek = (time: number) => {\n if (!videoRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n videoRef.value.currentTime = time\n currentTime.value = time\n }\n\n const play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n }\n\n const pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n }\n\n const toggle = () => {\n if (paused.value) play() \n else pause()\n }\n\n const setVolume = (percentage: number) => {\n if (!videoRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n videoRef.value.volume = percentage\n volume.value = percentage\n if (videoRef.value.muted && percentage !== 0) videoRef.value.muted = false\n }\n\n const speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n }\n\n const handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n }\n\n const handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n }\n\n const handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n }\n\n const handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n }\n\n const handleError = () => message.error('视频加载失败')\n\n const thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n }\n\n const thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n }\n\n const handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n }\n\n const volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n }\n\n const handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n }\n\n const handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n }\n\n const toggleVolume = () => {\n if (!videoRef.value) return\n\n if (videoRef.value.muted) {\n videoRef.value.muted = false\n setVolume(0.5)\n }\n else {\n videoRef.value.muted = true\n setVolume(0)\n }\n }\n\n const toggleLoop = () => {\n loop.value = !loop.value\n }\n\n const autoHideControllerTimer = ref(-1)\n const hideController = ref(false)\n const autoHideController = () => {\n hideController.value = false\n clearTimeout(autoHideControllerTimer.value)\n autoHideControllerTimer.value = setTimeout(() => {\n if (videoRef.value?.played.length) hideController.value = true\n }, 3000)\n }\n \n useMSE(props.src, videoRef)\n\n return {\n videoRef,\n playBarWrap,\n volumeBarRef,\n volume,\n loop,\n paused,\n ptime,\n dtime,\n playBarTime,\n playBarTimeVisible,\n playBarTimeLeft,\n playedBarWidth,\n loadedBarWidth,\n volumeBarWidth,\n hideController,\n bezelTransition,\n playbackRate,\n speedMenuVisible,\n speedOptions,\n seek,\n play,\n pause,\n toggle,\n setVolume,\n speed,\n handleDurationchange,\n handleTimeupdate,\n handleEnded,\n handleProgress,\n handleMousedownPlayBar,\n handleMousedownVolumeBar,\n handleClickVolumeBar,\n handleMousemovePlayBar,\n toggleVolume,\n toggleLoop,\n autoHideController,\n handleError,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=e716fb74&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e716fb74&scoped=true&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e716fb74\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\nexport default defineComponent({\n name: 'editable-element-video',\n components: {\n VideoPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTVideoElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n }\n\n return {\n canvasScale,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=7f80f8ee&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7f80f8ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7f80f8ee\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_AudioPlayer = _resolveComponent(\"AudioPlayer\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => _ctx.handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_ctx.handleElementId === _ctx.elementInfo.id)\n ? (_openBlock(), _createBlock(_component_AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ..._ctx.audioPlayerPosition }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n scale: _ctx.canvasScale,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5cabbb47\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"autoplay\"]\nconst _hoisted_2 = { class: \"controller\" }\nconst _hoisted_3 = { class: \"icons\" }\nconst _hoisted_4 = { class: \"icon-content\" }\nconst _hoisted_5 = { class: \"volume\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = {\n class: \"volume-bar\",\n ref: \"volumeBarRef\"\n}\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = { class: \"time\" }\nconst _hoisted_11 = { class: \"ptime\" }\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\" / \")\nconst _hoisted_13 = { class: \"dtime\" }\nconst _hoisted_14 = { class: \"bar\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"audio-player\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref: \"audioRef\",\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (_ctx.handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (_ctx.handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (_ctx.handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (_ctx.paused)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (_ctx.volume === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (_ctx.volume === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[8] || (_cache[8] = $event => _ctx.handleMousedownVolumeBar($event)),\n onTouchstart: _cache[9] || (_cache[9] = $event => _ctx.handleMousedownVolumeBar($event)),\n onClick: _cache[10] || (_cache[10] = $event => _ctx.handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: _ctx.volumeBarWidth })\n }, _hoisted_9, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.ptime), 1),\n _hoisted_12,\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.dtime), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref: \"playBarWrap\",\n onMousedown: _cache[11] || (_cache[11] = $event => _ctx.handleMousedownPlayBar($event)),\n onTouchstart: _cache[12] || (_cache[12] = $event => _ctx.handleMousedownPlayBar($event)),\n onMousemove: _cache[13] || (_cache[13] = $event => _ctx.handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (_ctx.playBarTimeVisible = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (_ctx.playBarTimeVisible = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !_ctx.playBarTimeVisible }]),\n style: _normalizeStyle({ left: _ctx.playBarTimeLeft })\n }, _toDisplayString(_ctx.playBarTime), 7),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: _ctx.loadedBarWidth })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: _ctx.playedBarWidth })\n }, _hoisted_16, 4)\n ])\n ], 544)\n ])\n ], 4))\n}","\nimport { computed, defineComponent, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nexport default defineComponent({\n name: 'audio-player',\n props: {\n src: {\n type: String,\n required: true,\n },\n loop: {\n type: Boolean,\n required: true,\n },\n autoplay: {\n type: Boolean,\n default: false,\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n setup(props) {\n const audioRef = ref()\n const playBarWrap = ref()\n const volumeBarRef = ref()\n\n const volume = ref(0.5)\n const paused = ref(true)\n const currentTime = ref(0)\n const duration = ref(0)\n const loaded = ref(0)\n\n const playBarTimeVisible = ref(false)\n const playBarTime = ref('00:00')\n const playBarTimeLeft = ref('0')\n\n const ptime = computed(() => secondToTime(currentTime.value))\n const dtime = computed(() => secondToTime(duration.value))\n const playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\n const loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\n const volumeBarWidth = computed(() => volume.value * 100 + '%')\n\n const seek = (time: number) => {\n if (!audioRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n audioRef.value.currentTime = time\n currentTime.value = time\n }\n\n const play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n }\n\n const pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n }\n\n const toggle = () => {\n if (paused.value) play() \n else pause()\n }\n\n const setVolume = (percentage: number) => {\n if (!audioRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n audioRef.value.volume = percentage\n volume.value = percentage\n if (audioRef.value.muted && percentage !== 0) audioRef.value.muted = false\n }\n\n const handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n }\n\n const handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n }\n\n const handlePlayed = () => {\n paused.value = false\n }\n\n const handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n }\n\n const handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n }\n\n const handleError = () => message.error('视频加载失败')\n\n const thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n }\n\n const thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n }\n\n const handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n }\n\n const volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n }\n\n const handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n }\n\n const handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value) - 5.5) / 35\n setVolume(percentage)\n }\n\n const handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n }\n\n const toggleVolume = () => {\n if (!audioRef.value) return\n\n if (audioRef.value.muted) {\n audioRef.value.muted = false\n setVolume(0.5)\n }\n else {\n audioRef.value.muted = true\n setVolume(0)\n }\n }\n\n return {\n audioRef,\n playBarWrap,\n volumeBarRef,\n volume,\n paused,\n ptime,\n dtime,\n playBarTime,\n playBarTimeVisible,\n playBarTimeLeft,\n playedBarWidth,\n loadedBarWidth,\n volumeBarWidth,\n play,\n pause,\n toggle,\n setVolume,\n handleDurationchange,\n handleTimeupdate,\n handlePlayed,\n handleEnded,\n handleProgress,\n handleError,\n handleMousedownPlayBar,\n handleMousedownVolumeBar,\n handleClickVolumeBar,\n handleMousemovePlayBar,\n toggleVolume,\n }\n },\n})\n","import { render } from \"./AudioPlayer.vue?vue&type=template&id=5cabbb47&scoped=true&ts=true\"\nimport script from \"./AudioPlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=5cabbb47&scoped=true&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5cabbb47\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\nexport default defineComponent({\n name: 'editable-element-audio',\n components: {\n AudioPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTAudioElement, canMove?: boolean) => void>,\n required: true,\n },\n contextmenus: {\n type: Function as PropType<() => ContextmenuItem[]>,\n },\n },\n setup(props) {\n const { canvasScale, handleElementId } = storeToRefs(useMainStore())\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n const audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / canvasScale.value\n const audioHeight = 50 / canvasScale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n })\n\n const handleSelectElement = (e: MouseEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n }\n\n return {\n canvasScale,\n handleElementId,\n audioIconSize,\n audioPlayerPosition,\n handleSelectElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=66dd4448&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=66dd4448&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66dd4448\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport useLockElement from '@/hooks/useLockElement'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\n\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\n\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\nimport TextElement from '@/views/components/element/TextElement/index.vue'\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\nimport LineElement from '@/views/components/element/LineElement/index.vue'\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\nimport TableElement from '@/views/components/element/TableElement/index.vue'\nimport LatexElement from '@/views/components/element/LatexElement/index.vue'\nimport VideoElement from '@/views/components/element/VideoElement/index.vue'\nimport AudioElement from '@/views/components/element/AudioElement/index.vue'\n\nexport default defineComponent({\n name: 'editable-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n isMultiSelect: {\n type: Boolean,\n required: true,\n },\n selectElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTElement, canMove?: boolean) => void>,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: ImageElement,\n [ElementTypes.TEXT]: TextElement,\n [ElementTypes.SHAPE]: ShapeElement,\n [ElementTypes.LINE]: LineElement,\n [ElementTypes.CHART]: ChartElement,\n [ElementTypes.TABLE]: TableElement,\n [ElementTypes.LATEX]: LatexElement,\n [ElementTypes.VIDEO]: VideoElement,\n [ElementTypes.AUDIO]: AudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement, unlockElement } = useLockElement()\n const { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n\n const contextmenus = (): ContextmenuItem[] => {\n if (props.elementInfo.lock) {\n return [{\n text: '解锁', \n handler: () => unlockElement(props.elementInfo),\n }]\n }\n\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutElement,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copyElement,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n { divider: true },\n {\n text: '水平居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER), },\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\n ],\n },\n {\n text: '垂直居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\n ],\n },\n { divider: true },\n {\n text: '置于顶层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP),\n children: [\n { text: '置于顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\n ],\n },\n {\n text: '置于底层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM),\n children: [\n { text: '置于底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\n ],\n },\n { divider: true },\n {\n text: '设置链接',\n handler: props.openLinkDialog,\n },\n {\n text: props.elementInfo.groupId ? '取消组合' : '组合',\n subText: 'Ctrl + G',\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\n hide: !props.isMultiSelect,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '锁定',\n subText: 'Ctrl + L',\n handler: lockElement,\n },\n {\n text: '删除',\n subText: 'Delete',\n handler: deleteElement,\n },\n ]\n }\n\n return {\n currentElementComponent,\n contextmenus,\n }\n },\n})\n","import { render } from \"./EditableElement.vue?vue&type=template&id=19fcaa81&ts=true\"\nimport script from \"./EditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${$props.quadrant}`),\n style: _normalizeStyle({\n top: $props.top + 'px',\n left: $props.left + 'px',\n width: $props.width + 'px',\n height: $props.height + 'px',\n })\n }, null, 6))\n}","\nexport default {\n name: 'mouse-selection',\n props: {\n top: {\n type: Number,\n required: true,\n },\n left: {\n type: Number,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n quadrant: {\n type: Number,\n required: true,\n validator(value: number) {\n return [1, 2, 3, 4].includes(value)\n },\n },\n }\n}\n","import { render } from \"./MouseSelection.vue?vue&type=template&id=1619c258&scoped=true&ts=true\"\nimport script from \"./MouseSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1619c258\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GridLines = _resolveComponent(\"GridLines\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, [\n (_ctx.showGridLines)\n ? (_openBlock(), _createBlock(_component_GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9b94cc34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_ctx.canvasScale})`,\n }),\n d: _ctx.path,\n fill: \"none\",\n stroke: _ctx.gridColor,\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}","\nimport { defineComponent, computed } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { SlideBackground } from '@/types/slides'\n\nexport default defineComponent({\n name: 'grid-lines',\n setup() {\n const { canvasScale } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => currentSlide.value?.background)\n\n // 计算网格线的颜色,避免与背景的颜色太接近\n const gridColor = computed(() => {\n const bgColor = background.value?.color || '#fff'\n const colorList = ['#000', '#fff']\n return tinycolor.mostReadable(bgColor, colorList, { includeFallbackColors: true }).setAlpha(.5).toRgbString()\n })\n\n const gridSize = 50\n\n // 计算网格路径\n const getPath = () => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let path = ''\n for (let i = 0; i <= Math.floor(maxY / gridSize); i++) {\n path += `M0 ${i * gridSize} L${maxX} ${i * gridSize} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridSize); i++) {\n path += `M${i * gridSize} 0 L${i * gridSize} ${maxY} `\n }\n return path\n }\n\n return {\n canvasScale,\n gridColor,\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n path: getPath(),\n }\n },\n})\n","import { render } from \"./GridLines.vue?vue&type=template&id=9b94cc34&scoped=true&ts=true\"\nimport script from \"./GridLines.vue?vue&type=script&lang=ts\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=9b94cc34&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9b94cc34\"]])\n\nexport default __exports__","import { Ref, computed } from 'vue'\nimport { SlideBackground } from '@/types/slides'\n\n// 将页面背景数据转换为css样式\nexport default (background: Ref) => {\n const backgroundStyle = computed(() => {\n if (!background.value) return { backgroundColor: '#fff' }\n\n const {\n type,\n color,\n image,\n imageSize,\n gradientColor,\n gradientRotate,\n gradientType,\n } = background.value\n\n // 纯色背景\n if (type === 'solid') return { backgroundColor: color }\n\n // 背景图模式\n // 包括:背景图、背景大小,是否重复\n else if (type === 'image') {\n if (!image) return { backgroundColor: '#fff' }\n if (imageSize === 'repeat') {\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'repeat',\n backgroundSize: 'contain',\n }\n }\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: imageSize || 'cover',\n }\n }\n\n // 渐变色背景\n else if (type === 'gradient') {\n const rotate = gradientRotate || 0\n const color1 = gradientColor ? gradientColor[0] : '#fff'\n const color2 = gradientColor ? gradientColor[1] : '#fff'\n \n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\n }\n\n return { backgroundColor: '#fff' }\n })\n\n return {\n backgroundStyle,\n }\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { SlideBackground } from '@/types/slides'\nimport GridLines from './GridLines.vue'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nexport default defineComponent({\n name: 'viewport-background',\n components: {\n GridLines,\n },\n setup() {\n const { showGridLines } = storeToRefs(useMainStore())\n const { currentSlide } = storeToRefs(useSlidesStore())\n const background = computed(() => currentSlide.value?.background)\n\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n return {\n showGridLines,\n backgroundStyle,\n }\n },\n})\n","import { render } from \"./ViewportBackground.vue?vue&type=template&id=4d0018d8&scoped=true&ts=true\"\nimport script from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=4d0018d8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4d0018d8\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: _ctx.left, top: _ctx.top })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', _ctx.type]),\n style: _normalizeStyle(_ctx.sizeStyle)\n }, null, 6)\n ], 4))\n}","\nimport { computed, PropType, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { AlignmentLineAxis } from '@/types/edit'\n\nexport default defineComponent({\n name: 'alignment-line',\n props: {\n type: {\n type: String as PropType<'vertical' | 'horizontal'>,\n required: true,\n },\n axis: {\n type: Object as PropType,\n required: true,\n },\n length: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n // 吸附对齐线的位置\n const left = computed(() => props.axis.x * canvasScale.value + 'px')\n const top = computed(() => props.axis.y * canvasScale.value + 'px')\n\n // 吸附对齐线的长度\n const sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * canvasScale.value + 'px' }\n return { width: props.length * canvasScale.value + 'px' }\n })\n\n return {\n left,\n top,\n sizeStyle,\n }\n },\n})\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=62c9018e&scoped=true&ts=true\"\nimport script from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=62c9018e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62c9018e\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a8c28cdc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref: \"selectionRef\",\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (_ctx.start && _ctx.end)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _ctx.creatingElement.type]),\n style: _normalizeStyle(_ctx.position)\n }, [\n (_ctx.creatingElement.type === 'line' && _ctx.lineData)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: _ctx.lineData.svgWidth,\n height: _ctx.lineData.svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.lineData.path,\n stroke: \"#d14424\",\n fill: \"none\",\n \"stroke-width\": \"1\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}","\nimport { computed, defineComponent, onMounted, reactive, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\n\nexport default defineComponent({\n name: 'element-create-selection',\n emits: ['created'],\n setup(props, { emit }) {\n const mainStore = useMainStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const start = ref<[number, number]>()\n const end = ref<[number, number]>()\n\n const selectionRef = ref()\n const offset = reactive({\n x: 0,\n y: 0,\n })\n onMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.x = x\n offset.y = y\n })\n\n // 鼠标拖动创建元素生成位置大小\n // 获取范围的起始位置和终点位置\n const createSelection = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n start.value = [startPageX, startPageY]\n\n document.onmousemove = e => {\n if (!creatingElement.value || !isMouseDown) return\n\n let currentPageX = e.pageX\n let currentPageY = e.pageY\n\n // 按住Ctrl键或者Shift键时:\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\n if (ctrlOrShiftKeyActive.value) {\n const moveX = currentPageX - startPageX\n const moveY = currentPageY - startPageY\n\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\n const absX = Math.abs(moveX)\n const absY = Math.abs(moveY)\n\n if (creatingElement.value.type === 'shape') {\n\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\n\n if (absX > absY) {\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\n }\n else {\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\n }\n }\n\n else if (creatingElement.value.type === 'line') {\n if (absX > absY) currentPageY = startPageY\n else currentPageX = startPageX\n }\n }\n\n end.value = [currentPageX, currentPageY]\n }\n\n document.onmouseup = e => {\n document.onmousemove = null\n document.onmouseup = null\n\n if (e.button === 2) {\n setTimeout(() => mainStore.setCreatingElement(null), 0)\n return\n }\n\n isMouseDown = false\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n const minSize = 30\n\n if (\n creatingElement.value?.type === 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value,\n end: end.value,\n })\n }\n else if (\n creatingElement.value?.type !== 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize && Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value,\n end: end.value,\n })\n }\n else {\n const defaultSize = 200\n const minX = Math.min(endPageX, startPageX)\n const minY = Math.min(endPageY, startPageY)\n const maxX = Math.max(endPageX, startPageX)\n const maxY = Math.max(endPageY, startPageY)\n const offsetX = maxX - minX >= minSize ? maxX - minX : defaultSize\n const offsetY = maxY - minY >= minSize ? maxY - minY : defaultSize\n emit('created', {\n start: [minX, minY],\n end: [minX + offsetX, minY + offsetY],\n })\n }\n }\n }\n\n // 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\n const lineData = computed(() => {\n if (!start.value || !end.value) return null\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\n\n const [_startX, _startY] = start.value\n const [_endX, _endY] = end.value\n const minX = Math.min(_startX, _endX)\n const maxX = Math.max(_startX, _endX)\n const minY = Math.min(_startY, _endY)\n const maxY = Math.max(_startY, _endY)\n\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\n\n const startX = _startX === minX ? 0 : maxX - minX\n const startY = _startY === minY ? 0 : maxY - minY\n const endX = _endX === minX ? 0 : maxX - minX\n const endY = _endY === minY ? 0 : maxY - minY\n\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\n\n return {\n svgWidth,\n svgHeight,\n startX,\n startY,\n endX,\n endY,\n path,\n }\n })\n\n // 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\n const position = computed(() => {\n if (!start.value || !end.value) return {}\n\n const [startX, startY] = start.value\n const [endX, endY] = end.value\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const width = maxX - minX\n const height = maxY - minY\n\n return {\n left: minX - offset.x + 'px',\n top: minY - offset.y + 'px',\n width: width + 'px',\n height: height + 'px',\n }\n })\n\n return {\n selectionRef,\n start,\n end,\n creatingElement,\n createSelection,\n lineData,\n position,\n }\n },\n})\n","import { render } from \"./ElementCreateSelection.vue?vue&type=template&id=a8c28cdc&scoped=true&ts=true\"\nimport script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=a8c28cdc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a8c28cdc\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: _ctx.minX * _ctx.canvasScale + 'px',\n top: _ctx.minY * _ctx.canvasScale + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!_ctx.disableResize)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (_ctx.scaleMultiElement($event, { minX: _ctx.minX, maxX: _ctx.maxX, minY: _ctx.minY, maxY: _ctx.maxY }, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}","import { computed, Ref } from 'vue'\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\n\nexport default (width: Ref, height: Ref) => {\n // 元素缩放点\n const resizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 文本元素缩放点\n const textElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n ]\n })\n\n // 元素选中边框线\n const borderLines = computed(() => {\n return [\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\n ]\n })\n\n return {\n resizeHandlers,\n textElementResizeHandlers,\n borderLines,\n }\n}","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', _ctx.rotateClassName, _ctx.type])\n }, null, 2))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { OperateResizeHandler } from '@/types/edit'\n\nexport default defineComponent({\n name: 'resize-handler',\n props: {\n type: {\n type: String as PropType,\n default: '',\n },\n rotate: {\n type: Number,\n default: 0,\n },\n },\n setup(props) {\n const rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n })\n\n return {\n rotateClassName,\n }\n },\n})\n","import { render } from \"./ResizeHandler.vue?vue&type=template&id=680e5917&scoped=true&ts=true\"\nimport script from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=680e5917&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-680e5917\"]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', $props.type, { 'wide': $props.isWide }])\n }, null, 2))\n}","\nimport { PropType } from 'vue'\nimport { OperateBorderLine } from '@/types/edit'\n\nexport default {\n name: 'border-line',\n props: {\n type: {\n type: String as PropType,\n required: true,\n },\n isWide: {\n type: Boolean,\n default: false,\n },\n },\n}\n","import { render } from \"./BorderLine.vue?vue&type=template&id=630e246b&scoped=true&ts=true\"\nimport script from \"./BorderLine.vue?vue&type=script&lang=ts\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-630e246b\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, reactive, PropType, watchEffect, toRefs } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport { OperateResizeHandler, MultiSelectRange } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'multi-select-operate',\n components: {\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementList: {\n type: Array as PropType,\n required: true,\n },\n scaleMultiElement: {\n type: Function as PropType<(e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\n const localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\n const range = reactive({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n })\n\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\n const width = computed(() => (range.maxX - range.minX) * canvasScale.value)\n const height = computed(() => (range.maxY - range.minY) * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n // 计算多选元素整体在画布中的范围\n const setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.minX = minX\n range.maxX = maxX\n range.minY = minY\n range.maxY = maxY\n }\n watchEffect(setRange)\n\n // 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\n const disableResize = computed(() => {\n return localActiveElementList.value.some(item => {\n if (\n (item.type === 'image' || item.type === 'shape') && \n !item.rotate\n ) return false\n return true\n })\n })\n\n return {\n ...toRefs(range),\n canvasScale,\n borderLines,\n disableResize,\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=2d010d5c&scoped=true&ts=true\"\nimport script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=2d010d5c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d010d5c\"]])\n\nexport default __exports__","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-71428444\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinkHandler = _resolveComponent(\"LinkHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': _ctx.isMultiSelect && !_ctx.isActive }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top * _ctx.canvasScale + 'px',\r\n left: _ctx.elementInfo.left * _ctx.canvasScale + 'px',\r\n transform: `rotate(${_ctx.elementInfo.rotate}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _ctx.canvasScale / 2}px ${_ctx.elementInfo.height * _ctx.canvasScale / 2}px`,\r\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentOperateComponent), {\n key: 0,\n elementInfo: _ctx.elementInfo,\n handlerVisible: !_ctx.elementInfo.lock && (_ctx.isActiveGroupElement || !_ctx.isMultiSelect),\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n dragLineElement: _ctx.dragLineElement\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.toolbarState === 'elAnimation' && _ctx.elementIndexInAnimation !== -1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(_ctx.elementIndexInAnimation + 1), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(_component_LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': _ctx.isCliping }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a549510\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"rotate-handler\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\nexport default {\n name: 'rotate-handler',\n}\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=9a549510&scoped=true&ts=true\"\nimport script from \"./RotateHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a549510\"]])\n\nexport default __exports__","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n handlerVisible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTImageElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n isCliping,\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageElementOperate.vue?vue&type=template&id=24706869&scoped=true&ts=true\"\nimport script from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=24706869&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24706869\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textElementResizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n handlerVisible: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTTextElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale } = storeToRefs(useMainStore())\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextElementOperate.vue?vue&type=template&id=449ddc8c&ts=true\"\nimport script from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"shape-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'shape-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTShapeElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n scaleWidth,\n resizeHandlers,\n borderLines,\n }\n },\n})\n","import { render } from \"./ShapeElementOperate.vue?vue&type=template&id=29fcec33&ts=true\"\nimport script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handlerVisible)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTLineElement } from '@/types/slides'\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\nexport default defineComponent({\n name: 'text-element-operate',\n inheritAttrs: false,\n components: {\n ResizeHandler,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n dragLineElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const resizeHandlers = computed(() => {\n const handlers = [\n {\n handler: OperateLineHandlers.START,\n style: {\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\n }\n },\n {\n handler: OperateLineHandlers.END,\n style: {\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\n }\n },\n ]\n\n if (props.elementInfo.curve || props.elementInfo.broken) {\n const midHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.MID,\n style: {\n left: midHandler[0] * canvasScale.value + 'px',\n top: midHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n return handlers\n })\n\n return {\n resizeHandlers,\n }\n },\n})\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=02ece9c9&ts=true\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"table-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.textElementResizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(_component_RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTTableElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\nexport default defineComponent({\n name: 'table-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTTableElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\n const scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n return {\n scaleWidth,\n textElementResizeHandlers,\n borderLines,\n }\n },\n})\n","import { render } from \"./TableElementOperate.vue?vue&type=template&id=7e9fb017&ts=true\"\nimport script from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BorderLine = _resolveComponent(\"BorderLine\")!\n const _component_ResizeHandler = _resolveComponent(\"ResizeHandler\")!\n const _component_RotateHandler = _resolveComponent(\"RotateHandler\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.borderLines, (line) => {\n return (_openBlock(), _createBlock(_component_BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.resizeHandlers, (point) => {\n return (_openBlock(), _createBlock(_component_ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!_ctx.cannotRotate)\n ? (_openBlock(), _createBlock(_component_RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: _ctx.scaleWidth / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.rotateElement(_ctx.elementInfo)), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTShapeElement, PPTVideoElement, PPTLatexElement, PPTAudioElement } from '@/types/slides'\nimport { OperateResizeHandler } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\ntype PPTElement = PPTShapeElement | PPTVideoElement | PPTLatexElement | PPTAudioElement\n\nexport default defineComponent({\n name: 'common-element-operate',\n inheritAttrs: false,\n components: {\n RotateHandler,\n ResizeHandler,\n BorderLine,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n handlerVisible: {\n type: Boolean,\n required: true,\n },\n rotateElement: {\n type: Function as PropType<(element: PPTElement) => void>,\n required: true,\n },\n scaleElement: {\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\n required: true,\n },\n },\n setup(props) {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\n const cannotRotate = computed(() => ['video', 'audio'].includes(props.elementInfo.type))\n\n return {\n scaleWidth,\n resizeHandlers,\n borderLines,\n cannotRotate,\n }\n },\n})\n","import { render } from \"./CommonElementOperate.vue?vue&type=template&id=3d82b467&ts=true\"\nimport script from \"./CommonElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3250b72d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = {\n key: 1,\n class: \"link\"\n}\nconst _hoisted_3 = { class: \"btns\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Divider = _resolveComponent(\"Divider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: _ctx.elementInfo.height * _ctx.canvasScale + 10 + 'px' })\n }, [\n (_ctx.elementInfo.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.elementInfo.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.elementInfo.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", _hoisted_2, \"幻灯片页面 \" + _toDisplayString(_ctx.elementInfo.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.openLinkDialog()))\n }, \"更换\"),\n _createVNode(_component_Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeLink(_ctx.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}","import { useSlidesStore } from '@/store'\nimport { PPTElement, PPTElementLink } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { message } from 'ant-design-vue'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const setLink = (handleElement: PPTElement, link: PPTElementLink) => {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (link.type === 'web' && !linkRegExp.test(link.target)) {\n message.error('不是正确的网页链接地址')\n return false\n }\n const props = { link }\n slidesStore.updateElement({ id: handleElement.id, props })\n addHistorySnapshot()\n\n return true\n }\n\n const removeLink = (handleElement: PPTElement) => {\n slidesStore.removeElementProps({ id: handleElement.id, propName: 'link' })\n addHistorySnapshot()\n }\n\n return {\n setLink,\n removeLink,\n }\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { PPTElement } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nexport default defineComponent({\n name: 'link-handler',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n openLinkDialog: {\n type: Function as PropType<() => void>,\n required: true,\n },\n },\n setup() {\n const { canvasScale } = storeToRefs(useMainStore())\n\n const { removeLink } = useLink()\n\n return {\n canvasScale,\n removeLink,\n }\n },\n})\n","import { render } from \"./LinkHandler.vue?vue&type=template&id=3250b72d&scoped=true&ts=true\"\nimport script from \"./LinkHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=3250b72d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3250b72d\"]])\n\nexport default __exports__","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateResizeHandler } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\nimport CommonElementOperate from './CommonElementOperate.vue'\r\nimport LinkHandler from './LinkHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'operate',\r\n components: {\r\n LinkHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isSelected: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n openLinkDialog: {\r\n type: Function as PropType<() => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n\r\n const currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n [ElementTypes.CHART]: CommonElementOperate,\r\n [ElementTypes.LATEX]: CommonElementOperate,\r\n [ElementTypes.VIDEO]: CommonElementOperate,\r\n [ElementTypes.AUDIO]: CommonElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const elementIndexInAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n return animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n })\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexInAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=71428444&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=71428444&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-71428444\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a0d0b33\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"link-dialog\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = {\n key: 2,\n class: \"preview\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", null, \"预览:\", -1))\nconst _hoisted_6 = { class: \"btns\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.type === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.type = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n (_ctx.type === 'web')\n ? (_openBlock(), _createBlock(_component_Input, {\n key: 0,\n class: \"input\",\n value: _ctx.address,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.address) = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'slide')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n class: \"input\",\n value: _ctx.slideId,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.slideId) = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: slide.id,\n value: slide.id\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"幻灯片 \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'slide' && _ctx.selectedSlide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: _ctx.selectedSlide,\n size: 490\n }, null, 8, [\"slide\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Button, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.save()))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ])\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-06a163ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailElement = _resolveComponent(\"ThumbnailElement\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: _ctx.size + 'px',\n height: _ctx.size * _ctx.viewportRatio + 'px',\n })\n }, [\n (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _ctx.VIEWPORT_SIZE + 'px',\n height: _ctx.VIEWPORT_SIZE * _ctx.viewportRatio + 'px',\n transform: `scale(${_ctx.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_ctx.backgroundStyle)\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(_component_ThumbnailElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"加载中 ...\"))\n ], 4))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${_ctx.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), {\n elementInfo: _ctx.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b0d4d1b2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ImageOutline = _resolveComponent(\"ImageOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n transform: `rotate(${_ctx.elementInfo.rotate}deg)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n })\n }, [\n _createVNode(_component_ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _ctx.clipShape.style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _ctx.imgPosition.top,\n left: _ctx.imgPosition.left,\n width: _ctx.imgPosition.width,\n height: _ctx.imgPosition.height,\n filter: _ctx.filter,\n }),\n alt: \"\"\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTImageElement } from '@/types/slides'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\n\nexport default defineComponent({\n name: 'base-element-image',\n components: {\n ImageOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n \n const clip = computed(() => props.elementInfo.clip)\n const { clipShape, imgPosition } = useClipImage(clip)\n\n const filters = computed(() => props.elementInfo.filters)\n const { filter } = useFilter(filters)\n\n return {\n imgPosition,\n filter,\n flipStyle,\n shadowStyle,\n clipShape,\n }\n },\n})\n","import { render } from \"./BaseImageElement.vue?vue&type=template&id=b0d4d1b2&scoped=true&ts=true\"\nimport script from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=b0d4d1b2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b0d4d1b2\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2ec235c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _ctx.shadowStyle,\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n })\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n innerHTML: _ctx.elementInfo.content\n }, null, 8, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType, computed } from 'vue'\nimport { PPTTextElement } from '@/types/slides'\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\n\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nexport default defineComponent({\n name: 'base-element-text',\n components: {\n ElementOutline,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n return {\n shadowStyle,\n }\n },\n})\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=2ec235c4&scoped=true&ts=true\"\nimport script from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=2ec235c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2ec235c4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68d8af98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_GradientDefs = _resolveComponent(\"GradientDefs\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '',\n transform: _ctx.flipStyle,\n color: _ctx.text.defaultColor,\n fontFamily: _ctx.text.defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(_component_GradientDefs, {\n id: `base-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#base-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _ctx.outlineColor,\n \"stroke-width\": _ctx.outlineWidth,\n \"stroke-dasharray\": _ctx.outlineStyle === 'dashed' ? '10 5' : '0 0'\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", _ctx.text.align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: _ctx.text.content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTShapeElement, ShapeText } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\n\nimport GradientDefs from './GradientDefs.vue'\n\nexport default defineComponent({\n name: 'base-element-shape',\n components: {\n GradientDefs,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const outline = computed(() => props.elementInfo.outline)\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\n \n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const flipH = computed(() => props.elementInfo.flipH)\n const flipV = computed(() => props.elementInfo.flipV)\n const { flipStyle } = useElementFlip(flipH, flipV)\n\n const text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n })\n\n return {\n shadowStyle,\n outlineWidth,\n outlineStyle,\n outlineColor,\n flipStyle,\n text,\n }\n },\n})\n","import { render } from \"./BaseShapeElement.vue?vue&type=template&id=68d8af98&scoped=true&ts=true\"\nimport script from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=68d8af98&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-68d8af98\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4032440c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _ctx.shadowStyle ? `drop-shadow(${_ctx.shadowStyle})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.svgWidth,\n height: _ctx.svgHeight\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: _ctx.path,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": _ctx.lineDashArray,\n fill: \"none\",\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'editable-element-shape',\n components: {\n LinePointMarker,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const shadow = computed(() => props.elementInfo.shadow)\n const { shadowStyle } = useElementShadow(shadow)\n\n const svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n })\n const svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n })\n\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\n\n const path = computed(() => {\n return getLineElementPath(props.elementInfo)\n })\n\n return {\n shadowStyle,\n svgWidth,\n svgHeight,\n lineDashArray,\n path,\n }\n },\n})\n","import { render } from \"./BaseLineElement.vue?vue&type=template&id=4032440c&scoped=true&ts=true\"\nimport script from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=4032440c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4032440c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_Chart = _resolveComponent(\"Chart\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n })\n }, [\n _createVNode(_component_ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(_component_Chart, {\n class: _normalizeClass({ 'need-scale': _ctx.needScaleSize }),\n width: _ctx.chartWidth,\n height: _ctx.chartHeight,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"class\", \"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 4)\n ], 4)\n ], 4))\n}","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n needScaleSize: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props) {\r\n return {\r\n chartWidth: computed(() => props.needScaleSize ? props.elementInfo.width * 10 : props.elementInfo.width),\r\n chartHeight: computed(() => props.needScaleSize ? props.elementInfo.height * 10 : props.elementInfo.height),\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=60d9ae43&scoped=true&ts=true\"\nimport script from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=60d9ae43&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-60d9ae43\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3bbcc75c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_StaticTable = _resolveComponent(\"StaticTable\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_StaticTable, {\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-74b60291\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: _ctx.totalWidth + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': _ctx.theme,\n 'row-header': _ctx.theme?.rowHeader,\n 'row-footer': _ctx.theme?.rowFooter,\n 'col-header': _ctx.theme?.colHeader,\n 'col-footer': _ctx.theme?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${_ctx.theme?.color}; --subThemeColor1: ${_ctx.subThemeColor[0]}; --subThemeColor2: ${_ctx.subThemeColor[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.colSizeList, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_1))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.data, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", { key: rowIndex }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: \"cell\",\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._ctx.getTextStyle(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan\n }, [\n _createElementVNode(\"div\", {\n class: \"cell-text\",\n innerHTML: _ctx.formatText(cell.text)\n }, null, 8, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_ctx.hideCells.includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ]))\n }), 128))\n ])\n ], 6)\n ], 4))\n}","\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nexport default defineComponent({\n name: 'static-table',\n props: {\n data: {\n type: Array as PropType,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n colWidths: {\n type: Array as PropType,\n required: true,\n },\n outline: {\n type: Object as PropType,\n required: true,\n },\n theme: {\n type: Object as PropType,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n },\n setup(props) {\n const colSizeList = ref([])\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\n watch([\n () => props.colWidths,\n () => props.width,\n ], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n }, { immediate: true })\n\n const cells = computed(() => props.data)\n const { hideCells } = useHideCells(cells)\n\n const theme = computed(() => props.theme)\n const { subThemeColor } = useSubThemeColor(theme)\n\n return {\n colSizeList,\n totalWidth,\n hideCells,\n getTextStyle,\n formatText,\n subThemeColor,\n }\n },\n})\n","import { render } from \"./StaticTable.vue?vue&type=template&id=74b60291&scoped=true&ts=true\"\nimport script from \"./StaticTable.vue?vue&type=script&lang=ts\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=74b60291&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-74b60291\"]])\n\nexport default __exports__","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\nexport default defineComponent({\n name: 'base-element-table',\n components: {\n StaticTable,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseTableElement.vue?vue&type=template&id=3bbcc75c&scoped=true&ts=true\"\nimport script from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=3bbcc75c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3bbcc75c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4118f3dd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTLatexElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-latex',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseLatexElement.vue?vue&type=template&id=4118f3dd&scoped=true&ts=true\"\nimport script from \"./BaseLatexElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=4118f3dd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4118f3dd\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.elementInfo.poster})` })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTVideoElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-video',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./BaseVideoElement.vue?vue&type=template&id=1c831c75&scoped=true&ts=true\"\nimport script from \"./BaseVideoElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=1c831c75&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c831c75\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-513e91c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { PPTAudioElement } from '@/types/slides'\n\nexport default defineComponent({\n name: 'base-element-audio',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n\n return {\n audioIconSize,\n }\n },\n})\n","import { render } from \"./BaseAudioElement.vue?vue&type=template&id=513e91c4&scoped=true&ts=true\"\nimport script from \"./BaseAudioElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=513e91c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-513e91c4\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ElementTypes, PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport BaseVideoElement from '@/views/components/element/VideoElement/BaseVideoElement.vue'\nimport BaseAudioElement from '@/views/components/element/AudioElement/BaseAudioElement.vue'\n\nexport default defineComponent({\n name: 'base-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: BaseChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: BaseVideoElement,\n [ElementTypes.AUDIO]: BaseAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n return {\n currentElementComponent,\n }\n },\n})\n","import { render } from \"./ThumbnailElement.vue?vue&type=template&id=36b099d8&ts=true\"\nimport script from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, PropType, defineComponent, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ThumbnailElement from './ThumbnailElement.vue'\n\nexport default defineComponent({\n name: 'thumbnail-slide',\n components: {\n ThumbnailElement,\n },\n props: {\n slide: {\n type: Object as PropType,\n required: true,\n },\n size: {\n type: Number,\n required: true,\n },\n visible: {\n type: Boolean,\n default: true,\n },\n },\n setup(props) {\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => props.slide.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const scale = computed(() => props.size / VIEWPORT_SIZE)\n provide('slideScale', scale)\n\n return {\n scale,\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=06a163ec&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=06a163ec&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-06a163ec\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'link-dialog',\n emits: ['close'],\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { handleElement } = storeToRefs(useMainStore())\n const { slides } = storeToRefs(useSlidesStore())\n\n const type = ref<'web' | 'slide'>('web')\n const address = ref('')\n const slideId = ref('')\n\n const selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n })\n\n const tabs = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n ]\n\n const { setLink } = useLink()\n\n onMounted(() => {\n if (handleElement.value?.link) {\n if (handleElement.value.link.type === 'web') address.value = handleElement.value.link.target\n else if (handleElement.value.link.type === 'slide') slideId.value = handleElement.value.link.target\n\n type.value = handleElement.value.link.type\n }\n })\n\n const close = () => emit('close')\n\n const save = () => {\n const link: PPTElementLink = {\n type: type.value,\n target: type.value === 'web' ? address.value : slideId.value,\n }\n if (handleElement.value) {\n const success = setLink(handleElement.value, link)\n if (success) close()\n else address.value = ''\n }\n }\n\n return {\n slides,\n tabs,\n type,\n address,\n slideId,\n selectedSlide,\n close,\n save,\n }\n },\n})\n","import { render } from \"./LinkDialog.vue?vue&type=template&id=5a0d0b33&scoped=true&ts=true\"\nimport script from \"./LinkDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=5a0d0b33&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a0d0b33\"]])\n\nexport default __exports__","\nimport { defineComponent, provide, ref, watch, watchEffect } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { PPTElement } from '@/types/slides'\nimport { AlignmentLineProps } from '@/types/edit'\nimport { removeAllRanges } from '@/utils/selection'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useViewportSize from './hooks/useViewportSize'\nimport useMouseSelection from './hooks/useMouseSelection'\nimport useDropImageOrText from './hooks/useDropImageOrText'\nimport useRotateElement from './hooks/useRotateElement'\nimport useScaleElement from './hooks/useScaleElement'\nimport useSelectElement from './hooks/useSelectElement'\nimport useDragElement from './hooks/useDragElement'\nimport useDragLineElement from './hooks/useDragLineElement'\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\n\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\n\nimport EditableElement from './EditableElement.vue'\nimport MouseSelection from './MouseSelection.vue'\nimport ViewportBackground from './ViewportBackground.vue'\nimport AlignmentLine from './AlignmentLine.vue'\nimport ElementCreateSelection from './ElementCreateSelection.vue'\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\nimport Operate from './Operate/index.vue'\nimport LinkDialog from './LinkDialog.vue'\n\nexport default defineComponent({\n name: 'editor-canvas',\n components: {\n EditableElement,\n MouseSelection,\n ViewportBackground,\n AlignmentLine,\n ElementCreateSelection,\n MultiSelectOperate,\n Operate,\n LinkDialog,\n },\n setup() {\n const mainStore = useMainStore()\n const {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n editorAreaFocus,\n showGridLines,\n creatingElement,\n canvasScale,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const viewportRef = ref()\n const alignmentLines = ref([])\n\n const linkDialogVisible = ref(false)\n const openLinkDialog = () => linkDialogVisible.value = true\n\n watch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n })\n\n const elementList = ref([])\n const setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n }\n watchEffect(setLocalElementList)\n\n const canvasRef = ref()\n const { viewportStyles } = useViewportSize(canvasRef)\n\n useDropImageOrText(canvasRef)\n\n const { mouseSelectionState, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\n const { dragElement } = useDragElement(elementList, alignmentLines)\n const { dragLineElement } = useDragLineElement(elementList)\n const { selectElement } = useSelectElement(elementList, dragElement)\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines)\n const { rotateElement } = useRotateElement(elementList, viewportRef)\n\n const { selectAllElement } = useSelectAllElement()\n const { deleteAllElements } = useDeleteElement()\n const { pasteElement } = useCopyAndPasteElement()\n const { enterScreening } = useScreening()\n const { updateSlideIndex } = useSlideHandler()\n\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\n const handleClickBlankArea = (e: MouseEvent) => {\n mainStore.setActiveElementIdList([])\n if (!ctrlOrShiftKeyActive.value) updateMouseSelection(e)\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n removeAllRanges()\n }\n\n // 移除画布编辑区域焦点\n const removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n }\n\n // 滚动鼠标\n const { scaleCanvas } = useScaleCanvas()\n const throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\n const throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\n const handleMousewheelCanvas = (e: WheelEvent) => {\n e.preventDefault()\n\n // 按住Ctrl键时:缩放画布\n if (ctrlKeyState.value) {\n if (e.deltaY > 0) throttleScaleCanvas('-')\n else if (e.deltaY < 0) throttleScaleCanvas('+')\n }\n // 上下翻页\n else {\n if (e.deltaY > 0) throttleUpdateSlideIndex(KEYS.DOWN)\n else if (e.deltaY < 0) throttleUpdateSlideIndex(KEYS.UP)\n }\n }\n\n // 开关网格线\n const toggleGridLines = () => {\n mainStore.setGridLinesState(!showGridLines.value)\n }\n\n // 在鼠标绘制的范围插入元素\n const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\n const contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '网格线',\n subText: showGridLines.value ? '√' : '',\n handler: toggleGridLines,\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '从当前页演示',\n subText: 'Ctrl+F',\n handler: enterScreening,\n },\n ]\n }\n\n provide('slideScale', canvasScale)\n\n return {\n elementList,\n activeElementIdList,\n handleElementId,\n activeGroupElementId,\n canvasRef,\n viewportRef,\n viewportStyles,\n canvasScale,\n mouseSelectionState,\n currentSlide,\n creatingElement,\n alignmentLines,\n linkDialogVisible,\n openLinkDialog,\n handleClickBlankArea,\n removeEditorAreaFocus,\n insertElementFromCreateSelection,\n selectElement,\n rotateElement,\n scaleElement,\n dragLineElement,\n scaleMultiElement,\n handleMousewheelCanvas,\n contextmenus,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=1386e8fc&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1386e8fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1386e8fc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4ae7c9aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"canvas-tool\" }\nconst _hoisted_2 = { class: \"left-handler\" }\nconst _hoisted_3 = { class: \"add-element-handler\" }\nconst _hoisted_4 = { class: \"right-handler\" }\nconst _hoisted_5 = { class: \"text\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconBack = _resolveComponent(\"IconBack\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconPicture = _resolveComponent(\"IconPicture\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_ShapePool = _resolveComponent(\"ShapePool\")!\n const _component_IconGraphicDesign = _resolveComponent(\"IconGraphicDesign\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_LinePool = _resolveComponent(\"LinePool\")!\n const _component_IconConnection = _resolveComponent(\"IconConnection\")!\n const _component_ChartPool = _resolveComponent(\"ChartPool\")!\n const _component_IconChartProportion = _resolveComponent(\"IconChartProportion\")!\n const _component_TableGenerator = _resolveComponent(\"TableGenerator\")!\n const _component_IconInsertTable = _resolveComponent(\"IconInsertTable\")!\n const _component_IconFormula = _resolveComponent(\"IconFormula\")!\n const _component_MediaInput = _resolveComponent(\"MediaInput\")!\n const _component_IconVideoTwo = _resolveComponent(\"IconVideoTwo\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_IconFullScreen = _resolveComponent(\"IconFullScreen\")!\n const _component_LaTeXEditor = _resolveComponent(\"LaTeXEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"撤销\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBack, {\n class: _normalizeClass([\"handler-item\", { 'disable': !_ctx.canUndo }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.undo()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"重做\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconNext, {\n class: _normalizeClass([\"handler-item\", { 'disable': !_ctx.canRedo }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.redo()))\n }, null, 8, [\"class\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入文字\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize, {\n class: \"handler-item\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.drawText()))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_FileInput, {\n onChange: _cache[3] || (_cache[3] = files => _ctx.insertImageElement(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入图片\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPicture, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.shapePoolVisible,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.shapePoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ShapePool, {\n onSelect: _cache[4] || (_cache[4] = shape => _ctx.drawShape(shape))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入形状\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconGraphicDesign, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.linePoolVisible,\n \"onUpdate:visible\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.linePoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_LinePool, {\n onSelect: _cache[6] || (_cache[6] = line => _ctx.drawLine(line))\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入线条\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconConnection, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.chartPoolVisible,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.chartPoolVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ChartPool, {\n onSelect: _cache[8] || (_cache[8] = chart => { _ctx.createChartElement(chart); _ctx.chartPoolVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入图表\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconChartProportion, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.tableGeneratorVisible,\n \"onUpdate:visible\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.tableGeneratorVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_TableGenerator, {\n onClose: _cache[10] || (_cache[10] = ($event: any) => (_ctx.tableGeneratorVisible = false)),\n onInsert: _cache[11] || (_cache[11] = ({ row, col }) => { _ctx.createTableElement(row, col); _ctx.tableGeneratorVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入表格\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconInsertTable, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入公式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormula, {\n class: \"handler-item\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.latexEditorVisible = true))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.mediaInputVisible,\n \"onUpdate:visible\": _cache[17] || (_cache[17] = ($event: any) => ((_ctx.mediaInputVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_MediaInput, {\n onClose: _cache[14] || (_cache[14] = ($event: any) => (_ctx.mediaInputVisible = false)),\n onInsertVideo: _cache[15] || (_cache[15] = src => { _ctx.createVideoElement(src); _ctx.mediaInputVisible = false }),\n onInsertAudio: _cache[16] || (_cache[16] = src => { _ctx.createAudioElement(src); _ctx.mediaInputVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"插入音视频\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconVideoTwo, { class: \"handler-item\" })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_IconMinus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.scaleCanvas('-')))\n }),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.canvasScalePercentage), 1),\n _createVNode(_component_IconPlus, {\n class: \"handler-item viewport-size\",\n onClick: _cache[19] || (_cache[19] = ($event: any) => (_ctx.scaleCanvas('+')))\n }),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"适配屏幕\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFullScreen, {\n class: \"handler-item viewport-size-adaptation\",\n onClick: _cache[20] || (_cache[20] = ($event: any) => (_ctx.setCanvasPercentage(90)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[23] || (_cache[23] = ($event: any) => ((_ctx.latexEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LaTeXEditor, {\n onClose: _cache[21] || (_cache[21] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[22] || (_cache[22] = data => { _ctx.createLatexElement(data); _ctx.latexEditorVisible = false })\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0f50713a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_6 = [\"transform\"]\nconst _hoisted_7 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.shapeList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"shape-content\",\n onClick: ($event: any) => (_ctx.selectShape(shape))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / shape.viewBox}, ${18 / shape.viewBox}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n \"stroke-linejoin\": \"\",\n fill: \"transparent\",\n stroke: \"#999\",\n \"stroke-width\": \"2\",\n d: shape.path\n }, null, 8, _hoisted_7)\n ], 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}","export interface ShapePoolItem {\n viewBox: number;\n path: string;\n special?: boolean;\n}\n\nexport const SHAPE_LIST = [\n {\n type: '矩形',\n children: [\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200'\n },\n {\n viewBox: 200,\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z'\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: 200,\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z'\n },\n {\n viewBox: 200,\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z'\n },\n {\n viewBox: 200,\n path: 'M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z'\n },\n {\n viewBox: 200,\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z',\n },\n {\n viewBox: 200,\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: 200,\n path: 'M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z'\n },\n {\n viewBox: 200,\n path: 'M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z'\n },\n {\n viewBox: 1024,\n path: 'M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z',\n special: true,\n },\n ],\n },\n\n {\n type: '其他形状',\n children: [\n {\n viewBox: 1024,\n path: 'M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z',\n special: true,\n },\n {\n viewBox: 1024,\n path: 'M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z',\n special: true,\n },\n ],\n },\n]","\nimport { defineComponent } from 'vue'\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\n\nexport default defineComponent({\n name: 'shape-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const shapeList = SHAPE_LIST\n\n const selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n }\n\n return {\n shapeList,\n selectShape,\n }\n },\n})\n","import { render } from \"./ShapePool.vue?vue&type=template&id=0f50713a&scoped=true&ts=true\"\nimport script from \"./ShapePool.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=0f50713a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0f50713a\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-78517932\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"line-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"20\",\n height: \"20\"\n}\nconst _hoisted_6 = [\"d\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LinePointMarker = _resolveComponent(\"LinePointMarker\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.lineList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (line, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"line-content\",\n onClick: ($event: any) => (_ctx.selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 0,\n class: \"line-marker\",\n id: `preset-line-${index}`,\n position: \"start\",\n type: line.points[0],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (line.points[1])\n ? (_openBlock(), _createBlock(_component_LinePointMarker, {\n key: 1,\n class: \"line-marker\",\n id: `preset-line-${index}`,\n position: \"end\",\n type: line.points[1],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-path\",\n d: line.path,\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": line.style === 'solid' ? '0, 0' : '4, 1',\n \"stroke-linecap\": \"\",\n \"stroke-linejoin\": \"\",\n \"stroke-miterlimit\": \"\",\n \"marker-start\": line.points[0] ? `url(#${`preset-line-${index}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${index}`}-${line.points[1]}-end)` : ''\n }, null, 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}","import { LinePoint } from '@/types/slides'\n\n\nexport interface LinePoolItem {\n path: string;\n style: 'solid' | 'dashed';\n points: [LinePoint, LinePoint];\n isBroken?: boolean;\n isCurve?: boolean;\n}\n\ninterface PresetLine {\n type: string;\n children: LinePoolItem[];\n}\n\nexport const LINE_LIST: PresetLine[] = [\n {\n type: '直线',\n children: [\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\n ],\n },\n {\n type: '折线、曲线',\n children: [\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\n ],\n },\n]","\nimport { defineComponent } from 'vue'\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\nexport default defineComponent({\n name: 'line-pool',\n emits: ['select'],\n components: {\n LinePointMarker,\n },\n setup(props, { emit }) {\n const lineList = LINE_LIST\n\n const selectLine = (line: LinePoolItem) => {\n emit('select', line)\n }\n\n return {\n lineList,\n selectLine,\n }\n },\n})\n","import { render } from \"./LinePool.vue?vue&type=template&id=78517932&scoped=true&ts=true\"\nimport script from \"./LinePool.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=78517932&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-78517932\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ab6a141a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconChartLine = _resolveComponent(\"IconChartLine\")!\n const _component_IconChartHistogram = _resolveComponent(\"IconChartHistogram\")!\n const _component_IconChartPie = _resolveComponent(\"IconChartPie\")!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.chartList, (chart, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (_ctx.selectChart(chart))\n }, [\n (chart === 'line')\n ? (_openBlock(), _createBlock(_component_IconChartLine, {\n key: 0,\n size: \"24\"\n }))\n : (chart === 'bar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogram, {\n key: 1,\n size: \"24\"\n }))\n : (chart === 'pie')\n ? (_openBlock(), _createBlock(_component_IconChartPie, {\n key: 2,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ]))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'chart-pool',\n emits: ['select'],\n setup(props, { emit }) {\n const chartList = ['bar', 'line', 'pie']\n\n const selectChart = (chart: string) => {\n emit('select', chart)\n }\n\n return {\n chartList,\n selectChart,\n }\n },\n})\n","import { render } from \"./ChartPool.vue?vue&type=template&id=ab6a141a&scoped=true&ts=true\"\nimport script from \"./ChartPool.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=ab6a141a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ab6a141a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e325ce98\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-generator\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"lef\" }\nconst _hoisted_4 = [\"onMouseenter\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"custom\"\n}\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"flex\":\"1\"}\n}, \"行数:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"flex\":\"1\"}\n}, \"列数:\", -1))\nconst _hoisted_10 = { class: \"btns\" }\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, \"表格 \" + _toDisplayString(_ctx.endCell.length ? `${_ctx.endCell[0]} x ${_ctx.endCell[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.isCustom = !_ctx.isCustom))\n }, _toDisplayString(_ctx.isCustom ? '返回' : '自定义'), 1)\n ]),\n (!_ctx.isCustom)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (_ctx.endCell = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleClickTable()))\n }, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (row) => {\n return _createElementVNode(\"tr\", { key: row }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (col) => {\n return _createElementVNode(\"td\", {\n onMouseenter: ($event: any) => (_ctx.endCell = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': _ctx.endCell.length && row <= _ctx.endCell[0] && col <= _ctx.endCell[1] }])\n }, null, 2)\n ], 40, _hoisted_4)\n }), 64))\n ])\n }), 64))\n ])\n ], 32))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 20,\n value: _ctx.customRow,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.customRow) = $event)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 20,\n value: _ctx.customCol,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.customCol) = $event)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\n\nimport { message } from 'ant-design-vue'\n\nexport default defineComponent({\n name: 'table-generator',\n emits: ['insert', 'close'],\n setup(props, { emit }) {\n const endCell = ref([])\n const customRow = ref(3)\n const customCol = ref(3)\n const isCustom = ref(false)\n\n const handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n }\n\n const insertCustomTable = () => {\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\n emit('insert', { row: customRow.value, col: customCol.value })\n isCustom.value = false\n }\n\n const close = () => {\n emit('close')\n isCustom.value = false\n }\n\n return {\n endCell,\n customRow,\n customCol,\n handleClickTable,\n insertCustomTable,\n isCustom,\n close,\n }\n },\n})\n","import { render } from \"./TableGenerator.vue?vue&type=template&id=e325ce98&scoped=true&ts=true\"\nimport script from \"./TableGenerator.vue?vue&type=script&lang=ts\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=e325ce98&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e325ce98\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4916d8ab\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"media-input\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"btns\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"确认\")\nconst _hoisted_7 = { class: \"btns\" }\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.type === tab.key }]),\n key: tab.key,\n onClick: ($event: any) => (_ctx.type = tab.key)\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n (_ctx.type === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_Input, {\n value: _ctx.videoSrc,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.videoSrc) = $event)),\n placeholder: \"请输入视频地址,e.g. https://xxx.mp4\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Button, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.insertVideo()))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Input, {\n value: _ctx.audioSrc,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.audioSrc) = $event)),\n placeholder: \"请输入音频地址,e.g. https://xxx.mp3\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Button, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.close())),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.insertAudio()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\nimport { message } from 'ant-design-vue'\n\nexport default defineComponent({\n name: 'media-input',\n emits: ['insertVideo', 'insertAudio', 'close'],\n setup(props, { emit }) {\n const type = ref<'video' | 'audio'>('video')\n\n const videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\n const audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\n const tabs = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n ]\n\n const insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n }\n\n const insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n }\n\n const close = () => emit('close')\n\n return {\n type,\n videoSrc,\n audioSrc,\n tabs,\n insertVideo,\n insertAudio,\n close,\n }\n },\n})\n","import { render } from \"./MediaInput.vue?vue&type=template&id=4916d8ab&scoped=true&ts=true\"\nimport script from \"./MediaInput.vue?vue&type=script&lang=ts\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=4916d8ab&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4916d8ab\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-129e1afa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-editor\" }\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"left\" }\nconst _hoisted_4 = { class: \"input-area\" }\nconst _hoisted_5 = { class: \"preview\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"placeholder\"\n}\nconst _hoisted_7 = {\n key: 1,\n class: \"preview-content\"\n}\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = { class: \"tabs\" }\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = { class: \"content\" }\nconst _hoisted_12 = {\n key: 0,\n class: \"symbol\"\n}\nconst _hoisted_13 = { class: \"symbol-tabs\" }\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"symbol-pool\" }\nconst _hoisted_16 = [\"onClick\"]\nconst _hoisted_17 = {\n key: 1,\n class: \"formula\"\n}\nconst _hoisted_18 = { class: \"formula-title\" }\nconst _hoisted_19 = [\"onClick\"]\nconst _hoisted_20 = { class: \"footer\" }\nconst _hoisted_21 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_22 = /*#__PURE__*/_createTextVNode(\"确定\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TextArea = _resolveComponent(\"TextArea\")!\n const _component_FormulaContent = _resolveComponent(\"FormulaContent\")!\n const _component_SymbolContent = _resolveComponent(\"SymbolContent\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_TextArea, {\n value: _ctx.latex,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.latex) = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref: \"textAreaRef\"\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_ctx.latex)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(_component_FormulaContent, {\n width: 518,\n height: 138,\n latex: _ctx.latex\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _ctx.toolbarState }]),\n key: tab.value,\n onClick: ($event: any) => (_ctx.toolbarState = tab.value)\n }, _toDisplayString(tab.label), 11, _hoisted_10))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_ctx.toolbarState === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolList, (group) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"symbol-tab\", { 'active': _ctx.selectedSymbolKey === group.type }]),\n key: group.type,\n onClick: ($event: any) => (_ctx.selectedSymbolKey = group.type)\n }, _toDisplayString(group.label), 11, _hoisted_14))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPool, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (_ctx.insertSymbol(item.latex))\n }, [\n _createVNode(_component_SymbolContent, {\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_16))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formulaList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"formula-item\",\n key: item.label\n }, [\n _createElementVNode(\"div\", _hoisted_18, _toDisplayString(item.label), 1),\n _createElementVNode(\"div\", {\n class: \"formula-item-content\",\n onClick: ($event: any) => (_ctx.latex =item.latex)\n }, [\n _createVNode(_component_FormulaContent, {\n width: 236,\n height: 60,\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_19)\n ]))\n }), 128))\n ]))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.close()))\n }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.update()))\n }, {\n default: _withCtx(() => [\n _hoisted_22\n ]),\n _: 1\n })\n ])\n ]))\n}","import { hfmath, CONFIG as hfmathConfig } from 'hfmath'\n\nhfmathConfig.SUB_SUP_SCALE = 0.5\n\nexport { hfmath }","export const FORMULA_LIST = [\n {\n label: '高斯公式',\n latex: `\\\\int\\\\int\\\\int _ { \\\\Omega } \\\\left( \\\\frac { \\\\partial {P} } { \\\\partial {x} } + \\\\frac { \\\\partial {Q} } { \\\\partial {y} } + \\\\frac { \\\\partial {R} }{ \\\\partial {z} } \\\\right) \\\\mathrm { d } V = \\\\oint _ { \\\\partial \\\\Omega } ( P \\\\cos \\\\alpha + Q \\\\cos \\\\beta + R \\\\cos \\\\gamma ) \\\\mathrm{ d} S`\n },\n {\n label: '傅里叶级数',\n latex: `f(x) = \\\\frac {a_0} 2 + \\\\sum_{n = 1}^\\\\infty {({a_n}\\\\cos {nx} + {b_n}\\\\sin {nx})}`,\n },\n {\n label: '泰勒展开式',\n latex: `e ^ { x } = 1 + \\\\frac { x } { 1 ! } + \\\\frac { x ^ { 2 } } { 2 ! } + \\\\frac { x ^ { 3 } } { 3 ! } + ... , \\\\quad - \\\\infty < x < \\\\infty`,\n },\n {\n label: '定积分',\n latex: `\\\\lim_ { n \\\\rightarrow + \\\\infty } \\\\sum _ { i = 1 } ^ { n } f \\\\left[ a + \\\\frac { i } { n } ( b - a ) \\\\right] \\\\frac { b - a } { n } = \\\\int _ { a } ^ { b } f ( x ) dx`,\n },\n {\n label: '三角恒等式1',\n latex: `\\\\sin \\\\alpha \\\\pm \\\\sin \\\\beta = 2 \\\\sin \\\\frac { 1 } { 2 } ( \\\\alpha \\\\pm \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha \\\\mp \\\\beta )`,\n },\n {\n label: '三角恒等式2',\n latex: `\\\\cos \\\\alpha + \\\\cos \\\\beta = 2 \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha + \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha - \\\\beta )`,\n },\n {\n label: '和的展开式',\n latex: `( 1 + x ) ^ { n } = 1 + \\\\frac { n x } { 1 ! } + \\\\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ...`,\n },\n {\n label: '欧拉公式',\n latex: ` e^{ix} = \\\\cos {x} + i\\\\sin {x}`,\n },\n {\n label: '贝努利方程',\n latex: `\\\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\\\not= {0,1})`,\n },\n {\n label: '全微分方程',\n latex: `du(x,y) = P(x,y)dx + Q(x,y)dy = 0`,\n },\n {\n label: '非齐次方程',\n latex: `y = (\\\\int Q(x) e^{\\\\int {P(x)dx}}dx + C)e^{-\\\\int {P(x)dx}}`,\n },\n {\n label: '柯西中值定理',\n latex: `\\\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\\\frac{{f'(\\\\xi )}}{{F'(\\\\xi )}}`,\n },\n {\n label: '拉格朗日中值定理',\n latex: `f(b) - f(a) = f'(\\\\xi )(b - a)`,\n },\n {\n label: '导数公式',\n latex: `(\\\\arcsin x)' = \\\\frac{1}{{\\\\sqrt {1 - x^2} }}`,\n },\n {\n label: '三角函数积分',\n latex: `\\\\int {tgxdx = - \\\\ln \\\\left| {\\\\cos x} \\\\right| + C}`,\n },\n {\n label: '二次曲面',\n latex: `\\\\frac{{{x^2}}}{{{a^2}}} + \\\\frac{{{y^2}}}{{{b^2}}} - \\\\frac{{{z^2}}}{{{c^2}}} = 1`,\n },\n {\n label: '二阶微分',\n latex: `\\\\frac {{d^2}y} {dx^2} + P(x) \\\\frac {dy} {dx} + Q(x)y = f(x)`,\n },\n {\n label: '方向导数',\n latex: `\\\\frac{{\\\\partial f}}{{\\\\partial l}} = \\\\frac{{\\\\partial f}}{{\\\\partial x}}\\\\cos \\\\phi + \\\\frac{{\\\\partial f}}{{\\\\partial y}}\\\\sin \\\\phi`,\n },\n]\n\nexport const SYMBOL_LIST = [\n {\n type: 'operators',\n label: '数学',\n children: [\n { latex: '\\\\cdot' },\n { latex: '\\\\pm' },\n { latex: '\\\\mp' },\n { latex: '+' },\n { latex: '-' },\n { latex: '\\\\times' },\n { latex: '\\\\div' },\n { latex: '<' },\n { latex: '>' },\n { latex: '=' },\n { latex: '\\\\neq\\\\ne' },\n { latex: '\\\\leqq' },\n { latex: '\\\\geqq' },\n { latex: '\\\\leq' },\n { latex: '\\\\geq' },\n { latex: '\\\\propto' },\n { latex: '\\\\sim' },\n { latex: '\\\\equiv' },\n { latex: '\\\\dagger' },\n { latex: '\\\\ddagger' },\n { latex: '\\\\ell' },\n { latex: '\\\\#' },\n { latex: '\\\\$' },\n { latex: '\\\\&' },\n { latex: '\\\\%' },\n { latex: '\\\\langle\\\\rangle' },\n { latex: '()' },\n { latex: '[]' },\n { latex: '\\\\{\\\\}' },\n { latex: '||' },\n { latex: '\\\\|' },\n { latex: '\\\\exists' },\n { latex: '\\\\in' },\n { latex: '\\\\subset' },\n { latex: '\\\\supset' },\n { latex: '\\\\cup' },\n { latex: '\\\\cap' },\n { latex: '\\\\infty' },\n { latex: '\\\\partial' },\n { latex: '\\\\nabla' },\n { latex: '\\\\aleph' },\n { latex: '\\\\wp' },\n { latex: '\\\\therefore' },\n { latex: '\\\\mid' },\n { latex: '\\\\sum' },\n { latex: '\\\\prod' },\n { latex: '\\\\bigoplus' },\n { latex: '\\\\bigodot' },\n { latex: '\\\\int' },\n { latex: '\\\\oint' },\n { latex: '\\\\oplus' },\n { latex: '\\\\odot' },\n { latex: '\\\\perp' },\n { latex: '\\\\angle' },\n { latex: '\\\\triangle' },\n { latex: '\\\\Box' },\n { latex: '\\\\rightarrow' },\n { latex: '\\\\to' },\n { latex: '\\\\leftarrow' },\n { latex: '\\\\gets' },\n { latex: '\\\\circ' },\n { latex: '\\\\bigcirc' },\n { latex: '\\\\bullet' },\n { latex: '\\\\star' },\n { latex: '\\\\diamond' },\n { latex: '\\\\ast' },\n { latex: ',' },\n { latex: '.' },\n { latex: ';' },\n { latex: '!' },\n ],\n },\n {\n type: 'group',\n label: '组合',\n children: [\n { latex: '\\\\frac{a}{b}' },\n { latex: '\\\\frac{dx}{dx}' },\n { latex: '\\\\frac{\\\\partial a}{\\\\partial b}' },\n { latex: '\\\\sqrt{x}' },\n { latex: '\\\\sqrt[n]{x}' },\n { latex: 'x^{n}' },\n { latex: 'x_{n}' },\n { latex: 'x_a^b' },\n { latex: '\\\\int_{a}^{b}' },\n { latex: '\\\\oint_a^b' },\n { latex: '\\\\lim_{a \\\\rightarrow b}' },\n { latex: '\\\\prod_a^b' },\n { latex: '\\\\sum_a^b' },\n { latex: '\\\\left(\\\\begin{array}a \\\\\\\\ b\\\\end{array}\\\\right)' },\n { latex: '\\\\begin{bmatrix}a & b \\\\\\\\ c & d \\\\end{bmatrix}' },\n { latex: '\\\\begin{cases}a & x = 0 \\\\\\\\ b & x > 0\\\\end{cases}' },\n { latex: '\\\\hat{a}' },\n { latex: '\\\\breve{a}' },\n { latex: '\\\\acute{a}' },\n { latex: '\\\\grave{a}' },\n { latex: '\\\\tilde{a}' },\n { latex: '\\\\bar{a}' },\n { latex: '\\\\vec{a}' },\n { latex: '\\\\underline{a}' },\n { latex: '\\\\overline{a}' },\n { latex: '\\\\widehat{ab}' },\n { latex: '\\\\overleftarrow{ab}' },\n { latex: '\\\\overrightarrow{ab}' },\n ],\n },\n {\n type: 'verbatim',\n label: '函数',\n children: [\n { latex: '\\\\log' },\n { latex: '\\\\ln' },\n { latex: '\\\\exp' },\n { latex: '\\\\mod' },\n { latex: '\\\\lim' },\n { latex: '\\\\sin' },\n { latex: '\\\\cos' },\n { latex: '\\\\tan' },\n { latex: '\\\\csc' },\n { latex: '\\\\sec' },\n { latex: '\\\\cot' },\n { latex: '\\\\sinh' },\n { latex: '\\\\cosh' },\n { latex: '\\\\tanh' },\n { latex: '\\\\csch' },\n { latex: '\\\\sech' },\n { latex: '\\\\coth' },\n { latex: '\\\\arcsin' },\n { latex: '\\\\arccos' },\n { latex: '\\\\arctan' },\n { latex: '\\\\arccsc' },\n { latex: '\\\\arcsec' },\n { latex: '\\\\arccot' },\n ],\n },\n {\n type: 'greek',\n label: '希腊字母',\n children: [\n { latex: '\\\\alpha' },\n { latex: '\\\\beta' },\n { latex: '\\\\gamma' },\n { latex: '\\\\delta' },\n { latex: '\\\\varepsilon' },\n { latex: '\\\\zeta' },\n { latex: '\\\\eta' },\n { latex: '\\\\vartheta' },\n { latex: '\\\\iota' },\n { latex: '\\\\kappa' },\n { latex: '\\\\lambda' },\n { latex: '\\\\mu' },\n { latex: '\\\\nu' },\n { latex: '\\\\xi' },\n { latex: '\\\\omicron' },\n { latex: '\\\\pi' },\n { latex: '\\\\rho' },\n { latex: '\\\\sigma' },\n { latex: '\\\\tau' },\n { latex: '\\\\upsilon' },\n { latex: '\\\\varphi' },\n { latex: '\\\\chi' },\n { latex: '\\\\psi' },\n { latex: '\\\\omega' },\n { latex: '\\\\epsilon' },\n { latex: '\\\\theta' },\n { latex: '\\\\phi' },\n { latex: '\\\\varsigma' },\n { latex: '\\\\Alpha' },\n { latex: '\\\\Beta' },\n { latex: '\\\\Gamma' },\n { latex: '\\\\Delta' },\n { latex: '\\\\Epsilon' },\n { latex: '\\\\Zeta' },\n { latex: '\\\\Eta' },\n { latex: '\\\\Theta' },\n { latex: '\\\\Iota' },\n { latex: '\\\\Kappa' },\n { latex: '\\\\Lambda' },\n { latex: '\\\\Mu' },\n { latex: '\\\\Nu' },\n { latex: '\\\\Xi' },\n { latex: '\\\\Omicron' },\n { latex: '\\\\Pi' },\n { latex: '\\\\Rho' },\n { latex: '\\\\Sigma' },\n { latex: '\\\\Tau' },\n { latex: '\\\\Upsilon' },\n { latex: '\\\\Phi' },\n { latex: '\\\\Chi' },\n { latex: '\\\\Psi' },\n { latex: '\\\\Omega' },\n ],\n },\n]","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: _ctx.box.w + 32,\n height: _ctx.box.h + 32,\n stroke: \"#000\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.scale}, ${_ctx.scale}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: _ctx.pathd }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\nexport default defineComponent({\n name: 'formula-content',\n props: {\n latex: {\n type: String,\n required: true,\n },\n width: {\n type: Number,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n setup(props) {\n const box = ref({ x: 0, y: 0, w: 0, h: 0 })\n const pathd = ref('')\n\n watch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n }, { immediate: true })\n\n const scale = computed(() => {\n const boxW = box.value.w + 32\n const boxH = box.value.h + 32\n\n if (boxW > props.width || boxH > props.height) {\n if (boxW / boxH > props.width / props.height) return props.width / boxW\n return props.height / boxH\n }\n return 1\n })\n\n return {\n box,\n pathd,\n scale,\n }\n },\n})\n","import { render } from \"./FormulaContent.vue?vue&type=template&id=1e4ff171&ts=true\"\nimport script from \"./FormulaContent.vue?vue&type=script&lang=ts\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: _ctx.svg\n }, null, 8, _hoisted_1))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { hfmath } from './hfmath'\n\nexport default defineComponent({\n name: 'symbol-content',\n props: {\n latex: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n })\n\n return {\n svg,\n }\n },\n})\n","import { render } from \"./SymbolContent.vue?vue&type=template&id=3a83adf0&ts=true\"\nimport script from \"./SymbolContent.vue?vue&type=script&lang=ts\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport { hfmath } from './hfmath'\nimport { FORMULA_LIST, SYMBOL_LIST } from '@/configs/latex'\n\nimport FormulaContent from './FormulaContent.vue'\nimport SymbolContent from './SymbolContent.vue'\n\nconst tabs = [\n { label: '常用符号', value: 'symbol' },\n { label: '预置公式', value: 'formula' },\n]\n\nexport default defineComponent({\n name: 'latex-editor',\n emits: ['update', 'close'],\n components: {\n FormulaContent,\n SymbolContent,\n },\n props: {\n value: {\n type: String,\n default: '',\n },\n },\n setup(props, { emit }) {\n const latex = ref('')\n const toolbarState = ref('symbol')\n const textAreaRef = ref()\n\n const selectedSymbolKey = ref(SYMBOL_LIST[0].type)\n const symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n })\n\n onMounted(() => {\n if (props.value) latex.value = props.value\n })\n\n const update = () => {\n if (!latex.value) return\n\n const eq = new hfmath(latex.value)\n const pathd = eq.pathd({})\n const box = eq.box({})\n \n emit('update', {\n latex: latex.value,\n path: pathd,\n w: box.w + 32,\n h: box.h + 32,\n })\n }\n\n const close = () => emit('close')\n\n const insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n }\n\n return {\n tabs,\n latex,\n toolbarState,\n selectedSymbolKey,\n formulaList: FORMULA_LIST,\n symbolList: SYMBOL_LIST,\n symbolPool,\n textAreaRef,\n update,\n close,\n insertSymbol,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=129e1afa&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=129e1afa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-129e1afa\"]])\n\nexport default __exports__","\nimport { defineComponent, computed, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSnapshotStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { ShapePoolItem } from '@/configs/shapes'\nimport { LinePoolItem } from '@/configs/lines'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nimport ShapePool from './ShapePool.vue'\nimport LinePool from './LinePool.vue'\nimport ChartPool from './ChartPool.vue'\nimport TableGenerator from './TableGenerator.vue'\nimport MediaInput from './MediaInput.vue'\nimport LaTeXEditor from '@/components/LaTeXEditor/index.vue'\n\nexport default defineComponent({\n name: 'canvas-tool',\n components: {\n ShapePool,\n LinePool,\n ChartPool,\n TableGenerator,\n MediaInput,\n LaTeXEditor,\n },\n setup() {\n const mainStore = useMainStore()\n const { canvasScale } = storeToRefs(mainStore)\n const { canUndo, canRedo } = storeToRefs(useSnapshotStore())\n\n const canvasScalePercentage = computed(() => parseInt(canvasScale.value * 100 + '') + '%')\n\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\n const { redo, undo } = useHistorySnapshot()\n\n const {\n createImageElement,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n } = useCreateElement()\n\n const insertImageElement = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n const shapePoolVisible = ref(false)\n const linePoolVisible = ref(false)\n const chartPoolVisible = ref(false)\n const tableGeneratorVisible = ref(false)\n const mediaInputVisible = ref(false)\n const latexEditorVisible = ref(false)\n\n // 绘制文字范围\n const drawText = () => {\n mainStore.setCreatingElement({\n type: 'text',\n })\n }\n\n // 绘制形状范围\n const drawShape = (shape: ShapePoolItem) => {\n mainStore.setCreatingElement({\n type: 'shape',\n data: shape,\n })\n shapePoolVisible.value = false\n }\n\n // 绘制线条路径\n const drawLine = (line: LinePoolItem) => {\n mainStore.setCreatingElement({\n type: 'line',\n data: line,\n })\n linePoolVisible.value = false\n }\n\n return {\n scaleCanvas,\n setCanvasPercentage,\n canvasScalePercentage,\n canUndo,\n canRedo,\n redo,\n undo,\n insertImageElement,\n shapePoolVisible,\n linePoolVisible,\n chartPoolVisible,\n tableGeneratorVisible,\n mediaInputVisible,\n latexEditorVisible,\n drawText,\n drawShape,\n drawLine,\n createChartElement,\n createTableElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=4ae7c9aa&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4ae7c9aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4ae7c9aa\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ec4c62e4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"add-slide\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"添加幻灯片\")\nconst _hoisted_3 = { class: \"select-btn\" }\nconst _hoisted_4 = [\"onMousedown\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_LayoutPool = _resolveComponent(\"LayoutPool\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnails\",\n onMousedown: _cache[3] || (_cache[3] = () => _ctx.setThumbnailsFocus(true))\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.createSlide()))\n }, [\n _createVNode(_component_IconPlus, { class: \"icon\" }),\n _hoisted_2\n ]),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n placement: \"bottomLeft\",\n visible: _ctx.presetLayoutPopoverVisible,\n \"onUpdate:visible\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.presetLayoutPopoverVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(_component_LayoutPool, {\n onSelect: _cache[1] || (_cache[1] = slide => { _ctx.createSlideByTemplate(slide); _ctx.presetLayoutPopoverVisible = false })\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconDown)\n ])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _createVNode(_component_Draggable, {\n class: \"thumbnail-list\",\n modelValue: _ctx.slides,\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n setData: null,\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass([\"thumbnail-item\", {\n 'active': _ctx.slideIndex === index,\n 'selected': _ctx.selectedSlidesIndex.includes(index),\n }]),\n onMousedown: $event => _ctx.handleClickSlideThumbnail($event, index)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"label\", { 'offset-left': index >= 99 }])\n }, _toDisplayString(_ctx.fillDigit(index + 1, 2)), 3),\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: element,\n size: 120,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 42, _hoisted_4), [\n [_directive_contextmenu, _ctx.contextmenusThumbnailItem]\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"])\n ], 544)), [\n [_directive_click_outside, () => _ctx.setThumbnailsFocus(false)],\n [_directive_contextmenu, _ctx.contextmenusThumbnails]\n ])\n}","import { ref, onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default () => {\n const { slides } = storeToRefs(useSlidesStore())\n\n const timer = ref(null)\n const slidesLoadLimit = ref(50)\n\n const loadSlide = () => {\n if (slides.value.length > slidesLoadLimit.value) {\n timer.value = setTimeout(() => {\n slidesLoadLimit.value = slidesLoadLimit.value + 20\n loadSlide()\n }, 600)\n }\n else slidesLoadLimit.value = 9999\n }\n\n onMounted(loadSlide)\n\n onUnmounted(() => {\n if (timer.value) clearTimeout(timer.value)\n })\n\n return {\n slidesLoadLimit,\n }\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-741b366e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"layout-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.layouts, (slide) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"layout-item\",\n key: slide.id,\n onClick: ($event: any) => (_ctx.selectSlideTemplate(slide))\n }, [\n _createVNode(_component_ThumbnailSlide, {\n class: \"thumbnail\",\n slide: slide,\n size: 180\n }, null, 8, [\"slide\"])\n ], 8, _hoisted_2))\n }), 128))\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'layout-pool',\n emits: ['select'],\n components: {\n ThumbnailSlide,\n },\n setup(props, { emit }) {\n const { layouts } = storeToRefs(useSlidesStore())\n\n const selectSlideTemplate = (slide: Slide) => {\n emit('select', slide)\n }\n\n return {\n layouts,\n selectSlideTemplate,\n }\n },\n})\n","import { render } from \"./LayoutPool.vue?vue&type=template&id=741b366e&scoped=true&ts=true\"\nimport script from \"./LayoutPool.vue?vue&type=script&lang=ts\"\nexport * from \"./LayoutPool.vue?vue&type=script&lang=ts\"\n\nimport \"./LayoutPool.vue?vue&type=style&index=0&id=741b366e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-741b366e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { fillDigit } from '@/utils/common'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport Draggable from 'vuedraggable'\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport LayoutPool from './LayoutPool.vue'\n\nexport default defineComponent({\n name: 'thumbnails',\n components: {\n Draggable,\n ThumbnailSlide,\n LayoutPool,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const keyboardStore = useKeyboardStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, thumbnailsFocus } = storeToRefs(mainStore)\n const { slides, slideIndex } = storeToRefs(slidesStore)\n const { ctrlKeyState, shiftKeyState } = storeToRefs(keyboardStore)\n\n const { slidesLoadLimit } = useLoadSlides()\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n\n const presetLayoutPopoverVisible = ref(false)\n\n const {\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n // 切换页面\n const changSlideIndex = (index: number) => {\n mainStore.setActiveElementIdList([])\n\n if (slideIndex.value === index) return\n slidesStore.updateSlideIndex(index)\n }\n\n // 点击缩略图\n const handleClickSlideThumbnail = (e: MouseEvent, index: number) => {\n const isMultiSelected = selectedSlidesIndex.value.length > 1\n\n if (isMultiSelected && selectedSlidesIndex.value.includes(index) && e.button !== 0) return\n\n // 按住Ctrl键,点选幻灯片,再次点击已选中的页面则取消选中\n if (ctrlKeyState.value) {\n if (slideIndex.value === index) {\n if (!isMultiSelected) return\n\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(selectedSlidesIndex.value[0])\n }\n else {\n if (selectedSlidesIndex.value.includes(index)) {\n const newSelectedSlidesIndex = selectedSlidesIndex.value.filter(item => item !== index)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n else {\n const newSelectedSlidesIndex = [...selectedSlidesIndex.value, index]\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(index)\n }\n }\n }\n // 按住Shift键,选择范围内的全部幻灯片\n else if (shiftKeyState.value) {\n if (slideIndex.value === index && !isMultiSelected) return\n\n let minIndex = Math.min(...selectedSlidesIndex.value)\n let maxIndex = index\n\n if (index < minIndex) {\n maxIndex = Math.max(...selectedSlidesIndex.value)\n minIndex = index\n }\n\n const newSelectedSlidesIndex = []\n for (let i = minIndex; i <= maxIndex; i++) newSelectedSlidesIndex.push(i)\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n changSlideIndex(index)\n }\n // 正常切换页面\n else {\n mainStore.updateSelectedSlidesIndex([])\n changSlideIndex(index)\n }\n }\n\n // 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\n const setThumbnailsFocus = (focus: boolean) => {\n if (thumbnailsFocus.value === focus) return\n mainStore.setThumbnailsFocus(focus)\n\n if (!focus) mainStore.updateSelectedSlidesIndex([])\n }\n\n // 拖拽调整顺序后进行数据的同步\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n if (oldIndex === newIndex) return\n\n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n const { enterScreening } = useScreening()\n\n const contextmenusThumbnails = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteSlide,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllSlide,\n },\n {\n text: '新建页面',\n subText: 'Enter',\n handler: createSlide,\n },\n {\n text: '开始演示',\n subText: 'Ctrl + F',\n handler: enterScreening,\n },\n ]\n }\n\n const contextmenusThumbnailItem = (): ContextmenuItem[] => {\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutSlide,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copySlide,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteSlide,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllSlide,\n },\n { divider: true },\n {\n text: '新建页面',\n subText: 'Enter',\n handler: createSlide,\n },\n {\n text: '复制页面',\n subText: 'Ctrl + D',\n handler: copyAndPasteSlide,\n },\n {\n text: '删除页面',\n subText: 'Delete',\n handler: () => deleteSlide(),\n },\n { divider: true },\n {\n text: '从当前页演示',\n subText: 'Ctrl + F',\n handler: enterScreening,\n },\n ]\n }\n\n return {\n slides,\n slideIndex,\n selectedSlidesIndex,\n presetLayoutPopoverVisible,\n slidesLoadLimit,\n createSlide,\n createSlideByTemplate,\n setThumbnailsFocus,\n handleClickSlideThumbnail,\n contextmenusThumbnails,\n contextmenusThumbnailItem,\n fillDigit,\n handleDragEnd,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=ec4c62e4&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ec4c62e4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ec4c62e4\"]])\n\nexport default __exports__","export type ToolbarState = 'symbol' | 'elAnimation' | 'elStyle' | 'elPosition' | 'slideDesign' | 'slideAnimation' | 'multiPosition'\n\nexport const enum ToolbarStates {\n SYMBOL = 'symbol',\n EL_ANIMATION = 'elAnimation',\n EL_STYLE = 'elStyle',\n EL_POSITION = 'elPosition',\n SLIDE_DESIGN = 'slideDesign',\n SLIDE_ANIMATION = 'slideAnimation',\n MULTI_POSITION = 'multiPosition',\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0df9576a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"toolbar\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.currentTabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.value === _ctx.toolbarState }]),\n key: tab.value,\n onClick: ($event: any) => (_ctx.setToolbarState(tab.value))\n }, _toDisplayString(tab.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent)))\n ])\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"element-style-panel\" }\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.currentPanelComponent)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, \" 请先选中要编辑的元素 \"))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentPanelComponent), { key: 1 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2d6233f4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"text-style-panel\" }\nconst _hoisted_2 = { class: \"preset-style\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行间距:\", -1))\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字间距:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconBackgroundColor = _resolveComponent(\"IconBackgroundColor\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconUpOne = _resolveComponent(\"IconUpOne\")!\n const _component_IconDownOne = _resolveComponent(\"IconDownOne\")!\n const _component_IconCode = _resolveComponent(\"IconCode\")!\n const _component_IconQuote = _resolveComponent(\"IconQuote\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_IconList = _resolveComponent(\"IconList\")!\n const _component_IconOrderedList = _resolveComponent(\"IconOrderedList\")!\n const _component_IconRowHeight = _resolveComponent(\"IconRowHeight\")!\n const _component_IconFullwidth = _resolveComponent(\"IconFullwidth\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_ElementOpacity = _resolveComponent(\"ElementOpacity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetStyles, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-style-item\",\n key: item.label,\n style: _normalizeStyle(item.style),\n onClick: ($event: any) => (_ctx.emitBatchRichTextCommand(item.cmd))\n }, _toDisplayString(item.label), 13, _hoisted_3))\n }), 128))\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.richTextAttrs.fontname,\n onChange: _cache[0] || (_cache[0] = value => _ctx.emitRichTextCommand('fontname', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.richTextAttrs.fontsize,\n onChange: _cache[1] || (_cache[1] = value => _ctx.emitRichTextCommand('fontsize', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.emitRichTextCommand('color', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.emitRichTextCommand('backcolor', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字高亮\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBackgroundColor),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.backcolor })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文本框填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.fill })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.strikethrough,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上标\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.superscript,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.emitRichTextCommand('superscript')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUpOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下标\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.subscript,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('subscript')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDownOne)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"行内代码\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.code,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('code')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCode)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"引用\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.blockquote,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.emitRichTextCommand('blockquote')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconQuote)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[14] || (_cache[14] = e => _ctx.emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"项目符号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bulletList,\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.emitRichTextCommand('bulletList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconList)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"编号\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.orderedList,\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.emitRichTextCommand('orderedList')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconOrderedList)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.lineHeight,\n onChange: _cache[17] || (_cache[17] = value => _ctx.updateLineHeight(value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconRowHeight)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.lineHeightOptions, (item) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"倍\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.wordSpace,\n onChange: _cache[18] || (_cache[18] = value => _ctx.updateWordSpace(value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFullwidth)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.wordSpaceOptions, (item) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: item,\n value: item\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item) + \"px\", 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOpacity)\n ]))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f62a02b6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-opacity\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"不透明度:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Slider = _resolveComponent(\"Slider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 1,\n step: 0.1,\n value: _ctx.opacity,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateOpacity(value))\n }, null, 8, [\"step\", \"value\"])\n ])\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-opacity',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const opacity = ref(1)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n opacity.value = 'opacity' in handleElement.value && handleElement.value.opacity !== undefined ? handleElement.value.opacity : 1\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateOpacity = (value: number) => {\n if (!handleElement.value) return\n const props = { opacity: value }\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n opacity,\n updateOpacity,\n }\n },\n})\n","import { render } from \"./ElementOpacity.vue?vue&type=template&id=f62a02b6&scoped=true&ts=true\"\nimport script from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=f62a02b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f62a02b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35c4c4a3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-outline\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用边框:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框样式:\", -1))\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"实线边框\")\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"虚线边框\")\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框颜色:\", -1))\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"边框粗细:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.fixed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasOutline,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleOutline(checked))\n }, null, 8, [\"checked\"])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.hasOutline)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.outline.style,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateOutline({ style: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.outline.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.updateOutline({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.outline.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createVNode(_component_InputNumber, {\n value: _ctx.outline.width,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateOutline({ width: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlatte = _resolveComponent(\"IconPlatte\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createBlock(_component_Button, { class: \"color-btn\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: $props.color })\n }, null, 4),\n _createVNode(_component_IconPlatte, { class: \"color-btn-icon\" })\n ]),\n _: 1\n }))\n}","\nexport default {\n name: 'color-button',\n props: {\n color: {\n type: String,\n required: true,\n },\n },\n}\n","import { render } from \"./ColorButton.vue?vue&type=template&id=39016b60&scoped=true&ts=true\"\nimport script from \"./ColorButton.vue?vue&type=script&lang=ts\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39016b60\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementOutline } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\n\nexport default defineComponent({\n name: 'element-outline',\n components: {\n ColorButton,\n },\n props: {\n fixed: {\n type: Boolean,\n default: false,\n },\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const outline = ref()\n const hasOutline = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n outline.value = 'outline' in handleElement.value ? handleElement.value.outline : undefined\n hasOutline.value = !!outline.value\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateOutline = (outlineProps: Partial) => {\n if (!handleElement.value) return\n const props = { outline: { ...outline.value, ...outlineProps } }\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n const toggleOutline = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n const _outline: PPTElementOutline = { width: 2, color: '#000', style: 'solid' }\n slidesStore.updateElement({ id: handleElement.value.id, props: { outline: _outline } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'outline' })\n }\n addHistorySnapshot()\n }\n\n return {\n outline,\n hasOutline,\n toggleOutline,\n updateOutline,\n }\n },\n})\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=35c4c4a3&scoped=true&ts=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=35c4c4a3&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-35c4c4a3\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c77a6414\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-shadow\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用阴影:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"水平阴影:\", -1))\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"垂直阴影:\", -1))\nconst _hoisted_9 = { class: \"row\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"模糊距离:\", -1))\nconst _hoisted_11 = { class: \"row\" }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"阴影颜色:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasShadow,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleShadow(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasShadow)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 10,\n step: 1,\n value: _ctx.shadow.h,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateShadow({ h: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 10,\n step: 1,\n value: _ctx.shadow.v,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateShadow({ v: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _hoisted_10,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 1,\n max: 20,\n step: 1,\n value: _ctx.shadow.blur,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateShadow({ blur: value }))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _hoisted_12,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.shadow.color,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateShadow({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.shadow.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTElementShadow } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './ColorButton.vue'\n\nexport default defineComponent({\n name: 'element-shadow',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const shadow = ref()\n const hasShadow = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n shadow.value = 'shadow' in handleElement.value ? handleElement.value.shadow : undefined\n hasShadow.value = !!shadow.value\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateShadow = (shadowProps: Partial) => {\n if (!handleElement.value || !shadow.value) return\n const _shadow = { ...shadow.value, ...shadowProps }\n slidesStore.updateElement({ id: handleElement.value.id, props: { shadow: _shadow } })\n addHistorySnapshot()\n }\n\n const toggleShadow = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n const _shadow: PPTElementShadow = { h: 1, v: 1, blur: 2, color: '#000' }\n slidesStore.updateElement({ id: handleElement.value.id, props: { shadow: _shadow } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'shadow' })\n }\n addHistorySnapshot()\n }\n\n return {\n shadow,\n hasShadow,\n toggleShadow,\n updateShadow,\n }\n },\n})\n","import { render } from \"./ElementShadow.vue?vue&type=template&id=c77a6414&scoped=true&ts=true\"\nimport script from \"./ElementShadow.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=c77a6414&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c77a6414\"]])\n\nexport default __exports__","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport emitter, { EmitterEvents, RichTextCommand } from '@/utils/emitter'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport { PPTTextElement } from '@/types/slides'\n\nconst presetStyles = [\n {\n label: '大标题',\n style: {\n fontSize: '26px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '48px' },\n { command: 'align', value: 'center' },\n { command: 'bold' },\n ],\n },\n {\n label: '小标题',\n style: {\n fontSize: '22px',\n fontWeight: 700,\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '36px' },\n { command: 'align', value: 'center' },\n { command: 'bold' },\n ],\n },\n {\n label: '正文',\n style: {\n fontSize: '20px',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '20px' },\n ],\n },\n {\n label: '正文[小]',\n style: {\n fontSize: '18px',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '18px' },\n ],\n },\n {\n label: '注释 1',\n style: {\n fontSize: '16px',\n fontStyle: 'italic',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '16px' },\n { command: 'em' },\n ],\n },\n {\n label: '注释 2',\n style: {\n fontSize: '16px',\n textDecoration: 'underline',\n },\n cmd: [\n { command: 'clear' },\n { command: 'fontsize', value: '16px' },\n { command: 'underline' },\n ],\n },\n]\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'text-style-panel',\n components: {\n ElementOpacity,\n ElementOutline,\n ElementShadow,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, richTextAttrs, availableFonts } = storeToRefs(useMainStore())\n\n const fill = ref()\n const lineHeight = ref()\n const wordSpace = ref()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'text') return\n\n fill.value = handleElement.value.fill || '#000'\n lineHeight.value = handleElement.value.lineHeight || 1.5\n wordSpace.value = handleElement.value.wordSpace || 0\n }, { deep: true, immediate: true })\n\n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\n '80px', '88px', '96px', '104px', '112px', '120px',\n ]\n const lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\n const wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\n\n // 发射富文本设置命令\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command, value })\n }\n\n // 发射富文本设置命令(批量)\n const emitBatchRichTextCommand = (payload: RichTextCommand[]) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, payload)\n }\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置行高\n const updateLineHeight = (value: number) => {\n updateElement({ lineHeight: value })\n }\n\n // 设置字间距\n const updateWordSpace = (value: number) => {\n updateElement({ wordSpace: value })\n }\n\n // 设置文本框填充\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n return {\n fill,\n lineHeight,\n wordSpace,\n richTextAttrs,\n availableFonts,\n webFonts,\n fontSizeOptions,\n lineHeightOptions,\n wordSpaceOptions,\n updateLineHeight,\n updateWordSpace,\n updateFill,\n emitRichTextCommand,\n emitBatchRichTextCommand,\n presetStyles,\n }\n },\n})\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=2d6233f4&scoped=true&ts=true\"\nimport script from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=2d6233f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2d6233f4\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64e5a614\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"image-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 裁剪图片\")\nconst _hoisted_3 = { class: \"clip\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"按形状:\", -1))\nconst _hoisted_5 = { class: \"shape-clip\" }\nconst _hoisted_6 = [\"onClick\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"title\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 替换图片\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" 重置样式\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 设为背景\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ElementFlip = _resolveComponent(\"ElementFlip\")!\n const _component_IconTailoring = _resolveComponent(\"IconTailoring\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementFilter = _resolveComponent(\"ElementFilter\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_IconTransform = _resolveComponent(\"IconTransform\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_IconUndo = _resolveComponent(\"IconUndo\")!\n const _component_IconTheme = _resolveComponent(\"IconTheme\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"origin-image\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.handleElement.src})` })\n }, null, 4),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"5\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.clipImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTailoring, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.clipPanelVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.clipPanelVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.shapeClipPathOptions, (item, key) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-clip-item\",\n key: key,\n onClick: ($event: any) => (_ctx.presetImageClip(key))\n }, [\n _createElementVNode(\"div\", {\n class: \"shape\",\n style: _normalizeStyle({ clipPath: item.style })\n }, null, 4)\n ], 8, _hoisted_6))\n }), 128))\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.ratioClipOptions, (type) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: type.label\n }, [\n (type.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, \"按\" + _toDisplayString(type.label) + \":\", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createBlock(_component_Button, {\n style: {\"flex\":\"1\"},\n key: item.key,\n onClick: ($event: any) => (_ctx.presetImageClip('rect', item.ratio))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.key), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]))\n }), 128))\n ]),\n _: 2\n }, 1024)\n ], 64))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"no-padding\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDown)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementFilter),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_FileInput, {\n onChange: _cache[2] || (_cache[2] = files => _ctx.replaceImage(files))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, { class: \"full-width-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTransform, { class: \"btn-icon\" }),\n _hoisted_8\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.resetImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUndo, { class: \"btn-icon\" }),\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setBackgroundImage()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTheme, { class: \"btn-icon\" }),\n _hoisted_10\n ]),\n _: 1\n })\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7bd50f1a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-flip\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 垂直翻转\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 水平翻转\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFlipVertically = _resolveComponent(\"IconFlipVertically\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconFlipHorizontally = _resolveComponent(\"IconFlipHorizontally\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.flipV,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateFlip({ flipV: !_ctx.flipV })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipVertically),\n _hoisted_2\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.flipH,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateFlip({ flipH: !_ctx.flipH })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFlipHorizontally),\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n })\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ImageOrShapeFlip } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-flip',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const flipH = ref(false)\n const flipV = ref(false)\n\n watch(handleElement, () => {\n if (handleElement.value && (handleElement.value.type === 'image' || handleElement.value.type === 'shape')) {\n flipH.value = !!handleElement.value.flipH\n flipV.value = !!handleElement.value.flipV\n }\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateFlip = (flipProps: ImageOrShapeFlip) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props: flipProps })\n addHistorySnapshot()\n }\n\n return {\n flipH,\n flipV,\n updateFlip,\n }\n },\n})\n","import { render } from \"./ElementFlip.vue?vue&type=template&id=7bd50f1a&scoped=true&ts=true\"\nimport script from \"./ElementFlip.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=7bd50f1a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7bd50f1a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-181ae0aa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-filter\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用滤镜:\", -1))\nconst _hoisted_4 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = {\n key: 0,\n class: \"filter\"\n}\nconst _hoisted_6 = { class: \"name\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasFilters,\n onChange: _cache[0] || (_cache[0] = checked => _ctx.toggleFilters(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasFilters)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filterOptions, (filter) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"filter-item\",\n key: filter.key\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(filter.label), 1),\n _createVNode(_component_Slider, {\n class: \"filter-slider\",\n max: filter.max,\n min: filter.min,\n step: filter.step,\n value: filter.value,\n onChange: value => _ctx.updateFilter(filter, value)\n }, null, 8, [\"max\", \"min\", \"step\", \"value\", \"onChange\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTImageElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface FilterOption {\n label: string;\n key: string;\n default: number;\n value: number;\n unit: string;\n max: number;\n step: number;\n}\n\nconst defaultFilters: FilterOption[] = [\n { label: '模糊', key: 'blur', default: 0, value: 0, unit: 'px', max: 10, step: 1 },\n { label: '亮度', key: 'brightness', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '对比度', key: 'contrast', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '灰度', key: 'grayscale', default: 0, value: 0, unit: '%', max: 100, step: 5 },\n { label: '饱和度', key: 'saturate', default: 100, value: 100, unit: '%', max: 200, step: 5 },\n { label: '色相', key: 'hue-rotate', default: 0, value: 0, unit: 'deg', max: 360, step: 10 },\n { label: '不透明度', key: 'opacity', default: 100, value: 100, unit: '%', max: 100, step: 5 },\n]\n\nexport default defineComponent({\n name: 'element-filter',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n\n const filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\n const hasFilters = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'image') return\n \n const filters = handleElement.value.filters\n if (filters) {\n filterOptions.value = defaultFilters.map(item => {\n if (filters[item.key] !== undefined) return { ...item, value: parseInt(filters[item.key]) }\n return item\n })\n hasFilters.value = true\n }\n else {\n filterOptions.value = JSON.parse(JSON.stringify(defaultFilters))\n hasFilters.value = false\n }\n }, { deep: true, immediate: true })\n\n // 设置滤镜\n const updateFilter = (filter: FilterOption, value: number) => {\n const _handleElement = handleElement.value as PPTImageElement\n \n const originFilters = _handleElement.filters || {}\n const filters = { ...originFilters, [filter.key]: `${value}${filter.unit}` }\n slidesStore.updateElement({ id: handleElementId.value, props: { filters } })\n addHistorySnapshot()\n }\n\n const toggleFilters = (checked: boolean) => {\n if (!handleElement.value) return\n if (checked) {\n slidesStore.updateElement({ id: handleElement.value.id, props: { filters: {} } })\n }\n else {\n slidesStore.removeElementProps({ id: handleElement.value.id, propName: 'filters' })\n }\n addHistorySnapshot()\n }\n\n return {\n filterOptions,\n hasFilters,\n toggleFilters,\n updateFilter,\n }\n },\n})\n","import { render } from \"./ElementFilter.vue?vue&type=template&id=181ae0aa&scoped=true&ts=true\"\nimport script from \"./ElementFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFilter.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFilter.vue?vue&type=style&index=0&id=181ae0aa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-181ae0aa\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTImageElement, SlideBackground } from '@/types/slides'\nimport { CLIPPATHS } from '@/configs/imageClip'\nimport { getImageDataURL } from '@/utils/image'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ElementFlip from '../common/ElementFlip.vue'\nimport ElementFilter from '../common/ElementFilter.vue'\n\nconst shapeClipPathOptions = CLIPPATHS\nconst ratioClipOptions = [\n {\n label: '纵横比(方形)',\n children: [\n { key: '1:1', ratio: 1 / 1 },\n ],\n },\n {\n label: '纵横比(纵向)',\n children: [\n { key: '2:3', ratio: 3 / 2 },\n { key: '3:4', ratio: 4 / 3 },\n { key: '3:5', ratio: 5 / 3 },\n { key: '4:5', ratio: 5 / 4 },\n ],\n },\n {\n label: '纵横比(横向)',\n children: [\n { key: '3:2', ratio: 2 / 3 },\n { key: '4:3', ratio: 3 / 4 },\n { key: '5:3', ratio: 3 / 5 },\n { key: '5:4', ratio: 4 / 5 },\n ],\n },\n {\n children: [\n { key: '16:9', ratio: 9 / 16 },\n { key: '16:10', ratio: 10 / 16 },\n ],\n },\n]\n\nexport default defineComponent({\n name: 'image-style-panel',\n components: {\n ElementOutline,\n ElementShadow,\n ElementFlip,\n ElementFilter,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const clipPanelVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 打开自由裁剪\n const clipImage = () => {\n mainStore.setClipingImageElementId(handleElementId.value)\n clipPanelVisible.value = false\n }\n\n // 获取原始图片的位置大小\n const getImageElementDataBeforeClip = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n // 图片当前的位置大小和裁剪范围\n const imgWidth = _handleElement.width\n const imgHeight = _handleElement.height\n const imgLeft = _handleElement.left\n const imgTop = _handleElement.top\n const originClipRange: [[number, number], [number, number]] = _handleElement.clip ? _handleElement.clip.range : [[0, 0], [100, 100]]\n\n const originWidth = imgWidth / ((originClipRange[1][0] - originClipRange[0][0]) / 100)\n const originHeight = imgHeight / ((originClipRange[1][1] - originClipRange[0][1]) / 100)\n const originLeft = imgLeft - originWidth * (originClipRange[0][0] / 100)\n const originTop = imgTop - originHeight * (originClipRange[0][1] / 100)\n\n return {\n originClipRange,\n originWidth,\n originHeight,\n originLeft,\n originTop,\n }\n }\n\n // 预设裁剪\n const presetImageClip = (shape: string, ratio = 0) => {\n const _handleElement = handleElement.value as PPTImageElement\n\n const {\n originClipRange,\n originWidth,\n originHeight,\n originLeft,\n originTop,\n } = getImageElementDataBeforeClip()\n \n // 纵横比裁剪(形状固定为矩形)\n if (ratio) {\n const imageRatio = originHeight / originWidth\n\n const min = 0\n const max = 100\n let range: [[number, number], [number, number]]\n\n if (imageRatio > ratio) {\n const distance = ((1 - ratio / imageRatio) / 2) * 100\n range = [[min, distance], [max, max - distance]]\n }\n else {\n const distance = ((1 - imageRatio / ratio) / 2) * 100\n range = [[distance, min], [max - distance, max]]\n }\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n clip: { ..._handleElement.clip, shape, range },\n left: originLeft + originWidth * (range[0][0] / 100),\n top: originTop + originHeight * (range[0][1] / 100),\n width: originWidth * (range[1][0] - range[0][0]) / 100,\n height: originHeight * (range[1][1] - range[0][1]) / 100,\n },\n })\n }\n // 形状裁剪(保持当前裁剪范围)\n else {\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n clip: { ..._handleElement.clip, shape, range: originClipRange }\n },\n })\n }\n clipImage()\n addHistorySnapshot()\n }\n\n // 替换图片(保持当前的样式)\n const replaceImage = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => {\n const props = { src: dataURL }\n slidesStore.updateElement({ id: handleElementId.value, props })\n })\n addHistorySnapshot()\n }\n\n // 重置图片:清除全部样式\n const resetImage = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n if (_handleElement.clip) {\n const {\n originWidth,\n originHeight,\n originLeft,\n originTop,\n } = getImageElementDataBeforeClip()\n\n slidesStore.updateElement({\n id: handleElementId.value,\n props: {\n left: originLeft,\n top: originTop,\n width: originWidth,\n height: originHeight,\n },\n })\n }\n\n slidesStore.removeElementProps({\n id: handleElementId.value,\n propName: ['clip', 'outline', 'flip', 'shadow', 'filters'],\n })\n addHistorySnapshot()\n }\n\n // 将图片设置为背景\n const setBackgroundImage = () => {\n const _handleElement = handleElement.value as PPTImageElement\n\n const background: SlideBackground = {\n ...currentSlide.value.background,\n type: 'image',\n image: _handleElement.src,\n imageSize: 'cover',\n }\n slidesStore.updateSlide({ background })\n addHistorySnapshot()\n }\n\n return {\n clipPanelVisible,\n shapeClipPathOptions,\n ratioClipOptions,\n handleElement,\n clipImage,\n presetImageClip,\n replaceImage,\n resetImage,\n setBackgroundImage,\n }\n },\n})\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=64e5a614&scoped=true&ts=true\"\nimport script from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=64e5a614&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-64e5a614\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, renderList as _renderList, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0e201fca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"纯色填充\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"渐变填充\")\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"线性渐变\")\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"径向渐变\")\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点颜色:\", -1))\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点颜色:\", -1))\nconst _hoisted_12 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_ElementFlip = _resolveComponent(\"ElementFlip\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconFormat = _resolveComponent(\"IconFormat\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_IconAlignTextTopOne = _resolveComponent(\"IconAlignTextTopOne\")!\n const _component_IconAlignTextMiddleOne = _resolveComponent(\"IconAlignTextMiddleOne\")!\n const _component_IconAlignTextBottomOne = _resolveComponent(\"IconAlignTextBottomOne\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n const _component_ElementOpacity = _resolveComponent(\"ElementOpacity\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: _ctx.fillType,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateFillType(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"fill\" }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"gradient\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_5,\n (_ctx.fillType === 'fill')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.fill,\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _ctx.gradient.type,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateGradient({ type: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"linear\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"radial\" }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_ctx.fillType === 'gradient')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gradient.color[0],\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.updateGradient({ color: [value, _ctx.gradient.color[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gradient.color[0],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gradient.color[1],\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = value => _ctx.updateGradient({ color: [_ctx.gradient.color[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gradient.color[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_ctx.gradient.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 360,\n step: 15,\n value: _ctx.gradient.rotate,\n onChange: _cache[5] || (_cache[5] = value => _ctx.updateGradient({ rotate: value }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementFlip),\n _createVNode(_component_Divider),\n (_ctx.showTextTools)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.richTextAttrs.fontname,\n onChange: _cache[6] || (_cache[6] = value => _ctx.emitRichTextCommand('fontname', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.richTextAttrs.fontsize,\n onChange: _cache[7] || (_cache[7] = value => _ctx.emitRichTextCommand('fontsize', value))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.richTextAttrs.color,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => _ctx.emitRichTextCommand('color', value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.richTextAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.bold,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.em,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.richTextAttrs.underline,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"清除格式\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.emitRichTextCommand('clear')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFormat)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.richTextAttrs.align,\n onChange: _cache[13] || (_cache[13] = e => _ctx.emitRichTextCommand('align', e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.textAlign,\n onChange: _cache[14] || (_cache[14] = e => _ctx.updateTextAlign(e.target.value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顶对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"top\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextTopOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"middle\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextMiddleOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"底对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"bottom\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextBottomOne)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Divider)\n ], 64))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOpacity)\n ]))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTShapeElement, ShapeGradient, ShapeText } from '@/types/slides'\nimport { WEB_FONTS } from '@/configs/font'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOpacity from '../common/ElementOpacity.vue'\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ElementFlip from '../common/ElementFlip.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'shape-style-panel',\n components: {\n ElementOpacity,\n ElementOutline,\n ElementShadow,\n ElementFlip,\n ColorButton,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, editingShapeElementId, richTextAttrs, availableFonts } = storeToRefs(mainStore)\n\n const showTextTools = computed(() => editingShapeElementId.value === handleElementId.value)\n\n const fill = ref()\n const gradient = ref()\n const fillType = ref('fill')\n const textAlign = ref('middle')\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'shape') return\n\n fill.value = handleElement.value.fill || '#000'\n gradient.value = handleElement.value.gradient || { type: 'linear', rotate: 0, color: [fill.value, '#fff'] }\n fillType.value = handleElement.value.gradient ? 'gradient' : 'fill'\n textAlign.value = handleElement.value?.text?.align || 'middle'\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置填充类型:渐变、纯色\n const updateFillType = (type: 'gradient' | 'fill') => {\n if (type === 'fill') {\n slidesStore.removeElementProps({ id: handleElementId.value, propName: 'gradient' })\n addHistorySnapshot()\n }\n else updateElement({ gradient: gradient.value })\n }\n\n // 设置渐变填充\n const updateGradient = (gradientProps: Partial) => {\n if (!gradient.value) return\n const _gradient: ShapeGradient = { ...gradient.value, ...gradientProps }\n updateElement({ gradient: _gradient })\n }\n\n // 设置填充色\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n const updateTextAlign = (align: 'top' | 'middle' | 'bottom') => {\n const _handleElement = handleElement.value as PPTShapeElement\n \n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n const _text = _handleElement.text || defaultText\n updateElement({ text: { ..._text, align } })\n }\n\n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\n '80px', '88px', '96px', '104px', '112px', '120px',\n ]\n\n const emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command, value })\n }\n\n return {\n fill,\n gradient,\n fillType,\n textAlign,\n richTextAttrs,\n availableFonts,\n fontSizeOptions,\n webFonts,\n showTextTools,\n emitRichTextCommand,\n updateFillType,\n updateFill,\n updateGradient,\n updateTextAlign,\n }\n },\n})\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=0e201fca&scoped=true&ts=true\"\nimport script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=0e201fca&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0e201fca\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cbc4d7fa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条样式:\", -1))\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"实线\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"虚线\")\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条颜色:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"线条宽度:\", -1))\nconst _hoisted_10 = { class: \"row\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点样式:\", -1))\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"无\")\nconst _hoisted_13 = /*#__PURE__*/_createTextVNode(\"箭头\")\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"圆点\")\nconst _hoisted_15 = { class: \"row\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点样式:\", -1))\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"无\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"箭头\")\nconst _hoisted_19 = /*#__PURE__*/_createTextVNode(\"圆点\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementShadow = _resolveComponent(\"ElementShadow\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.style,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateLine({ style: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dashed\" }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateLine({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n value: _ctx.handleElement.width,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateLine({ width: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.points[0],\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateLine({ points: [value, _ctx.handleElement.points[1]] }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"arrow\" }, {\n default: _withCtx(() => [\n _hoisted_13\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dot\" }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.handleElement.points[1],\n onChange: _cache[4] || (_cache[4] = value => _ctx.updateLine({ points: [_ctx.handleElement.points[0], value] }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"arrow\" }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"dot\" }, {\n default: _withCtx(() => [\n _hoisted_19\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementShadow)\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTLineElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementShadow from '../common/ElementShadow.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nexport default defineComponent({\n name: 'line-style-panel',\n components: {\n ElementShadow,\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateLine = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n updateLine,\n }\n }\n})\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=cbc4d7fa&scoped=true&ts=true\"\nimport script from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=cbc4d7fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cbc4d7fa\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ee2d8b14\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" 编辑图表数据 \")\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"面积图样式\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"散点图样式\")\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"使用平滑曲线\")\nconst _hoisted_8 = {\n key: 1,\n class: \"row\"\n}\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"条形图样式\")\nconst _hoisted_10 = {\n key: 2,\n class: \"row\"\n}\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"环形图样式\")\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图例:\", -1))\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"不显示\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"显示在上方\")\nconst _hoisted_16 = /*#__PURE__*/_createTextVNode(\"显示在下方\")\nconst _hoisted_17 = { class: \"row\" }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景填充:\", -1))\nconst _hoisted_19 = { class: \"row\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"网格颜色:\", -1))\nconst _hoisted_21 = { style: {\"flex\":\"2\"} }\nconst _hoisted_22 = {\n class: \"color-btn-wrap\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_23 = [\"onClick\"]\nconst _hoisted_24 = { class: \"preset-themes\" }\nconst _hoisted_25 = [\"onClick\"]\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\"推荐主题\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\" 添加主题色 \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_ChartDataEditor = _resolveComponent(\"ChartDataEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Button, {\n class: \"full-width-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.chartDataEditorVisible = true))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEdit, { class: \"btn-icon\" }),\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n (_ctx.handleElement.chartType === 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[1] || (_cache[1] = e => _ctx.updateOptions({ showArea: e.target.checked })),\n checked: _ctx.showArea,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[2] || (_cache[2] = e => _ctx.updateOptions({ showLine: !e.target.checked })),\n checked: !_ctx.showLine,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[3] || (_cache[3] = e => _ctx.updateOptions({ lineSmooth: e.target.checked })),\n checked: _ctx.lineSmooth\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n }, 8, [\"checked\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'bar')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[4] || (_cache[4] = e => _ctx.updateOptions({ horizontalBars: e.target.checked })),\n checked: _ctx.horizontalBars\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.handleElement.chartType === 'pie')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[5] || (_cache[5] = e => _ctx.updateOptions({ donut: e.target.checked })),\n checked: _ctx.donut\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.legend,\n onChange: _cache[6] || (_cache[6] = value => _ctx.updateLegend(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"\" }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"top\" }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"bottom\" }, {\n default: _withCtx(() => [\n _hoisted_16\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_17, [\n _hoisted_18,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.fill,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = value => _ctx.updateFill(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.fill,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.gridColor,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = value => _ctx.updateGridColor(value))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.gridColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themeColor, (color, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"row\",\n key: index\n }, [\n _createElementVNode(\"div\", _hoisted_21, _toDisplayString(index === 0 ? '主题配色:' : ''), 1),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: color,\n \"onUpdate:modelValue\": value => _ctx.updateTheme(value, index)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_ColorButton, {\n color: color,\n style: {\"width\":\"100%\"}\n }, null, 8, [\"color\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除\"\n }, {\n default: _withCtx(() => [\n (index !== 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"delete-color-btn\",\n onClick: _withModifiers(($event: any) => (_ctx.deleteThemeColor(index)), [\"stop\"])\n }, [\n _createVNode(_component_IconCloseSmall)\n ], 8, _hoisted_23))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ]),\n _: 2\n }, 1024)\n ]))\n }), 128)),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, {\n trigger: \"click\",\n visible: _ctx.presetThemesVisible,\n \"onUpdate:visible\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.presetThemesVisible) = $event))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_24, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetChartThemes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme\",\n key: index,\n onClick: ($event: any) => (_ctx.applyPresetTheme(item))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"preset-theme-color\",\n key: color,\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4))\n }), 128))\n ], 8, _hoisted_25))\n }), 128))\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"no-padding\",\n style: {\"flex\":\"2\"}\n }, {\n default: _withCtx(() => [\n _hoisted_26\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(_component_Button, {\n class: \"no-padding\",\n disabled: _ctx.themeColor.length >= 10,\n style: {\"flex\":\"3\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.addThemeColor()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus, { class: \"btn-icon\" }),\n _hoisted_27\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline),\n _createVNode(_component_Modal, {\n visible: _ctx.chartDataEditorVisible,\n \"onUpdate:visible\": _cache[13] || (_cache[13] = ($event: any) => ((_ctx.chartDataEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n closable: false,\n width: 648,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_ChartDataEditor, {\n data: _ctx.handleElement.data,\n onClose: _cache[11] || (_cache[11] = ($event: any) => (_ctx.chartDataEditorVisible = false)),\n onSave: _cache[12] || (_cache[12] = value => _ctx.updateData(value))\n }, null, 8, [\"data\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9a62f784\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-data-editor\" }\nconst _hoisted_2 = { class: \"editor-content\" }\nconst _hoisted_3 = { class: \"range-box\" }\nconst _hoisted_4 = [\"id\", \"onFocus\", \"onPaste\"]\nconst _hoisted_5 = { class: \"btns\" }\nconst _hoisted_6 = { class: \"left\" }\nconst _hoisted_7 = /*#__PURE__*/_createTextVNode(\"清空\")\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"取消\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"确认\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"temp-range\",\n style: _normalizeStyle({\n width: _ctx.tempRangeSize.width + 'px',\n height: _ctx.tempRangeSize.height + 'px',\n })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rangeLines, (line) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['range-line', line.type]),\n key: line.type,\n style: _normalizeStyle(line.style)\n }, null, 6))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"resizable\",\n style: _normalizeStyle(_ctx.resizablePointStyle),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.changeSelectRange($event)), [\"stop\"]))\n }, null, 36)\n ]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(31, (rowIndex) => {\n return _createElementVNode(\"tr\", { key: rowIndex }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(7, (colIndex) => {\n return _createElementVNode(\"td\", {\n key: colIndex,\n class: _normalizeClass({ 'head': (colIndex === 1 && rowIndex <= _ctx.selectedRange[1]) || (rowIndex === 1 && colIndex <= _ctx.selectedRange[0]) })\n }, [\n _createElementVNode(\"input\", {\n class: _normalizeClass(['item', { 'selected': rowIndex <= _ctx.selectedRange[1] && colIndex <= _ctx.selectedRange[0] }]),\n id: `cell-${rowIndex - 1}-${colIndex - 1}`,\n autocomplete: \"off\",\n onFocus: ($event: any) => (_ctx.focusCell = [rowIndex - 1, colIndex - 1]),\n onPaste: $event => _ctx.handlePaste($event, rowIndex - 1, colIndex - 1)\n }, null, 42, _hoisted_4)\n ], 2)\n }), 64))\n ])\n }), 64))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.clear()))\n }, {\n default: _withCtx(() => [\n _hoisted_7\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Button, {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.closeEditor()))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n type: \"primary\",\n class: \"btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.getTableData())),\n style: {\"margin-left\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ])\n ])\n ]))\n}","\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { ChartData } from '@/types/slides'\nimport { KEYS } from '@/configs/hotkey'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\nconst CELL_WIDTH = 100\nconst CELL_HEIGHT = 32\n\nexport default defineComponent({\n name: 'chart-data-editor',\n emits: ['save', 'close'],\n props: {\n data: {\n type: Object as PropType,\n required: true,\n }\n },\n setup(props, { emit }) {\n const selectedRange = ref([0, 0])\n const tempRangeSize = ref({ width: 0, height: 0 })\n const focusCell = ref<[number, number] | null>(null)\n\n // 当前选区的边框线条位置\n const rangeLines = computed(() => {\n const width = selectedRange.value[0] * CELL_WIDTH\n const height = selectedRange.value[1] * CELL_HEIGHT\n return [\n { type: 't', style: {width: width + 'px'} },\n { type: 'b', style: {top: height + 'px', width: width + 'px'} },\n { type: 'l', style: {height: height + 'px'} },\n { type: 'r', style: {left: width + 'px', height: height + 'px'} },\n ]\n })\n\n // 当前选区的缩放点位置\n const resizablePointStyle = computed(() => {\n const width = selectedRange.value[0] * CELL_WIDTH\n const height = selectedRange.value[1] * CELL_HEIGHT\n return { left: width + 'px', top: height + 'px' }\n })\n\n // 初始化图表数据:将数据格式化并填充到DOM\n const initData = () => {\n const _data: string[][] = []\n\n const { labels, legends, series } = props.data\n const rowCount = labels.length\n const colCount = series.length\n\n _data.push(['', ...legends])\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row = [labels[rowIndex]]\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n row.push(series[colIndex][rowIndex] + '')\n }\n _data.push(row)\n }\n\n for (let rowIndex = 0; rowIndex < rowCount + 1; rowIndex++) {\n for (let colIndex = 0; colIndex < colCount + 1; colIndex++) {\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = _data[rowIndex][colIndex] + ''\n }\n }\n\n selectedRange.value = [colCount + 1, rowCount + 1]\n }\n\n onMounted(initData)\n\n // 快捷键监听:回车移动焦点到下一行\n const moveNextRow = () => {\n if (!focusCell.value) return\n\n const [rowIndex, colIndex] = focusCell.value\n const inputRef = document.querySelector(`#cell-${rowIndex + 1}-${colIndex}`) as HTMLInputElement\n inputRef && inputRef.focus()\n }\n\n const keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) moveNextRow()\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n })\n\n // 获取当前图表DOM中的数据,整理格式化后传递出去\n const getTableData = () => {\n const [col, row] = selectedRange.value\n\n const labels: string[] = []\n const legends: string[] = []\n const series: number[][] = []\n\n // 第一行为系列名,第一列为项目名,实际数据从第二行第二列开始\n for (let rowIndex = 1; rowIndex < row; rowIndex++) {\n let labelsItem = `类别${rowIndex}`\n const labelInputRef = document.querySelector(`#cell-${rowIndex}-0`) as HTMLInputElement\n if (labelInputRef && labelInputRef.value) labelsItem = labelInputRef.value\n labels.push(labelsItem)\n }\n for (let colIndex = 1; colIndex < col; colIndex++) {\n let legendsItem = `系列${colIndex}`\n const labelInputRef = document.querySelector(`#cell-0-${colIndex}`) as HTMLInputElement\n if (labelInputRef && labelInputRef.value) legendsItem = labelInputRef.value\n legends.push(legendsItem)\n }\n\n for (let colIndex = 1; colIndex < col; colIndex++) {\n const seriesItem = []\n for (let rowIndex = 1; rowIndex < row; rowIndex++) {\n const valueInputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n let value = 0\n if (valueInputRef && valueInputRef.value && !!(+valueInputRef.value)) {\n value = +valueInputRef.value\n }\n seriesItem.push(value)\n }\n series.push(seriesItem)\n }\n\n emit('save', { labels, legends, series })\n }\n\n // 清空表格数据\n const clear = () => {\n for (let rowIndex = 1; rowIndex < 31; rowIndex++) {\n for (let colIndex = 1; colIndex < 7; colIndex++) {\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = ''\n }\n }\n }\n\n // 自定义粘贴事件(尝试读取剪贴板中的表格数据)\n const handlePaste = (e: ClipboardEvent, rowIndex: number, colIndex: number) => {\n e.preventDefault()\n\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n const maxRow = rowIndex + excelData.length\n const maxCol = colIndex + excelData[0].length\n for (let i = rowIndex; i < maxRow; i++) {\n for (let j = colIndex; j < maxCol; j++) {\n const inputRef = document.querySelector(`#cell-${i}-${j}`) as HTMLInputElement\n if (!inputRef) continue\n inputRef.value = excelData[i - rowIndex][j - colIndex]\n }\n }\n }\n })\n }\n }\n\n // 关闭图表数据编辑器\n const closeEditor = () => emit('close')\n\n // 鼠标拖拽修改选中的数据范围\n const changeSelectRange = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originWidth = selectedRange.value[0] * CELL_WIDTH\n const originHeight = selectedRange.value[1] * CELL_HEIGHT\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n const width = originWidth + x\n const height = originHeight + y\n\n tempRangeSize.value = { width, height }\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n if (startPageX === endPageX && startPageY === endPageY) return\n\n // 拖拽结束时,范围超过格子一半自动扩大到下一格(如拖动到一格半多的位置,会自动扩展到两格,横竖都同理)\n let width = tempRangeSize.value.width\n let height = tempRangeSize.value.height\n if (width % CELL_WIDTH > CELL_WIDTH * 0.5) width = width + (CELL_WIDTH - width % CELL_WIDTH)\n if (height % CELL_HEIGHT > CELL_HEIGHT * 0.5) height = height + (CELL_HEIGHT - height % CELL_HEIGHT)\n\n let row = Math.round(height / CELL_HEIGHT)\n let col = Math.round(width / CELL_WIDTH)\n\n if (row < 3) row = 3\n if (col < 2) col = 2\n\n selectedRange.value = [col, row]\n tempRangeSize.value = { width: 0, height: 0 }\n }\n }\n\n return {\n tempRangeSize,\n rangeLines,\n resizablePointStyle,\n selectedRange,\n focusCell,\n changeSelectRange,\n getTableData,\n closeEditor,\n clear,\n handlePaste,\n }\n },\n})\n","import { render } from \"./ChartDataEditor.vue?vue&type=template&id=9a62f784&scoped=true&ts=true\"\nimport script from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=9a62f784&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a62f784\"]])\n\nexport default __exports__","\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\nimport { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { ChartData, PPTChartElement } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../../common/ElementOutline.vue'\nimport ColorButton from '../../common/ColorButton.vue'\nimport ChartDataEditor from './ChartDataEditor.vue'\n\nconst presetChartThemes = [\n ['#d87c7c', '#919e8b', '#d7ab82', '#6e7074', '#61a0a8', '#efa18d'],\n ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78'],\n ['#516b91', '#59c4e6', '#edafda', '#93b7e3', '#a5e7f0', '#cbb0e3'],\n ['#893448', '#d95850', '#eb8146', '#ffb248', '#f2d643', '#ebdba4'],\n ['#4ea397', '#22c3aa', '#7bd9a5', '#d0648a', '#f58db2', '#f2b3c9'],\n ['#3fb1e3', '#6be6c1', '#626c91', '#a0a7e6', '#c4ebad', '#96dee8'],\n ['#fc97af', '#87f7cf', '#f7f494', '#72ccff', '#f7c5a0', '#d4a4eb'],\n ['#c1232b', '#27727b', '#fcce10', '#e87c25', '#b5c334', '#fe8463'],\n ['#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3'],\n ['#e01f54', '#001852', '#f5e8c8', '#b8d2c7', '#c6b38e', '#a4d8c2'],\n ['#c12e34', '#e6b600', '#0098d9', '#2b821d', '#005eaa', '#339ca8'],\n ['#8a7ca8', '#e098c7', '#8fd3e8', '#71669e', '#cc70af', '#7cb4cc'],\n]\n\nexport default defineComponent({\n name: 'chart-style-panel',\n components: {\n ElementOutline,\n ChartDataEditor,\n ColorButton,\n },\n setup() {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(mainStore)\n const { theme } = storeToRefs(slidesStore)\n\n const chartDataEditorVisible = ref(false)\n const presetThemesVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const fill = ref()\n\n const themeColor = ref([])\n const gridColor = ref('')\n const legend = ref('')\n\n const lineSmooth = ref(true)\n const showLine = ref(true)\n const showArea = ref(false)\n const horizontalBars = ref(false)\n const donut = ref(false)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'chart') return\n fill.value = handleElement.value.fill || '#000'\n\n if (handleElement.value.options) {\n const {\n lineSmooth: _lineSmooth,\n showLine: _showLine,\n showArea: _showArea,\n horizontalBars: _horizontalBars,\n donut: _donut,\n } = handleElement.value.options\n\n if (_lineSmooth !== undefined) lineSmooth.value = _lineSmooth as boolean\n if (_showLine !== undefined) showLine.value = _showLine\n if (_showArea !== undefined) showArea.value = _showArea\n if (_horizontalBars !== undefined) horizontalBars.value = _horizontalBars\n if (_donut !== undefined) donut.value = _donut\n }\n\n themeColor.value = handleElement.value.themeColor\n gridColor.value = handleElement.value.gridColor || 'rgba(0, 0, 0, 0.4)'\n legend.value = handleElement.value.legend || ''\n }, { deep: true, immediate: true })\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置图表数据\n const updateData = (data: ChartData) => {\n chartDataEditorVisible.value = false\n updateElement({ data })\n }\n\n // 设置填充色\n const updateFill = (value: string) => {\n updateElement({ fill: value })\n }\n\n // 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\n const updateOptions = (optionProps: ILineChartOptions & IBarChartOptions & IPieChartOptions) => {\n const _handleElement = handleElement.value as PPTChartElement\n\n const newOptions = { ..._handleElement.options, ...optionProps }\n updateElement({ options: newOptions })\n }\n\n // 设置主题色\n const updateTheme = (color: string, index: number) => {\n const props = {\n themeColor: themeColor.value.map((c, i) => i === index ? color : c),\n }\n updateElement(props)\n }\n\n // 添加主题色\n const addThemeColor = () => {\n const props = {\n themeColor: [...themeColor.value, theme.value.themeColor],\n }\n updateElement(props)\n }\n\n // 使用预置主题配色\n const applyPresetTheme = (colors: string[]) => {\n updateElement({ themeColor: colors })\n presetThemesVisible.value = false\n }\n\n // 删除主题色\n const deleteThemeColor = (index: number) => {\n const props = {\n themeColor: themeColor.value.filter((c, i) => i !== index),\n }\n updateElement(props)\n }\n\n // 设置网格颜色\n const updateGridColor = (gridColor: string) => {\n updateElement({ gridColor })\n }\n\n // 设置图例位置/不显示\n const updateLegend = (legend: '' | 'top' | 'bottom') => {\n updateElement({ legend })\n }\n\n const openDataEditor = () => chartDataEditorVisible.value = true\n\n emitter.on(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n onUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_CHART_DATA_EDITOR, openDataEditor)\n })\n\n return {\n chartDataEditorVisible,\n presetThemesVisible,\n handleElement,\n updateData,\n fill,\n updateFill,\n lineSmooth,\n showLine,\n showArea,\n horizontalBars,\n donut,\n updateOptions,\n themeColor,\n gridColor,\n legend,\n updateTheme,\n addThemeColor,\n deleteThemeColor,\n updateGridColor,\n updateLegend,\n presetChartThemes,\n applyPresetTheme,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=ee2d8b14&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=ee2d8b14&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ee2d8b14\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, withCtx as _withCtx, createBlock as _createBlock, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72e00692\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"行数:\", -1))\nconst _hoisted_4 = {\n class: \"set-count\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_5 = { class: \"count-text\" }\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"列数:\", -1))\nconst _hoisted_8 = {\n class: \"set-count\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_9 = { class: \"count-text\" }\nconst _hoisted_10 = { class: \"row theme-switch\" }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"启用主题表格:\", -1))\nconst _hoisted_12 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_13 = { class: \"row\" }\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\"标题行\")\nconst _hoisted_15 = /*#__PURE__*/_createTextVNode(\"汇总行\")\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/_createTextVNode(\"第一列\")\nconst _hoisted_18 = /*#__PURE__*/_createTextVNode(\"最后一列\")\nconst _hoisted_19 = { class: \"row\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题颜色:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_IconAddText = _resolveComponent(\"IconAddText\")!\n const _component_InputGroup = _resolveComponent(\"InputGroup\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_IconText = _resolveComponent(\"IconText\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_CheckboxButton = _resolveComponent(\"CheckboxButton\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_CheckboxButtonGroup = _resolveComponent(\"CheckboxButtonGroup\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_RadioButton = _resolveComponent(\"RadioButton\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ElementOutline = _resolveComponent(\"ElementOutline\")!\n const _component_IconMinus = _resolveComponent(\"IconMinus\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n const _component_Checkbox = _resolveComponent(\"Checkbox\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_InputGroup, {\n compact: \"\",\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.textAttrs.fontname,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateTextAttrs({ fontname: value }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconFontSize)\n ]),\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Select, {\n style: {\"flex\":\"2\"},\n value: _ctx.textAttrs.fontsize,\n onChange: _cache[1] || (_cache[1] = value => _ctx.updateTextAttrs({ fontsize: value }))\n }, {\n suffixIcon: _withCtx(() => [\n _createVNode(_component_IconAddText)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fontSizeOptions, (fontsize) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: fontsize,\n value: fontsize\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(fontsize), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.textAttrs.color,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = value => _ctx.updateTextAttrs({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"文字颜色\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconText),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.textAttrs.color })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.textAttrs.backcolor,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = value => _ctx.updateTextAttrs({ backcolor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"单元格填充\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n class: \"text-color-btn\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFill),\n _createElementVNode(\"div\", {\n class: \"text-color-block\",\n style: _normalizeStyle({ backgroundColor: _ctx.textAttrs.backcolor })\n }, null, 4)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_CheckboxButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"加粗\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.bold,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateTextAttrs({ bold: !_ctx.textAttrs.bold })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"斜体\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.em,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateTextAttrs({ em: !_ctx.textAttrs.em })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下划线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.underline,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.updateTextAttrs({ underline: !_ctx.textAttrs.underline })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除线\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _ctx.textAttrs.strikethrough,\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.updateTextAttrs({ strikethrough: !_ctx.textAttrs.strikethrough })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _ctx.textAttrs.align,\n onChange: _cache[8] || (_cache[8] = e => _ctx.updateTextAttrs({ align: e.target.value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_Divider),\n _createVNode(_component_ElementOutline, { fixed: true }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.rowCount <= 1,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.setTableRow(_ctx.rowCount - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.rowCount), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.rowCount >= 30,\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_ctx.setTableRow(_ctx.rowCount + 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus)\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.colCount <= 1,\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.setTableCol(_ctx.colCount - 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconMinus)\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.colCount), 1),\n _createVNode(_component_Button, {\n class: \"btn\",\n disabled: _ctx.colCount >= 30,\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_ctx.setTableCol(_ctx.colCount + 1)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlus)\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ])\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_Switch, {\n checked: _ctx.hasTheme,\n onChange: _cache[13] || (_cache[13] = checked => _ctx.toggleTheme(checked))\n }, null, 8, [\"checked\"])\n ])\n ]),\n (_ctx.hasTheme)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[14] || (_cache[14] = e => _ctx.updateTheme({ rowHeader: e.target.checked })),\n checked: _ctx.theme.rowHeader,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_14\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[15] || (_cache[15] = e => _ctx.updateTheme({ rowFooter: e.target.checked })),\n checked: _ctx.theme.rowFooter,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_15\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_Checkbox, {\n onChange: _cache[16] || (_cache[16] = e => _ctx.updateTheme({ colHeader: e.target.checked })),\n checked: _ctx.theme.colHeader,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_17\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(_component_Checkbox, {\n onChange: _cache[17] || (_cache[17] = e => _ctx.updateTheme({ colFooter: e.target.checked })),\n checked: _ctx.theme.colFooter,\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _hoisted_18\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _hoisted_20,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.color,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = value => _ctx.updateTheme({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\nimport { createRandomCode } from '@/utils/common'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '../common/ElementOutline.vue'\nimport ColorButton from '../common/ColorButton.vue'\n\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'table-style-panel',\n components: {\n ElementOutline,\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId, selectedTableCells: selectedCells, availableFonts } = storeToRefs(useMainStore())\n const themeColor = computed(() => slidesStore.theme.themeColor)\n \n const fontSizeOptions = [\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\n ]\n\n const textAttrs = ref({\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '12px',\n fontname: '微软雅黑',\n align: 'left',\n })\n\n const theme = ref()\n const hasTheme = ref(false)\n const rowCount = ref(0)\n const colCount = ref(0)\n const minRowCount = ref(0)\n const minColCount = ref(0)\n\n watch(handleElement, () => {\n if (!handleElement.value || handleElement.value.type !== 'table') return\n \n theme.value = handleElement.value.theme\n hasTheme.value = !!theme.value\n\n rowCount.value = handleElement.value.data.length\n colCount.value = handleElement.value.data[0].length\n\n minRowCount.value = handleElement.value.data.length\n minColCount.value = handleElement.value.data[0].length\n }, { deep: true, immediate: true })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 更新当前选中单元格的文本样式状态\n const updateTextAttrState = () => {\n if (!handleElement.value || handleElement.value.type !== 'table') return\n\n let rowIndex = 0\n let colIndex = 0\n if (selectedCells.value.length) {\n const selectedCell = selectedCells.value[0]\n rowIndex = +selectedCell.split('_')[0]\n colIndex = +selectedCell.split('_')[1]\n }\n const style = handleElement.value.data[rowIndex][colIndex].style\n\n if (!style) {\n textAttrs.value = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n color: '#000',\n backcolor: '#000',\n fontsize: '12px',\n fontname: '微软雅黑',\n align: 'left',\n }\n }\n else {\n textAttrs.value = {\n bold: !!style.bold,\n em: !!style.em,\n underline: !!style.underline,\n strikethrough: !!style.strikethrough,\n color: style.color || '#000',\n backcolor: style.backcolor || '#000',\n fontsize: style.fontsize || '12px',\n fontname: style.fontname || '微软雅黑',\n align: style.align || 'left',\n }\n }\n }\n\n onMounted(() => {\n if (selectedCells.value.length) updateTextAttrState()\n })\n\n watch(selectedCells, updateTextAttrState)\n\n const updateElement = (props: Partial) => {\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置单元格内容文本样式\n const updateTextAttrs = (textAttrProp: Partial) => {\n const _handleElement = handleElement.value as PPTTableElement\n\n const data: TableCell[][] = JSON.parse(JSON.stringify(_handleElement.data))\n\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (!selectedCells.value.length || selectedCells.value.includes(`${i}_${j}`)) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, ...textAttrProp }\n }\n }\n }\n updateElement({ data })\n updateTextAttrState()\n }\n\n // 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\n const updateTheme = (themeProp: Partial) => {\n if (!theme.value) return\n const _theme = { ...theme.value, ...themeProp }\n updateElement({ theme: _theme })\n }\n\n // 开启/关闭表格主题\n const toggleTheme = (checked: boolean) => {\n if (checked) {\n const props = {\n theme: {\n color: themeColor.value,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n }\n }\n updateElement(props)\n }\n else {\n slidesStore.removeElementProps({ id: handleElementId.value, propName: 'theme' })\n addHistorySnapshot()\n }\n }\n\n // 设置表格行数\n const setTableRow = (value: number) => {\n const _handleElement = handleElement.value as PPTTableElement\n const rowCount = _handleElement.data.length\n\n if (value > rowCount) {\n const rowCells: TableCell[] = new Array(colCount.value).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\n const newTableCells: TableCell[][] = new Array(value - rowCount).fill(rowCells)\n \n const tableCells: TableCell[][] = JSON.parse(JSON.stringify(_handleElement.data))\n tableCells.push(...newTableCells)\n \n updateElement({ data: tableCells })\n }\n else {\n const tableCells: TableCell[][] = _handleElement.data.slice(0, value)\n updateElement({ data: tableCells })\n }\n }\n\n // 设置表格列数\n const setTableCol = (value: number) => {\n const _handleElement = handleElement.value as PPTTableElement\n const colCount = _handleElement.data[0].length\n\n let tableCells = _handleElement.data\n let colSizeList = _handleElement.colWidths.map(item => item * _handleElement.width)\n\n if (value > colCount) {\n tableCells = tableCells.map(item => {\n const cells: TableCell[] = new Array(value - colCount).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\n item.push(...cells)\n return item\n })\n \n const newColSizeList: number[] = new Array(value - colCount).fill(100)\n colSizeList.push(...newColSizeList)\n }\n else {\n tableCells = tableCells.map(item => item.slice(0, value))\n colSizeList = colSizeList.slice(0, value)\n }\n\n const width = colSizeList.reduce((a, b) => a + b)\n const colWidths = colSizeList.map(item => item / width)\n\n const props = {\n width,\n data: tableCells,\n colWidths,\n }\n updateElement(props)\n }\n\n return {\n handleElement,\n availableFonts,\n fontSizeOptions,\n textAttrs,\n updateTextAttrs,\n theme,\n rowCount,\n colCount,\n minRowCount,\n minColCount,\n hasTheme,\n toggleTheme,\n updateTheme,\n setTableRow,\n setTableCol,\n webFonts,\n }\n },\n})\n","import { render } from \"./TableStylePanel.vue?vue&type=template&id=72e00692&scoped=true&ts=true\"\nimport script from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=72e00692&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-72e00692\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-69f903b1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"编辑 LaTeX\")\nconst _hoisted_4 = { class: \"row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"颜色:\", -1))\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"粗细:\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_LaTeXEditor = _resolveComponent(\"LaTeXEditor\")!\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.latexEditorVisible = true))\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = value => _ctx.updateLatex({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_InputNumber, {\n min: 1,\n max: 3,\n value: _ctx.handleElement.strokeWidth,\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateLatex({ strokeWidth: value })),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ]),\n _createVNode(_component_Modal, {\n visible: _ctx.latexEditorVisible,\n \"onUpdate:visible\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.latexEditorVisible) = $event)),\n footer: null,\n centered: \"\",\n width: 880,\n destroyOnClose: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LaTeXEditor, {\n value: _ctx.handleElement.latex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (_ctx.latexEditorVisible = false)),\n onUpdate: _cache[4] || (_cache[4] = data => { _ctx.updateLatexData(data); _ctx.latexEditorVisible = false })\n }, null, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"visible\"])\n ]))\n}","\nimport { defineComponent, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTLatexElement } from '@/types/slides'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\nimport LaTeXEditor from '@/components/LaTeXEditor/index.vue'\n\nexport default defineComponent({\n name: 'latex-style-panel',\n components: {\n ColorButton,\n LaTeXEditor,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const latexEditorVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateLatex = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n const updateLatexData = (data: { path: string; latex: string; w: number; h: number; }) => {\n updateLatex({\n path: data.path,\n latex: data.latex,\n width: data.w,\n height: data.h,\n viewBox: [data.w, data.h],\n })\n }\n\n const openLatexEditor = () => latexEditorVisible.value = true\n\n emitter.on(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n onUnmounted(() => {\n emitter.off(EmitterEvents.OPEN_LATEX_EDITOR, openLatexEditor)\n })\n\n return {\n handleElement,\n latexEditorVisible,\n updateLatex,\n updateLatexData,\n }\n }\n})\n","import { render } from \"./LatexStylePanel.vue?vue&type=template&id=69f903b1&scoped=true&ts=true\"\nimport script from \"./LatexStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LatexStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LatexStylePanel.vue?vue&type=style&index=0&id=69f903b1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-69f903b1\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-61bcaa2a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"video-style-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"视频预览封面\", -1))\nconst _hoisted_3 = { class: \"background-image-wrapper\" }\nconst _hoisted_4 = { class: \"background-image\" }\nconst _hoisted_5 = { class: \"row\" }\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"重置封面\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_FileInput, {\n onChange: _cache[0] || (_cache[0] = files => _ctx.setVideoPoster(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.handleElement.poster})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateVideo({ poster: '' })))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\nimport { getImageDataURL } from '@/utils/image'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'video-style-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateVideo = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n // 设置视频预览封面\n const setVideoPoster = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateVideo({ poster: dataURL }))\n }\n\n return {\n handleElement,\n updateVideo,\n setVideoPoster,\n }\n }\n})\n","import { render } from \"./VideoStylePanel.vue?vue&type=template&id=61bcaa2a&scoped=true&ts=true\"\nimport script from \"./VideoStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./VideoStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./VideoStylePanel.vue?vue&type=style&index=0&id=61bcaa2a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-61bcaa2a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-80767a46\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"audio-style-panel\" }\nconst _hoisted_2 = { class: \"row\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"图标颜色:\", -1))\nconst _hoisted_4 = { class: \"row switch-row\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"自动播放:\", -1))\nconst _hoisted_6 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\nconst _hoisted_7 = { class: \"row switch-row\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"循环播放:\", -1))\nconst _hoisted_9 = {\n class: \"switch-wrapper\",\n style: {\"flex\":\"3\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_Switch = _resolveComponent(\"Switch\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.handleElement.color,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = value => _ctx.updateAudio({ color: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.handleElement.color,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Switch, {\n checked: _ctx.handleElement.autoplay,\n onChange: _cache[1] || (_cache[1] = checked => _ctx.updateAudio({ autoplay: checked }))\n }, null, 8, [\"checked\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_Switch, {\n checked: _ctx.handleElement.loop,\n onChange: _cache[2] || (_cache[2] = checked => _ctx.updateAudio({ loop: checked }))\n }, null, 8, [\"checked\"])\n ])\n ])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from '../common/ColorButton.vue'\n\nexport default defineComponent({\n name: 'audio-style-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement } = storeToRefs(useMainStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const updateAudio = (props: Partial) => {\n if (!handleElement.value) return\n slidesStore.updateElement({ id: handleElement.value.id, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n updateAudio,\n }\n }\n})\n","import { render } from \"./AudioStylePanel.vue?vue&type=template&id=80767a46&scoped=true&ts=true\"\nimport script from \"./AudioStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./AudioStylePanel.vue?vue&type=style&index=0&id=80767a46&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-80767a46\"]])\n\nexport default __exports__","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { ElementTypes } from '@/types/slides'\n\nimport TextStylePanel from './TextStylePanel.vue'\nimport ImageStylePanel from './ImageStylePanel.vue'\nimport ShapeStylePanel from './ShapeStylePanel.vue'\nimport LineStylePanel from './LineStylePanel.vue'\nimport ChartStylePanel from './ChartStylePanel/index.vue'\nimport TableStylePanel from './TableStylePanel.vue'\nimport LatexStylePanel from './LatexStylePanel.vue'\nimport VideoStylePanel from './VideoStylePanel.vue'\nimport AudioStylePanel from './AudioStylePanel.vue'\n\nexport default defineComponent({\n name: 'element-style-panel',\n setup() {\n const { handleElement } = storeToRefs(useMainStore())\n\n const currentPanelComponent = computed(() => {\n if (!handleElement.value) return null\n \n const panelMap = {\n [ElementTypes.TEXT]: TextStylePanel,\n [ElementTypes.IMAGE]: ImageStylePanel,\n [ElementTypes.SHAPE]: ShapeStylePanel,\n [ElementTypes.LINE]: LineStylePanel,\n [ElementTypes.CHART]: ChartStylePanel,\n [ElementTypes.TABLE]: TableStylePanel,\n [ElementTypes.LATEX]: LatexStylePanel,\n [ElementTypes.VIDEO]: VideoStylePanel,\n [ElementTypes.AUDIO]: AudioStylePanel,\n }\n return panelMap[handleElement.value.type] || null\n })\n\n return {\n handleElement,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=705f1755&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createStaticVNode as _createStaticVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3476ee65\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-positopn-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"层级:\", -1))\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" 置于顶层\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" 置于底层\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" 上移一层\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" 下移一层\")\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"对齐:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"位置:\", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_11 = /*#__PURE__*/_createStaticVNode(\"
X
Y
\", 1)\nconst _hoisted_12 = { class: \"row\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"大小:\", -1))\nconst _hoisted_14 = {\n key: 1,\n style: {\"flex\":\"1\"}\n}\nconst _hoisted_15 = /*#__PURE__*/_createStaticVNode(\"
\", 1)\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"3\"} }, \"旋转:\", -1))\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n const _component_IconLock = _resolveComponent(\"IconLock\")!\n const _component_IconUnlock = _resolveComponent(\"IconUnlock\")!\n const _component_IconRotate = _resolveComponent(\"IconRotate\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"btn-icon\" }),\n _hoisted_3\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"btn-icon\" }),\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'up')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"btn-icon\" }),\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.orderElement(_ctx.handleElement, 'down')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"btn-icon\" }),\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _hoisted_7,\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.alignElementToCanvas('left')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.alignElementToCanvas('horizontal')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.alignElementToCanvas('right')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.alignElementToCanvas('top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.alignElementToCanvas('vertical')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.alignElementToCanvas('bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: _ctx.left,\n onChange: _cache[10] || (_cache[10] = value => _ctx.updateLeft(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"]),\n _hoisted_10,\n _createVNode(_component_InputNumber, {\n step: 5,\n value: _ctx.top,\n onChange: _cache[11] || (_cache[11] = value => _ctx.updateTop(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ]),\n _hoisted_11,\n (_ctx.handleElement.type !== 'line')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_12, [\n _hoisted_13,\n _createVNode(_component_InputNumber, {\n min: _ctx.minSize,\n max: 1500,\n step: 5,\n value: _ctx.width,\n onChange: _cache[12] || (_cache[12] = value => _ctx.updateWidth(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"value\"]),\n (['image', 'shape', 'audio'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.fixedRatio)\n ? (_openBlock(), _createBlock(_component_Tooltip, {\n key: 0,\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"解除宽高比锁定\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconLock, {\n style: {\"flex\":\"1\"},\n class: \"icon-btn\",\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_ctx.updateFixedRatio(false)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n : (_openBlock(), _createBlock(_component_Tooltip, {\n key: 1,\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"宽高比锁定\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUnlock, {\n style: {\"flex\":\"1\"},\n class: \"icon-btn\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.updateFixedRatio(true)))\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]))\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_14)),\n _createVNode(_component_InputNumber, {\n min: _ctx.minSize,\n max: 800,\n step: 5,\n disabled: _ctx.handleElement.type === 'text',\n value: _ctx.height,\n onChange: _cache[15] || (_cache[15] = value => _ctx.updateHeight(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"min\", \"disabled\", \"value\"])\n ]),\n _hoisted_15\n ], 64))\n : _createCommentVNode(\"\", true),\n (!['line', 'video', 'audio'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"逆时针旋转\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRotate, {\n class: \"icon-btn\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_ctx.updateRotate45('-'))),\n style: {\"flex\":\"2\"}\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"顺时针旋转\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconRotate, {\n class: \"icon-btn\",\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_ctx.updateRotate45('+'))),\n style: _normalizeStyle({\n flex: 2,\n transform: 'rotateY(180deg)',\n })\n }, null, 8, [\"style\"])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _hoisted_18,\n _createVNode(_component_InputNumber, {\n min: -180,\n max: 180,\n step: 5,\n value: _ctx.rotate,\n onChange: _cache[18] || (_cache[18] = value => _ctx.updateRotate(value)),\n style: {\"flex\":\"4\"}\n }, null, 8, [\"value\"])\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { round } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { MIN_SIZE } from '@/configs/element'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default defineComponent({\n name: 'element-positopn-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n\n const left = ref(0)\n const top = ref(0)\n const width = ref(0)\n const height = ref(0)\n const rotate = ref(0)\n const fixedRatio = ref(false)\n\n const minSize = computed(() => {\n if (!handleElement.value) return 20\n return MIN_SIZE[handleElement.value.type] || 20\n })\n\n watch(handleElement, () => {\n if (!handleElement.value) return\n\n left.value = round(handleElement.value.left, 1)\n top.value = round(handleElement.value.top, 1)\n\n fixedRatio.value = 'fixedRatio' in handleElement.value && !!handleElement.value.fixedRatio\n\n if (handleElement.value.type !== 'line') {\n width.value = round(handleElement.value.width, 1)\n height.value = round(handleElement.value.height, 1)\n rotate.value = 'rotate' in handleElement.value && handleElement.value.rotate !== undefined ? round(handleElement.value.rotate, 1) : 0\n }\n }, { deep: true, immediate: true })\n\n const { orderElement } = useOrderElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 设置元素位置\n const updateLeft = (value: number) => {\n const props = { left: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateTop = (value: number) => {\n const props = { top: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 设置元素宽度、高度、旋转角度\n const updateWidth = (value: number) => {\n const props = { width: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateHeight = (value: number) => {\n const props = { height: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n const updateRotate = (value: number) => {\n const props = { rotate: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 固定元素的宽高比\n const updateFixedRatio = (value: boolean) => {\n const props = { fixedRatio: value }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n // 将元素旋转45度(顺时针或逆时针)\n const updateRotate45 = (command: '+' | '-') => {\n let _rotate = Math.floor(rotate.value / 45) * 45\n if (command === '+') _rotate = _rotate + 45\n else if (command === '-') _rotate = _rotate - 45\n\n if (_rotate < -180) _rotate = -180\n if (_rotate > 180) _rotate = 180\n\n const props = { rotate: _rotate }\n slidesStore.updateElement({ id: handleElementId.value, props })\n addHistorySnapshot()\n }\n\n return {\n handleElement,\n orderElement,\n alignElementToCanvas,\n left,\n top,\n width,\n height,\n rotate,\n fixedRatio,\n minSize,\n updateLeft,\n updateTop,\n updateWidth,\n updateHeight,\n updateRotate,\n updateFixedRatio,\n updateRotate45,\n }\n },\n})\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=3476ee65&scoped=true&ts=true\"\nimport script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=3476ee65&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3476ee65\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-696c81e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-animation-panel\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"element-animation\"\n}\nconst _hoisted_3 = { class: \"animation-pool\" }\nconst _hoisted_4 = { class: \"type-title\" }\nconst _hoisted_5 = { class: \"pool-item-wrapper\" }\nconst _hoisted_6 = [\"onMouseenter\", \"onClick\"]\nconst _hoisted_7 = {\n key: 0,\n class: \"mask\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" 该元素暂不支持动画 \")\nconst _hoisted_9 = {\n key: 1,\n class: \"tip\"\n}\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" 选中画布中的元素添加动画\")\nconst _hoisted_11 = { class: \"index\" }\nconst _hoisted_12 = { class: \"text\" }\nconst _hoisted_13 = { class: \"handler\" }\nconst _hoisted_14 = {\n key: 2,\n class: \"configs\"\n}\nconst _hoisted_15 = { class: \"duration\" }\nconst _hoisted_16 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"4\"} }, \"持续时间(毫秒):\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconEffects = _resolveComponent(\"IconEffects\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconClick = _resolveComponent(\"IconClick\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconCloseSmall = _resolveComponent(\"IconCloseSmall\")!\n const _component_Draggable = _resolveComponent(\"Draggable\")!\n const _component_InputNumber = _resolveComponent(\"InputNumber\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handleElement)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (!['chart', 'video'].includes(_ctx.handleElement.type))\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\",\n visible: _ctx.animationPoolVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.animationPoolVisible) = $event)),\n onVisibleChange: _cache[2] || (_cache[2] = visible => _ctx.handlePopoverVisibleChange(visible))\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations, (type) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-type\",\n key: type.name\n }, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(type.name) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(type.children, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"pool-item\",\n key: item.name,\n onMouseenter: ($event: any) => (_ctx.hoverPreviewAnimation = item.value),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (_ctx.hoverPreviewAnimation = '')),\n onClick: ($event: any) => (_ctx.addAnimation(item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"animation-box\", [\n 'animate__animated',\n 'animate__faster',\n _ctx.hoverPreviewAnimation === item.value && `animate__${item.value}`,\n ]])\n }, _toDisplayString(item.name), 3)\n ], 40, _hoisted_6))\n }), 128))\n ])\n ]))\n }), 128)),\n (!_ctx.popoverMaskHide)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, { class: \"element-animation-btn\" }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _createTextVNode(\" \" + _toDisplayString(_ctx.handleElementAnimationName || '点击选择动画'), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"visible\"]))\n : (_openBlock(), _createBlock(_component_Button, {\n key: 1,\n class: \"element-animation-btn\",\n disabled: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconEffects, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_8\n ]),\n _: 1\n }))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_IconClick, { style: {\"margin-right\":\"5px\"} }),\n _hoisted_10\n ])),\n _createVNode(_component_Divider),\n _createVNode(_component_Draggable, {\n class: \"animation-sequence\",\n modelValue: _ctx.animationSequence,\n animation: 300,\n scroll: true,\n scrollSensitivity: 50,\n onEnd: _ctx.handleDragEnd,\n itemKey: \"id\"\n }, {\n item: _withCtx(({ element, index }) => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"sequence-item\", { 'active': _ctx.handleElement?.id === element.elId }])\n }, [\n _createElementVNode(\"div\", _hoisted_11, _toDisplayString(index + 1), 1),\n _createElementVNode(\"div\", _hoisted_12, \"【\" + _toDisplayString(element.elType) + \"】\" + _toDisplayString(element.animationType), 1),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"预览\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconPlayOne, {\n class: \"handler-btn\",\n onClick: ($event: any) => (_ctx.runAnimation(element.elId, element.type, element.duration))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"删除\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCloseSmall, {\n class: \"handler-btn\",\n onClick: ($event: any) => (_ctx.deleteAnimation(element.elId))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"mouseEnterDelay\"])\n ])\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onEnd\"]),\n (_ctx.handleElementAnimation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_15, [\n _hoisted_16,\n _createVNode(_component_InputNumber, {\n min: 100,\n max: 5000,\n step: 100,\n value: _ctx.handleElementAnimation.duration,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateElementAnimationDuration(value)),\n style: {\"flex\":\"3\"}\n }, null, 8, [\"value\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","export const ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹入', value: 'bounceIn' },\r\n { name: '向右弹入', value: 'bounceInLeft' },\r\n { name: '向左弹入', value: 'bounceInRight' },\r\n { name: '向上弹入', value: 'bounceInUp' },\r\n { name: '向下弹入', value: 'bounceInDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮入', value: 'fadeIn' },\r\n { name: '向下浮入', value: 'fadeInDown' },\r\n { name: '向下长距浮入', value: 'fadeInDownBig' },\r\n { name: '向右浮入', value: 'fadeInLeft' },\r\n { name: '向右长距浮入', value: 'fadeInLeftBig' },\r\n { name: '向左浮入', value: 'fadeInRight' },\r\n { name: '向左长距浮入', value: 'fadeInRightBig' },\r\n { name: '向上浮入', value: 'fadeInUp' },\r\n { name: '向上长距浮入', value: 'fadeInUpBig' },\r\n { name: '从左上浮入', value: 'fadeInTopLeft' },\r\n { name: '从右上浮入', value: 'fadeInTopRight' },\r\n { name: '从左下浮入', value: 'fadeInBottomLeft' },\r\n { name: '从右下浮入', value: 'fadeInBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转进入', value: 'rotateIn' },\r\n { name: '绕左下旋转进入', value: 'rotateInDownLeft' },\r\n { name: '绕右下旋转进入', value: 'rotateInDownRight' },\r\n { name: '绕左上旋转进入', value: 'rotateInUpLeft' },\r\n { name: '绕右上旋转进入', value: 'rotateInUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '放大进入', value: 'zoomIn' },\r\n { name: '向下放大进入', value: 'zoomInDown' },\r\n { name: '从左放大进入', value: 'zoomInLeft' },\r\n { name: '从右放大进入', value: 'zoomInRight' },\r\n { name: '向上放大进入', value: 'zoomInUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑入',\r\n children: [\r\n { name: '向下滑入', value: 'slideInDown' },\r\n { name: '从右滑入', value: 'slideInLeft' },\r\n { name: '从左滑入', value: 'slideInRight' },\r\n { name: '向上滑入', value: 'slideInUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转进入', value: 'flipInX' },\r\n { name: 'Y轴翻转进入', value: 'flipInY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '放大滑入',\r\n children: [\r\n { name: '向下放大滑入', value: 'backInDown' },\r\n { name: '从左放大滑入', value: 'backInLeft' },\r\n { name: '从右放大滑入', value: 'backInRight' },\r\n { name: '向上放大滑入', value: 'backInUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞入',\r\n children: [\r\n { name: '从右飞入', value: 'lightSpeedInRight' },\r\n { name: '从左飞入', value: 'lightSpeedInLeft' },\r\n ],\r\n },\r\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { PPTAnimation } from '@/types/slides'\nimport { ANIMATIONS } from '@/configs/animation'\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport Draggable from 'vuedraggable'\n\nconst defaultDuration = 1000\n\nconst animationTypes: { [key: string]: string } = {}\nfor (const type of ANIMATIONS) {\n for (const animation of type.children) {\n animationTypes[animation.value] = animation.name\n }\n}\n\nexport default defineComponent({\n name: 'element-animation-panel',\n components: {\n Draggable,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { handleElement, handleElementId } = storeToRefs(useMainStore())\n const { currentSlide, currentSlideAnimations } = storeToRefs(slidesStore)\n\n const hoverPreviewAnimation = ref('')\n const animationPoolVisible = ref(false)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const animations = ANIMATIONS\n\n // 当前页面的动画列表\n const animationSequence = computed(() => {\n if (!currentSlideAnimations.value) return []\n const animationSequence = []\n for (const animation of currentSlideAnimations.value) {\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\n if (!el) continue\n const elType = ELEMENT_TYPE_ZH[el.type]\n const animationType = animationTypes[animation.type]\n\n animationSequence.push({\n ...animation,\n elType,\n animationType,\n })\n }\n return animationSequence\n })\n\n // 当前选中元素的入场动画信息\n const handleElementAnimation = computed(() => {\n const animations = currentSlideAnimations.value || []\n const animation = animations.find(item => item.elId === handleElementId.value)\n return animation || null\n })\n\n // 当前选中元素的入场动画名称\n const handleElementAnimationName = computed(() => {\n if (!handleElementAnimation.value) return null\n return animationTypes[handleElementAnimation.value.type]\n })\n\n // 删除元素入场动画\n const deleteAnimation = (elId: string) => {\n const animations = (currentSlideAnimations.value as PPTAnimation[]).filter(item => item.elId !== elId)\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 拖拽修改入场动画顺序后同步数据\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\n const { newIndex, oldIndex } = eventData\n if (oldIndex === newIndex) return\n\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\n const animation = animations[oldIndex]\n animations.splice(oldIndex, 1)\n animations.splice(newIndex, 0, animation)\n \n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 执行入场动画预览\n const runAnimation = (elId: string, animationType: string, duration: number) => {\n const prefix = 'animate__'\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\n if (elRef) {\n const animationName = `${prefix}${animationType}`\n document.documentElement.style.setProperty('--animate-duration', `${duration}ms`)\n elRef.classList.add(`${prefix}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${prefix}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 修改元素入场动画,并执行一次预览\n const updateElementAnimation = (type: string) => {\n if (!currentSlideAnimations.value) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.elId === handleElementId.value) return { ...item, type }\n return item\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n const animationItem = currentSlideAnimations.value.find(item => item.elId === handleElementId.value)\n const duration = animationItem?.duration || defaultDuration\n\n runAnimation(handleElementId.value, type, duration)\n }\n\n // 修改元素入场动画持续时间\n const updateElementAnimationDuration = (duration: number) => {\n if (!currentSlideAnimations.value) return\n if (duration < 100 || duration > 5000) return\n\n const animations = currentSlideAnimations.value.map(item => {\n if (item.elId === handleElementId.value) return { ...item, duration }\n return item\n })\n slidesStore.updateSlide({ animations })\n addHistorySnapshot()\n }\n\n // 添加元素入场动画,并执行一次预览\n const addAnimation = (type: string) => {\n if (handleElementAnimationName.value) {\n updateElementAnimation(type)\n return\n }\n const animations: PPTAnimation[] = currentSlideAnimations.value ? JSON.parse(JSON.stringify(currentSlideAnimations.value)) : []\n animations.push({\n elId: handleElementId.value,\n type,\n duration: defaultDuration,\n })\n slidesStore.updateSlide({ animations })\n animationPoolVisible.value = false\n addHistorySnapshot()\n\n runAnimation(handleElementId.value, type, defaultDuration)\n }\n\n // 动画选择面板打开500ms后再移除遮罩层,否则打开面板后迅速滑入鼠标预览会导致抖动\n const popoverMaskHide = ref(false)\n const handlePopoverVisibleChange = (visible: boolean) => {\n if (visible) {\n setTimeout(() => popoverMaskHide.value = true, 500)\n }\n else popoverMaskHide.value = false\n }\n\n return {\n handleElement,\n animationPoolVisible,\n animations,\n animationSequence,\n hoverPreviewAnimation,\n handleElementAnimation,\n handleElementAnimationName,\n popoverMaskHide,\n addAnimation,\n deleteAnimation,\n handleDragEnd,\n runAnimation,\n updateElementAnimationDuration,\n handlePopoverVisibleChange,\n }\n },\n})\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=696c81e2&scoped=true&ts=true\"\nimport script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=696c81e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-696c81e2\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0e2f846d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-design-panel\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"背景填充\", -1))\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"纯色填充\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"图片填充\")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\"渐变填充\")\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"1\"} }, null, -1))\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\"缩放\")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\"拼贴\")\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\"缩放铺满\")\nconst _hoisted_11 = /*#__PURE__*/_createTextVNode(\"线性渐变\")\nconst _hoisted_12 = /*#__PURE__*/_createTextVNode(\"径向渐变\")\nconst _hoisted_13 = {\n key: 0,\n class: \"background-image-wrapper\"\n}\nconst _hoisted_14 = { class: \"background-image\" }\nconst _hoisted_15 = {\n key: 1,\n class: \"background-gradient-wrapper\"\n}\nconst _hoisted_16 = { class: \"row\" }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"起点颜色:\", -1))\nconst _hoisted_18 = { class: \"row\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"终点颜色:\", -1))\nconst _hoisted_20 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"渐变角度:\", -1))\nconst _hoisted_22 = { class: \"row\" }\nconst _hoisted_23 = /*#__PURE__*/_createTextVNode(\"应用背景到全部\")\nconst _hoisted_24 = { class: \"row\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"画布尺寸:\", -1))\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\"宽屏 16 : 9\")\nconst _hoisted_27 = /*#__PURE__*/_createTextVNode(\"宽屏 16 :10\")\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\"标准 4 :3\")\nconst _hoisted_29 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"title\" }, \"全局主题\", -1))\nconst _hoisted_30 = { class: \"row\" }\nconst _hoisted_31 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字体:\", -1))\nconst _hoisted_32 = { class: \"row\" }\nconst _hoisted_33 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"字体颜色:\", -1))\nconst _hoisted_34 = { class: \"row\" }\nconst _hoisted_35 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"背景颜色:\", -1))\nconst _hoisted_36 = { class: \"row\" }\nconst _hoisted_37 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { style: {\"flex\":\"2\"} }, \"主题色:\", -1))\nconst _hoisted_38 = /*#__PURE__*/_createTextVNode(\" 预置主题 \")\nconst _hoisted_39 = {\n key: 2,\n class: \"theme-list\"\n}\nconst _hoisted_40 = [\"onClick\"]\nconst _hoisted_41 = { class: \"theme-item-content\" }\nconst _hoisted_42 = { class: \"row\" }\nconst _hoisted_43 = /*#__PURE__*/_createTextVNode(\"应用主题到全部\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SelectOption = _resolveComponent(\"SelectOption\")!\n const _component_Select = _resolveComponent(\"Select\")!\n const _component_ColorPicker = _resolveComponent(\"ColorPicker\")!\n const _component_ColorButton = _resolveComponent(\"ColorButton\")!\n const _component_Popover = _resolveComponent(\"Popover\")!\n const _component_IconPlus = _resolveComponent(\"IconPlus\")!\n const _component_FileInput = _resolveComponent(\"FileInput\")!\n const _component_Slider = _resolveComponent(\"Slider\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_SelectOptGroup = _resolveComponent(\"SelectOptGroup\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Select, {\n style: {\"flex\":\"10\"},\n value: _ctx.background.type,\n onChange: _cache[0] || (_cache[0] = value => _ctx.updateBackgroundType(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"solid\" }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"image\" }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"gradient\" }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _hoisted_7,\n (_ctx.background.type === 'solid')\n ? (_openBlock(), _createBlock(_component_Popover, {\n key: 0,\n trigger: \"click\"\n }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.color,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = color => _ctx.updateBackground({ color }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.color || '#fff',\n style: {\"flex\":\"10\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n }))\n : (_ctx.background.type === 'image')\n ? (_openBlock(), _createBlock(_component_Select, {\n key: 1,\n style: {\"flex\":\"10\"},\n value: _ctx.background.imageSize || 'cover',\n onChange: _cache[2] || (_cache[2] = value => _ctx.updateBackground({ imageSize: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"contain\" }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"repeat\" }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"cover\" }, {\n default: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n : (_openBlock(), _createBlock(_component_Select, {\n key: 2,\n style: {\"flex\":\"10\"},\n value: _ctx.background.gradientType,\n onChange: _cache[3] || (_cache[3] = value => _ctx.updateBackground({ gradientType: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: \"linear\" }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOption, { value: \"radial\" }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]))\n ]),\n (_ctx.background.type === 'image')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_FileInput, {\n onChange: _cache[4] || (_cache[4] = files => _ctx.uploadBackgroundImage(files))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", {\n class: \"content\",\n style: _normalizeStyle({ backgroundImage: `url(${_ctx.background.image})` })\n }, [\n _createVNode(_component_IconPlus)\n ], 4)\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.background.type === 'gradient')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _hoisted_17,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.gradientColor[0],\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = value => _ctx.updateBackground({ gradientColor: [value, _ctx.background.gradientColor[1]] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.gradientColor[0],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _hoisted_19,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.background.gradientColor[1],\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = value => _ctx.updateBackground({ gradientColor: [_ctx.background.gradientColor[0], value] }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.background.gradientColor[1],\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n (_ctx.background.gradientType === 'linear')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _hoisted_21,\n _createVNode(_component_Slider, {\n class: \"slider\",\n min: 0,\n max: 360,\n step: 15,\n value: _ctx.background.gradientRotate,\n onChange: _cache[7] || (_cache[7] = value => _ctx.updateBackground({ gradientRotate: value }))\n }, null, 8, [\"value\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.applyBackgroundAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_23\n ]),\n _: 1\n })\n ]),\n _createVNode(_component_Divider),\n _createElementVNode(\"div\", _hoisted_24, [\n _hoisted_25,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.viewportRatio,\n onChange: _cache[9] || (_cache[9] = value => _ctx.updateViewportRatio(value))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOption, { value: 0.5625 }, {\n default: _withCtx(() => [\n _hoisted_26\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_SelectOption, { value: 0.625 }, {\n default: _withCtx(() => [\n _hoisted_27\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_SelectOption, { value: 0.75 }, {\n default: _withCtx(() => [\n _hoisted_28\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createVNode(_component_Divider),\n _hoisted_29,\n _createElementVNode(\"div\", _hoisted_30, [\n _hoisted_31,\n _createVNode(_component_Select, {\n style: {\"flex\":\"3\"},\n value: _ctx.theme.fontName,\n onChange: _cache[10] || (_cache[10] = value => _ctx.updateTheme({ fontName: value }))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_SelectOptGroup, { label: \"系统字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", {\n style: _normalizeStyle({ fontFamily: font.value })\n }, _toDisplayString(font.label), 5)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }),\n _createVNode(_component_SelectOptGroup, { label: \"在线字体\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.webFonts, (font) => {\n return (_openBlock(), _createBlock(_component_SelectOption, {\n key: font.value,\n value: font.value\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(font.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _hoisted_33,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.fontColor,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = value => _ctx.updateTheme({ fontColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.fontColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _hoisted_35,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.backgroundColor,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = value => _ctx.updateTheme({ backgroundColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.backgroundColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_36, [\n _hoisted_37,\n _createVNode(_component_Popover, { trigger: \"click\" }, {\n content: _withCtx(() => [\n _createVNode(_component_ColorPicker, {\n modelValue: _ctx.theme.themeColor,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = value => _ctx.updateTheme({ themeColor: value }))\n }, null, 8, [\"modelValue\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_ColorButton, {\n color: _ctx.theme.themeColor,\n style: {\"flex\":\"3\"}\n }, null, 8, [\"color\"])\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"title dropdown\", { 'active': _ctx.showPresetThemes }]),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.togglePresetThemesVisible())),\n style: {\"margin-top\":\"20px\"}\n }, [\n _hoisted_38,\n _createVNode(_component_IconDown, { class: \"icon\" })\n ], 2),\n (_ctx.showPresetThemes)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_39, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themes, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"theme-item\",\n key: index,\n style: _normalizeStyle({ backgroundColor: item.background }),\n onClick: ($event: any) => (_ctx.updateTheme({\n fontColor: item.text,\n backgroundColor: item.background,\n themeColor: item.color,\n }))\n }, [\n _createElementVNode(\"div\", _hoisted_41, [\n _createElementVNode(\"div\", {\n class: \"text\",\n style: _normalizeStyle({ color: item.text })\n }, \"Aa\", 4),\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: item.color })\n }, null, 4)\n ])\n ], 12, _hoisted_40))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_42, [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_ctx.applyThemeAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_43\n ]),\n _: 1\n })\n ])\n ]))\n}","export const PRESET_THEMES = [\r\n { color: '#d14424', background: '#ffffff', text: '#333' },\r\n { color: '#42464b', background: '#ffffff', text: '#333' },\r\n { color: '#5d82ba', background: '#ffffff', text: '#333' },\r\n { color: '#005a6f', background: '#ffffff', text: '#333' },\r\n { color: '#d0614c', background: '#dfb044', text: '#333' },\r\n { color: '#86a1ad', background: '#dfdbd4', text: '#333' },\r\n { color: '#697586', background: '#d5c4a4', text: '#333' },\r\n { color: '#333333', background: '#7acfa6', text: '#333' },\r\n { color: '#42464b', background: '#415065', text: '#fff' },\r\n { color: '#0c5999', background: '#35a2cd', text: '#fff' },\r\n { color: '#c49a41', background: '#8c4357', text: '#fff' },\r\n { color: '#dfaa00', background: '#2e4e7d', text: '#fff' },\r\n { color: '#d1ad88', background: '#f99070', text: '#fff' },\r\n { color: '#464d52', background: '#657984', text: '#fff' },\r\n { color: '#ffcfb6', background: '#1e4c6f', text: '#fff' },\r\n { color: '#c3a043', background: '#43292a', text: '#fff' },\r\n { color: '#464d52', background: '#60546f', text: '#fff' },\r\n { color: '#df9636', background: '#5b89a0', text: '#fff' },\r\n { color: '#b898a4', background: '#93716b', text: '#fff' },\r\n { color: '#c47a11', background: '#187db1', text: '#fff' },\r\n { color: '#333333', background: '#759564', text: '#fff' },\r\n { color: '#355b5e', background: '#424b50', text: '#fff' },\r\n { color: '#d29090', background: '#942a32', text: '#fff' },\r\n { color: '#00cfdf', background: '#3b434d', text: '#fff' },\r\n { color: '#424246', background: '#c70042', text: '#fff' },\r\n { color: '#2e4155', background: '#b35d44', text: '#fff' },\r\n { color: '#11bfce', background: '#8f98aa', text: '#fff' },\r\n { color: '#333333', background: '#549688', text: '#fff' },\r\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { Slide, SlideBackground, SlideTheme } from '@/types/slides'\nimport { PRESET_THEMES } from '@/configs/theme'\nimport { WEB_FONTS } from '@/configs/font'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ColorButton from './common/ColorButton.vue'\nimport { getImageDataURL } from '@/utils/image'\n\nconst themes = PRESET_THEMES\nconst webFonts = WEB_FONTS\n\nexport default defineComponent({\n name: 'slide-design-panel',\n components: {\n ColorButton,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { availableFonts } = storeToRefs(useMainStore())\n const { slides, currentSlide, viewportRatio, theme } = storeToRefs(slidesStore)\n\n const background = computed(() => {\n if (!currentSlide.value.background) {\n return {\n type: 'solid',\n value: '#fff',\n } as SlideBackground\n }\n return currentSlide.value.background\n })\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 设置背景模式:纯色、图片、渐变色\n const updateBackgroundType = (type: 'solid' | 'image' | 'gradient') => {\n if (type === 'solid') {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'solid',\n color: background.value.color || '#fff',\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n else if (type === 'image') {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'image',\n image: background.value.image || '',\n imageSize: background.value.imageSize || 'cover',\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n else {\n const newBackground: SlideBackground = {\n ...background.value,\n type: 'gradient',\n gradientType: background.value.gradientType || 'linear',\n gradientColor: background.value.gradientColor || ['#fff', '#fff'],\n gradientRotate: background.value.gradientRotate || 0,\n }\n slidesStore.updateSlide({ background: newBackground })\n }\n addHistorySnapshot()\n }\n\n // 设置背景图片\n const updateBackground = (props: Partial) => {\n slidesStore.updateSlide({ background: { ...background.value, ...props } })\n addHistorySnapshot()\n }\n\n // 上传背景图片\n const uploadBackgroundImage = (files: File[]) => {\n const imageFile = files[0]\n if (!imageFile) return\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\n }\n\n // 应用当前页背景到全部页面\n const applyBackgroundAllSlide = () => {\n const newSlides = slides.value.map(slide => {\n return {\n ...slide,\n background: currentSlide.value.background,\n }\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n // 设置主题\n const updateTheme = (themeProps: Partial) => {\n slidesStore.setTheme(themeProps)\n }\n\n // 将当前主题应用到全部页面\n const applyThemeAllSlide = () => {\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\n const { themeColor, backgroundColor, fontColor, fontName } = theme.value\n\n for (const slide of newSlides) {\n if (!slide.background || slide.background.type !== 'image') {\n slide.background = {\n ...slide.background,\n type: 'solid',\n color: backgroundColor\n }\n }\n\n const elements = slide.elements\n for (const el of elements) {\n if (el.type === 'shape') el.fill = themeColor\n else if (el.type === 'line') el.color = themeColor\n else if (el.type === 'text') {\n el.defaultColor = fontColor\n el.defaultFontName = fontName\n if (el.fill) el.fill = themeColor\n }\n else if (el.type === 'table') {\n if (el.theme) el.theme.color = themeColor\n for (const rowCells of el.data) {\n for (const cell of rowCells) {\n if (cell.style) {\n cell.style.color = fontColor\n cell.style.fontname = fontName\n }\n }\n }\n }\n else if (el.type === 'chart') {\n el.themeColor = [themeColor]\n el.gridColor = fontColor\n }\n else if (el.type === 'latex') el.color = fontColor\n else if (el.type === 'audio') el.color = themeColor\n }\n }\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n // 是否显示预设主题\n const showPresetThemes = ref(true)\n const togglePresetThemesVisible = () => {\n showPresetThemes.value = !showPresetThemes.value\n }\n\n // 设置画布尺寸(宽高比例)\n const updateViewportRatio = (value: number) => {\n slidesStore.setViewportRatio(value)\n }\n\n return {\n availableFonts,\n background,\n updateBackgroundType,\n updateBackground,\n uploadBackgroundImage,\n applyBackgroundAllSlide,\n themes,\n theme,\n webFonts,\n updateTheme,\n applyThemeAllSlide,\n viewportRatio,\n updateViewportRatio,\n showPresetThemes,\n togglePresetThemesVisible,\n }\n },\n})\n","import { render } from \"./SlideDesignPanel.vue?vue&type=template&id=0e2f846d&scoped=true&ts=true\"\nimport script from \"./SlideDesignPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideDesignPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideDesignPanel.vue?vue&type=style&index=0&id=0e2f846d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0e2f846d\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-251ceb05\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-animation-panel\" }\nconst _hoisted_2 = { class: \"animation-pool\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"animation-text\" }\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"应用到全部\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.animations, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"animation-item\", { 'active': _ctx.currentTurningMode === item.value }]),\n key: item.label,\n onClick: ($event: any) => (_ctx.updateTurningMode(item.value))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['animation-block', item.value])\n }, null, 2),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(item.label), 1)\n ], 10, _hoisted_3))\n }), 128))\n ]),\n _createVNode(_component_Button, {\n style: {\"width\":\"100%\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.applyAllSlide()))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { TurningMode } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface Animations {\n label: string;\n value: TurningMode;\n}\n\nexport default defineComponent({\n name: 'slide-animation-panel',\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, currentSlide } = storeToRefs(slidesStore)\n\n const currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\n\n const animations: Animations[] = [\n { label: '无', value: 'no' },\n { label: '淡入淡出', value: 'fade' },\n { label: '左右推移', value: 'slideX' },\n { label: '上下推移', value: 'slideY' },\n ]\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 修改播放时的切换页面方式\n const updateTurningMode = (mode: TurningMode) => {\n if (mode === currentTurningMode.value) return\n slidesStore.updateSlide({ turningMode: mode })\n addHistorySnapshot()\n }\n\n // 将当前页的切换页面方式应用到全部页面\n const applyAllSlide = () => {\n const newSlides = slides.value.map(slide => {\n return {\n ...slide,\n turningMode: currentSlide.value.turningMode,\n }\n })\n slidesStore.setSlides(newSlides)\n addHistorySnapshot()\n }\n\n return {\n currentTurningMode,\n animations,\n updateTurningMode,\n applyAllSlide,\n }\n },\n})\n","import { render } from \"./SlideAnimationPanel.vue?vue&type=template&id=251ceb05&scoped=true&ts=true\"\nimport script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=251ceb05&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-251ceb05\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-88d13362\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"multi-position-panel\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\"水平均匀分布\")\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"垂直均匀分布\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"组合\")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\"取消组合\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_Button = _resolveComponent(\"Button\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_ButtonGroup = _resolveComponent(\"ButtonGroup\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n const _component_Divider = _resolveComponent(\"Divider\")!\n const _component_IconGroup = _resolveComponent(\"IconGroup\")!\n const _component_IconUngroup = _resolveComponent(\"IconUngroup\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"左对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.alignElement('left')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"水平居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.alignElement('horizontal')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"右对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.alignElement('right')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"上对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.alignElement('top')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"垂直居中\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.alignElement('vertical')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.5,\n title: \"下对齐\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.alignElement('bottom')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ]),\n _: 1\n }),\n (_ctx.displayItemCount > 2)\n ? (_openBlock(), _createBlock(_component_ButtonGroup, {\n key: 0,\n class: \"row\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.uniformHorizontalDisplay()))\n }, {\n default: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }),\n _createVNode(_component_Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.uniformVerticalDisplay()))\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Divider),\n _createVNode(_component_ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Button, {\n disabled: !_ctx.canCombine,\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.combineElements())),\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconGroup, { style: {\"margin-right\":\"3px\"} }),\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n _createVNode(_component_Button, {\n disabled: _ctx.canCombine,\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_ctx.uncombineElements())),\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconUngroup, { style: {\"margin-right\":\"3px\"} }),\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]))\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 对齐选中的元素\r\n * @param command 对齐方向\r\n */\r\n const alignActiveElement = (command: ElementAlignCommand) => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n const elementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 如果所选择的元素为组合元素的成员,需要计算该组合的整体范围\r\n const groupElementRangeMap = {}\r\n for (const activeElement of activeElementList.value) {\r\n if (activeElement.groupId && !groupElementRangeMap[activeElement.groupId]) {\r\n const groupElements = activeElementList.value.filter(item => item.groupId === activeElement.groupId)\r\n groupElementRangeMap[activeElement.groupId] = getElementListRange(groupElements)\r\n }\r\n }\r\n\r\n // 根据不同的命令,计算对齐的位置\r\n if (command === ElementAlignCommands.LEFT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = minX - offsetX\r\n }\r\n else element.left = minX\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minX - minX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = maxX - elWidth + offsetX\r\n }\r\n else element.left = maxX - elWidth\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxX - maxX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.TOP) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = minY - offsetY\r\n }\r\n else element.top = minY\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minY - minY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = maxY - elHeight + offsetY\r\n }\r\n else element.top = maxY - elHeight\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxY - maxY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const horizontalCenter = (minX + maxX) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n element.left = horizontalCenter - elWidth / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxX + range.minX) / 2\r\n const offset = center - horizontalCenter\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const verticalCenter = (minY + maxY) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n element.top = verticalCenter - elHeight / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxY + range.minY) / 2\r\n const offset = center - verticalCenter\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: elementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n alignActiveElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementRange, getElementListRange, getRectRotatedOffset } from '@/utils/element'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\ninterface ElementItem {\r\n min: number;\r\n max: number;\r\n el: PPTElement;\r\n}\r\n\r\ninterface GroupItem {\r\n groupId: string;\r\n els: PPTElement[];\r\n}\r\n\r\ninterface GroupElementsItem {\r\n min: number;\r\n max: number;\r\n els: PPTElement[];\r\n}\r\n\r\ntype Item = ElementItem | GroupElementsItem\r\n\r\ninterface ElementWithPos {\r\n pos: number;\r\n el: PPTElement;\r\n}\r\n\r\ninterface LastPos {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const displayItemCount = computed(() => {\r\n let count = 0\r\n const groupIdList: string[] = []\r\n for (const el of activeElementList.value) {\r\n if (!el.groupId) count += 1\r\n else if (!groupIdList.includes(el.groupId)) {\r\n groupIdList.push(el.groupId)\r\n count += 1\r\n }\r\n }\r\n return count\r\n })\r\n // 水平均匀排列\r\n const uniformHorizontalDisplay = () => {\r\n const { minX, maxX } = getElementListRange(activeElementList.value)\r\n const copyOfActiveElementList: PPTElement[] = JSON.parse(JSON.stringify(activeElementList.value))\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 分别获取普通元素和组合元素集合,并记录下每一项的范围\r\n const singleElemetList: ElementItem[] = []\r\n let groupList: GroupItem[] = []\r\n for (const el of copyOfActiveElementList) {\r\n if (!el.groupId) {\r\n const { minX, maxX } = getElementRange(el)\r\n singleElemetList.push({ min: minX, max: maxX, el })\r\n }\r\n else {\r\n const groupEl = groupList.find(item => item.groupId === el.groupId)\r\n if (!groupEl) groupList.push({ groupId: el.groupId, els: [el] })\r\n else {\r\n groupList = groupList.map(item => item.groupId === el.groupId ? { ...item, els: [...item.els, el] } : item)\r\n }\r\n }\r\n }\r\n const formatedGroupList: GroupElementsItem[] = []\r\n for (const groupItem of groupList) {\r\n const { minX, maxX } = getElementListRange(groupItem.els)\r\n formatedGroupList.push({ min: minX, max: maxX, els: groupItem.els })\r\n }\r\n\r\n // 将普通元素和组合元素集合组合在一起,然后将每一项按位置(从左到右)排序\r\n const list: Item[] = [...singleElemetList, ...formatedGroupList]\r\n list.sort((itemA, itemB) => itemA.min - itemB.min)\r\n\r\n // 计算元素均匀分布所需要的间隔:\r\n // (所选元素整体范围 - 所有所选元素宽度和) / (所选元素数 - 1)\r\n let totalWidth = 0\r\n for (const item of list) {\r\n const width = item.max - item.min\r\n totalWidth += width\r\n }\r\n const span = ((maxX - minX) - totalWidth) / (list.length - 1)\r\n\r\n // 按位置顺序依次计算每一个元素的目标位置\r\n // 第一项中的元素即为起点,无需计算\r\n // 从第二项开始,每一项的位置应该为:上一项位置 + 上一项宽度 + 间隔\r\n // 注意此处计算的位置(pos)并非元素最终的left值,而是目标位置范围最小值(元素旋转后的left值 ≠ 范围最小值)\r\n const sortedElementData: ElementWithPos[] = []\r\n\r\n const firstItem = list[0]\r\n let lastPos: LastPos = { min: firstItem.min, max: firstItem.max }\r\n\r\n if ('el' in firstItem) {\r\n sortedElementData.push({ pos: firstItem.min, el: firstItem.el })\r\n }\r\n else {\r\n for (const el of firstItem.els) {\r\n const { minX: pos } = getElementRange(el)\r\n sortedElementData.push({ pos, el })\r\n }\r\n }\r\n\r\n for (let i = 1; i < list.length; i++) {\r\n const item = list[i]\r\n const lastWidth = lastPos.max - lastPos.min\r\n const currentPos = lastPos.min + lastWidth + span\r\n const currentWidth = item.max - item.min\r\n lastPos = { min: currentPos, max: currentPos + currentWidth }\r\n\r\n if ('el' in item) {\r\n sortedElementData.push({ pos: currentPos, el: item.el })\r\n }\r\n else {\r\n for (const el of item.els) {\r\n const { minX } = getElementRange(el)\r\n const offset = minX - item.min\r\n sortedElementData.push({ pos: currentPos + offset, el })\r\n }\r\n }\r\n }\r\n\r\n // 根据目标位置计算元素最终目标left值\r\n // 对于旋转后的元素,需要计算旋转前后left的偏移来做校正\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n\r\n for (const sortedItem of sortedElementData) {\r\n if (sortedItem.el.id === element.id) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetX } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.left = sortedItem.pos - offsetX\r\n }\r\n else element.left = sortedItem.pos\r\n }\r\n }\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 垂直均匀排列(逻辑类似水平均匀排列方法)\r\n const uniformVerticalDisplay = () => {\r\n const { minY, maxY } = getElementListRange(activeElementList.value)\r\n const copyOfActiveElementList: PPTElement[] = JSON.parse(JSON.stringify(activeElementList.value))\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n const singleElemetList: ElementItem[] = []\r\n let groupList: GroupItem[] = []\r\n for (const el of copyOfActiveElementList) {\r\n if (!el.groupId) {\r\n const { minY, maxY } = getElementRange(el)\r\n singleElemetList.push({ min: minY, max: maxY, el })\r\n }\r\n else {\r\n const groupEl = groupList.find(item => item.groupId === el.groupId)\r\n if (!groupEl) groupList.push({ groupId: el.groupId, els: [el] })\r\n else {\r\n groupList = groupList.map(item => item.groupId === el.groupId ? { ...item, els: [...item.els, el] } : item)\r\n }\r\n }\r\n }\r\n const formatedGroupList: GroupElementsItem[] = []\r\n for (const groupItem of groupList) {\r\n const { minY, maxY } = getElementListRange(groupItem.els)\r\n formatedGroupList.push({ min: minY, max: maxY, els: groupItem.els })\r\n }\r\n\r\n const list: Item[] = [...singleElemetList, ...formatedGroupList]\r\n list.sort((itemA, itemB) => itemA.min - itemB.min)\r\n\r\n let totalHeight = 0\r\n for (const item of list) {\r\n const height = item.max - item.min\r\n totalHeight += height\r\n }\r\n const span = ((maxY - minY) - totalHeight) / (list.length - 1)\r\n\r\n const sortedElementData: ElementWithPos[] = []\r\n\r\n const firstItem = list[0]\r\n let lastPos: LastPos = { min: firstItem.min, max: firstItem.max }\r\n\r\n if ('el' in firstItem) {\r\n sortedElementData.push({ pos: firstItem.min, el: firstItem.el })\r\n }\r\n else {\r\n for (const el of firstItem.els) {\r\n const { minY: pos } = getElementRange(el)\r\n sortedElementData.push({ pos, el })\r\n }\r\n }\r\n\r\n for (let i = 1; i < list.length; i++) {\r\n const item = list[i]\r\n const lastHeight = lastPos.max - lastPos.min\r\n const currentPos = lastPos.min + lastHeight + span\r\n const currentHeight = item.max - item.min\r\n lastPos = { min: currentPos, max: currentPos + currentHeight }\r\n\r\n if ('el' in item) {\r\n sortedElementData.push({ pos: currentPos, el: item.el })\r\n }\r\n else {\r\n for (const el of item.els) {\r\n const { minY } = getElementRange(el)\r\n const offset = minY - item.min\r\n sortedElementData.push({ pos: currentPos + offset, el })\r\n }\r\n }\r\n }\r\n\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n\r\n for (const sortedItem of sortedElementData) {\r\n if (sortedItem.el.id === element.id) {\r\n if ('rotate' in element && element.rotate) {\r\n const { offsetY } = getRectRotatedOffset({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n element.top = sortedItem.pos - offsetY\r\n }\r\n else element.top = sortedItem.pos\r\n }\r\n }\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n displayItemCount,\r\n uniformHorizontalDisplay,\r\n uniformVerticalDisplay,\r\n }\r\n}","\nimport { defineComponent } from 'vue'\nimport { ElementAlignCommand } from '@/types/edit'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useAlignActiveElement from '@/hooks/useAlignActiveElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useUniformDisplayElement from '@/hooks/useUniformDisplayElement'\n\nexport default defineComponent({\n name: 'multi-position-panel',\n setup() {\n const { canCombine, combineElements, uncombineElements } = useCombineElement()\n const { alignActiveElement } = useAlignActiveElement()\n const { alignElementToCanvas } = useAlignElementToCanvas()\n const { displayItemCount, uniformHorizontalDisplay, uniformVerticalDisplay } = useUniformDisplayElement()\n\n // 多选元素对齐,需要先判断当前所选中的元素状态:\n // 如果所选元素为一组组合元素,则将它对齐到画布;\n // 如果所选元素不是组合元素或不止一组元素(即当前为可组合状态),则将这多个(多组)元素相互对齐。\n const alignElement = (command: ElementAlignCommand) => {\n if (canCombine.value) alignActiveElement(command)\n else alignElementToCanvas(command)\n }\n\n return {\n canCombine,\n displayItemCount,\n combineElements,\n uncombineElements,\n uniformHorizontalDisplay,\n uniformVerticalDisplay,\n alignElement,\n }\n },\n})\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=88d13362&scoped=true&ts=true\"\nimport script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=88d13362&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-88d13362\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6b8c5938\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"symbol-panel\" }\nconst _hoisted_2 = { class: \"tabs\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"pool\" }\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = { class: \"symbol\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPoolList, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': _ctx.selectedSymbolKey === item.key }]),\n key: item.key,\n onClick: ($event: any) => (_ctx.selectedSymbolKey = item.key)\n }, _toDisplayString(item.label), 11, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.symbolPool, (item, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: index,\n onClick: ($event: any) => (_ctx.selectSymbol(item))\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item), 1)\n ], 8, _hoisted_5))\n }), 128))\n ])\n ]))\n}","export const SYMBOL_LIST = [\n {\n key: 'letter',\n label: '字母',\n children: [\n 'α', 'β', 'γ', 'δ', 'ϵ', 'ε', 'ζ', 'η', 'θ', 'ϑ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'π', 'ϖ', 'ρ', 'ϱ', 'σ', 'ς', 'τ', 'υ', 'ϕ', 'φ', 'χ', 'ψ', 'ω', \n 'Γ', 'Δ', 'Θ', 'Λ', 'Ξ', 'Π', 'Σ', 'Υ', 'Φ', 'Ψ', 'Ω',\n '𝐀', '𝐁', '𝐂', '𝐃', '𝐄', '𝐅', '𝐆', '𝐇', '𝐈', '𝐉', '𝐊', '𝐋', '𝐌', '𝐍', '𝐎', '𝐏', '𝐐', '𝐑', '𝐒', '𝐓', '𝐔', '𝐕', '𝐖', '𝐗', '𝐘', '𝐙',\n '𝐚', '𝐛', '𝐜', '𝐝', '𝐞', '𝐟', '𝐠', '𝐡', '𝐢', '𝐣', '𝐤', '𝐥', '𝐦', '𝐧', '𝐨', '𝐩', '𝐪', '𝐫', '𝐬', '𝐭', '𝐮', '𝐯', '𝐰', '𝐱', '𝐲', '𝐳',\n '𝓐', '𝓑', '𝓒', '𝓓', '𝓔', '𝓕', '𝓖', '𝓗', '𝓘', '𝓙', '𝓚', '𝓛', '𝓜', '𝓝', '𝓞', '𝓟', '𝓠', '𝓡', '𝓢', '𝓣', '𝓤', '𝓥', '𝓦', '𝓧', '𝓨', '𝓩',\n '𝓪', '𝓫', '𝓬', '𝓭', '𝓮', '𝓯', '𝓰', '𝓱', '𝓲', '𝓳', '𝓴', '𝓵', '𝓶', '𝓷', '𝓸', '𝓹', '𝓺', '𝓻', '𝓼', '𝓽', '𝓾', '𝓿', '𝔀', '𝔁', '𝔂', '𝔃',\n ],\n },\n {\n key: 'number',\n label: '序号',\n children: [\n '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳',\n '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼', '⑽', '⑾', '⑿', '⒀', '⒁', '⒂', '⒃', '⒄', '⒅', '⒆', '⒇',\n 'º', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', '₀', '₁', '₂', '₃', '₄', '₅', '₆', '₇', '₈', '₉',\n 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ', 'Ⅺ', 'Ⅻ', 'Ⅼ', 'Ⅽ', 'Ⅾ', 'Ⅿ',\n 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ', 'ⅹ', 'ⅺ', 'ⅻ', 'ⅼ', 'ⅽ', 'ⅾ', 'ⅿ', 'ↀ', 'ↁ', 'ↂ',\n '㊀', '㊁', '㊂', '㊃', '㊄', '㊅', '㊆', '㊇', '㊈', '㊉', '㈠', '㈡', '㈢', '㈣', '㈤', '㈥', '㈦', '㈧', '㈨', '㈩',\n '𝟘', '𝟙', '𝟚', '𝟛', '𝟜', '𝟝', '𝟞', '𝟟', '𝟠', '𝟡',\n ],\n },\n {\n key: 'math',\n label: '数学',\n children: [\n '+', '-', '×', '÷', '=', '~', '¬', '±', '%', '°', 'ǃ', '‰', '‱', '½', '⅓', '⅔', '¼', '¾',\n '<', '>', 'l', 'o', 'g', 'l', 'g', 'l', 'n', '⨂', '⨁', '⨄', '⨃', '⨅', '⨆', '√', '∛', '∜', '∝', '∞',\n '∟', '∠', '∡', '∢', '∧', '∨', '∩', '∪', '∫', '∬', '∭', '∮', '∯', '∰', '∱', '∲', '∳',\n '∴', '∵', '∼', '∽', '∾', '∿', '≃', '≄', '≅', '≆', '≇', '≈', '≊', '≋', '≌', '≍', '≎', '≏', '≐', '≑', '≒', '≓', '≔', '≕',\n '≤', '≥', '≦', '≧', '≨', '≩', '≪', '≫', '≺', '≻', '≼', '≽', '≾', '≿', '⊀', '⊁', '⊂', '⊃', '⊄', '⊅', '⊆', '⊇', '⊈', '⊉', '⊊', '⊋', '⊏', '⊐', '⊑', '⊒',\n '⊓', '⊔', '⊢', '⊣', '⊤', '⊥', '⊦', '⊧', '⊨', '⊩', '⊪', '⊫', '⊬', '⊭', '⊮', '⊯', '⊲', '⊳', '⊴', '⊵', '⋀', '⋁', '⋂', '⋃', '⋉', '⋊',\n '⋋', '⋌', '⟨', '⟩', '⟪', '⟫', '⟮', '⟯', '⧼', '⧽', '⦰',\n ],\n },\n {\n key: 'arrow',\n label: '箭头',\n children: [\n '←', '↑', '→', '↓', '↔', '↕', '↖', '↗', '↘', '↙', '↚', '↛', '↜', '↝', '↞', '↟', '↠', '↡', '↢', '↣', '↤', '↥', '↦', '↧', '↨',\n '↫', '↬', '↭', '↮', '↯', '↰', '↱', '↲', '↳', '↴', '↵', '↶', '↷', '↸', '↹', '↺', '↻', '↼', '↽', '↾', '↿', '⇀', '⇁', '⇂', '⇃',\n '⇄', '⇅', '⇆', '⇇', '⇈', '⇉', '⇊', '⇋', '⇌', '⇍', '⇎', '⇏', '⇐', '⇑', '⇒', '⇓', '⇔', '⇕', '⇖', '⇗', '⇘', '⇙', '⇚', '⇛',\n '⇜', '⇝', '⇞', '⇟', '⇠', '⇡', '⇢', '⇣', '⇤', '⇥', '⇦', '⇧', '⇨', '⇩', '⇪', '⇫', '⇬', '⇭', '⇮', '⇯', '⇰', '⇱', '⇲', '⇳', '⇴', '⇵',\n '⇶', '⇷', '⇸', '⇹', '⇺', '⇻', '⇼', '⇽', '⇾', '⇿',\n ],\n },\n {\n key: 'graph',\n label: '图形',\n children: [\n '▢', '▣', '▤', '▥', '▦', '▧', '▨', '▩', '▭', '▮', '▯', '▰', '▱', '▲', '▷', '▼', '◁',\n '◈', '◉', '◍', '◐', '◑', '◒', '◓', '◔', '◕', '◧', '◨', '◩', '◪', '◫', '◬', '◭', '◮',\n ],\n },\n]","\nimport { computed, defineComponent, ref } from 'vue'\nimport { SYMBOL_LIST } from '@/configs/symbol'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\nconst symbolPoolList = SYMBOL_LIST\n\nexport default defineComponent({\n name: 'symbol-panel',\n setup() {\n const selectedSymbolKey = ref(symbolPoolList[0].key)\n const symbolPool = computed(() => {\n const selectedSymbol = symbolPoolList.find(item => item.key === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n })\n\n const selectSymbol = (item: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { command: 'insert', value: item })\n }\n\n return {\n symbolPoolList,\n symbolPool,\n selectedSymbolKey,\n selectSymbol,\n }\n },\n})\n","import { render } from \"./SymbolPanel.vue?vue&type=template&id=6b8c5938&scoped=true&ts=true\"\nimport script from \"./SymbolPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SymbolPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SymbolPanel.vue?vue&type=style&index=0&id=6b8c5938&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b8c5938\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { ToolbarState, ToolbarStates } from '@/types/toolbar'\n\nimport ElementStylePanel from './ElementStylePanel/index.vue'\nimport ElementPositionPanel from './ElementPositionPanel.vue'\nimport ElementAnimationPanel from './ElementAnimationPanel.vue'\nimport SlideDesignPanel from './SlideDesignPanel.vue'\nimport SlideAnimationPanel from './SlideAnimationPanel.vue'\nimport MultiPositionPanel from './MultiPositionPanel.vue'\nimport SymbolPanel from './SymbolPanel.vue'\n\ninterface ElementTabs {\n label: string;\n value: ToolbarState;\n}\n\nexport default defineComponent({\n name: 'toolbar',\n setup() {\n const mainStore = useMainStore()\n const { activeElementIdList, handleElement, toolbarState } = storeToRefs(mainStore)\n\n const elementTabs = computed(() => {\n if (handleElement.value?.type === 'text') {\n return [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '符号', value: ToolbarStates.SYMBOL },\n { label: '位置', value: ToolbarStates.EL_POSITION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n }\n return [\n { label: '样式', value: ToolbarStates.EL_STYLE },\n { label: '位置', value: ToolbarStates.EL_POSITION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n })\n const slideTabs = [\n { label: '设计', value: ToolbarStates.SLIDE_DESIGN },\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\n ]\n const multiSelectTabs = [\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\n { label: '样式', value: ToolbarStates.EL_STYLE },\n ]\n\n const setToolbarState = (value: ToolbarState) => {\n mainStore.setToolbarState(value)\n }\n\n const currentTabs = computed(() => {\n if (!activeElementIdList.value.length) return slideTabs\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\n return elementTabs.value\n })\n\n watch(currentTabs, () => {\n const currentTabsValue: ToolbarState[] = currentTabs.value.map(tab => tab.value)\n if (!currentTabsValue.includes(toolbarState.value)) {\n mainStore.setToolbarState(currentTabsValue[0])\n }\n })\n\n const currentPanelComponent = computed(() => {\n const panelMap = {\n [ToolbarStates.EL_STYLE]: ElementStylePanel,\n [ToolbarStates.EL_POSITION]: ElementPositionPanel,\n [ToolbarStates.EL_ANIMATION]: ElementAnimationPanel,\n [ToolbarStates.SLIDE_DESIGN]: SlideDesignPanel,\n [ToolbarStates.SLIDE_ANIMATION]: SlideAnimationPanel,\n [ToolbarStates.MULTI_POSITION]: MultiPositionPanel,\n [ToolbarStates.SYMBOL]: SymbolPanel,\n }\n return panelMap[toolbarState.value] || null\n })\n\n return {\n toolbarState,\n currentTabs,\n setToolbarState,\n currentPanelComponent,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=0df9576a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0df9576a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0df9576a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5a6e24c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"remark\" }\nconst _hoisted_2 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"resize-handler\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.resize($event))\n }, null, 32),\n _createElementVNode(\"textarea\", {\n value: _ctx.remark,\n placeholder: \"点击输入演讲者备注\",\n onInput: _cache[1] || (_cache[1] = $event => _ctx.handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}","\nimport { computed, defineComponent } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\n\nexport default defineComponent({\n name: 'remark',\n emits: ['update:height'],\n props: {\n height: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n \n const remark = computed(() => currentSlide.value?.remark || '')\n\n const handleInput = (e: InputEvent) => {\n const value = (e.target as HTMLTextAreaElement).value\n slidesStore.updateSlide({ remark: value })\n }\n\n const resize = (e: MouseEvent) => {\n let isMouseDown = true\n const startPageY = e.pageY\n const originHeight = props.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageY = e.pageY\n\n const moveY = currentPageY - startPageY\n let newHeight = -moveY + originHeight\n\n if (newHeight < 40) newHeight = 40\n if (newHeight > 120) newHeight = 120\n\n emit('update:height', newHeight)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n }\n }\n\n return {\n remark,\n handleInput,\n resize,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=5a6e24c6&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5a6e24c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a6e24c6\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\n\nimport useGlobalHotkey from '@/hooks/useGlobalHotkey'\nimport usePasteEvent from '@/hooks/usePasteEvent'\n\nimport EditorHeader from './EditorHeader/index.vue'\nimport Canvas from './Canvas/index.vue'\nimport CanvasTool from './CanvasTool/index.vue'\nimport Thumbnails from './Thumbnails/index.vue'\nimport Toolbar from './Toolbar/index.vue'\nimport Remark from './Remark/index.vue'\n\nexport default defineComponent({\n name: 'editor',\n components: {\n EditorHeader,\n Canvas,\n CanvasTool,\n Thumbnails,\n Toolbar,\n Remark,\n },\n setup() {\n const remarkHeight = ref(40)\n\n useGlobalHotkey()\n usePasteEvent()\n\n return {\n remarkHeight,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=55178b6a&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=55178b6a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-55178b6a\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createBlock as _createBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1d67bb30\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"pptist-screen\" }\nconst _hoisted_2 = { class: \"tools\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenSlide = _resolveComponent(\"ScreenSlide\")!\n const _component_SlideThumbnails = _resolveComponent(\"SlideThumbnails\")!\n const _component_WritingBoardTool = _resolveComponent(\"WritingBoardTool\")!\n const _component_IconLeftTwo = _resolveComponent(\"IconLeftTwo\")!\n const _component_IconRightTwo = _resolveComponent(\"IconRightTwo\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"slide-list\",\n onMousewheel: _cache[0] || (_cache[0] = $event => _ctx.mousewheelListener($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => _ctx.touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => _ctx.touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _ctx.slideIndex,\n 'before': index < _ctx.slideIndex,\n 'after': index > _ctx.slideIndex,\n 'hide': (index === _ctx.slideIndex - 1 || index === _ctx.slideIndex + 1) && slide.turningMode !== _ctx.currentSlide.turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_ctx.slideIndex - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: _ctx.slideWidth + 'px',\n height: _ctx.slideHeight + 'px',\n })\n }, [\n _createVNode(_component_ScreenSlide, {\n slide: slide,\n scale: _ctx.scale,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId\n }, null, 8, [\"slide\", \"scale\", \"animationIndex\", \"turnSlideToId\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 544), [\n [_directive_contextmenu, _ctx.contextmenus]\n ]),\n (_ctx.slideThumbnailModelVisible)\n ? (_openBlock(), _createBlock(_component_SlideThumbnails, {\n key: 0,\n turnSlideToIndex: _ctx.turnSlideToIndex,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (_ctx.slideThumbnailModelVisible = false))\n }, null, 8, [\"turnSlideToIndex\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.writingBoardToolVisible)\n ? (_openBlock(), _createBlock(_component_WritingBoardTool, {\n key: 1,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.writingBoardToolVisible = false))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_IconLeftTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.execPrev()))\n }),\n _createVNode(_component_IconRightTwo, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.execNext()))\n }),\n _createVNode(_component_IconWrite, {\n class: \"tool-btn\",\n theme: \"two-tone\",\n fill: ['#111', '#fff'],\n onClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.writingBoardToolVisible = true))\n })\n ]),\n (_ctx.showPageNumber)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"page-number\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (_ctx.slideThumbnailModelVisible = true))\n }, _toDisplayString(_ctx.slideIndex + 1) + \" / \" + _toDisplayString(_ctx.slides.length), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ScreenElement = _resolveComponent(\"ScreenElement\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-slide\",\n style: _normalizeStyle({\n width: _ctx.VIEWPORT_SIZE + 'px',\n height: _ctx.VIEWPORT_SIZE * _ctx.viewportRatio + 'px',\n transform: `scale(${_ctx.scale})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle({ ..._ctx.backgroundStyle })\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(_component_ScreenElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n animationIndex: _ctx.animationIndex,\n turnSlideToId: _ctx.turnSlideToId\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"animationIndex\", \"turnSlideToId\"]))\n }), 128))\n ], 4))\n}","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b227002\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\", \"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"screen-element\", { 'link': _ctx.elementInfo.link }]),\n id: `screen-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n color: _ctx.theme.fontColor,\n fontFamily: _ctx.theme.fontName,\n visibility: _ctx.needWaitAnimation ? 'hidden' : 'visible',\n }),\n title: _ctx.elementInfo.link?.target || '',\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.openLink()))\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.currentElementComponent), { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]))\n ], 14, _hoisted_1))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_BaseChartElement = _resolveComponent(\"BaseChartElement\")!\n\n return (_openBlock(), _createBlock(_component_BaseChartElement, {\n class: \"screen-element-chart\",\n elementInfo: _ctx.elementInfo,\n needScaleSize: false\n }, null, 8, [\"elementInfo\"]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { PPTChartElement } from '@/types/slides'\n\nimport BaseChartElement from './BaseChartElement.vue'\n\nexport default defineComponent({\n name: 'screen-element-chart',\n components: {\n BaseChartElement,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import { render } from \"./ScreenChartElement.vue?vue&type=template&id=645e6419&ts=true\"\nimport script from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a45a17a4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VideoPlayer = _resolveComponent(\"VideoPlayer\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_ctx.inCurrentSlide)\n ? (_openBlock(), _createBlock(_component_VideoPlayer, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _ctx.scale\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, inject, PropType, Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTVideoElement } from '@/types/slides'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\nexport default defineComponent({\n name: 'screen-element-video',\n components: {\n VideoPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup() {\n const { currentSlide } = storeToRefs(useSlidesStore())\n\n const scale: Ref = inject('slideScale') || ref(1)\n const slideId: Ref = inject('slideId') || ref('')\n\n const inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\n return {\n scale,\n inCurrentSlide,\n }\n },\n})\n","import { render } from \"./ScreenVideoElement.vue?vue&type=template&id=a45a17a4&scoped=true&ts=true\"\nimport script from \"./ScreenVideoElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenVideoElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenVideoElement.vue?vue&type=style&index=0&id=a45a17a4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a45a17a4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b08df80e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_AudioPlayer = _resolveComponent(\"AudioPlayer\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"screen-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: _ctx.audioIconSize,\n color: _ctx.elementInfo.color,\n }),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle()))\n }, null, 8, [\"style\"]),\n (_ctx.inCurrentSlide)\n ? (_openBlock(), _createBlock(_component_AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n ref: \"audioPlayerRef\",\n style: _normalizeStyle({ ..._ctx.audioPlayerPosition }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n autoplay: _ctx.elementInfo.autoplay,\n scale: _ctx.scale\n }, null, 8, [\"style\", \"src\", \"loop\", \"autoplay\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 4)\n ], 4))\n}","\nimport { computed, defineComponent, inject, PropType, ref, Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { PPTAudioElement } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\nexport default defineComponent({\n name: 'screen-element-audio',\n components: {\n AudioPlayer,\n },\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const { viewportRatio, currentSlide } = storeToRefs(useSlidesStore())\n\n const scale: Ref = inject('slideScale') || ref(1)\n const slideId: Ref = inject('slideId') || ref('')\n\n const inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)\n\n const audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n })\n const audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / scale.value\n const audioHeight = 50 / scale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n })\n\n const audioPlayerRef = ref()\n const toggle = () => {\n if (!audioPlayerRef.value) return\n audioPlayerRef.value.toggle()\n }\n\n return {\n scale,\n inCurrentSlide,\n audioIconSize,\n audioPlayerPosition,\n audioPlayerRef,\n toggle,\n }\n },\n})\n","import { render } from \"./ScreenAudioElement.vue?vue&type=template&id=b08df80e&scoped=true&ts=true\"\nimport script from \"./ScreenAudioElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenAudioElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenAudioElement.vue?vue&type=style&index=0&id=b08df80e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b08df80e\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { ElementTypes, PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport ScreenChartElement from '@/views/components/element/ChartElement/ScreenChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport ScreenVideoElement from '@/views/components/element/VideoElement/ScreenVideoElement.vue'\nimport ScreenAudioElement from '@/views/components/element/AudioElement/ScreenAudioElement.vue'\n\nexport default defineComponent({\n name: 'screen-element',\n props: {\n elementInfo: {\n type: Object as PropType,\n required: true,\n },\n elementIndex: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n default: -1,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n },\n setup(props) {\n const currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: ScreenChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: ScreenVideoElement,\n [ElementTypes.AUDIO]: ScreenAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n })\n\n const { currentSlide, theme } = storeToRefs(useSlidesStore())\n\n // 判断元素是否需要等待执行入场动画:等待执行的元素需要先隐藏\n const needWaitAnimation = computed(() => {\n const animations = currentSlide.value.animations || []\n const elementIndexInAnimation = animations.findIndex(animation => animation.elId === props.elementInfo.id)\n if (elementIndexInAnimation !== -1 && elementIndexInAnimation >= props.animationIndex) return true\n return false \n })\n\n // 打开元素绑定的超链接\n const openLink = () => {\n const link = props.elementInfo.link\n if (link) {\n if (link.type === 'web') window.open(link.target)\n else if (link.type === 'slide') props.turnSlideToId(link.target)\n }\n }\n\n return {\n currentElementComponent,\n needWaitAnimation,\n theme,\n openLink,\n }\n },\n})\n","import { render } from \"./ScreenElement.vue?vue&type=template&id=3b227002&scoped=true&ts=true\"\nimport script from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenElement.vue?vue&type=style&index=0&id=3b227002&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b227002\"]])\n\nexport default __exports__","\nimport { computed, PropType, defineComponent, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { Slide } from '@/types/slides'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ScreenElement from './ScreenElement.vue'\n\nexport default defineComponent({\n name: 'screen-slide',\n components: {\n ScreenElement,\n },\n props: {\n slide: {\n type: Object as PropType,\n required: true,\n },\n scale: {\n type: Number,\n required: true,\n },\n animationIndex: {\n type: Number,\n default: -1,\n },\n turnSlideToId: {\n type: Function as PropType<(id: string) => void>,\n required: true,\n },\n },\n setup(props) {\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n const background = computed(() => props.slide.background)\n const { backgroundStyle } = useSlideBackgroundStyle(background)\n\n const slideId = computed(() => props.slide.id)\n provide('slideId', slideId)\n\n return {\n backgroundStyle,\n VIEWPORT_SIZE,\n viewportRatio,\n }\n },\n})\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=7827b40a&scoped=true&ts=true\"\nimport script from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=7827b40a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7827b40a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2236d5e3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"slide-thumbnails\" }\nconst _hoisted_2 = { class: \"return-button\" }\nconst _hoisted_3 = { class: \"slide-thumbnails-content\" }\nconst _hoisted_4 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconArrowCircleLeft = _resolveComponent(\"IconArrowCircleLeft\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_IconArrowCircleLeft, {\n class: \"icon\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.close()))\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"thumbnail\", { 'active': index === _ctx.slideIndex }]),\n key: slide.id,\n onClick: ($event: any) => (_ctx.turnSlideToIndex(index))\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: 150,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"visible\"])\n ], 10, _hoisted_4))\n }), 128))\n ])\n ]))\n}","\nimport { defineComponent, PropType } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'slide-thumbnails',\n emits: ['close'],\n components: {\n ThumbnailSlide,\n },\n props: {\n turnSlideToIndex: {\n type: Function as PropType<(index: number) => void>,\n },\n },\n setup(props, { emit }) {\n const { slides, slideIndex } = storeToRefs(useSlidesStore())\n\n const { slidesLoadLimit } = useLoadSlides()\n\n const close = () => emit('close')\n\n return {\n slides,\n slideIndex,\n slidesLoadLimit,\n close,\n }\n },\n})\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=2236d5e3&scoped=true&ts=true\"\nimport script from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=2236d5e3&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2236d5e3\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, Teleport as _Teleport, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7a2e5324\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"writing-board-tool\" }\nconst _hoisted_2 = { class: \"tools\" }\nconst _hoisted_3 = { class: \"colors\" }\nconst _hoisted_4 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WritingBoard = _resolveComponent(\"WritingBoard\")!\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n const _component_Tooltip = _resolveComponent(\"Tooltip\")!\n const _component_IconErase = _resolveComponent(\"IconErase\")!\n const _component_IconClear = _resolveComponent(\"IconClear\")!\n const _component_IconFill = _resolveComponent(\"IconFill\")!\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_component_WritingBoard, {\n ref: \"writingBoardRef\",\n color: _ctx.writingBoardColor,\n blackboard: _ctx.blackboard,\n model: _ctx.writingBoardModel\n }, null, 8, [\"color\", \"blackboard\", \"model\"])\n ])),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.writingBoardModel === 'pen' }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changePen()))\n }, [\n _createVNode(_component_IconWrite, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"橡皮擦\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.writingBoardModel === 'eraser' }]),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeEraser()))\n }, [\n _createVNode(_component_IconErase, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"清除墨迹\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.clearCanvas()))\n }, [\n _createVNode(_component_IconClear, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"黑板\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"btn\", { 'active': _ctx.blackboard }]),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.blackboard = !_ctx.blackboard))\n }, [\n _createVNode(_component_IconFill, { class: \"icon\" })\n ], 2)\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.writingBoardColors, (color) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"color\", { 'active': color === _ctx.writingBoardColor }]),\n key: color,\n style: _normalizeStyle({ backgroundColor: color }),\n onClick: ($event: any) => (_ctx.changeColor(color))\n }, null, 14, _hoisted_4))\n }), 128))\n ]),\n _createVNode(_component_Tooltip, {\n mouseLeaveDelay: 0,\n mouseEnterDelay: 0.3,\n title: \"关闭画笔\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.closeWritingBoard()))\n }, [\n _createVNode(_component_IconClose, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"mouseEnterDelay\"])\n ])\n ]))\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7ff9fa00\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"writing-board\",\n ref: \"writingBoardRef\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"blackboard\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_IconWrite = _resolveComponent(\"IconWrite\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.blackboard)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"canvas\", {\n class: \"canvas\",\n ref: \"canvasRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMousedown($event)),\n onMousemove: _cache[1] || (_cache[1] = $event => _ctx.handleMousemove($event)),\n onMouseup: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleMouseup())),\n onTouchstart: _cache[3] || (_cache[3] = $event => _ctx.handleMousedown($event)),\n onTouchmove: _cache[4] || (_cache[4] = $event => _ctx.handleMousemove($event)),\n onTouchend: _cache[5] || (_cache[5] = ($event: any) => {_ctx.handleMouseup(); _ctx.mouseInCanvas = false}),\n onMouseleave: _cache[6] || (_cache[6] = ($event: any) => {_ctx.handleMouseup(); _ctx.mouseInCanvas = false}),\n onMouseenter: _cache[7] || (_cache[7] = ($event: any) => (_ctx.mouseInCanvas = true))\n }, null, 544),\n (_ctx.mouseInCanvas && _ctx.model === 'pen')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"pen\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.penSize / 2 + 'px',\n top: _ctx.mouse.y - 36 + _ctx.penSize / 2 + 'px',\n color: _ctx.color,\n })\n }, [\n _createVNode(_component_IconWrite, {\n class: \"icon\",\n size: \"36\"\n })\n ], 4))\n : _createCommentVNode(\"\", true),\n (_ctx.mouseInCanvas && _ctx.model === 'eraser')\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"eraser\",\n style: _normalizeStyle({\n left: _ctx.mouse.x - _ctx.rubberSize / 2 + 'px',\n top: _ctx.mouse.y - _ctx.rubberSize / 2 + 'px',\n width: _ctx.rubberSize + 'px',\n height: _ctx.rubberSize + 'px',\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 512))\n}","\nimport { defineComponent, onMounted, PropType, reactive, ref } from 'vue'\n\nconst penSize = 6\nconst rubberSize = 80\n\nexport default defineComponent({\n name: 'writing-board',\n props: {\n color: {\n type: String,\n default: '#ffcc00',\n },\n model: {\n type: String as PropType<'pen' | 'eraser'>,\n default: 'pen',\n },\n blackboard: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n let ctx: CanvasRenderingContext2D | null = null\n const writingBoardRef = ref()\n const canvasRef = ref()\n\n let lastPos = {\n x: 0,\n y: 0,\n }\n let isMouseDown = false\n let lastTime = 0\n let lastLineWidth = -1\n\n // 鼠标位置坐标:用于画笔或橡皮位置跟随\n const mouse = reactive({\n x: 0,\n y: 0,\n })\n\n // 更新鼠标位置坐标\n const updateMousePosition = (x: number, y: number) => {\n mouse.x = x\n mouse.y = y\n }\n \n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\n const mouseInCanvas = ref(false)\n\n\n // 初始化画布\n const initCanvas = () => {\n if (!canvasRef.value || !writingBoardRef.value) return\n\n ctx = canvasRef.value.getContext('2d')\n if (!ctx) return\n\n canvasRef.value.width = writingBoardRef.value.clientWidth\n canvasRef.value.height = writingBoardRef.value.clientHeight\n\n canvasRef.value.style.width = writingBoardRef.value.clientWidth + 'px'\n canvasRef.value.style.height = writingBoardRef.value.clientHeight + 'px'\n\n ctx.lineCap = 'round'\n ctx.lineJoin = 'round'\n }\n onMounted(initCanvas)\n\n // 绘制画笔墨迹方法\n const draw = (posX: number, posY: number, lineWidth: number) => {\n if (!ctx) return\n\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n\n ctx.lineWidth = lineWidth\n ctx.strokeStyle = props.color\n ctx.beginPath()\n ctx.moveTo(lastPosX, lastPosY)\n ctx.lineTo(posX, posY)\n ctx.stroke()\n ctx.closePath()\n }\n\n // 擦除墨迹方法\n const erase = (posX: number, posY: number) => {\n if (!ctx || !canvasRef.value) return\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n\n const radius = rubberSize / 2\n\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\n\n ctx.save()\n ctx.beginPath()\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n\n ctx.save()\n ctx.beginPath()\n ctx.moveTo(...rectPoint1)\n ctx.lineTo(...rectPoint3)\n ctx.lineTo(...rectPoint4)\n ctx.lineTo(...rectPoint2)\n ctx.closePath()\n ctx.clip()\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n ctx.restore()\n }\n\n // 计算鼠标两次移动之间的距离\n const getDistance = (posX: number, posY: number) => {\n const lastPosX = lastPos.x\n const lastPosY = lastPos.y\n return Math.sqrt((posX - lastPosX) * (posX - lastPosX) + (posY - lastPosY) * (posY - lastPosY))\n }\n\n // 根据鼠标两次移动之间的距离s和时间t计算绘制速度,速度越快,墨迹越细\n const getLineWidth = (s: number, t: number) => {\n const maxV = 10\n const minV = 0.1\n const maxWidth = penSize\n const minWidth = 3\n const v = s / t\n let lineWidth\n\n if (v <= minV) lineWidth = maxWidth\n else if (v >= maxV) lineWidth = minWidth\n else lineWidth = maxWidth - v / maxV * maxWidth\n\n if (lastLineWidth === -1) return lineWidth\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\n }\n\n // 路径操作\n const handleMove = (x: number, y: number) => {\n const time = new Date().getTime()\n\n if (props.model === 'pen') {\n const s = getDistance(x, y)\n const t = time - lastTime\n const lineWidth = getLineWidth(s, t)\n\n draw(x, y, lineWidth)\n lastLineWidth = lineWidth\n }\n else erase(x, y)\n\n lastPos = {x, y}\n lastTime = new Date().getTime()\n }\n\n // 处理鼠标(触摸)事件\n // 准备开始绘制/擦除墨迹(落笔)\n const handleMousedown = (e: MouseEvent | TouchEvent) => {\n const x = e instanceof MouseEvent ? e.offsetX : e.changedTouches[0].pageX\n const y = e instanceof MouseEvent ? e.offsetY : e.changedTouches[0].pageY\n\n isMouseDown = true\n lastPos = { x, y }\n lastTime = new Date().getTime()\n\n if (e instanceof TouchEvent) {\n updateMousePosition(x, y)\n mouseInCanvas.value = true\n }\n }\n\n // 开始绘制/擦除墨迹(移动)\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const x = e instanceof MouseEvent ? e.offsetX : e.changedTouches[0].pageX\n const y = e instanceof MouseEvent ? e.offsetY : e.changedTouches[0].pageY\n\n updateMousePosition(x, y)\n\n if (isMouseDown) handleMove(x, y)\n }\n\n // 结束绘制/擦除墨迹(停笔)\n const handleMouseup = () => {\n if (!isMouseDown) return\n isMouseDown = false\n }\n\n // 清空画布\n const clearCanvas = () => {\n if (!ctx || !canvasRef.value) return\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\n }\n\n return {\n mouse,\n mouseInCanvas,\n penSize,\n rubberSize,\n writingBoardRef,\n canvasRef,\n handleMousedown,\n handleMousemove,\n handleMouseup,\n clearCanvas,\n }\n },\n})\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=7ff9fa00&scoped=true&ts=true\"\nimport script from \"./WritingBoard.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=7ff9fa00&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7ff9fa00\"]])\n\nexport default __exports__","\nimport { defineComponent, ref } from 'vue'\nimport WritingBoard from '@/components/WritingBoard.vue'\n\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\n\nexport default defineComponent({\n name: 'writing-board-tool',\n emits: ['close'],\n components: {\n WritingBoard,\n },\n setup(props, { emit }) {\n const writingBoardRef = ref()\n const writingBoardColor = ref('#e2534d')\n const writingBoardModel = ref('pen')\n const blackboard = ref(false)\n\n // 切换到画笔状态\n const changePen = () => {\n writingBoardModel.value = 'pen'\n }\n\n // 切换到橡皮状态\n const changeEraser = () => {\n writingBoardModel.value = 'eraser'\n }\n\n // 清除画布上的墨迹\n const clearCanvas = () => {\n writingBoardRef.value.clearCanvas()\n }\n\n // 修改画笔颜色,如果当前不处于画笔状态则先切换到画笔状态\n const changeColor = (color: string) => {\n if (writingBoardModel.value !== 'pen') writingBoardModel.value = 'pen'\n writingBoardColor.value = color\n }\n \n // 关闭写字板\n const closeWritingBoard = () => {\n emit('close')\n }\n\n return {\n writingBoardRef,\n writingBoardColors,\n writingBoardColor,\n writingBoardModel,\n blackboard,\n changePen,\n changeEraser,\n clearCanvas,\n changeColor,\n closeWritingBoard,\n }\n },\n})\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=7a2e5324&scoped=true&ts=true\"\nimport script from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=7a2e5324&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7a2e5324\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, onUnmounted, provide, ref } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { KEYS } from '@/configs/hotkey'\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { isFullscreen } from '@/utils/fullscreen'\nimport useScreening from '@/hooks/useScreening'\n\nimport { message } from 'ant-design-vue'\n\nimport ScreenSlide from './ScreenSlide.vue'\nimport SlideThumbnails from './SlideThumbnails.vue'\nimport WritingBoardTool from './WritingBoardTool.vue'\n\nexport default defineComponent({\n name: 'screen',\n components: {\n ScreenSlide,\n SlideThumbnails,\n WritingBoardTool,\n },\n setup() {\n const slidesStore = useSlidesStore()\n const { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const slideWidth = ref(0)\n const slideHeight = ref(0)\n\n const scale = computed(() => slideWidth.value / VIEWPORT_SIZE)\n\n const showPageNumber = ref(false)\n\n const slideThumbnailModelVisible = ref(false)\n\n const writingBoardToolVisible = ref(false)\n\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\n const setSlideContentSize = () => {\n const winWidth = document.body.clientWidth\n const winHeight = document.body.clientHeight\n let width, height\n\n if (winHeight / winWidth === viewportRatio.value) {\n width = winWidth\n height = winHeight\n }\n else if (winHeight / winWidth > viewportRatio.value) {\n width = winWidth\n height = winWidth * viewportRatio.value\n }\n else {\n width = winHeight / viewportRatio.value\n height = winHeight\n }\n slideWidth.value = width\n slideHeight.value = height\n }\n\n // 窗口尺寸变化监听:窗口发生变化时更新幻灯片的大小\n // 如果退出了全屏,需要返回到编辑模式\n const { exitScreening } = useScreening()\n\n const windowResizeListener = () => {\n setSlideContentSize()\n if (!isFullscreen()) exitScreening()\n }\n\n onMounted(() => {\n setSlideContentSize()\n window.addEventListener('resize', windowResizeListener)\n })\n onUnmounted(() => {\n window.removeEventListener('resize', windowResizeListener)\n })\n\n // 当前页的元素动画列表和当前执行到的位置\n const animations = computed(() => currentSlide.value.animations || [])\n const animationIndex = ref(0)\n\n // 执行元素的入场动画\n const runAnimation = () => {\n const prefix = 'animate__'\n const animation = animations.value[animationIndex.value]\n animationIndex.value += 1\n\n const elRef = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\n if (elRef) {\n const animationName = `${prefix}${animation.type}`\n document.documentElement.style.setProperty('--animate-duration', `${animation.duration}ms`)\n elRef.classList.add(`${prefix}animated`, animationName)\n\n const handleAnimationEnd = () => {\n document.documentElement.style.removeProperty('--animate-duration')\n elRef.classList.remove(`${prefix}animated`, animationName)\n }\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\n }\n }\n\n // 关闭自动播放\n const autoPlayTimer = ref(0)\n const closeAutoPlay = () => {\n if (autoPlayTimer.value) {\n clearInterval(autoPlayTimer.value)\n autoPlayTimer.value = 0\n }\n }\n onUnmounted(closeAutoPlay)\n\n const throttleMassage = throttle(function(msg) {\n message.success(msg)\n }, 1000, { leading: true, trailing: false })\n\n // 向上/向下播放\n // 遇到元素动画时,优先执行动画播放,无动画则执行翻页\n // 向上播放遇到动画时,仅撤销到动画执行前的状态,不需要反向播放动画\n const execPrev = () => {\n if (animations.value.length && animationIndex.value > 0) {\n animationIndex.value -= 1\n }\n else if (slideIndex.value > 0) {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n const lastIndex = animations.value ? animations.value.length : 0\n animationIndex.value = lastIndex\n }\n else {\n throttleMassage('已经是第一页了')\n }\n }\n const execNext = () => {\n if (animations.value.length && animationIndex.value < animations.value.length) {\n runAnimation()\n }\n else if (slideIndex.value < slides.value.length - 1) {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n animationIndex.value = 0\n }\n else {\n throttleMassage('已经是最后一页了')\n closeAutoPlay()\n }\n }\n\n // 自动播放\n const autoPlay = () => {\n closeAutoPlay()\n message.success('开始自动放映')\n autoPlayTimer.value = setInterval(execNext, 2500)\n }\n\n // 鼠标滚动翻页\n const mousewheelListener = throttle(function(e: WheelEvent) {\n if (e.deltaY < 0) execPrev()\n else if (e.deltaY > 0) execNext()\n }, 500, { leading: true, trailing: false })\n\n // 触摸屏上下滑动翻页\n const touchInfo = ref<{ x: number; y: number; } | null>(null)\n\n const touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n }\n const touchEndListener = (e: TouchEvent) => {\n if (!touchInfo.value) return\n\n const offsetX = Math.abs(touchInfo.value.x - e.changedTouches[0].pageX)\n const offsetY = e.changedTouches[0].pageY - touchInfo.value.y\n\n if ( Math.abs(offsetY) > offsetX && Math.abs(offsetY) > 50 ) {\n touchInfo.value = null\n \n if (offsetY > 0) execPrev()\n else execNext()\n }\n }\n\n // 快捷键翻页\n const keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.UP || key === KEYS.LEFT) execPrev()\n else if (\n key === KEYS.DOWN || \n key === KEYS.RIGHT ||\n key === KEYS.SPACE || \n key === KEYS.ENTER\n ) execNext()\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n })\n\n // 切换到上一张/上一张幻灯片(无视元素的入场动画)\n const turnPrevSlide = () => {\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n animationIndex.value = 0\n }\n const turnNextSlide = () => {\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n animationIndex.value = 0\n }\n\n // 切换幻灯片到指定的页面\n const turnSlideToIndex = (index: number) => {\n slideThumbnailModelVisible.value = false\n slidesStore.updateSlideIndex(index)\n animationIndex.value = 0\n }\n const turnSlideToId = (id: string) => {\n const index = slides.value.findIndex(slide => slide.id === id)\n if (index !== -1) {\n slidesStore.updateSlideIndex(index)\n animationIndex.value = 0\n }\n }\n\n const contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '上一页',\n subText: '↑ ←',\n disable: slideIndex.value <= 0,\n handler: () => turnPrevSlide(),\n },\n {\n text: '下一页',\n subText: '↓ →',\n disable: slideIndex.value >= slides.value.length - 1,\n handler: () => turnNextSlide(),\n },\n {\n text: '第一页',\n disable: slideIndex.value === 0,\n handler: () => turnSlideToIndex(0),\n },\n {\n text: '最后一页',\n disable: slideIndex.value === slides.value.length - 1,\n handler: () => turnSlideToIndex(slides.value.length - 1),\n },\n { divider: true },\n {\n text: '显示页码',\n subText: showPageNumber.value ? '√' : '',\n handler: () => showPageNumber.value = !showPageNumber.value,\n },\n {\n text: '查看所有幻灯片',\n handler: () => slideThumbnailModelVisible.value = true,\n },\n {\n text: '画笔',\n handler: () => writingBoardToolVisible.value = true,\n },\n { divider: true },\n {\n text: autoPlayTimer.value ? '取消自动放映' : '自动放映',\n handler: autoPlayTimer.value ? closeAutoPlay : autoPlay,\n },\n {\n text: '结束放映',\n subText: 'ESC',\n handler: exitScreening,\n },\n ]\n }\n \n provide('slideScale', scale)\n\n return {\n slides,\n slideIndex,\n currentSlide,\n slideWidth,\n slideHeight,\n scale,\n mousewheelListener,\n touchStartListener,\n touchEndListener,\n animationIndex,\n contextmenus,\n execPrev,\n execNext,\n slideThumbnailModelVisible,\n turnSlideToIndex,\n turnSlideToId,\n writingBoardToolVisible,\n showPageNumber,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=1d67bb30&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1d67bb30&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1d67bb30\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-72b587f9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"mobile\",\n ref: \"mobileRef\"\n}\nconst _hoisted_2 = { class: \"thumbnail-list\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Alert = _resolveComponent(\"Alert\")!\n const _component_ThumbnailSlide = _resolveComponent(\"ThumbnailSlide\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Alert, {\n class: \"tip\",\n message: \"注意\",\n description: \"移动设备下仅支持预览,请在PC上进行编辑\",\n type: \"warning\",\n closable: \"\",\n \"show-icon\": \"\"\n }),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slides, (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(_component_ThumbnailSlide, {\n slide: slide,\n size: _ctx.slideWidth,\n visible: index < _ctx.slidesLoadLimit\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ])\n ], 512))\n}","\nimport { defineComponent, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useLoadSlides from '@/hooks/useLoadSlides'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\n\nexport default defineComponent({\n name: 'thumbnails',\n components: {\n ThumbnailSlide,\n },\n setup() {\n const { slides } = storeToRefs(useSlidesStore())\n\n const { slidesLoadLimit } = useLoadSlides()\n const { enterScreening } = useScreening()\n\n const mobileRef = ref()\n const slideWidth = ref(0)\n\n onMounted(() => {\n if (!mobileRef.value) return\n slideWidth.value = mobileRef.value.clientWidth - 10\n })\n\n return {\n slides,\n slidesLoadLimit,\n mobileRef,\n slideWidth,\n enterScreening,\n }\n },\n})\n","import { render } from \"./Mobile.vue?vue&type=template&id=72b587f9&scoped=true&ts=true\"\nimport script from \"./Mobile.vue?vue&type=script&lang=ts\"\nexport * from \"./Mobile.vue?vue&type=script&lang=ts\"\n\nimport \"./Mobile.vue?vue&type=style&index=0&id=72b587f9&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-72b587f9\"]])\n\nexport default __exports__","\nimport { defineComponent, onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { isPC } from './utils/common'\n\nimport Editor from './views/Editor/index.vue'\nimport Screen from './views/Screen/index.vue'\nimport Mobile from './views/Mobile.vue'\n\nexport default defineComponent({\n name: 'app',\n components: {\n Editor,\n Screen,\n Mobile,\n },\n setup() {\n const mainStore = useMainStore()\n const snapshotStore = useSnapshotStore()\n const { screening } = storeToRefs(useScreenStore())\n\n if (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n }\n\n onMounted(() => {\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n })\n\n return {\n screening,\n isPC: isPC(),\n }\n },\n})\n","import { render } from \"./App.vue?vue&type=template&id=039e9a08&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=039e9a08&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// https://iconpark.bytedance.com/official\n\nimport { App } from 'vue'\nimport {\n PlayOne,\n Lock,\n Unlock,\n Ppt,\n Format,\n Picture,\n FullScreen,\n List,\n OrderedList,\n Helpcenter,\n FlipVertically,\n FlipHorizontally,\n FontSize,\n Code,\n TextBold,\n TextItalic,\n TextUnderline,\n Strikethrough,\n Edit,\n Quote,\n BackgroundColor,\n Group,\n Ungroup,\n Back,\n Next,\n Fullwidth,\n AlignTop,\n AlignLeft,\n AlignRight,\n AlignBottom,\n AlignVertically,\n AlignHorizontally,\n BringToFront,\n SendToBack,\n AlignTextLeft,\n AlignTextRight,\n AlignTextCenter,\n RowHeight,\n Write,\n InsertTable,\n AddText,\n Fill,\n Tailoring,\n Effects,\n ColorFilter,\n Down,\n Plus,\n Minus,\n Connection,\n BringToFrontOne,\n SentToBack,\n Github,\n ChartProportion,\n ChartHistogram,\n ChartLine,\n ChartPie,\n Text,\n Rotate,\n LeftTwo,\n RightTwo,\n Platte,\n UpOne,\n DownOne,\n Close,\n CloseSmall,\n Undo,\n Transform,\n Click,\n Theme,\n ArrowCircleLeft,\n GraphicDesign,\n Logout,\n Erase,\n Clear,\n FolderClose,\n AlignTextTopOne,\n AlignTextBottomOne,\n AlignTextMiddleOne,\n Pause,\n VolumeMute,\n VolumeNotice,\n VolumeSmall,\n VideoTwo,\n Formula,\n} from '@icon-park/vue-next'\n\nexport default {\n install(app: App) {\n // 插入元素\n app.component('IconFontSize', FontSize)\n app.component('IconPicture', Picture)\n app.component('IconGraphicDesign', GraphicDesign)\n app.component('IconConnection', Connection)\n app.component('IconChartProportion', ChartProportion)\n app.component('IconInsertTable', InsertTable)\n app.component('IconVideoTwo', VideoTwo)\n app.component('IconFormula', Formula)\n\n // 锁定与解锁\n app.component('IconLock', Lock)\n app.component('IconUnlock', Unlock)\n\n // 全屏\n app.component('IconFullScreen', FullScreen)\n\n // 撤销重做\n app.component('IconBack', Back)\n app.component('IconNext', Next) \n \n // 对齐\n app.component('IconAlignTop', AlignTop)\n app.component('IconAlignLeft', AlignLeft)\n app.component('IconAlignRight', AlignRight)\n app.component('IconAlignBottom', AlignBottom)\n app.component('IconAlignVertically', AlignVertically)\n app.component('IconAlignHorizontally', AlignHorizontally)\n\n // 层级\n app.component('IconBringToFront', BringToFront)\n app.component('IconSentToBack', SentToBack)\n app.component('IconBringToFrontOne', BringToFrontOne)\n app.component('IconSendToBack', SendToBack)\n\n // 组合\n app.component('IconGroup', Group)\n app.component('IconUngroup', Ungroup)\n\n // 通用元素编辑\n app.component('IconFill', Fill)\n app.component('IconBackgroundColor', BackgroundColor)\n app.component('IconPlatte', Platte)\n \n // 图片编辑\n app.component('IconTailoring', Tailoring)\n app.component('IconColorFilter', ColorFilter)\n app.component('IconFlipVertically', FlipVertically)\n app.component('IconFlipHorizontally', FlipHorizontally)\n\n // 文字编辑\n app.component('IconText', Text)\n app.component('IconAddText', AddText)\n app.component('IconAlignTextLeft', AlignTextLeft)\n app.component('IconAlignTextRight', AlignTextRight)\n app.component('IconAlignTextCenter', AlignTextCenter)\n app.component('IconRowHeight', RowHeight)\n app.component('IconFullwidth', Fullwidth)\n app.component('IconCode', Code)\n app.component('IconTextBold', TextBold)\n app.component('IconTextItalic', TextItalic)\n app.component('IconTextUnderline', TextUnderline)\n app.component('IconStrikethrough', Strikethrough)\n app.component('IconQuote', Quote)\n app.component('IconList', List)\n app.component('IconOrderedList', OrderedList)\n app.component('IconUpOne', UpOne)\n app.component('IconDownOne', DownOne)\n app.component('IconFormat', Format)\n app.component('IconAlignTextTopOne', AlignTextTopOne)\n app.component('IconAlignTextBottomOne', AlignTextBottomOne)\n app.component('IconAlignTextMiddleOne', AlignTextMiddleOne)\n\n // 箭头与符号\n app.component('IconDown', Down)\n app.component('IconLeftTwo', LeftTwo)\n app.component('IconRightTwo', RightTwo)\n app.component('IconPlus', Plus)\n app.component('IconMinus', Minus)\n app.component('IconClose', Close)\n app.component('IconCloseSmall', CloseSmall)\n \n // 图表\n app.component('IconChartHistogram', ChartHistogram)\n app.component('IconChartLine', ChartLine)\n app.component('IconChartPie', ChartPie)\n\n // 其他\n app.component('IconPlayOne', PlayOne)\n app.component('IconPpt', Ppt)\n app.component('IconHelpcenter', Helpcenter)\n app.component('IconGithub', Github)\n app.component('IconWrite', Write)\n app.component('IconErase', Erase)\n app.component('IconEffects', Effects)\n app.component('IconRotate', Rotate)\n app.component('IconEdit', Edit)\n app.component('IconUndo', Undo)\n app.component('IconTransform', Transform)\n app.component('IconClick', Click)\n app.component('IconTheme', Theme)\n app.component('IconArrowCircleLeft', ArrowCircleLeft)\n app.component('IconLogout', Logout)\n app.component('IconClear', Clear)\n app.component('IconFolderClose', FolderClose)\n\n // 视频播放器\n app.component('IconPause', Pause)\n app.component('IconVolumeMute', VolumeMute)\n app.component('IconVolumeNotice', VolumeNotice)\n app.component('IconVolumeSmall', VolumeSmall)\n }\n}","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-d6089858\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref: \"inputRef\",\n accept: _ctx.accept,\n onChange: _cache[0] || (_cache[0] = $event => _ctx.handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}","\nimport { defineComponent, ref } from 'vue'\n\nexport default defineComponent({\n name: 'file-input',\n emits: ['change'],\n props: {\n accept: {\n type: String,\n default: 'image/*',\n },\n },\n setup(props, { emit }) {\n const inputRef = ref()\n\n const handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n }\n const handleChange = (e: InputEvent) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n }\n\n return {\n handleClick,\n handleChange,\n inputRef,\n }\n },\n})\n","import { render } from \"./FileInput.vue?vue&type=template&id=d6089858&scoped=true&ts=true\"\nimport script from \"./FileInput.vue?vue&type=script&lang=ts\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=d6089858&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d6089858\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"checkbox-button\", { 'checked': $props.checked }])\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ], 2))\n}","\r\nexport default {\r\n name: 'checkbox-button',\r\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./CheckboxButton.vue?vue&type=template&id=7cae2b90&scoped=true&ts=true\"\nimport script from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7cae2b90\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7dafd0a9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"checkbox-button-group\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\r\nexport default {\r\n name: 'checkbox-button-group',\r\n}\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=7dafd0a9&scoped=true&ts=true\"\nimport script from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7dafd0a9\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-210672ee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"color-picker\" }\nconst _hoisted_2 = { class: \"picker-saturation-wrap\" }\nconst _hoisted_3 = { class: \"picker-controls\" }\nconst _hoisted_4 = { class: \"picker-color-wrap\" }\nconst _hoisted_5 = { class: \"picker-sliders\" }\nconst _hoisted_6 = { class: \"picker-hue-wrap\" }\nconst _hoisted_7 = { class: \"picker-alpha-wrap\" }\nconst _hoisted_8 = { class: \"picker-field\" }\nconst _hoisted_9 = { class: \"picker-presets\" }\nconst _hoisted_10 = [\"onClick\"]\nconst _hoisted_11 = { class: \"picker-gradient-presets\" }\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = { class: \"picker-presets\" }\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = {\n key: 0,\n class: \"recent-colors-title\"\n}\nconst _hoisted_16 = { class: \"recent-colors\" }\nconst _hoisted_17 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Saturation = _resolveComponent(\"Saturation\")!\n const _component_Checkboard = _resolveComponent(\"Checkboard\")!\n const _component_Hue = _resolveComponent(\"Hue\")!\n const _component_Alpha = _resolveComponent(\"Alpha\")!\n const _component_EditableInput = _resolveComponent(\"EditableInput\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Saturation, {\n value: _ctx.color,\n hue: _ctx.hue,\n onColorChange: _cache[0] || (_cache[0] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: \"picker-current-color\",\n style: _normalizeStyle({ background: _ctx.currentColor })\n }, null, 4),\n _createVNode(_component_Checkboard)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_Hue, {\n value: _ctx.color,\n hue: _ctx.hue,\n onColorChange: _cache[1] || (_cache[1] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\", \"hue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_Alpha, {\n value: _ctx.color,\n onColorChange: _cache[2] || (_cache[2] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_EditableInput, {\n value: _ctx.color,\n onColorChange: _cache[3] || (_cache[3] = value => _ctx.changeColor(value))\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.themeColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-presets-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_10))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.presetColors, (col, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-gradient-col\",\n key: index\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(col, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"picker-gradient-color\",\n key: c,\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_12))\n }), 128))\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.standardColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_14))\n }), 128))\n ]),\n (_ctx.recentColors.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, \"最近使用:\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_16, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.recentColors, (c) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: c,\n class: \"picker-presets-color\",\n style: _normalizeStyle({ background: c }),\n onClick: ($event: any) => (_ctx.selectPresetColor(c))\n }, null, 12, _hoisted_17))\n }), 128))\n ])\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6f2cb744\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alpha\" }\nconst _hoisted_2 = { class: \"alpha-checkboard-wrap\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"alpha-picker\" }, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Checkboard = _resolveComponent(\"Checkboard\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Checkboard)\n ]),\n _createElementVNode(\"div\", {\n class: \"alpha-gradient\",\n style: _normalizeStyle({ background: _ctx.gradientColor })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"alpha-container\",\n ref: \"alphaRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"alpha-pointer\",\n style: _normalizeStyle({ left: _ctx.color.a * 100 + '%' })\n }, _hoisted_4, 4)\n ], 544)\n ]))\n}","import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"checkerboard\",\n style: _normalizeStyle(_ctx.bgStyle)\n }, null, 4))\n}","\nimport { computed, defineComponent } from 'vue'\n\nconst checkboardCache = {}\n\nconst renderCheckboard = (white: string, grey: string, size: number) => {\n const canvas = document.createElement('canvas')\n canvas.width = canvas.height = size * 2\n const ctx = canvas.getContext('2d')\n \n if (!ctx) return null\n\n ctx.fillStyle = white\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n ctx.fillStyle = grey\n ctx.fillRect(0, 0, size, size)\n ctx.translate(size, size)\n ctx.fillRect(0, 0, size, size)\n return canvas.toDataURL()\n}\n\nconst getCheckboard = (white: string, grey: string, size: number) => {\n const key = white + ',' + grey + ',' + size\n if (checkboardCache[key]) return checkboardCache[key]\n \n const checkboard = renderCheckboard(white, grey, size)\n checkboardCache[key] = checkboard\n return checkboard\n}\n\nexport default defineComponent({\n name: 'checkboard',\n emits: ['colorChange'],\n props: {\n size: {\n type: Number,\n default: 8,\n },\n white: {\n type: String,\n default: '#fff',\n },\n grey: {\n type: String,\n default: '#e6e6e6',\n },\n },\n setup(props) {\n const bgStyle = computed(() => {\n const checkboard = getCheckboard(props.white, props.grey, props.size)\n return { backgroundImage: `url(${checkboard})` }\n })\n\n return {\n bgStyle,\n }\n },\n})\n","import { render } from \"./Checkboard.vue?vue&type=template&id=0a544b87&scoped=true&ts=true\"\nimport script from \"./Checkboard.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=0a544b87&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0a544b87\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\n\nimport Checkboard from './Checkboard.vue'\nimport { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'alpha',\n components: {\n Checkboard,\n },\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props, { emit }) {\n const color = computed(() => props.value)\n \n const gradientColor = computed(() => {\n const rgbaStr = [color.value.r, color.value.g, color.value.b].join(',')\n return `linear-gradient(to right, rgba(${rgbaStr}, 0) 0%, rgba(${rgbaStr}, 1) 100%)`\n })\n\n const alphaRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!alphaRef.value) return\n const containerWidth = alphaRef.value.clientWidth\n const xOffset = alphaRef.value.getBoundingClientRect().left + window.pageXOffset\n const left = e.pageX - xOffset\n let a\n\n if (left < 0) a = 0\n else if (left > containerWidth) a = 1\n else a = Math.round(left * 100 / containerWidth) / 100\n\n if (color.value.a !== a) {\n emit('colorChange', {\n r: color.value.r,\n g: color.value.g,\n b: color.value.b,\n a: a,\n })\n }\n }\n\n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n alphaRef,\n gradientColor,\n handleMouseDown,\n color,\n }\n },\n})\n","import { render } from \"./Alpha.vue?vue&type=template&id=6f2cb744&scoped=true&ts=true\"\nimport script from \"./Alpha.vue?vue&type=script&lang=ts\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=6f2cb744&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6f2cb744\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1766620e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hue\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"hue-picker\" }, null, -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"hue-container\",\n ref: \"hueRef\",\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"hue-pointer\",\n style: _normalizeStyle({ left: _ctx.pointerLeft })\n }, _hoisted_3, 4)\n ], 544)\n ]))\n}","\nimport { computed, defineComponent, onUnmounted, PropType, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'hue',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const oldHue = ref(0)\n const pullDirection = ref('')\n \n const color = computed(() => {\n const hsla = tinycolor(props.value).toHsl()\n if (props.hue !== -1) hsla.h = props.hue\n return hsla\n })\n\n const pointerLeft = computed(() => {\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\n return color.value.h * 100 / 360 + '%'\n })\n\n watch(() => props.value, () => {\n const hsla = tinycolor(props.value).toHsl()\n const h = hsla.s === 0 ? props.hue : hsla.h\n if (h !== 0 && h - oldHue.value > 0) pullDirection.value = 'right'\n if (h !== 0 && h - oldHue.value < 0) pullDirection.value = 'left'\n oldHue.value = h\n })\n\n const hueRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!hueRef.value) return\n\n const containerWidth = hueRef.value.clientWidth\n const xOffset = hueRef.value.getBoundingClientRect().left + window.pageXOffset\n const left = e.pageX - xOffset\n let h, percent\n \n if (left < 0) h = 0\n else if (left > containerWidth) h = 360\n else {\n percent = left * 100 / containerWidth\n h = 360 * percent / 100\n }\n if (props.hue === -1 || color.value.h !== h) {\n emit('colorChange', {\n h,\n l: color.value.l,\n s: color.value.s,\n a: color.value.a,\n })\n }\n }\n\n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n hueRef,\n handleMouseDown,\n pointerLeft,\n }\n },\n})\n","import { render } from \"./Hue.vue?vue&type=template&id=1766620e&scoped=true&ts=true\"\nimport script from \"./Hue.vue?vue&type=script&lang=ts\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=1766620e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1766620e\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8982eb4a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-white\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-black\" }, null, -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"saturation-circle\" }, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"saturation\",\n ref: \"saturationRef\",\n style: _normalizeStyle({ background: _ctx.bgColor }),\n onMousedown: _cache[0] || (_cache[0] = $event => _ctx.handleMouseDown($event))\n }, [\n _hoisted_1,\n _hoisted_2,\n _createElementVNode(\"div\", {\n class: \"saturation-pointer\",\n style: _normalizeStyle({\n top: _ctx.pointerTop,\n left: _ctx.pointerLeft,\n })\n }, _hoisted_4, 4)\n ], 36))\n}","\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { throttle, clamp } from 'lodash'\n\nexport default defineComponent({\n name: 'saturation',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n hue: {\n type: Number,\n required: true,\n },\n },\n setup(props, { emit }) {\n const color = computed(() => {\n const hsva = tinycolor(props.value).toHsv()\n if (props.hue !== -1) hsva.h = props.hue\n return hsva\n })\n\n const bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\n const pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\n const pointerLeft = computed(() => color.value.s * 100 + '%')\n\n const emitChangeEvent = throttle(function(param) {\n emit('colorChange', param)\n }, 20, { leading: true, trailing: false })\n\n const saturationRef = ref()\n const handleChange = (e: MouseEvent) => {\n e.preventDefault()\n if (!saturationRef.value) return\n \n const containerWidth = saturationRef.value.clientWidth\n const containerHeight = saturationRef.value.clientHeight\n const xOffset = saturationRef.value.getBoundingClientRect().left + window.pageXOffset\n const yOffset = saturationRef.value.getBoundingClientRect().top + window.pageYOffset\n const left = clamp(e.pageX - xOffset, 0, containerWidth)\n const top = clamp(e.pageY - yOffset, 0, containerHeight)\n const saturation = left / containerWidth\n const bright = clamp(-(top / containerHeight) + 1, 0, 1)\n\n emitChangeEvent({\n h: color.value.h,\n s: saturation,\n v: bright,\n a: color.value.a,\n })\n }\n\n \n const unbindEventListeners = () => {\n window.removeEventListener('mousemove', handleChange)\n window.removeEventListener('mouseup', unbindEventListeners)\n }\n const handleMouseDown = (e: MouseEvent) => {\n handleChange(e)\n window.addEventListener('mousemove', handleChange)\n window.addEventListener('mouseup', unbindEventListeners)\n }\n\n onUnmounted(unbindEventListeners)\n\n return {\n saturationRef,\n bgColor,\n handleMouseDown,\n pointerTop,\n pointerLeft,\n }\n },\n})\n","import { render } from \"./Saturation.vue?vue&type=template&id=8982eb4a&scoped=true&ts=true\"\nimport script from \"./Saturation.vue?vue&type=script&lang=ts\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=8982eb4a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8982eb4a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-00ea8dfc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editable-input\" }\nconst _hoisted_2 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"input\", {\n class: \"input-content\",\n value: _ctx.val,\n onInput: _cache[0] || (_cache[0] = $event => _ctx.handleInput($event))\n }, null, 40, _hoisted_2)\n ]))\n}","\nimport { computed, defineComponent, PropType } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\n\nexport default defineComponent({\n name: 'editable-input',\n emits: ['colorChange'],\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props, { emit }) {\n const val = computed(() => {\n let _hex = ''\n if (props.value.a < 1) _hex = tinycolor(props.value).toHex8String().toUpperCase()\n else _hex = tinycolor(props.value).toHexString().toUpperCase()\n return _hex.replace('#', '')\n })\n\n const handleInput = (e: InputEvent) => {\n const value = (e.target as HTMLInputElement).value\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\n }\n\n return {\n val,\n handleInput,\n }\n },\n})\n","import { render } from \"./EditableInput.vue?vue&type=template&id=00ea8dfc&scoped=true&ts=true\"\nimport script from \"./EditableInput.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=00ea8dfc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-00ea8dfc\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\nimport tinycolor, { ColorFormats } from 'tinycolor2'\nimport { debounce } from 'lodash'\n\nimport Alpha from './Alpha.vue'\nimport Checkboard from './Checkboard.vue'\nimport Hue from './Hue.vue'\nimport Saturation from './Saturation.vue'\nimport EditableInput from './EditableInput.vue'\n\nconst RECENT_COLORS = 'RECENT_COLORS'\n\nconst presetColorConfig = [\n ['#7f7f7f', '#f2f2f2'],\n ['#0d0d0d', '#808080'],\n ['#1c1a10', '#ddd8c3'],\n ['#0e243d', '#c6d9f0'],\n ['#233f5e', '#dae5f0'],\n ['#632623', '#f2dbdb'],\n ['#4d602c', '#eaf1de'],\n ['#3f3150', '#e6e0ec'],\n ['#1e5867', '#d9eef3'],\n ['#99490f', '#fee9da'],\n]\n\nconst gradient = (startColor: string, endColor: string, step: number) => {\n const _startColor = tinycolor(startColor).toRgb()\n const _endColor = tinycolor(endColor).toRgb()\n\n const rStep = (_endColor.r - _startColor.r) / step\n const gStep = (_endColor.g - _startColor.g) / step\n const bStep = (_endColor.b - _startColor.b) / step\n const gradientColorArr = []\n\n for (let i = 0; i < step; i++) {\n const gradientColor = tinycolor({\n r: _startColor.r + rStep * i,\n g: _startColor.g + gStep * i,\n b: _startColor.b + bStep * i,\n }).toRgbString()\n gradientColorArr.push(gradientColor)\n }\n return gradientColorArr\n}\n\nconst getPresetColors = () => {\n const presetColors = []\n for (const color of presetColorConfig) {\n presetColors.push(gradient(color[1], color[0], 5))\n }\n return presetColors\n}\n\nexport default defineComponent({\n name: 'color-picker',\n components: {\n Alpha,\n Checkboard,\n Hue,\n Saturation,\n EditableInput,\n },\n emits: ['update:modelValue'],\n props: {\n modelValue: {\n type: String,\n default: '#e86b99',\n },\n },\n setup(props, { emit }) {\n const hue = ref(-1)\n const recentColors = ref([])\n\n const color = computed({\n get() {\n return tinycolor(props.modelValue).toRgb()\n },\n set(rgba: ColorFormats.RGBA) {\n const rgbaString = `rgba(${[rgba.r, rgba.g, rgba.b, rgba.a].join(',')})`\n emit('update:modelValue', rgbaString)\n },\n })\n\n const themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\n const standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\n const presetColors = getPresetColors()\n\n const currentColor = computed(() => {\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\n })\n\n const selectPresetColor = (colorString: string) => {\n hue.value = tinycolor(colorString).toHsl().h\n emit('update:modelValue', colorString)\n }\n\n // 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\n const updateRecentColorsCache = debounce(function() {\n const _color = tinycolor(color.value).toRgbString()\n if (!recentColors.value.includes(_color)) {\n recentColors.value = [_color, ...recentColors.value]\n\n const maxLength = 10\n if (recentColors.value.length > maxLength) {\n recentColors.value = recentColors.value.slice(0, maxLength)\n }\n }\n }, 300, { trailing: true })\n\n onMounted(() => {\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\n })\n\n watch(recentColors, () => {\n const recentColorsCache = JSON.stringify(recentColors.value)\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\n })\n\n const changeColor = (value: ColorFormats.RGBA | ColorFormats.HSLA | ColorFormats.HSVA) => {\n if ('h' in value) {\n hue.value = value.h\n color.value = tinycolor(value).toRgb()\n }\n else {\n hue.value = tinycolor(value).toHsl().h\n color.value = value\n }\n\n updateRecentColorsCache()\n }\n\n return {\n themeColors,\n standardColors,\n presetColors,\n color,\n hue,\n currentColor,\n changeColor,\n selectPresetColor,\n recentColors,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=210672ee&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=210672ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-210672ee\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6275c730\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Spin = _resolveComponent(\"Spin\")!\n\n return ($props.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Spin, {\n tip: $props.tip,\n size: \"large\"\n }, null, 8, [\"tip\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\nexport default {\n name: 'fullscreen-spin',\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n tip: {\n type: String,\n default: '',\n },\n },\n}\n","import { render } from \"./FullscreenSpin.vue?vue&type=template&id=6275c730&scoped=true&ts=true\"\nimport script from \"./FullscreenSpin.vue?vue&type=script&lang=ts\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=6275c730&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6275c730\"]])\n\nexport default __exports__","import { App } from 'vue'\n\nimport FileInput from '@/components/FileInput.vue'\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\nimport ColorPicker from '@/components/ColorPicker/index.vue'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\n\nexport default {\n install(app: App) {\n app.component('FileInput', FileInput)\n app.component('CheckboxButton', CheckboxButton)\n app.component('CheckboxButtonGroup', CheckboxButtonGroup)\n app.component('ColorPicker', ColorPicker)\n app.component('FullscreenSpin', FullscreenSpin)\n }\n}\n","import { withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_MenuContent = _resolveComponent(\"MenuContent\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: _ctx.style.left + 'px',\n top: _ctx.style.top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(_component_MenuContent, {\n menus: _ctx.menus,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"])\n ], 36)\n ], 64))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb1555e8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"menu-content\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"text\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"sub-text\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_menu_content = _resolveComponent(\"menu-content\", true)!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menus, (menu, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: menu.text || index\n }, [\n (!menu.hide)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n class: _normalizeClass([\"menu-item\", {'divider': menu.divider, 'disable': menu.disable}]),\n onClick: _withModifiers(($event: any) => (_ctx.handleClickMenuItem(menu)), [\"stop\"])\n }, [\n (!menu.divider)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"menu-item-content\", {\n 'has-children': menu.children,\n 'has-handler': menu.handler,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(menu.text), 1),\n (menu.subText && !menu.children)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(menu.subText), 1))\n : _createCommentVNode(\"\", true),\n (menu.children && menu.children.length)\n ? (_openBlock(), _createBlock(_component_menu_content, {\n key: 1,\n class: \"sub-menu\",\n menus: menu.children,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]))\n}","\nimport { PropType, defineComponent } from 'vue'\nimport { ContextmenuItem } from './types'\n\nexport default defineComponent({\n name: 'menu-content',\n props: {\n menus: {\n type: Array as PropType,\n required: true,\n },\n handleClickMenuItem: {\n type: Function,\n required: true,\n },\n },\n})\n","import { render } from \"./MenuContent.vue?vue&type=template&id=eb1555e8&scoped=true&ts=true\"\nimport script from \"./MenuContent.vue?vue&type=script&lang=ts\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=eb1555e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eb1555e8\"]])\n\nexport default __exports__","\nimport { computed, defineComponent, PropType } from 'vue'\nimport { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\nexport default defineComponent({\n name: 'contextmenu',\n components: {\n MenuContent,\n },\n props: {\n axis: {\n type: Object as PropType,\n required: true,\n },\n el: {\n type: Object as PropType,\n required: true,\n },\n menus: {\n type: Array as PropType,\n required: true,\n },\n removeContextmenu: {\n type: Function,\n required: true,\n },\n },\n setup(props) {\n const style = computed(() => {\n const MENU_WIDTH = 170\n const MENU_HEIGHT = 30\n const DIVIDER_HEIGHT = 11\n const PADDING = 5\n\n const { x, y } = props.axis\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\n const dividerCount = props.menus.filter(menu => menu.divider).length\n\n const menuWidth = MENU_WIDTH\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n return {\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\n }\n })\n\n const handleClickMenuItem = (item: ContextmenuItem) => {\n if (item.disable) return\n if (item.children && !item.handler) return\n if (item.handler) item.handler(props.el)\n props.removeContextmenu()\n }\n\n return {\n style,\n handleClickMenuItem,\n }\n },\n})\n","import { render } from \"./index.vue?vue&type=template&id=83da70aa&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=83da70aa&lang=scss\"\n\nimport exportComponent from \"/home/runner/work/PPTist/PPTist/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { Directive, createVNode, render, DirectiveBinding } from 'vue'\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\n\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\n\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n event.stopPropagation()\n event.preventDefault()\n\n const menus = binding.value(el)\n if (!menus) return\n\n let container: HTMLDivElement | null = null\n\n // 移除右键菜单并取消相关的事件监听\n const removeContextmenu = () => {\n if (container) {\n document.body.removeChild(container)\n container = null\n }\n el.classList.remove('contextmenu-active')\n document.body.removeEventListener('scroll', removeContextmenu) \n window.removeEventListener('resize', removeContextmenu)\n }\n\n // 创建自定义菜单\n const options = {\n axis: { x: event.x, y: event.y },\n el,\n menus,\n removeContextmenu,\n }\n container = document.createElement('div')\n const vm = createVNode(ContextmenuComponent, options, null)\n render(vm, container)\n document.body.appendChild(container)\n\n // 为目标节点添加菜单激活状态的className\n el.classList.add('contextmenu-active')\n\n // 页面变化时移除菜单\n document.body.addEventListener('scroll', removeContextmenu)\n window.addEventListener('resize', removeContextmenu)\n}\n\nconst ContextmenuDirective: Directive = {\n mounted(el: HTMLElement, binding) {\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n },\n\n unmounted(el: HTMLElement) {\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n delete el[CTX_CONTEXTMENU_HANDLER]\n }\n },\n}\n\nexport default ContextmenuDirective","import { Directive, DirectiveBinding } from 'vue'\n\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\n\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n const handler = binding.value\n\n const path = event.composedPath()\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\n\n if (!isClickOutside) return\n handler(event)\n}\n\nconst ClickOutsideDirective: Directive = {\n mounted(el: HTMLElement, binding) {\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\n setTimeout(() => {\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n }, 0)\n },\n \n unmounted(el: HTMLElement) {\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\n }\n },\n}\n\nexport default ClickOutsideDirective","import { App } from 'vue'\n\nimport Contextmenu from './contextmenu'\nimport ClickOutside from './clickOutside'\n\nexport default {\n install(app: App) {\n app.directive('contextmenu', Contextmenu)\n app.directive('click-outside', ClickOutside)\n }\n}\n","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\n\nimport '@icon-park/vue-next/styles/index.css'\nimport 'prosemirror-view/style/prosemirror.css'\nimport 'animate.css'\n\nimport '@/assets/styles/prosemirror.scss'\nimport '@/assets/styles/global.scss'\nimport '@/assets/styles/antd.scss'\nimport '@/assets/styles/font.scss'\n\nimport Icon from '@/plugins/icon'\nimport Component from '@/plugins/component'\nimport Directive from '@/plugins/directive'\n\nimport {\n InputNumber,\n Divider,\n Button,\n Tooltip,\n Popover,\n Slider,\n Select,\n Switch,\n Radio,\n Input,\n Modal,\n Dropdown,\n Menu,\n Checkbox,\n Drawer,\n Spin,\n Alert,\n} from 'ant-design-vue'\n\nconst app = createApp(App)\n\napp.component('InputNumber', InputNumber)\napp.component('Divider', Divider)\napp.component('Button', Button)\napp.component('ButtonGroup', Button.Group)\napp.component('Tooltip', Tooltip)\napp.component('Popover', Popover)\napp.component('Slider', Slider)\napp.component('Select', Select)\napp.component('SelectOption', Select.Option)\napp.component('SelectOptGroup', Select.OptGroup)\napp.component('Switch', Switch)\napp.component('Radio', Radio)\napp.component('RadioGroup', Radio.Group)\napp.component('RadioButton', Radio.Button)\napp.component('Input', Input)\napp.component('InputGroup', Input.Group)\napp.component('TextArea', Input.TextArea)\napp.component('Modal', Modal)\napp.component('Dropdown', Dropdown)\napp.component('Menu', Menu)\napp.component('MenuItem', Menu.Item)\napp.component('Checkbox', Checkbox)\napp.component('Drawer', Drawer)\napp.component('Spin', Spin)\napp.component('Alert', Alert)\n\napp.use(Icon)\napp.use(Component)\napp.use(Directive)\n\napp.use(createPinia())\napp.mount('#app')\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AudioStylePanel.vue?vue&type=style&index=0&id=80767a46&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenSlide.vue?vue&type=style&index=0&id=7827b40a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ShapePool.vue?vue&type=style&index=0&id=0f50713a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ProsemirrorEditor.vue?vue&type=style&index=0&id=f0d6ea86&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseAudioElement.vue?vue&type=style&index=0&id=513e91c4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=7f80f8ee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementOutline.vue?vue&type=style&index=0&id=35c4c4a3&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LinePool.vue?vue&type=style&index=0&id=78517932&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LatexStylePanel.vue?vue&type=style&index=0&id=69f903b1&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./LayoutPool.vue?vue&type=style&index=0&id=741b366e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./TableStylePanel.vue?vue&type=style&index=0&id=72e00692&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SlideDesignPanel.vue?vue&type=style&index=0&id=0e2f846d&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Mobile.vue?vue&type=style&index=0&id=72b587f9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ScreenAudioElement.vue?vue&type=style&index=0&id=b08df80e&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=4faf3734&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ChartPool.vue?vue&type=style&index=0&id=ab6a141a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementPositionPanel.vue?vue&type=style&index=0&id=3476ee65&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CustomTextarea.vue?vue&type=style&index=0&id=59f468e0&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FileInput.vue?vue&type=style&index=0&id=d6089858&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Alpha.vue?vue&type=style&index=0&id=6f2cb744&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ElementShadow.vue?vue&type=style&index=0&id=c77a6414&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./GridLines.vue?vue&type=style&index=0&id=9b94cc34&lang=scss&scoped=true\""],"sourceRoot":""} \ No newline at end of file